UNPKG

@mean-finance/dca-v2-periphery

Version:

💱 Periphery smart contracts of DCA V2 by mean.finance

1,778 lines (1,777 loc) • 41.4 kB
{ "_format": "hh-sol-artifact-1", "contractName": "IDCAHubWithAccessControl", "sourceName": "contracts/DCAHubSwapper/ThirdPartyDCAHubSwapper.sol", "abi": [ { "inputs": [], "name": "AmountTooBig", "type": "error" }, { "inputs": [], "name": "HighFee", "type": "error" }, { "inputs": [], "name": "HighPlatformFeeRatio", "type": "error" }, { "inputs": [], "name": "IntervalNotAllowed", "type": "error" }, { "inputs": [], "name": "InvalidAllowedTokensInput", "type": "error" }, { "inputs": [], "name": "InvalidFee", "type": "error" }, { "inputs": [], "name": "InvalidPairs", "type": "error" }, { "inputs": [], "name": "InvalidPosition", "type": "error" }, { "inputs": [], "name": "InvalidToken", "type": "error" }, { "inputs": [], "name": "InvalidTokens", "type": "error" }, { "inputs": [], "name": "LiquidityNotReturned", "type": "error" }, { "inputs": [], "name": "NoSwapsToExecute", "type": "error" }, { "inputs": [], "name": "PositionDoesNotMatchToken", "type": "error" }, { "inputs": [], "name": "UnallowedToken", "type": "error" }, { "inputs": [], "name": "UnauthorizedCaller", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "inputs": [], "name": "ZeroAmount", "type": "error" }, { "inputs": [], "name": "ZeroSwaps", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "depositor", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "fromToken", "type": "address" }, { "indexed": false, "internalType": "address", "name": "toToken", "type": "address" }, { "indexed": false, "internalType": "uint32", "name": "swapInterval", "type": "uint32" }, { "indexed": false, "internalType": "uint120", "name": "rate", "type": "uint120" }, { "indexed": false, "internalType": "uint32", "name": "startingSwap", "type": "uint32" }, { "indexed": false, "internalType": "uint32", "name": "lastSwap", "type": "uint32" }, { "components": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "enum IDCAPermissionManager.Permission[]", "name": "permissions", "type": "uint8[]" } ], "indexed": false, "internalType": "struct IDCAPermissionManager.PermissionSet[]", "name": "permissions", "type": "tuple[]" } ], "name": "Deposited", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "Miscellaneous", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "indexed": false, "internalType": "uint120", "name": "rate", "type": "uint120" }, { "indexed": false, "internalType": "uint32", "name": "startingSwap", "type": "uint32" }, { "indexed": false, "internalType": "uint32", "name": "lastSwap", "type": "uint32" } ], "name": "Modified", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract ITokenPriceOracle", "name": "oracle", "type": "address" } ], "name": "OracleSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "platformFeeRatio", "type": "uint16" } ], "name": "PlatformFeeRatioSet", "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": false, "internalType": "uint32", "name": "feeSet", "type": "uint32" } ], "name": "SwapFeeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32[]", "name": "swapIntervals", "type": "uint32[]" } ], "name": "SwapIntervalsAllowed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32[]", "name": "swapIntervals", "type": "uint32[]" } ], "name": "SwapIntervalsForbidden", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "rewardRecipient", "type": "address" }, { "indexed": true, "internalType": "address", "name": "callbackHandler", "type": "address" }, { "components": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "reward", "type": "uint256" }, { "internalType": "uint256", "name": "toProvide", "type": "uint256" }, { "internalType": "uint256", "name": "platformFee", "type": "uint256" } ], "internalType": "struct IDCAHubSwapHandler.TokenInSwap[]", "name": "tokens", "type": "tuple[]" }, { "components": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "uint256", "name": "totalAmountToSwapTokenA", "type": "uint256" }, { "internalType": "uint256", "name": "totalAmountToSwapTokenB", "type": "uint256" }, { "internalType": "uint256", "name": "ratioAToB", "type": "uint256" }, { "internalType": "uint256", "name": "ratioBToA", "type": "uint256" }, { "internalType": "bytes1", "name": "intervalsInSwap", "type": "bytes1" } ], "internalType": "struct IDCAHubSwapHandler.PairInSwap[]", "name": "pairs", "type": "tuple[]" } ], "indexed": false, "internalType": "struct IDCAHubSwapHandler.SwapInfo", "name": "swapInformation", "type": "tuple" }, { "indexed": false, "internalType": "uint256[]", "name": "borrowed", "type": "uint256[]" }, { "indexed": false, "internalType": "uint32", "name": "fee", "type": "uint32" } ], "name": "Swapped", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipientUnswapped", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipientSwapped", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "returnedUnswapped", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "returnedSwapped", "type": "uint256" } ], "name": "Terminated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "tokens", "type": "address[]" }, { "indexed": false, "internalType": "bool[]", "name": "allowed", "type": "bool[]" } ], "name": "TokensAllowedUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "withdrawer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdrew", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "indexed": false, "internalType": "struct IDCAHub.AmountOfToken[]", "name": "amounts", "type": "tuple[]" } ], "name": "WithdrewFromPlatform", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "withdrawer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256[]", "name": "positionIds", "type": "uint256[]" } ], "indexed": false, "internalType": "struct IDCAHubPositionHandler.PositionSet[]", "name": "positions", "type": "tuple[]" }, { "indexed": false, "internalType": "uint256[]", "name": "withdrew", "type": "uint256[]" } ], "name": "WithdrewMany", "type": "event" }, { "inputs": [], "name": "MAX_FEE", "outputs": [ { "internalType": "uint32", "name": "maxFee", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_PLATFORM_FEE_RATIO", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "bytes1", "name": "swapIntervalMask", "type": "bytes1" }, { "internalType": "uint32", "name": "swapNumber", "type": "uint32" } ], "name": "accumRatio", "outputs": [ { "internalType": "uint256", "name": "accumRatioAToB", "type": "uint256" }, { "internalType": "uint256", "name": "accumRatioBToA", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" } ], "name": "activeSwapIntervals", "outputs": [ { "internalType": "bytes1", "name": "", "type": "bytes1" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32[]", "name": "swapIntervals", "type": "uint32[]" } ], "name": "addSwapIntervalsToAllowedList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allowedSwapIntervals", "outputs": [ { "internalType": "bytes1", "name": "allowedSwapIntervals", "type": "bytes1" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "allowedTokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint32", "name": "amountOfSwaps", "type": "uint32" }, { "internalType": "uint32", "name": "swapInterval", "type": "uint32" }, { "internalType": "address", "name": "owner", "type": "address" }, { "components": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "enum IDCAPermissionManager.Permission[]", "name": "permissions", "type": "uint8[]" } ], "internalType": "struct IDCAPermissionManager.PermissionSet[]", "name": "permissions", "type": "tuple[]" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "positionId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint32", "name": "amountOfSwaps", "type": "uint32" }, { "internalType": "uint32", "name": "swapInterval", "type": "uint32" }, { "internalType": "address", "name": "owner", "type": "address" }, { "components": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "enum IDCAPermissionManager.Permission[]", "name": "permissions", "type": "uint8[]" } ], "internalType": "struct IDCAPermissionManager.PermissionSet[]", "name": "permissions", "type": "tuple[]" }, { "internalType": "bytes", "name": "miscellaneous", "type": "bytes" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "positionId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "tokens", "type": "address[]" }, { "components": [ { "internalType": "uint8", "name": "indexTokenA", "type": "uint8" }, { "internalType": "uint8", "name": "indexTokenB", "type": "uint8" } ], "internalType": "struct IDCAHubSwapHandler.PairIndexes[]", "name": "pairs", "type": "tuple[]" }, { "internalType": "bool", "name": "calculatePrivilegedAvailability", "type": "bool" }, { "internalType": "bytes", "name": "oracleData", "type": "bytes" } ], "name": "getNextSwapInfo", "outputs": [ { "components": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "reward", "type": "uint256" }, { "internalType": "uint256", "name": "toProvide", "type": "uint256" }, { "internalType": "uint256", "name": "platformFee", "type": "uint256" } ], "internalType": "struct IDCAHubSwapHandler.TokenInSwap[]", "name": "tokens", "type": "tuple[]" }, { "components": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "uint256", "name": "totalAmountToSwapTokenA", "type": "uint256" }, { "internalType": "uint256", "name": "totalAmountToSwapTokenB", "type": "uint256" }, { "internalType": "uint256", "name": "ratioAToB", "type": "uint256" }, { "internalType": "uint256", "name": "ratioBToA", "type": "uint256" }, { "internalType": "bytes1", "name": "intervalsInSwap", "type": "bytes1" } ], "internalType": "struct IDCAHubSwapHandler.PairInSwap[]", "name": "pairs", "type": "tuple[]" } ], "internalType": "struct IDCAHubSwapHandler.SwapInfo", "name": "swapInformation", "type": "tuple" } ], "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": "uint256", "name": "positionId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint32", "name": "newSwaps", "type": "uint32" } ], "name": "increasePosition", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "oracle", "outputs": [ { "internalType": "contract ITokenPriceOracle", "name": "oracle", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "isPaused", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "permissionManager", "outputs": [ { "internalType": "contract IDCAPermissionManager", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "platformBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformFeeRatio", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint32", "name": "newSwaps", "type": "uint32" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "reducePosition", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32[]", "name": "swapIntervals", "type": "uint32[]" } ], "name": "removeSwapIntervalsFromAllowedList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "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": "contract ITokenPriceOracle", "name": "oracle", "type": "address" } ], "name": "setOracle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "platformFeeRatio", "type": "uint16" } ], "name": "setPlatformFeeRatio", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "fee", "type": "uint32" } ], "name": "setSwapFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "tokens", "type": "address[]" }, { "components": [ { "internalType": "uint8", "name": "indexTokenA", "type": "uint8" }, { "internalType": "uint8", "name": "indexTokenB", "type": "uint8" } ], "internalType": "struct IDCAHubSwapHandler.PairIndexes[]", "name": "pairsToSwap", "type": "tuple[]" }, { "internalType": "address", "name": "rewardRecipient", "type": "address" }, { "internalType": "address", "name": "callbackHandler", "type": "address" }, { "internalType": "uint256[]", "name": "borrow", "type": "uint256[]" }, { "internalType": "bytes", "name": "callbackData", "type": "bytes" }, { "internalType": "bytes", "name": "oracleData", "type": "bytes" } ], "name": "swap", "outputs": [ { "components": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "reward", "type": "uint256" }, { "internalType": "uint256", "name": "toProvide", "type": "uint256" }, { "internalType": "uint256", "name": "platformFee", "type": "uint256" } ], "internalType": "struct IDCAHubSwapHandler.TokenInSwap[]", "name": "tokens", "type": "tuple[]" }, { "components": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "uint256", "name": "totalAmountToSwapTokenA", "type": "uint256" }, { "internalType": "uint256", "name": "totalAmountToSwapTokenB", "type": "uint256" }, { "internalType": "uint256", "name": "ratioAToB", "type": "uint256" }, { "internalType": "uint256", "name": "ratioBToA", "type": "uint256" }, { "internalType": "bytes1", "name": "intervalsInSwap", "type": "bytes1" } ], "internalType": "struct IDCAHubSwapHandler.PairInSwap[]", "name": "pairs", "type": "tuple[]" } ], "internalType": "struct IDCAHubSwapHandler.SwapInfo", "name": "", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "bytes1", "name": "swapIntervalMask", "type": "bytes1" }, { "internalType": "uint32", "name": "swapNumber", "type": "uint32" } ], "name": "swapAmountDelta", "outputs": [ { "internalType": "uint128", "name": "swapDeltaAToB", "type": "uint128" }, { "internalType": "uint128", "name": "swapDeltaBToA", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenA", "type": "address" }, { "internalType": "address", "name": "tokenB", "type": "address" }, { "internalType": "bytes1", "name": "swapIntervalMask", "type": "bytes1" } ], "name": "swapData", "outputs": [ { "internalType": "uint32", "name": "performedSwaps", "type": "uint32" }, { "internalType": "uint224", "name": "nextAmountToSwapAToB", "type": "uint224" }, { "internalType": "uint32", "name": "lastSwappedAt", "type": "uint32" }, { "internalType": "uint224", "name": "nextAmountToSwapBToA", "type": "uint224" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapFee", "outputs": [ { "internalType": "uint32", "name": "swapFee", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "internalType": "address", "name": "recipientUnswapped", "type": "address" }, { "internalType": "address", "name": "recipientSwapped", "type": "address" } ], "name": "terminate", "outputs": [ { "internalType": "uint256", "name": "unswapped", "type": "uint256" }, { "internalType": "uint256", "name": "swapped", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "tokenMagnitude", "outputs": [ { "internalType": "uint120", "name": "", "type": "uint120" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalCreatedPositions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "positionId", "type": "uint256" } ], "name": "userPosition", "outputs": [ { "components": [ { "internalType": "contract IERC20Metadata", "name": "from", "type": "address" }, { "internalType": "contract IERC20Metadata", "name": "to", "type": "address" }, { "internalType": "uint32", "name": "swapInterval", "type": "uint32" }, { "internalType": "uint32", "name": "swapsExecuted", "type": "uint32" }, { "internalType": "uint256", "name": "swapped", "type": "uint256" }, { "internalType": "uint32", "name": "swapsLeft", "type": "uint32" }, { "internalType": "uint256", "name": "remaining", "type": "uint256" }, { "internalType": "uint120", "name": "rate", "type": "uint120" } ], "internalType": "struct IDCAHubPositionHandler.UserPosition", "name": "position", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct IDCAHub.AmountOfToken[]", "name": "amounts", "type": "tuple[]" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "withdrawFromPlatformBalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "withdrawSwapped", "outputs": [ { "internalType": "uint256", "name": "swapped", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256[]", "name": "positionIds", "type": "uint256[]" } ], "internalType": "struct IDCAHubPositionHandler.PositionSet[]", "name": "positions", "type": "tuple[]" }, { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "withdrawSwappedMany", "outputs": [ { "internalType": "uint256[]", "name": "withdrawn", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x", "deployedBytecode": "0x", "linkReferences": {}, "deployedLinkReferences": {} }