@ensuro/vaults
Version:
ERC4626s for asset management, used by the Ensuro Protocol
1,739 lines • 118 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "OutflowLimitedAMMSV",
"sourceName": "contracts/OutflowLimitedAMMSV.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "caller",
"type": "address"
}
],
"name": "AccessManagedUnauthorized",
"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": [],
"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": [
{
"internalType": "int256",
"name": "assetsDelta",
"type": "int256"
},
{
"internalType": "uint256",
"name": "limit",
"type": "uint256"
}
],
"name": "LimitReached",
"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": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintToInt",
"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": false,
"internalType": "OutflowLimitedAMMSV.SlotIndex",
"name": "slot",
"type": "uint256"
},
{
"indexed": false,
"internalType": "int256",
"name": "oldDelta",
"type": "int256"
},
{
"indexed": false,
"internalType": "int256",
"name": "newDelta",
"type": "int256"
}
],
"name": "DeltaManuallySet",
"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": false,
"internalType": "uint256",
"name": "slotSize",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newLimit",
"type": "uint256"
}
],
"name": "LimitChanged",
"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": "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": "MAX_STRATEGIES",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"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": "OutflowLimitedAMMSV.SlotIndex",
"name": "slot",
"type": "uint256"
},
{
"internalType": "int256",
"name": "deltaChange",
"type": "int256"
}
],
"name": "changeDelta",
"outputs": [
{
"internalType": "int256",
"name": "newDelta",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"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": "OutflowLimitedAMMSV.SlotIndex",
"name": "slot",
"type": "uint256"
}
],
"name": "getAssetsDelta",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"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": "getForwardToStrategySelector",
"outputs": [
{
"internalType": "bytes4",
"name": "selector",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOutflowLimit",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOutflowLimitSlotSize",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"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": "uint256",
"name": "slotSize",
"type": "uint256"
},
{
"internalType": "uint40",
"name": "timestamp",
"type": "uint40"
}
],
"name": "makeOutflowSlot",
"outputs": [
{
"internalType": "OutflowLimitedAMMSV.SlotIndex",
"name": "",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "maxDeposit",
"outputs": [
{
"internalType": "uint256",
"name": "ret",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"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": "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": "uint256",
"name": "slotSize",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "limit",
"type": "uint256"
}
],
"name": "setupOutflowLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "strategies",
"outputs": [
{
"internalType": "contract IInvestStrategy[32]",
"name": "",
"type": "address[32]"
}
],
"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": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614fd66100f95f395f81816126460152818161266f01526127ab0152614fd65ff3fe60806040526004361061028b575f3560e01c80638cdf48a811610155578063ba087652116100be578063d905777e11610078578063d905777e14610803578063d9f9027f14610822578063dd62ed3e14610843578063e682324d14610862578063ef8b30f714610795578063f617eecc14610881575f5ffd5b8063ba08765214610738578063bd577eb614610757578063c63d75b614610776578063c6e6f59214610795578063ce96cb77146107b4578063d89b074d146107d3575f5ffd5b806396da35da1161010f57806396da35da1461066d578063a7ded2ea1461068c578063a9059cbb146106ab578063ad3cb1cc146106ca578063b3d7f6b9146106fa578063b460af9414610719575f5ffd5b80638cdf48a81461058d5780638eef8380146105c5578063914abf4f146105e457806392ce412e1461060357806394bf804d1461063a57806395d89b4114610659575f5ffd5b8063402d267d116101f757806352d1902d116101b157806352d1902d146104e95780636e553f65146104fd57806370a082311461051c578063767f06ae1461053b5780637ac445a71461054f5780637aeedf2a1461056e575f5ffd5b8063402d267d1461045857806347e57533146104775780634cdad506146102d75780634f1ef28614610496578063508a0538146104a957806351a2d6d1146104c8575f5ffd5b806318160ddd1161024857806318160ddd1461036557806323b872dd146103985780632e6863da146103b7578063313ce567146103e057806338d52e0f146104065780633aaf904814610439575f5ffd5b806301e1d1141461028f57806306fdde03146102b657806307a2d13a146102d7578063095ea7b3146102f65780630a28a477146103255780630a60458414610344575b5f5ffd5b34801561029a575f5ffd5b506102a3610895565b6040519081526020015b60405180910390f35b3480156102c1575f5ffd5b506102ca6108a3565b6040516102ad9190614322565b3480156102e2575f5ffd5b506102a36102f1366004614334565b610963565b348015610301575f5ffd5b5061031561031036600461435f565b610974565b60405190151581526020016102ad565b348015610330575f5ffd5b506102a361033f366004614334565b61098b565b34801561034f575f5ffd5b5061036361035e366004614389565b610997565b005b348015610370575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102a3565b3480156103a3575f5ffd5b506103156103b23660046143a9565b610a32565b3480156103c2575f5ffd5b505f516020614f215f395f51905f52546001600160801b03166102a3565b3480156103eb575f5ffd5b506103f4610a57565b60405160ff90911681526020016102ad565b348015610411575f5ffd5b505f516020614f815f395f51905f52546040516001600160a01b0390911681526020016102ad565b348015610444575f5ffd5b506102ca6104533660046144b1565b610a86565b348015610463575f5ffd5b506102a361047236600461450a565b610b0b565b348015610482575f5ffd5b506102ca610491366004614334565b610b14565b6103636104a4366004614525565b610c94565b3480156104b4575f5ffd5b506102a36104c3366004614389565b610caa565b3480156104d3575f5ffd5b506104dc610d24565b6040516102ad9190614571565b3480156104f4575f5ffd5b506102a3610d7c565b348015610508575f5ffd5b506102a36105173660046145a5565b610d97565b348015610527575f5ffd5b506102a361053636600461450a565b610df4565b348015610546575f5ffd5b506103f4602081565b34801561055a575f5ffd5b506103636105693660046145e0565b610e1a565b348015610579575f5ffd5b50610363610588366004614525565b610f53565b348015610598575f5ffd5b506105ac6105a736600461464e565b611158565b6040516001600160e01b031990911681526020016102ad565b3480156105d0575f5ffd5b506102a36105df36600461467f565b6111b7565b3480156105ef575f5ffd5b506103636105fe36600461473e565b6111d7565b34801561060e575f5ffd5b506102a361061d366004614334565b5f9081525f516020614f015f395f51905f52602052604090205490565b348015610645575f5ffd5b506102a36106543660046145a5565b611429565b348015610664575f5ffd5b506102ca611475565b348015610678575f5ffd5b5061036361068736600461476f565b6114b3565b348015610697575f5ffd5b506103636106a6366004614886565b611aca565b3480156106b6575f5ffd5b506103156106c536600461435f565b611be2565b3480156106d5575f5ffd5b506102ca604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610705575f5ffd5b506102a3610714366004614334565b611bef565b348015610724575f5ffd5b506102a361073336600461499d565b611bfb565b348015610743575f5ffd5b506102a361075236600461499d565b611c48565b348015610762575f5ffd5b5061036361077136600461473e565b611c95565b348015610781575f5ffd5b506102a361079036600461450a565b611ee1565b3480156107a0575f5ffd5b506102a36107af366004614334565b611f0d565b3480156107bf575f5ffd5b506102a36107ce36600461450a565b611f18565b3480156107de575f5ffd5b505f516020614f215f395f51905f5254600160801b90046001600160801b03166102a3565b34801561080e575f5ffd5b506102a361081d36600461450a565b611f2e565b34801561082d575f5ffd5b50610836611f73565b6040516102ad91906149dc565b34801561084e575f5ffd5b506102a361085d366004614a0d565b611fb9565b34801561086d575f5ffd5b506102a361087c366004614a39565b612002565b34801561088c575f5ffd5b506104dc6121f2565b5f61089e61222d565b905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f516020614f415f395f51905f52916108e190614a62565b80601f016020809104026020016040519081016040528092919081815260200182805461090d90614a62565b80156109585780601f1061092f57610100808354040283529160200191610958565b820191905f5260205f20905b81548152906001019060200180831161093b57829003601f168201915b505050505091505090565b5f61096e825f6122a8565b92915050565b5f336109818185856122ff565b5060019392505050565b5f61096e826001612311565b5f516020614f215f395f51905f526109ae8261235f565b81546001600160801b03918216600160801b0291161781556109cf8361235f565b81546fffffffffffffffffffffffffffffffff19166001600160801b039190911617815560408051848152602081018490527fb60cc7dc67f7eca3662ae255cd7c76bb80b4229692532f6af8851a2a119e6b8591015b60405180910390a1505050565b5f33610a3f858285612392565b610a4a8585856123e2565b60019150505b9392505050565b5f805f516020614f815f395f51905f5290505f8154610a809190600160a01b900460ff16614aae565b91505090565b6060610a9384848461243f565b5f60028560ff1660208110610aaa57610aaa614ac7565b01546001600160a01b0316905080610ad557604051632711b74d60e11b815260040160405180910390fd5b610b02848460028860ff1660208110610af057610af0614ac7565b01546001600160a01b0316919061255d565b95945050505050565b5f61096e6125af565b60605f5b5f60028260208110610b2c57610b2c614ac7565b01546001600160a01b031614801590610b455750602081105b15610c7a5760028160208110610b5d57610b5d614ac7565b015f9054906101000a90046001600160a01b03166001600160a01b0316635b9a4c356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bac573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd09190614adb565b8303610c6a57825483908190610be590614a62565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1190614a62565b8015610c5c5780601f10610c3357610100808354040283529160200191610c5c565b820191905f5260205f20905b815481529060010190602001808311610c3f57829003601f168201915b505050505092505050919050565b610c7381614af2565b9050610b18565b5060405163213109dd60e11b815260040160405180910390fd5b610c9c61263b565b610ca682826126e4565b5050565b5f8281525f516020614f015f395f51905f5260205260408120805490839083610cd38385614b0a565b918290555060408051878152602081018590529081018290529093507f177df7ef9e6eced78bb1837ddf81f055288f88e41ca91a74d394b2c8f0660ff2915060600160405180910390a15092915050565b610d2c6142d5565b6040805161040081019182905290600190602090825f855b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610d445790505050505050905090565b5f610d856127a0565b505f516020614f615f395f51905f5290565b5f5f610da283610b0b565b905080841115610dd457828482604051633c8097d960e11b8152600401610dcb93929190614b31565b60405180910390fd5b5f610dde85611f0d565b9050610dec338587846127e9565b949350505050565b6001600160a01b03165f9081525f516020614f415f395f51905f52602052604090205490565b5f60028560ff1660208110610e3157610e31614ac7565b01546001600160a01b0316905080610e5c57604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610e8b57505f60028260208110610e7d57610e7d614ac7565b01546001600160a01b031614155b15610f0157846001600160a01b031660028260208110610ead57610ead614ac7565b01546001600160a01b0316148015610ec857508560ff168114155b15610ef15760405163b5a9314f60e01b81526001600160a01b0386166004820152602401610dcb565b610efa81614af2565b9050610e5e565b50610f16818585610f10612838565b86612857565b8360028660ff1660208110610f2d57610f2d614ac7565b0180546001600160a01b0319166001600160a01b03929092169190911790555050505050565b6001600160a01b038216610f7a57604051632711b74d60e11b815260040160405180910390fd5b5f5b602081108015610fa957505f60028260208110610f9b57610f9b614ac7565b01546001600160a01b031614155b1561100f57826001600160a01b031660028260208110610fcb57610fcb614ac7565b01546001600160a01b031603610fff5760405163b5a9314f60e01b81526001600160a01b0384166004820152602401610dcb565b61100881614af2565b9050610f7c565b601f19810161103457604051600162ad1fab60e01b0319815260040160405180910390fd5b826002826020811061104857611048614ac7565b0180546001600160a01b0319166001600160a01b0392909216919091179055611072816001614b52565b5f826020811061108457611084614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055508060016110b19190614b52565b600182602081106110c4576110c4614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055506110ff6110ef612838565b6001600160a01b038516906129a5565b6111126001600160a01b03841683612a37565b60405160ff821681526001600160a01b038416907f4973f7978f2b1810531aed51dc15a8e446cb3191afcca470f8ce464af7494f589060200160405180910390a2505050565b5f5f60028460ff166020811061117057611170614ac7565b0154604080516001600160a01b039092166020830181905260ff86169183019190915291506060016040516020818303038152906040528051906020012091505092915050565b5f6111c98364ffffffffff8416614b79565b610a5090608085901b614b52565b6111df6142d5565b81515f90602010156112045760405163a29b1f1160e01b815260040160405180910390fd5b82518110156113af57602060ff1683828151811061122457611224614ac7565b602002602001015160ff1610158061127d57505f6001600160a01b0316600284838151811061125557611255614ac7565b602002602001015160ff166020811061127057611270614ac7565b01546001600160a01b0316145b1561129b5760405163a29b1f1160e01b815260040160405180910390fd5b818382815181106112ae576112ae614ac7565b602002602001015160ff16602081106112c9576112c9614ac7565b602002015115611310578281815181106112e5576112e5614ac7565b602002602001015160405163c41fdbb960e01b8152600401610dcb919060ff91909116815260200190565b60018284838151811061132557611325614ac7565b602002602001015160ff166020811061134057611340614ac7565b91151560209092020152825183908290811061135e5761135e614ac7565b602002602001015160016113729190614aae565b5f826020811061138457611384614ac7565b602091828204019190066101000a81548160ff021916908360ff160217905550806001019050611204565b6020811080156113dc57505f600282602081106113ce576113ce614ac7565b01546001600160a01b031614155b156113fa57604051636712b27b60e01b815260040160405180910390fd5b7f193fc4e628c27ae3ca098952dfc16a40425b44e7b0a97f4cc59d0f267f47caec83604051610a259190614b8c565b5f5f61143483611ee1565b90508084111561145d5782848260405163284ff66760e01b8152600401610dcb93929190614b31565b5f61146785611bef565b9050610dec338583886127e9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f516020614f415f395f51905f52916108e190614a62565b602060ff8316106114d757604051632711b74d60e11b815260040160405180910390fd5b5f60028360ff16602081106114ee576114ee614ac7565b01546001600160a01b031690508061151957604051632711b74d60e11b815260040160405180910390fd5b811580156115375750611534816001600160a01b0316612a85565b15155b15611555576040516343c2dfef60e01b815260040160405180910390fd5b60ff831615801561156f57506003546001600160a01b0316155b1561159057604051600162ad1fab60e01b0319815260040160405180910390fd5b5f61159c846001614aae565b60ff1690505b6020811080156115cf57505f600282602081106115c1576115c1614ac7565b01546001600160a01b031614155b1561163e57600281602081106115e7576115e7614ac7565b01546001600160a01b031660026115ff600184614bd1565b6020811061160f5761160f614ac7565b0180546001600160a01b0319166001600160a01b039290921691909117905561163781614af2565b90506115a2565b5f600261164c600184614bd1565b6020811061165c5761165c614ac7565b0180546001600160a01b0319166001600160a01b0392909216919091179055505f80805b6001836020811061169357611693614ac7565b602081049091015460ff601f9092166101000a900416158015906116b75750602083105b156119e957801561177b576116cd866001614aae565b60ff16600184602081106116e3576116e3614ac7565b602081049091015460ff601f9092166101000a90041611611704575f611707565b60015b6001846020811061171a5761171a614ac7565b602091828204019190069054906101000a900460ff1661173a9190614be4565b60016117468186614bd1565b6020811061175657611756614ac7565b602091828204019190066101000a81548160ff021916908360ff16021790555061184c565b611786866001614aae565b60ff166001846020811061179c5761179c614ac7565b602081049091015460ff601f9092166101000a900416036117bf5750600161184c565b6117ca866001614aae565b60ff16600184602081106117e0576117e0614ac7565b602081049091015460ff601f9092166101000a900416111561184c57600180846020811061181057611810614ac7565b602091828204019190068282829054906101000a900460ff166118339190614be4565b92506101000a81548160ff021916908360ff1602179055505b81156119095761185d866001614aae565b60ff165f846020811061187257611872614ac7565b602081049091015460ff601f9092166101000a90041611611893575f611896565b60015b5f84602081106118a8576118a8614ac7565b602091828204019190069054906101000a900460ff166118c89190614be4565b5f6118d4600186614bd1565b602081106118e4576118e4614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055506119d9565b611914866001614aae565b60ff165f846020811061192957611929614ac7565b602081049091015460ff601f9092166101000a9004160361194d57600191506119d9565b611958866001614aae565b60ff165f846020811061196d5761196d614ac7565b602081049091015460ff601f9092166101000a90041611156119d95760015f846020811061199d5761199d614ac7565b602091828204019190068282829054906101000a900460ff166119c09190614be4565b92506101000a81548160ff021916908360ff1602179055505b6119e283614af2565b9250611680565b5f806119f6600186614bd1565b60208110611a0657611a06614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179055505f60018085611a359190614bd1565b60208110611a4557611a45614ac7565b602091828204019190066101000a81548160ff021916908360ff1602179