interface IStrategyV2 {

    function unsalvagableTokens(address tokens) external view returns (bool);

    function governance() external view returns (address);
    function controller() external view returns (address);
    function underlying() external view returns (address);
    function vault() external view returns (address);

    function withdrawAllToVault() external;
    function withdrawToVault(uint256 correspondingShares, uint256 totalShares) external;

    function investedUnderlyingBalance() external view returns (uint256); // itsNotMuch()

    // should only be called by controller
    function salvage(address recipient, address token, uint256 amount) external;

    function doHardWork() external;
    function depositArbCheck() external view returns(bool);
}
function salvage(address recipient, address token, uint256 amount) external;

// itsNotMuch()
// should only be called by controller