Copy interface IIdleToken {
function token () external returns (address underlying);
function userAvgPrices (address) external returns (uint256 avgPrice);
function mintIdleToken (uint256 _amount , bool _skipWholeRebalance) external returns (uint256 mintedTokens);
function redeemIdleToken (uint256 _amount , bool _skipRebalance , uint256[] calldata _clientProtocolAmounts) external returns (uint256 redeemedTokens);
function redeemInterestBearingTokens (uint256 _amount) external ;
function rebalance () external returns (bool);
function rebalanceWithGST () external returns (bool);
function openRebalance (uint256[] calldata _newAllocations) external returns (bool , uint256 avgApr);
function tokenPrice () external view returns (uint256 price);
function getAPRs () external view returns (address[] memory addresses , uint256[] memory aprs);
function getAvgAPR () external view returns (uint256 avgApr);
function getCurrentAllocations () external view returns (address[] memory tokenAddresses , uint256[] memory amounts , uint256 total);
// Old V2 methods
function mintIdleToken (uint256 _amount , uint256[] calldata _clientProtocolAmounts) external returns (uint256 mintedTokens);
function rebalance (uint256 _newAmount , uint256[] calldata _clientProtocolAmounts) external returns (bool);
}