A person familiar with the negotiations told The Associated Press the contract is expected to be finalized on Wednesday. The person spoke on Tuesday night on condition of anonymity because the deal hasn't been completed.
Sportsnet first reported the two sides were close to an agreement.
Kane, who turns 27 in August, was acquired from Buffalo at the trade deadline. Under the terms of that trade, the Sabres will now get a first-round pick in 2019 instead of a second-rounder because Kane signed with San Jose. The selection is lottery-protected, so it could be moved to 2020.
Kane's status was one of the biggest questions heading into this offseason for the Sharks, who were knocked out of the playoffs in six games in the second round by eventual Western Conference champion Vegas.
Star Joe Thornton is the other prominent potential free agent on the team but has said he's willing to come back on a reduced one-year deal.
Kane had issues off the ice and with teammates at times during his stints with Winnipeg and Buffalo, but melded well with a veteran Sharks team and got the opportunity to go to the postseason for the first time in his career.
"He's fit in well," teammate Logan Couture said after the season ended. "You don't listen to what people say about him before. Getting to know him over these last few months he's a great teammate. He cares and he wants to win. He was fun to play with."
Kane made an immediate impact in San Jose, stepping right onto the top line with captain Joe Pavelski and helping ease the loss of Thornton, who went down with a season-ending knee injury in January. Kane used his speed and physical play to deliver nine goals and five assists in 17 games and spark an eight-game winning streak that sent San Jose to the playoffs.
Kane shined in the first round with three goals and an assist during a sweep against Anaheim. But he struggled a bit against the Golden Knights, slowed by injuries to his knee and shoulder that lingered from the end of the regular season.
He had one goal and a minus-5 rating in five games against Vegas. He missed Game 2 of that series when he was suspended for cross-checking Pierre-Edouard Bellemare.
Kane finished last season with 29 goals and 25 assists, his second-most productive season to his 30-goal, 27-assist campaign for the Jets in 2011-12. Kane has 186 goals and 168 assists in 574 career games since entering the NHL as the fourth overall pick by Atlanta in 2009.
Information from The Associated Press was used in this report.