Assuming Tavares scores 60+ points again this year, he likely gets extended in the off season for roughly $6.0 million on a 2-3 year deal. At the same time, the cap is expected to go up approximately $5.0 million... Therefore, one would expect Toronto to have about $10.0 million in cap room, with Calle Jarnkrok's $2.1 million, David Kampf's $2.4 million and Timothy Liljegren's $3.0 million as contracts that could be moved to create additional cap space...
So a year from now it could be something like...
Marner extends X years for $12.0 million
Tavares extends X years for $6.0 million
McCabe extends X years for $4.5 million
Knies extends X years for $4.0 million
Woll's extension kicks in for $3.66 million
Total: $9.568 out of $10.0 million cap space
Assuming the roster stayed the same you'd likely be looking like the following, with only $500k-$1.0 million of cap space.
Domi-Matthews-Marner
Knies-Tavares-Nylander
McMann-X-Jarnkrok
Dewar-Kampf-Grebyonkin
Rielly-Tanev
OEL-McCabe
Benoit-Liljegren
Hakanpaa
Woll
Stolarz
Let's say you try to solve the issue by moving on from Kampf, Liljegren and Jarnkrok in order to create cap space. You could do something like this...
Domi-Matthews-Marner
Knies-Tavares- Nylander
McMann-X-Cowan
Dewar-Minten or Quillan-Grebyonkin
Rielly-Tanev
OEL-McCabe
Benoit-Hakanpaa
Woll
Stolarz
In this case you would have $4.0-$5.0 million to add to add a 3C...
All of this to say that unless you let Tavares or Marner walk at the conclusion of next season, or you let McCabe walk because the Liljegren experiment goes well and he's capable of playing full time in the top for following season, there is enough space to extend everyone of value, but virtually nothing left to upgrade the team in any capacity.