@ensuro/vaults
Version:
ERC4626s for asset management, used by the Ensuro Protocol
1,872 lines • 123 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "MultiStrategyERC4626",
"sourceName": "contracts/MultiStrategyERC4626.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "AddressEmptyCode",
"type": "error"
},
{
"inputs": [],
"name": "CannotRemoveStrategyWithAssets",
"type": "error"
},
{
"inputs": [],
"name": "DepositError",
"type": "error"
},
{
"inputs": [
{
"internalType": "contract IInvestStrategy",
"name": "strategy",
"type": "address"
}
],
"name": "DuplicatedStrategy",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "ERC1967InvalidImplementation",
"type": "error"
},
{
"inputs": [],
"name": "ERC1967NonPayable",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "ERC4626ExceededMaxDeposit",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "ERC4626ExceededMaxMint",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "ERC4626ExceededMaxRedeem",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "ERC4626ExceededMaxWithdraw",
"type": "error"
},
{
"inputs": [],
"name": "FailedCall",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "asset",
"type": "address"
}
],
"name": "InvalidAsset",
"type": "error"
},
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "InvalidQueue",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "index",
"type": "uint8"
}
],
"name": "InvalidQueueIndexDuplicated",
"type": "error"
},
{
"inputs": [],
"name": "InvalidQueueLength",
"type": "error"
},
{
"inputs": [],
"name": "InvalidStrategiesLength",
"type": "error"
},
{
"inputs": [],
"name": "InvalidStrategy",
"type": "error"
},
{
"inputs": [],
"name": "InvalidStrategyAsset",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "index",
"type": "uint8"
}
],
"name": "InvalidStrategyInDepositQueue",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "index",
"type": "uint8"
}
],
"name": "InvalidStrategyInWithdrawQueue",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"inputs": [],
"name": "OnlyStrategyStorageExposed",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "RebalanceAmountExceedsMaxDeposit",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "RebalanceAmountExceedsMaxWithdraw",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "SafeERC20FailedOperation",
"type": "error"
},
{
"inputs": [],
"name": "UUPSUnauthorizedCallContext",
"type": "error"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "UUPSUnsupportedProxiableUUID",
"type": "error"
},
{
"inputs": [],
"name": "WithdrawError",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "Deposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "reason",
"type": "bytes"
}
],
"name": "DepositFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "reason",
"type": "bytes"
}
],
"name": "DepositFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8[]",
"name": "queue",
"type": "uint8[]"
}
],
"name": "DepositQueueChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "reason",
"type": "bytes"
}
],
"name": "DisconnectFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "reason",
"type": "bytes"
}
],
"name": "DisconnectFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IInvestStrategy",
"name": "strategyFrom",
"type": "address"
},
{
"indexed": true,
"internalType": "contract IInvestStrategy",
"name": "strategyTo",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Rebalance",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IInvestStrategy",
"name": "strategy",
"type": "address"
},
{
"indexed": false,
"internalType": "uint8",
"name": "index",
"type": "uint8"
}
],
"name": "StrategyAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "contract IInvestStrategy",
"name": "oldStrategy",
"type": "address"
},
{
"indexed": false,
"internalType": "contract IInvestStrategy",
"name": "newStrategy",
"type": "address"
}
],
"name": "StrategyChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "contract IInvestStrategy",
"name": "oldStrategy",
"type": "address"
},
{
"indexed": false,
"internalType": "contract IInvestStrategy",
"name": "newStrategy",
"type": "address"
}
],
"name": "StrategyChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IInvestStrategy",
"name": "strategy",
"type": "address"
},
{
"indexed": false,
"internalType": "uint8",
"name": "index",
"type": "uint8"
}
],
"name": "StrategyRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "Withdraw",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "reason",
"type": "bytes"
}
],
"name": "WithdrawFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "reason",
"type": "bytes"
}
],
"name": "WithdrawFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8[]",
"name": "queue",
"type": "uint8[]"
}
],
"name": "WithdrawQueueChanged",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "FORWARD_TO_STRATEGY_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "GUARDIAN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "LP_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_STRATEGIES",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "QUEUE_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "REBALANCER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "STRATEGY_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADE_INTERFACE_VERSION",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IInvestStrategy",
"name": "newStrategy",
"type": "address"
},
{
"internalType": "bytes",
"name": "initStrategyData",
"type": "bytes"
}
],
"name": "addStrategy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "asset",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8[]",
"name": "newDepositQueue_",
"type": "uint8[]"
}
],
"name": "changeDepositQueue",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8[]",
"name": "newWithdrawQueue_",
"type": "uint8[]"
}
],
"name": "changeWithdrawQueue",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "convertToAssets",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
}
],
"name": "convertToShares",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "deposit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "depositQueue",
"outputs": [
{
"internalType": "uint8[32]",
"name": "",
"type": "uint8[32]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "strategyIndex",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "method",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "extraData",
"type": "bytes"
}
],
"name": "forwardToStrategy",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "getBytesSlot",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "strategyIndex",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "method",
"type": "uint8"
}
],
"name": "getForwardToStrategyRole",
"outputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"internalType": "address",
"name": "admin_",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "asset_",
"type": "address"
},
{
"internalType": "contract IInvestStrategy[]",
"name": "strategies_",
"type": "address[]"
},
{
"internalType": "bytes[]",
"name": "initStrategyDatas",
"type": "bytes[]"
},
{
"internalType": "uint8[]",
"name": "depositQueue_",
"type": "uint8[]"
},
{
"internalType": "uint8[]",
"name": "withdrawQueue_",
"type": "uint8[]"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "maxDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "ret",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "maxMint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "maxRedeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "maxWithdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "mint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
}
],
"name": "previewDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "previewMint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
}
],
"name": "previewRedeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
}
],
"name": "previewWithdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "strategyFromIdx",
"type": "uint8"
},
{
"internalType": "uint8",
"name": "strategyToIdx",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "rebalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "shares",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "redeem",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "strategyIndex",
"type": "uint8"
},
{
"internalType": "bool",
"name": "force",
"type": "bool"
}
],
"name": "removeStrategy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "strategyIndex",
"type": "uint8"
},
{
"internalType": "contract IInvestStrategy",
"name": "newStrategy",
"type": "address"
},
{
"internalType": "bytes",
"name": "initStrategyData",
"type": "bytes"
},
{
"internalType": "bool",
"name": "force",
"type": "bool"
}
],
"name": "replaceStrategy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "adminRole",
"type": "bytes32"
}
],
"name": "setRoleAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "strategies",
"outputs": [
{
"internalType": "contract IInvestStrategy[32]",
"name": "",
"type": "address[32]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalAssets",
"outputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "assets",
"type": "uint256"
},
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "withdraw",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "withdrawQueue",
"outputs": [
{
"internalType": "uint8[32]",
"name": "",
"type": "uint8[32]"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516151f56100f95f395f8181611a0a01528181611a330152611b9601526151f55ff3fe60806040526004361061035b575f3560e01c806370a08231116101bd578063ba087652116100f2578063d905777e11610092578063e1d394501161006d578063e1d3945014610a04578063e682324d14610a37578063ef8b30f714610915578063f617eecc14610a56575f5ffd5b8063d905777e146109a5578063d9f9027f146109c4578063dd62ed3e146109e5575f5ffd5b8063c6e6f592116100cd578063c6e6f59214610915578063cd0e0f4414610934578063ce96cb7714610967578063d547741f14610986575f5ffd5b8063ba087652146108b8578063bd577eb6146108d7578063c63d75b6146108f6575f5ffd5b806395d89b411161015d578063a9059cbb11610138578063a9059cbb1461082b578063ad3cb1cc1461084a578063b3d7f6b91461087a578063b460af9414610899575f5ffd5b806395d89b41146107e557806396da35da146107f9578063a217fddf14610818575f5ffd5b80637aeedf2a116101985780637aeedf2a14610769578063914abf4f1461078857806391d14854146107a757806394bf804d146107c6575f5ffd5b806370a0823114610717578063767f06ae146107365780637ac445a71461074a575f5ffd5b8063313ce56711610293578063490b48f81161023357806351a2d6d11161020e57806351a2d6d1146106a457806352d1902d146106c55780636b3ea526146106d95780636e553f65146106f8575f5ffd5b8063490b48f81461065e5780634cdad506146103d65780634f1ef28614610691575f5ffd5b806338d52e0f1161026e57806338d52e0f146105ce5780633aaf904814610601578063402d267d1461062057806347e575331461063f575f5ffd5b8063313ce5671461055657806336568abe1461057c578063367fee391461059b575f5ffd5b8063128b772f116102fe57806323b872dd116102d957806323b872dd146104c6578063248a9ca3146104e557806324ea54f4146105045780632f2ff15d14610537575f5ffd5b8063128b772f1461045357806318160ddd146104725780631e4e0091146104a5575f5ffd5b806307a2d13a1161033957806307a2d13a146103d6578063095ea7b3146103f55780630a28a477146104145780630b74ce8c14610433575f5ffd5b806301e1d1141461035f57806301ffc9a71461038657806306fdde03146103b5575b5f5ffd5b34801561036a575f5ffd5b50610373610a6a565b6040519081526020015b60405180910390f35b348015610391575f5ffd5b506103a56103a03660046145ac565b610a78565b604051901515815260200161037d565b3480156103c0575f5ffd5b506103c9610aae565b60405161037d9190614601565b3480156103e1575f5ffd5b506103736103f0366004614613565b610b6e565b348015610400575f5ffd5b506103a561040f36600461464e565b610b79565b34801561041f575f5ffd5b5061037361042e366004614613565b610b90565b34801561043e575f5ffd5b506103735f5160206151405f395f51905f5281565b34801561045e575f5ffd5b5061037361046d366004614688565b610b9c565b34801561047d575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610373565b3480156104b0575f5ffd5b506104c46104bf3660046146b9565b610c0e565b005b3480156104d1575f5ffd5b506103a56104e03660046146d9565b610c27565b3480156104f0575f5ffd5b506103736104ff366004614613565b610c4c565b34801561050f575f5ffd5b506103737f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a504181565b348015610542575f5ffd5b506104c4610551366004614717565b610c6c565b348015610561575f5ffd5b5061056a610c8e565b60405160ff909116815260200161037d565b348015610587575f5ffd5b506104c4610596366004614717565b610cbd565b3480156105a6575f5ffd5b506103737f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c181565b3480156105d9575f5ffd5b505f5160206151a05f395f51905f52546040516001600160a01b03909116815260200161037d565b34801561060c575f5ffd5b506103c961061b3660046147fa565b610cf0565b34801561062b575f5ffd5b5061037361063a366004614853565b610d75565b34801561064a575f5ffd5b506103c9610659366004614613565b610d94565b348015610669575f5ffd5b506103737fccc64574297998b6c3edf6078cc5e01268465ff116954e3af02ff3a70a730f4681565b6104c461069f36600461486e565b610f14565b3480156106af575f5ffd5b506106b8610f33565b60405161037d91906148ba565b3480156106d0575f5ffd5b50610373610f8b565b3480156106e4575f5ffd5b506104c46106f3366004614a63565b610fa6565b348015610703575f5ffd5b50610373610712366004614717565b6110c0565b348015610722575f5ffd5b50610373610731366004614853565b61111d565b348015610741575f5ffd5b5061056a602081565b348015610755575f5ffd5b506104c4610764366004614b9a565b611143565b348015610774575f5ffd5b506104c461078336600461486e565b61116d565b348015610793575f5ffd5b506104c46107a2366004614c06565b61118e565b3480156107b2575f5ffd5b506103a56107c1366004614717565b6111c1565b3480156107d1575f5ffd5b506103736107e0366004614717565b6111f7565b3480156107f0575f5ffd5b506103c9611243565b348015610804575f5ffd5b506104c4610813366004614c37565b611281565b348015610823575f5ffd5b506103735f81565b348015610836575f5ffd5b506103a561084536600461464e565b6112a2565b348015610855575f5ffd5b506103c9604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610885575f5ffd5b50610373610894366004614613565b6112af565b3480156108a4575f5ffd5b506103736108b3366004614c5f565b6112bb565b3480156108c3575f5ffd5b506103736108d2366004614c5f565b611308565b3480156108e2575f5ffd5b506104c46108f1366004614c06565b611355565b348015610901575f5ffd5b50610373610910366004614853565b611388565b348015610920575f5ffd5b5061037361092f366004614613565b6113ca565b34801561093f575f5ffd5b506103737f6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc81565b348015610972575f5ffd5b50610373610981366004614853565b6113d5565b348015610991575f5ffd5b506104c46109a0366004614717565b6113eb565b3480156109b0575f5ffd5b506103736109bf366004614853565b611407565b3480156109cf575f5ffd5b506109d861144c565b60405161037d9190614c9e565b3480156109f0575f5ffd5b506103736109ff366004614ccf565b611492565b348015610a0f575f5ffd5b506103737fb0296ea8dd3227371927b1c1cea2b12ea394743ddf2f32f58024ce26f83a24a681565b348015610a42575f5ffd5b50610373610a51366004614cfb565b6114db565b348015610a61575f5ffd5b506106b8611511565b5f610a7361154c565b905090565b5f6001600160e01b03198216637965db0b60e01b1480610aa857506301ffc9a760e01b6001600160e01b03198316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f5160206151205f395f51905f5291610aec90614d24565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1890614d24565b8015610b635780601f10610b3a57610100808354040283529160200191610b63565b820191905f5260205f20905b815481529060010190602001808311610b4657829003601f168201915b505050505091505090565b5f610aa8825f6115c7565b5f33610b8681858561161e565b5060019392505050565b5f610aa882600161162b565b5f5f60028460ff1660208110610bb457610bb4614d5c565b01546bffffffffffffffffffffffff1960609190911b1660ff60581b605885901b161860ff60501b605086901b16187f6e824273980c4b4b65db074aeeccb75bec12f5e2e377c170763af52d00c592cc1891505092915050565b5f610c1881611679565b610c228383611686565b505050565b5f33610c348582856116e6565b610c3f858585611730565b60019150505b9392505050565b5f9081525f5160206151805f395f51905f52602052604090206001015490565b610c7582610c4c565b610c7e81611679565b610c88838361178d565b50505050565b5f805f5160206151a05f395f51905f5290505f8154610cb79190600160a01b900460ff16614d84565b91505090565b6001600160a01b0381163314610ce65760405163334bd91960e11b815260040160405180910390fd5b610c22828261182e565b6060610cfd8484846118a7565b5f60028560ff1660208110610d1457610d14614d5c565b01546001600160a01b0316905080610d3f57604051632711b74d60e11b815260040160405180910390fd5b610d6c848460028860ff1660208110610d5a57610d5a614d5c565b01546001600160a01b031691906118e4565b95945050505050565b5f610d7f82611936565b5f03610d8c57505f919050565b610aa8611973565b60605f5b5f60028260208110610dac57610dac614d5c565b01546001600160a01b031614801590610dc55750602081105b15610efa5760028160208110610ddd57610ddd614d5c565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e509190614d9d565b8303610eea57825483908190610e6590614d24565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9190614d24565b8015610edc5780601f10610eb357610100808354040283529160200191610edc565b820191905f5260205f20905b815481529060010190602001808311610ebf57829003601f168201915b505050505092505050919050565b610ef381614db4565b9050610d98565b5060405163213109dd60e11b815260040160405180910390fd5b610f1c6119ff565b610f2582611aa5565b610f2f8282611acf565b5050565b610f3b61458d565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610f535790505050505050905090565b5f610f94611b8b565b505f5160206151605f395f51905f5290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fea5750825b90505f826001600160401b031660011480156110055750303b155b905081158015611013575080155b156110315760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561105b57845460ff60401b1916600160401b1785555b61106b8d8d8d8d8d8d8d8d611bd4565b83156110b157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f5f6110cb83610d75565b9050808411156110fd57828482604051633c8097d960e11b81526004016110f493929190614dcc565b60405180910390fd5b5f611107856113ca565b905061111533858784611bfe565b949350505050565b6001600160a01b03165f9081525f5160206151205f395f51905f52602052604090205490565b5f5160206151405f395f51905f5261115a81611679565b61116685858585611c13565b5050505050565b5f5160206151405f395f51905f5261118481611679565b610c228383611d4c565b7f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c16111b881611679565b610f2f82611f51565b5f9182525f5160206151805f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f5f61120283611388565b90508084111561122b5782848260405163284ff66760e01b81526004016110f493929190614dcc565b5f611235856112af565b905061111533858388611bfe565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f5160206151205f395f51905f5291610aec90614d24565b5f5160206151405f395f51905f5261129881611679565b610c2283836121b0565b5f33610b86818585611730565b5f610aa88260016115c7565b5f5f6112c6836113d5565b9050808511156112ef57828582604051633fa733bb60e21b81526004016110f493929190614dcc565b5f6112f986610b90565b9050610d6c33868689856127c7565b5f5f61131383611407565b90508085111561133c57828582604051632e52afbb60e21b81526004016110f493929190614dcc565b5f61134686610b6e565b9050610d6c338686848a6127c7565b7f326866b70291d731c5324fd58ae009670d3e8c69fccbef09e56e5c87e78b69c161137f81611679565b610f2f826127dd565b5f61139282611936565b5f0361139f57505f919050565b5f6113a8611973565b90505f1981146113c1576113bc815f61162b565b610c45565b5f199392505050565b5f610aa8825f61162b565b5f5f6113e083612a29565b9050610c4581612a3c565b6113f482610c4c565b6113fd81611679565b610c88838361182e565b5f5f61141283612ad1565b90505f61141f825f6115c7565b90505f61142b82612a3c565b90508181146114435761143e815f61162b565b610d6c565b50909392505050565b61145461458d565b604080516104008101918290529060029060209082845b81546001600160a01b0316815260019091019060200180831161146b575050505050905090565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f7fccc64574297998b6c3edf6078cc5e01268465ff116954e3af02ff3a70a730f4661150681611679565b610d6c858585612adb565b61151961458d565b604080516104008101918290525f80546