interface IStrategy {

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

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

    function withdrawAllToVault() external;
    function withdrawToVault(uint256 amount) external;

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

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

    function stakeOnsenFarm() external;
    function stakeSushiBar() external;
    function stakeXSushiFarm() external;
    function stakeOnx() external;

    function withdrawPendingTeamFund() external;
    function withdrawPendingTreasuryFund() external;
    function withdrawXSushiToStrategicWallet() external;

    function harvest(uint256 _denom, address sender) external;
    function depositArbCheck() external view returns(bool);
}
function salvage(address recipient, address token, uint256 amount) external;
// itsNotMuch()
// should only be called by controller