UNPKG

@ensuro/vaults

Version:

ERC4626s for asset management, used by the Ensuro Protocol

1,872 lines 123 kB
{ "_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