{"openapi":"3.0.0","paths":{"/api/v1/networks":{"get":{"operationId":"NetworksController_networks","summary":"Returns networks supported by the API","parameters":[{"name":"name","required":false,"in":"query","description":"Title of the network to search for","schema":{"example":"mainnet"}},{"name":"chainId","required":false,"in":"query","description":"Chain ID of the network to search for","schema":{"example":"1"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectedNetwork"}}}}}},"tags":["metadata"]}},"/api/v1/prices/{chainId}/{address}":{"get":{"operationId":"PricesController_getPrice","summary":"Returns price for a token","parameters":[{"name":"address","required":true,"in":"path","description":"Address of the token to search for","schema":{"example":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"}},{"name":"chainId","required":true,"in":"path","description":"Chain ID of the network to search for","schema":{"example":"1"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Price"}}}}},"tags":["metadata"]}},"/api/v1/prices/{chainId}":{"get":{"operationId":"PricesController_getPrices","summary":"Returns price for multiple tokens","parameters":[{"name":"chainId","required":true,"in":"path","description":"Chain ID of the network to search for","schema":{"example":"1","type":"number"}},{"name":"addresses","required":true,"in":"query","description":"Ethereum address of the token to check price for (max 100 addresses).","schema":{"example":["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"],"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/Price"}],"nullable":true}}}}}},"tags":["metadata"]}},"/api/v1/account/accountId":{"get":{"operationId":"AccountController_accountId","summary":"Returns accountId connected to your api key used in the on-chain event.","parameters":[],"responses":{"200":{"description":"Your accountId","content":{"application/json":{"schema":{"type":"string"}}}}},"tags":["metadata"]}},"/api/v1/shortcuts/route":{"get":{"operationId":"RouterController_routeShortcutTransaction","summary":"Find optimal route between tokens (direct routes, zaps)","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the network to execute the transaction on","schema":{"default":1,"type":"number"}},{"name":"fromAddress","required":true,"in":"query","description":"Ethereum address of the wallet to send the transaction from","schema":{"default":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"routingStrategy","required":false,"in":"query","description":"Routing strategy to use","schema":{"nullable":true,"enum":["ensowallet-v2","router","delegate","router-legacy","delegate-legacy"],"type":"string"}},{"name":"executionMode","required":false,"in":"query","description":"Controls how quote is built based on execution mode","schema":{"default":"user","enum":["user","backend"],"type":"string"}},{"name":"toEoa","required":false,"in":"query","description":"Flag that indicates if gained tokenOut should be sent to EOA","deprecated":true,"schema":{"nullable":true,"type":"boolean"}},{"name":"includeTransactionCost","required":false,"in":"query","description":"Include point-in-time source-chain transaction cost estimates in native units and USD","schema":{"default":false,"type":"boolean"}},{"name":"receiver","required":false,"in":"query","description":"Ethereum address of the receiver of the tokenOut","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"spender","required":false,"in":"query","description":"Ethereum address of the spender of the tokenIn","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"refundReceiver","required":false,"in":"query","description":"Ethereum address of the receiver of any dust tokens that might be produced during the execution of actions","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"amountIn","required":true,"in":"query","description":"Amount of tokenIn to swap in wei","schema":{"example":["1000000000000000000"],"type":"array","items":{"type":"string"}}},{"name":"minAmountOut","required":false,"in":"query","description":"Minimum amount out in wei. If specified, slippage should not be specified","schema":{"default":null,"type":"array","items":{"type":"string"}}},{"name":"slippage","required":false,"in":"query","description":"Slippage in basis points (1/10000). e.g. 50 = 0.50%. If specified, minAmountOut should not be specified","schema":{"default":"50","example":"300","type":"string"}},{"name":"fee","required":false,"in":"query","description":"Fee in basis points per amountIn. Use 1-100. All-zero fees are ignored. Collection is on the source chain unless a cross-chain route sets destinationFeeReceiver.","schema":{"example":["100"],"type":"array","items":{"type":"string"}}},{"name":"feeReceiver","required":false,"in":"query","description":"The Ethereum address that receives the source-chain fee and remains the fallback when destination collection does not apply. Required if fee is provided.","schema":{"example":"0x220866B1A2219f40e72f5c628B65D54268cA3A9D","type":"string"}},{"name":"destinationFeeReceiver","required":false,"in":"query","description":"Optional destination-chain fee receiver. For a cross-chain route with destination execution, the requested fee is collected atomically from the delivered bridge asset on the destination chain. Otherwise feeReceiver remains the source-chain receiver.","schema":{"example":"0x220866B1A2219f40e72f5c628B65D54268cA3A9D","type":"string"}},{"name":"ignoreAggregators","required":false,"in":"query","description":"A list of swap aggregators to be ignored from consideration","schema":{"nullable":true,"type":"array","items":{"type":"string","enum":["0x","1inch","openocean","kyberswap","native","paraswap","bebop","barter","sushiswap-router","ooga-booga","renegade","uniswap","rooster","wowmax","grapher","hyperbloom","hyperswap","hyperflow","fly","eisen","nordstern","everlong","bitget"]}}},{"name":"ignoreStandards","required":false,"in":"query","description":"A list of standards to be ignored from consideration","schema":{"nullable":true,"type":"array","items":{"type":"string"}}},{"name":"ignoreBridges","required":false,"in":"query","description":"A list of bridges to be ignored from consideration","schema":{"default":[],"type":"array","items":{"type":"string","enum":["cctp","stargate","ccip","relay"]}}},{"name":"crosschainRouteMode","required":false,"in":"query","description":"Controls cross-chain route complexity. direct uses only a bridge, source allows routing before the bridge, destination allows routing after the bridge, sourceOrDestination allows routing on either chain but not both, and full allows routing on both chains","schema":{"default":"full","enum":["direct","source","destination","sourceOrDestination","full"],"type":"string"}},{"name":"referralCode","required":false,"in":"query","description":"Referral code that will be included in an on-chain event.","schema":{"maxLength":16,"example":"0123456789ABCDEF","type":"string"}},{"name":"tokenIn","required":true,"in":"query","description":"Ethereum address of the token to swap from. For ETH, use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","schema":{"example":["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"],"type":"array","items":{"type":"string"}}},{"name":"tokenOut","required":true,"in":"query","description":"Ethereum address of the token to swap to. For ETH, use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","schema":{"example":["0x6b175474e89094c44da98b954eedeac495271d0f"],"type":"array","items":{"type":"string"}}},{"name":"destinationChainId","required":false,"in":"query","description":"Chain ID of the network to bridge to and receive tokenOut","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteShortcutTransaction"}}}},"400":{"description":""}},"tags":["shortcuts"]},"post":{"operationId":"RouterController_postRouteShortcutTransaction","summary":"Find optimal route between tokens (direct routes, zaps)","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteShortcutVariableInputs"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteShortcutTransaction"}}}},"400":{"description":""}},"tags":["shortcuts"]}},"/api/v1/shortcuts/route/nontokenized":{"get":{"operationId":"NontokenizedController_routeNontokenizedShorcutTransaction","summary":"Find optimal route between token and nontokenized position","parameters":[{"name":"chainId","required":false,"in":"query","description":"Chain ID of the network to execute the transaction on","schema":{"default":1,"example":80094,"type":"number"}},{"name":"fromAddress","required":true,"in":"query","description":"Ethereum address of the wallet to send the transaction from","schema":{"default":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"routingStrategy","required":false,"in":"query","description":"Routing strategy to use","schema":{"nullable":true,"default":"router","enum":["router","delegate","delegate-legacy","checkout"],"type":"string"}},{"name":"referralCode","required":false,"in":"query","description":"Referral code that will be included in an on-chain event.","schema":{"maxLength":16,"example":"0123456789ABCDEF","type":"string"}},{"name":"destinationChainId","required":false,"in":"query","description":"Chain ID of the network to bridge to and receive nontokenized position","schema":{"type":"number"}},{"name":"tokenIn","required":true,"in":"query","description":"Ethereum address of the token to swap from. For ETH, use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","schema":{"example":["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"],"type":"array","items":{"type":"string"}}},{"name":"positionOut","required":true,"in":"query","description":"ID of a non-tokenized position","schema":{"type":"string"}},{"name":"slippage","required":false,"in":"query","description":"Slippage in basis points (1/10000). If specified, minAmountOut should not be specified","schema":{"default":"50","example":"300","type":"string"}},{"name":"fee","required":false,"in":"query","description":"Fee in basis points per amountIn. Use 1-100. All-zero fees are ignored. Collection is on the source chain unless a cross-chain route sets destinationFeeReceiver.","schema":{"example":["100"],"type":"array","items":{"type":"string"}}},{"name":"feeReceiver","required":false,"in":"query","description":"The Ethereum address that receives the source-chain fee and remains the fallback when destination collection does not apply. Required if fee is provided.","schema":{"example":"0x220866B1A2219f40e72f5c628B65D54268cA3A9D","type":"string"}},{"name":"destinationFeeReceiver","required":false,"in":"query","description":"Optional destination-chain fee receiver. For a cross-chain route with destination execution, the requested fee is collected atomically from the delivered bridge asset on the destination chain. Otherwise feeReceiver remains the source-chain receiver.","schema":{"example":"0x220866B1A2219f40e72f5c628B65D54268cA3A9D","type":"string"}},{"name":"ignoreAggregators","required":false,"in":"query","description":"A list of swap aggregators to be ignored from consideration","schema":{"nullable":true,"type":"array","items":{"type":"string","enum":["0x","1inch","openocean","kyberswap","native","paraswap","bebop","barter","sushiswap-router","ooga-booga","renegade","uniswap","rooster","wowmax","grapher","hyperbloom","hyperswap","hyperflow","fly","eisen","nordstern","everlong","bitget"]}}},{"name":"ignoreBridges","required":false,"in":"query","description":"A list of bridge protocols to be ignored from consideration","schema":{"nullable":true,"type":"array","items":{"type":"string","enum":["cctp","stargate","ccip","relay"]}}},{"name":"ignoreStandards","required":false,"in":"query","description":"A list of standards to be ignored from consideration","schema":{"nullable":true,"type":"array","items":{"type":"string"}}},{"name":"amountIn","required":true,"in":"query","description":"Amount of tokenIn to swap in wei","schema":{"example":["1000000000000000000"],"type":"array","items":{"type":"string"}}},{"name":"receiver","required":true,"in":"query","description":"Ethereum address of the receiver of the positionOut","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"spender","required":false,"in":"query","description":"Ethereum address of the spender of the tokenIn","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"refundReceiver","required":false,"in":"query","description":"Ethereum address of the receiver of any dust tokens that might be produced during the execution of actions","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NontokenizedRouteShortcutTransaction"}}}},"400":{"description":""}},"tags":["shortcuts"]}},"/api/v1/wallet/approve":{"get":{"operationId":"WalletController_createApproveTransaction","summary":"Returns transaction that approves your EnsoWallet-v2 to spend tokens","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the network to execute the transaction on","schema":{"default":1,"type":"number"}},{"name":"fromAddress","required":true,"in":"query","description":"Ethereum address of the wallet to send the transaction from","schema":{"default":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"routingStrategy","required":false,"in":"query","description":"Routing strategy to use","schema":{"nullable":true,"enum":["ensowallet-v2","router","delegate","router-legacy","delegate-legacy"],"type":"string"}},{"name":"tokenAddress","required":true,"in":"query","description":"ERC20 token address of the token to approve","schema":{"default":"0x6b175474e89094c44da98b954eedeac495271d0f","type":"string"}},{"name":"amount","required":true,"in":"query","description":"Amount of tokens to approve in wei","schema":{"default":"1000000000000000000000000000","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletApproveTransaction"}}}}},"tags":["wallet"]}},"/api/v1/wallet/balances":{"get":{"operationId":"WalletController_walletBalances","summary":"Returns all balances for a given wallet","parameters":[{"name":"eoaAddress","required":true,"in":"query","description":"Address of the eoa with which to associate the ensoWallet-v2 for balances","schema":{"default":"0x93621DCA56fE26Cdee86e4F6B18E116e9758Ff11","type":"string"}},{"name":"useEoa","required":true,"in":"query","description":"If true returns balances for the provided address, instead of the associated ensoWallet-v2","schema":{"type":"boolean"}},{"name":"chainId","required":true,"in":"query","schema":{"oneOf":[{"type":"integer"},{"type":"string","enum":["all"]}],"example":"all"},"description":"Chain ID (or 'all') to fetch balances for specified network"}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WalletBalance"}}}}}},"tags":["wallet"]}},"/api/v1/tokens":{"get":{"operationId":"TokensController_tokens","summary":"Returns tokens and their details","parameters":[{"name":"project","required":false,"in":"query","description":"The overarching project or platform associated with the DeFi token","schema":{"example":"aave","type":"string"}},{"name":"protocolSlug","required":false,"in":"query","description":"The specific standard integration or version of the DeFi project","schema":{"example":"aave-v2","type":"string"}},{"name":"underlyingTokens","required":false,"in":"query","description":"Underlying tokens of defi token","schema":{"example":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],"type":"array","items":{"type":"string"}}},{"name":"underlyingTokensExact","required":false,"in":"query","description":"Exact composition of underlying tokens of defi token","schema":{"example":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],"type":"array","items":{"type":"string"}}},{"name":"primaryAddress","required":false,"in":"query","description":"Ethereum addresses for contract interaction of defi tokens","schema":{"example":["0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9"],"type":"array","items":{"type":"string"}}},{"name":"address","required":false,"in":"query","description":"Ethereum addresses of the tokens","schema":{"example":["0x030bA81f1c18d280636F32af80b9AAd02Cf0854e"],"type":"array","items":{"type":"string"}}},{"name":"name","required":false,"in":"query","description":"Names of the tokens","schema":{"example":["Bridged USDT"],"type":"array","items":{"type":"string"}}},{"name":"symbol","required":false,"in":"query","description":"Symbols of the tokens","schema":{"example":["USDC"],"type":"array","items":{"type":"string"}}},{"name":"chainId","required":false,"in":"query","description":"Chain ID of the network of the token","schema":{"example":1,"type":"number"}},{"name":"type","required":false,"in":"query","description":"Type of token.\n      If not provided, both types will be taken into account","schema":{"example":"defi","enum":["defi","base"],"type":"string"}},{"name":"liquidityType","required":false,"in":"query","description":"Type of liquidity.\n      If not provided, both types will be taken into account","schema":{"example":"SingleToken","enum":["SingleToken","MultiToken"],"type":"string"}},{"name":"page","required":false,"in":"query","description":"Pagination page number. Pages are of length 1000","schema":{"example":"1","type":"number"}},{"name":"pageSize","required":false,"in":"query","description":"Number of items per page (max 1000)","schema":{"default":1000,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Cursor for pagination. Pages are of length 1000","schema":{"example":"1233456","type":"number"}},{"name":"includeMetadata","required":false,"in":"query","description":"Whether to include token metadata (symbol, name and logos)","schema":{"default":false,"example":false,"type":"boolean"}},{"name":"includeUnderlying","required":false,"in":"query","description":"Whether to include underlying tokes","schema":{"default":true,"example":false,"type":"boolean"}},{"name":"apyFrom","required":false,"in":"query","description":"Only include tokens with APY over this value","schema":{"example":1,"type":"number"}},{"name":"apyTo","required":false,"in":"query","description":"Only include tokens with APY below this value","schema":{"example":10,"type":"number"}},{"name":"tvlFrom","required":false,"in":"query","description":"Only include tokens with TVL over this value","schema":{"example":0,"type":"number"}},{"name":"tvlTo","required":false,"in":"query","description":"Only include tokens with TVL below this value","schema":{"example":10000000,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"properties":{"data":{"type":"array","description":"Returned data for current page","items":{"$ref":"#/components/schemas/PositionModel"}}}}]}}}}},"tags":["metadata"]}},"/api/v1/aggregators":{"get":{"operationId":"AggregatorsController_aggregators","summary":"Returns aggregators supported by the API (can be controled via disableAggregators param)","parameters":[],"responses":{"200":{"description":"Returns a list of aggregators","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}},"tags":["metadata"]}},"/api/v1/actions":{"get":{"operationId":"ActionsController_findAll","summary":"Returns actions available to use in bundle shortcuts","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Action"}}}}}},"tags":["standards"]}},"/api/v1/actions/{slug}":{"get":{"operationId":"ActionsController_getActionsBySlug","summary":"Returns actions available to use in bundle shortcuts for a given protocol","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Action"}}}}}},"tags":["standards"]}},"/api/v1/layerzero/pool":{"get":{"operationId":"LayerZeroController_getPoolAddress","summary":"Get LayerZero pool address for a token on a specific chain","description":"Returns the LayerZero Stargate pool address for a given token address and chain ID. Returns null if no pool exists for the token on that chain.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID","schema":{"type":"number"}},{"name":"token","required":true,"in":"query","description":"Token address on source chain","schema":{"type":"string"}},{"name":"destinationChainId","required":false,"in":"query","description":"Chain ID of destination chain","schema":{"type":"number"}},{"name":"destinationToken","required":false,"in":"query","description":"Token address on destination chain","schema":{"type":"string"}}],"responses":{"200":{"description":"Pool address lookup result","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LZPoolLookupResponse"}}}}}},"tags":["layerzero"]}},"/api/v1/stargate/pool":{"get":{"operationId":"LayerZeroController_getPoolAddress","summary":"Get LayerZero pool address for a token on a specific chain","description":"Returns the LayerZero Stargate pool address for a given token address and chain ID. Returns null if no pool exists for the token on that chain.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID","schema":{"type":"number"}},{"name":"token","required":true,"in":"query","description":"Token address on source chain","schema":{"type":"string"}},{"name":"destinationChainId","required":false,"in":"query","description":"Chain ID of destination chain","schema":{"type":"number"}},{"name":"destinationToken","required":false,"in":"query","description":"Token address on destination chain","schema":{"type":"string"}}],"responses":{"200":{"description":"Pool address lookup result","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LZPoolLookupResponse"}}}}}},"tags":["layerzero"]}},"/api/v1/layerzero/bridge/check":{"get":{"operationId":"LayerZeroController_checkBridgeTransaction","summary":"Check bridge transaction status","description":"Returns comprehensive information about a cross-chain bridge transaction, including LayerZero message status, on-chain events, and transaction data from Enso.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the source transaction","schema":{"type":"number"}},{"name":"txHash","required":true,"in":"query","description":"Transaction hash","schema":{"example":"0x1234567890abcdef...","type":"string"}}],"responses":{"200":{"description":"Bridge transaction status and details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeTransactionResponse"}}}},"429":{"description":"Rate limit exceeded"}},"tags":["layerzero"]}},"/api/v1/stargate/bridge/check":{"get":{"operationId":"LayerZeroController_checkBridgeTransaction","summary":"Check bridge transaction status","description":"Returns comprehensive information about a cross-chain bridge transaction, including LayerZero message status, on-chain events, and transaction data from Enso.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the source transaction","schema":{"type":"number"}},{"name":"txHash","required":true,"in":"query","description":"Transaction hash","schema":{"example":"0x1234567890abcdef...","type":"string"}}],"responses":{"200":{"description":"Bridge transaction status and details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeTransactionResponse"}}}},"429":{"description":"Rate limit exceeded"}},"tags":["layerzero"]}},"/api/v1/standards":{"get":{"operationId":"StandardsController_standards","summary":"Returns standards and methods available to use in bundle shortcuts","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Standard"}}}}}},"tags":["standards"]}},"/api/v1/standards/{slug}":{"get":{"operationId":"StandardsController_getProtocolBySlug","summary":"Returns a standard by slug","parameters":[{"name":"slug","required":true,"in":"path","description":"The protocol slug","schema":{"example":"aave-v2","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProtocolModel"}}}}},"tags":["standards"]}},"/api/v1/shortcuts/bundle":{"post":{"operationId":"BundleController_bundleShortcutTransaction","summary":"Bundle a list of actions into a single transaction","externalDocs":{"url":"https://docs.enso.build/pages/build/get-started/bundling-actions","description":"More end-to-end bundle examples"},"parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the network to execute the transaction on","schema":{"default":1,"type":"number"}},{"name":"fromAddress","required":true,"in":"query","description":"Ethereum address of the wallet to send the transaction from","schema":{"default":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"referralCode","required":false,"in":"query","description":"Referral code that will be included in an on-chain event.","schema":{"maxLength":16,"example":"0123456789ABCDEF","type":"string"}},{"name":"routingStrategy","required":false,"in":"query","description":"Routing strategy to use","schema":{"nullable":true,"enum":["ensowallet-v2","router","delegate","router-legacy","delegate-legacy"],"type":"string"}},{"name":"executionMode","required":false,"in":"query","description":"Controls how quote is built based on execution mode","schema":{"default":"user","enum":["user","backend"],"type":"string"}},{"name":"receiver","required":false,"in":"query","description":"Ethereum address of the receiver of the tokenOut","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"spender","required":false,"in":"query","description":"Ethereum address of the spender of the tokenIn","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"refundReceiver","required":false,"in":"query","description":"Ethereum address of the receiver of any dust tokens that might be produced during the execution of actions","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"ignoreAggregators","required":false,"in":"query","description":"A list of swap aggregators to be ignored from consideration","schema":{"nullable":true,"type":"array","items":{"type":"string","enum":["0x","1inch","openocean","kyberswap","native","paraswap","bebop","barter","sushiswap-router","ooga-booga","renegade","uniswap","rooster","wowmax","grapher","hyperbloom","hyperswap","hyperflow","fly","eisen","nordstern","everlong","bitget"]}}},{"name":"skipQuote","required":false,"in":"query","description":"Flag to skip quoting (if true, amountOut and gas will not be returned)","schema":{"type":"boolean"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/RouteActionDto"},{"$ref":"#/components/schemas/SwapActionDto"},{"$ref":"#/components/schemas/BridgeActionDto"},{"$ref":"#/components/schemas/BalanceActionDto"},{"$ref":"#/components/schemas/ApproveActionDto"},{"$ref":"#/components/schemas/TransferActionDto"},{"$ref":"#/components/schemas/TransferFromActionDto"},{"$ref":"#/components/schemas/PermitTransferFromActionDto"},{"$ref":"#/components/schemas/DepositActionDto"},{"$ref":"#/components/schemas/RedeemActionDto"},{"$ref":"#/components/schemas/DepositCLMMActionDto"},{"$ref":"#/components/schemas/RedeemCLMMActionDto"},{"$ref":"#/components/schemas/TokenizedSingleDepositActionDto"},{"$ref":"#/components/schemas/TokenizedMultiDepositActionDto"},{"$ref":"#/components/schemas/TokenizedSingleRedeemActionDto"},{"$ref":"#/components/schemas/TokenizedMultiRedeemActionDto"},{"$ref":"#/components/schemas/MultiOutSingleDepositActionDto"},{"$ref":"#/components/schemas/CallActionDto"},{"$ref":"#/components/schemas/FlashloanActionDto"},{"$ref":"#/components/schemas/WithdrawActionDto"},{"$ref":"#/components/schemas/SplitActionDto"},{"$ref":"#/components/schemas/MergeActionDto"},{"$ref":"#/components/schemas/MinAmountOutActionDto"},{"$ref":"#/components/schemas/SlippageActionDto"},{"$ref":"#/components/schemas/FeeActionDto"},{"$ref":"#/components/schemas/EnsoFeeActionDto"},{"$ref":"#/components/schemas/PaymasterFeeActionDto"},{"$ref":"#/components/schemas/RepayActionDto"},{"$ref":"#/components/schemas/BorrowActionDto"},{"$ref":"#/components/schemas/HarvestActionDto"},{"$ref":"#/components/schemas/SingleDepositActionDto"},{"$ref":"#/components/schemas/MultiDepositActionDto"},{"$ref":"#/components/schemas/SingleRedeemActionDto"},{"$ref":"#/components/schemas/MultiRedeemActionDto"},{"$ref":"#/components/schemas/MathActionDto"},{"$ref":"#/components/schemas/ComparisonActionDto"},{"$ref":"#/components/schemas/ConditionActionDto"},{"$ref":"#/components/schemas/ToggleActionDto"}],"discriminator":{"propertyName":"action","mapping":{"route":"#/components/schemas/RouteActionDto","swap":"#/components/schemas/SwapActionDto","bridge":"#/components/schemas/BridgeActionDto","balance":"#/components/schemas/BalanceActionDto","approve":"#/components/schemas/ApproveActionDto","transfer":"#/components/schemas/TransferActionDto","transferfrom":"#/components/schemas/TransferFromActionDto","permittransferfrom":"#/components/schemas/PermitTransferFromActionDto","deposit":"#/components/schemas/DepositActionDto","redeem":"#/components/schemas/RedeemActionDto","depositclmm":"#/components/schemas/DepositCLMMActionDto","redeemclmm":"#/components/schemas/RedeemCLMMActionDto","tokenizedsingledeposit":"#/components/schemas/TokenizedSingleDepositActionDto","tokenizedmultideposit":"#/components/schemas/TokenizedMultiDepositActionDto","tokenizedsingleredeem":"#/components/schemas/TokenizedSingleRedeemActionDto","tokenizedmultiredeem":"#/components/schemas/TokenizedMultiRedeemActionDto","multioutsingledeposit":"#/components/schemas/MultiOutSingleDepositActionDto","call":"#/components/schemas/CallActionDto","flashloan":"#/components/schemas/FlashloanActionDto","withdraw":"#/components/schemas/WithdrawActionDto","singlewithdraw":"#/components/schemas/WithdrawActionDto","singlewithdrawwithpositionid":"#/components/schemas/WithdrawActionDto","multiwithdraw":"#/components/schemas/WithdrawActionDto","split":"#/components/schemas/SplitActionDto","merge":"#/components/schemas/MergeActionDto","minamountout":"#/components/schemas/MinAmountOutActionDto","slippage":"#/components/schemas/SlippageActionDto","fee":"#/components/schemas/FeeActionDto","ensofee":"#/components/schemas/EnsoFeeActionDto","paymasterfee":"#/components/schemas/PaymasterFeeActionDto","repay":"#/components/schemas/RepayActionDto","borrow":"#/components/schemas/BorrowActionDto","harvest":"#/components/schemas/HarvestActionDto","singledeposit":"#/components/schemas/SingleDepositActionDto","multideposit":"#/components/schemas/MultiDepositActionDto","singleredeem":"#/components/schemas/SingleRedeemActionDto","multiredeem":"#/components/schemas/MultiRedeemActionDto","add":"#/components/schemas/MathActionDto","sub":"#/components/schemas/MathActionDto","mul":"#/components/schemas/MathActionDto","div":"#/components/schemas/MathActionDto","min":"#/components/schemas/MathActionDto","max":"#/components/schemas/MathActionDto","isequal":"#/components/schemas/ComparisonActionDto","islessthan":"#/components/schemas/ComparisonActionDto","isequalorlessthan":"#/components/schemas/ComparisonActionDto","isgreaterthan":"#/components/schemas/ComparisonActionDto","isequalorgreaterthan":"#/components/schemas/ComparisonActionDto","not":"#/components/schemas/ConditionActionDto","check":"#/components/schemas/ConditionActionDto","toggle":"#/components/schemas/ToggleActionDto"}},"description":"Each item is a protocol action; items are executed sequentially"},"description":"List of actions to bundle"},"examples":{"route":{"summary":"Route 0.0000001 ETH -> stETH with 3% slippage (Mainnet)","value":[{"protocol":"enso","action":"route","args":{"tokenIn":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","tokenOut":"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84","amountIn":"100000000000","slippage":"300"}}]},"bridge":{"summary":"Bridge native (Optimism -> Unichain) with callback route","value":[{"protocol":"stargate","action":"bridge","args":{"primaryAddress":"0xe8cdf27acd73a434d661c84887215f7598e7d0d3","destinationChainId":130,"tokenIn":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","amountIn":"5000000000000000000","receiver":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","callback":[{"protocol":"enso","action":"balance","args":{"token":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"}},{"protocol":"enso","action":"route","args":{"slippage":"100","tokenIn":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","tokenOut":"0x078d782b760474a361dda0af3839290b0ef57ad6","amountIn":{"useOutputOfCallAt":0}}}]}}]},"approve":{"summary":"Approve token spending","value":[{"protocol":"erc20","action":"approve","args":{"token":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","spender":"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D","amount":"115792089237316195423570985008687907853269984665640564039457","routingStrategy":"router"}}]},"deposit":{"summary":"Deposit into a vault","value":[{"protocol":"yearn-v2","action":"deposit","args":{"tokenIn":"0x6B175474E89094C44Da98b954EedeAC495271d0F","tokenOut":"0xdA816459F1AB5631232FE5e97a05BBBb94970c95","amountIn":"10000000000000000000","primaryAddress":"0xdA816459F1AB5631232FE5e97a05BBBb94970c95","receiver":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e"}}]},"redeem":{"summary":"Redeem from a vault","value":[{"protocol":"yearn-v2","action":"redeem","args":{"tokenIn":"0xdA816459F1AB5631232FE5e97a05BBBb94970c95","tokenOut":"0x6B175474E89094C44Da98b954EedeAC495271d0F","amountIn":"10000000000000000000","primaryAddress":"0xdA816459F1AB5631232FE5e97a05BBBb94970c95","receiver":"0x742d35Cc6634C0532925a3b844Bc454e4438f44e"}}]},"call":{"summary":"Reference previous output as msg.value and call deposit on WETH","value":[{"protocol":"enso","action":"route","args":{"tokenIn":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48","tokenOut":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","amountIn":"1000000000"}},{"protocol":"enso","action":"call","args":{"address":"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2","method":"deposit","abi":"function deposit() external payable","args":[],"value":{"useOutputOfCallAt":0}}}]},"split_merge":{"summary":"Split USDT then deposit CLMM on Sushiswap V3 (Arbitrum One)","value":[{"protocol":"enso","action":"split","args":{"tokenIn":"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9","tokenOut":["0xaf88d065e77c8cc2239327c5edb3a432268e5831","0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"],"amountIn":"100000000"}},{"protocol":"sushiswap-v3","action":"depositclmm","args":{"tokenOut":"0xf0cbce1942a68beb3d1b73f0dd86c8dcc363ef49","ticks":[-887271,887271],"tokenIn":["0xaf88d065e77c8cc2239327c5edb3a432268e5831","0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9"],"poolFee":"100","amountIn":[{"useOutputOfCallAt":0,"index":0},{"useOutputOfCallAt":0,"index":1}]}}]},"fees":{"summary":"Apply fee and ensofee","value":[{"protocol":"enso","action":"fee","args":{"receiver":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","token":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","amount":"1000000","bps":"50"}},{"protocol":"enso","action":"ensofee","args":{"token":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","amount":{"useOutputOfCallAt":0},"bps":"25"}}]},"zap_multiple_lps":{"summary":"Multiple dependent routes (Mainnet)","value":[{"protocol":"enso","action":"route","args":{"tokenIn":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","tokenOut":"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84","amountIn":"1000000000000000000","slippage":"300"}},{"protocol":"enso","action":"route","args":{"tokenIn":"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84","tokenOut":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","amountIn":{"useOutputOfCallAt":0},"slippage":"1000","ignoreAggregators":["openocean"]}},{"protocol":"enso","action":"route","args":{"tokenIn":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","tokenOut":"0x6b175474e89094c44da98b954eedeac495271d0f","amountIn":{"useOutputOfCallAt":1},"slippage":"300"}}]},"yield_compounding":{"summary":"Complex bundle: route -> aave deposit -> token transfer","value":[{"protocol":"enso","action":"route","args":{"tokenIn":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","tokenOut":"0xae78736Cd615f374D3085123A210448E74Fc6393","amountIn":"10000000000000000","slippage":"300"}},{"protocol":"aave-v3","action":"deposit","args":{"primaryAddress":"0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2","tokenIn":"0xae78736Cd615f374D3085123A210448E74Fc6393","tokenOut":"0xCc9EE9483f662091a1de4795249E24aC0aC2630f","amountIn":{"useOutputOfCallAt":0}}},{"protocol":"enso","action":"call","args":{"address":"0xCc9EE9483f662091a1de4795249E24aC0aC2630f","method":"transfer","abi":"function transfer(address,uint256) external","args":["0x93621DCA56fE26Cdee86e4F6B18E116e9758Ff11",{"useOutputOfCallAt":1}]}}]},"math_split_transfer":{"summary":"Route ETH -> USDC, divide by 2, transfer halves to two addresses","value":[{"protocol":"enso","action":"route","args":{"tokenIn":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","tokenOut":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","amountIn":"1000000000000000000","slippage":"300"}},{"protocol":"math","action":"div","args":{"amountA":{"useOutputOfCallAt":0},"amountB":"2"}},{"protocol":"erc20","action":"transfer","args":{"token":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","amount":{"useOutputOfCallAt":1},"receiver":"0xE02F274E67871a4eb8e1463651173b13338f89c2"}},{"protocol":"erc20","action":"transfer","args":{"token":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","amount":{"useOutputOfCallAt":1},"receiver":"0x70f87ac4d8441626a53DF0E65361190E190C1b4e"}}]},"lsd_looping":{"summary":"Multiple dependent routes with onchain fee (Mainnet)","value":[{"protocol":"enso","action":"route","args":{"tokenIn":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","tokenOut":"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84","amountIn":"1000000000000000000","slippage":"300"}},{"protocol":"enso","action":"route","args":{"tokenIn":"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84","tokenOut":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","amountIn":{"useOutputOfCallAt":0},"fee":["100"],"feeReceiver":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","ignoreAggregators":["openocean"],"slippage":"1000"}},{"protocol":"enso","action":"route","args":{"tokenIn":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","tokenOut":"0x6b175474e89094c44da98b954eedeac495271d0f","amountIn":{"useOutputOfCallAt":1},"slippage":"300"}}]},"alchemix_loop_1":{"summary":"Alchemix self-repaying loop with extra borrow (regression: per-action receiver routing)","value":[{"protocol":"alchemix-vaults-v3","action":"deposit","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","tokenIn":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenOut":"0xeB83112d925268BeDe86654C13D423a987587e3E","amountIn":"10000000000000000000","receiver":"0x0000000000000000000000000000000000000000","tokenId":"0"}},{"protocol":"alchemix-vaults-v3","action":"borrow","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","collateral":"0xbc6da0fe9ad5f3b0d58160288917aa56653660e9","tokenOut":"0xbc6da0fe9ad5f3b0d58160288917aa56653660e9","amountOut":"7500000000000000000","tokenId":{"useOutputOfCallAt":0,"index":0}}},{"protocol":"enso","action":"route","args":{"tokenIn":["0xbc6da0fe9ad5f3b0d58160288917aa56653660e9"],"amountIn":{"useOutputOfCallAt":1},"tokenOut":["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"],"slippage":"100"}},{"protocol":"alchemix-myts","action":"deposit","args":{"primaryAddress":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenIn":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","tokenOut":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","amountIn":{"useOutputOfCallAt":2}}},{"protocol":"alchemix-vaults-v3","action":"deposit","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","tokenIn":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenOut":"0xeB83112d925268BeDe86654C13D423a987587e3E","amountIn":{"useOutputOfCallAt":3},"receiver":"0x0000000000000000000000000000000000000000","tokenId":{"useOutputOfCallAt":0,"index":0}}},{"protocol":"alchemix-vaults-v3","action":"borrow","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","collateral":"0xbc6da0fe9ad5f3b0d58160288917aa56653660e9","tokenOut":"0xbc6da0fe9ad5f3b0d58160288917aa56653660e9","amountOut":"7000000000000000000","receiver":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","tokenId":{"useOutputOfCallAt":0,"index":0}}}]},"alchemix_loop_1_erc721":{"summary":"Alchemix self-repaying loop + erc721:transferfrom of position NFT","value":[{"protocol":"alchemix-vaults-v3","action":"deposit","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","tokenIn":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenOut":"0xeB83112d925268BeDe86654C13D423a987587e3E","amountIn":"10000000000000000000","receiver":"0x0000000000000000000000000000000000000000","tokenId":"0"}},{"protocol":"alchemix-vaults-v3","action":"borrow","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","collateral":"0xbc6da0fe9ad5f3b0d58160288917aa56653660e9","tokenOut":"0xbc6da0fe9ad5f3b0d58160288917aa56653660e9","amountOut":"7500000000000000000","tokenId":{"useOutputOfCallAt":0,"index":0}}},{"protocol":"enso","action":"route","args":{"tokenIn":["0xbc6da0fe9ad5f3b0d58160288917aa56653660e9"],"amountIn":{"useOutputOfCallAt":1},"tokenOut":["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"],"slippage":"100"}},{"protocol":"alchemix-myts","action":"deposit","args":{"primaryAddress":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenIn":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","tokenOut":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","amountIn":{"useOutputOfCallAt":2}}},{"protocol":"alchemix-vaults-v3","action":"deposit","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","tokenIn":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenOut":"0xeB83112d925268BeDe86654C13D423a987587e3E","amountIn":{"useOutputOfCallAt":3},"receiver":"0x0000000000000000000000000000000000000000","tokenId":{"useOutputOfCallAt":0,"index":0}}},{"protocol":"erc721","action":"transferfrom","args":{"token":"0xeB83112d925268BeDe86654C13D423a987587e3E","receiver":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","tokenId":{"useOutputOfCallAt":0,"index":0}}}]},"alchemix_loop_1_erc721_transfer":{"summary":"Alchemix self-repaying loop + erc721:transfer of position NFT","value":[{"protocol":"alchemix-vaults-v3","action":"deposit","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","tokenIn":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenOut":"0xeB83112d925268BeDe86654C13D423a987587e3E","amountIn":"10000000000000000000","receiver":"0x0000000000000000000000000000000000000000","tokenId":"0"}},{"protocol":"alchemix-vaults-v3","action":"borrow","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","collateral":"0xbc6da0fe9ad5f3b0d58160288917aa56653660e9","tokenOut":"0xbc6da0fe9ad5f3b0d58160288917aa56653660e9","amountOut":"7500000000000000000","tokenId":{"useOutputOfCallAt":0,"index":0}}},{"protocol":"enso","action":"route","args":{"tokenIn":["0xbc6da0fe9ad5f3b0d58160288917aa56653660e9"],"amountIn":{"useOutputOfCallAt":1},"tokenOut":["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"],"slippage":"100"}},{"protocol":"alchemix-myts","action":"deposit","args":{"primaryAddress":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenIn":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","tokenOut":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","amountIn":{"useOutputOfCallAt":2}}},{"protocol":"alchemix-vaults-v3","action":"deposit","args":{"primaryAddress":"0xeB83112d925268BeDe86654C13D423a987587e3E","tokenIn":"0x9B44efCa3e2a707B63Dc00CE79d646E5E5D24bA5","tokenOut":"0xeB83112d925268BeDe86654C13D423a987587e3E","amountIn":{"useOutputOfCallAt":3},"receiver":"0x0000000000000000000000000000000000000000","tokenId":{"useOutputOfCallAt":0,"index":0}}},{"protocol":"erc721","action":"transfer","args":{"token":"0xeB83112d925268BeDe86654C13D423a987587e3E","receiver":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","tokenId":{"useOutputOfCallAt":0,"index":0}}}]}}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BundleShortcutTransaction"},"examples":{"success":{"summary":"Successful bundle build","value":{"metadata":{"bridgeRefundAssets":[],"bridgeFees":[]},"createdAt":20483231,"tx":{"to":"0x0000000000000000000000000000000000000000","from":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","data":"0x","value":"0"},"gas":"450000","amountsOut":{"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48":"999000"},"route":[],"bundle":[{"protocol":"uniswap-v2","action":"swap","args":{"tokenIn":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","tokenOut":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","amountIn":"1000000000000000000","receiver":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"}},{"protocol":"enso","action":"slippage","args":{"bps":"100","amountOut":{"useOutputOfCallAt":0}}}]}}}}},"description":""}},"tags":["shortcuts"]}},"/api/v1/shortcuts/quote":{"get":{"operationId":"QuoteController_quote","summary":"Quote from a token to another","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the network to execute the transaction on","schema":{"default":1,"type":"number"}},{"name":"fromAddress","required":false,"in":"query","description":"Ethereum address of the wallet to send the transaction from","schema":{"example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}},{"name":"routingStrategy","required":false,"in":"query","description":"Routing strategy to use","schema":{"nullable":true,"enum":["ensowallet-v2","router","delegate","router-legacy","delegate-legacy"],"type":"string"}},{"name":"tokenIn","required":true,"in":"query","description":"Ethereum address of the token to swap from. For ETH, use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","schema":{"example":["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"],"type":"array","items":{"type":"string"}}},{"name":"tokenOut","required":true,"in":"query","description":"Ethereum address of the token to swap from. For ETH, use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","schema":{"example":["0x6b175474e89094c44da98b954eedeac495271d0f"],"type":"array","items":{"type":"string"}}},{"name":"amountIn","required":true,"in":"query","description":"Amount of tokenIn to swap in wei","schema":{"example":["1000000000000000000"],"type":"array","items":{"type":"string"}}},{"name":"fee","required":false,"in":"query","description":"Fee in basis points per amountIn, sent to feeReceiver. Use 1-100. All-zero fees are ignored.","schema":{"type":"array","items":{"type":"string"}}},{"name":"feeReceiver","required":false,"in":"query","description":"The Ethereum address that will receive the collected fee. Required if fee is provided","schema":{"example":"0x220866B1A2219f40e72f5c628B65D54268cA3A9D","type":"string"}},{"name":"ignoreAggregators","required":false,"in":"query","description":"A list of swap aggregators to be ignored from consideration","schema":{"nullable":true,"type":"array","items":{"type":"string","enum":["0x","1inch","openocean","kyberswap","native","paraswap","bebop","barter","sushiswap-router","ooga-booga","renegade","uniswap","rooster","wowmax","grapher","hyperbloom","hyperswap","hyperflow","fly","eisen","nordstern","everlong","bitget"]}}},{"name":"ignoreStandards","required":false,"in":"query","description":"A list of standards to be ignored from consideration","schema":{"nullable":true,"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteEndpointResponse"}}}},"400":{"description":""}},"tags":["shortcuts"]}},"/api/v1/shortcuts/static/ipor":{"post":{"operationId":"IporController_iporShortcutTransaction","summary":"Get transaction for IPOR shortcut","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the network to execute the transaction on","schema":{"default":1,"type":"number"}},{"name":"fromAddress","required":true,"in":"query","description":"Ethereum address of the wallet to send the transaction from","schema":{"default":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IporShortcutInput"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IporShortcutTransaction"}}}}},"tags":["shortcuts"]}},"/api/v1/nontokenized":{"get":{"operationId":"NonTokenizedController_nontokenizedPositions","summary":"Returns nontokenized positions and their details","parameters":[{"name":"project","required":false,"in":"query","description":"The overarching project or platform associated with the DeFi token","schema":{"example":"orderly","type":"string"}},{"name":"protocolSlug","required":false,"in":"query","description":"The specific standard integration or version of the DeFi project","schema":{"example":"orderly-one-kodiak","type":"string"}},{"name":"chainId","required":false,"in":"query","description":"Chain ID of the network of the nontokenized position","schema":{"example":80094,"type":"number"}},{"name":"positionId","required":false,"in":"query","description":"Position ID of the nontokenized position.","schema":{"type":"array","items":{"type":"string"}}},{"name":"address","required":false,"in":"query","description":"Address representing nontokenized position.","schema":{"type":"array","items":{"type":"string"}}},{"name":"primaryAddress","required":false,"in":"query","description":"Ethereum addresses for contract interaction of nontokenized position","schema":{"type":"array","items":{"type":"string"}}},{"name":"underlyingTokens","required":false,"in":"query","description":"Underlying tokens of nontokenized position","schema":{"example":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],"type":"array","items":{"type":"string"}}},{"name":"underlyingTokensExact","required":false,"in":"query","description":"Exact composition of underlying tokens of nontokenized position","schema":{"example":["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"],"type":"array","items":{"type":"string"}}},{"name":"page","required":false,"in":"query","description":"Pagination page number","schema":{"type":"number"}},{"name":"pageSize","required":false,"in":"query","description":"Number of items per page (max 1000)","schema":{"default":1000,"example":100,"type":"number"}},{"name":"cursor","required":false,"in":"query","description":"Cursor for pagination","schema":{"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PaginatedResult"},{"properties":{"data":{"type":"array","description":"Returned data for current page","items":{"$ref":"#/components/schemas/NonTokenizedModel"}}}}]}}}}},"tags":["metadata"]}},"/api/v1/projects":{"get":{"operationId":"ProjectsController_standards","summary":"Returns the overarching projects or platforms associated with the available projects","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Project"}}}}}},"tags":["projects"]}},"/api/v1/projects/{project}/protocols":{"get":{"operationId":"ProjectsController_getStandardsByProject","summary":"Returns protocols available by project","parameters":[{"name":"project","required":true,"in":"path","description":"The overarching project or platform","schema":{"example":"aave","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProtocolModel"}}}}}},"tags":["projects"]}},"/api/v1/protocols":{"get":{"operationId":"ProtocolsController_findAll","summary":"Returns projects and relevant protocols available to use","parameters":[{"name":"chainId","required":false,"in":"query","description":"Chain ID of the network to search for","schema":{"example":"1"}},{"name":"slug","required":false,"in":"query","description":"slug of the project to search for","schema":{"example":"uniswap-v2"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProtocolModel"}}}}}},"tags":["metadata"]}},"/api/v1/ccip/router":{"get":{"operationId":"CcipController_getRouter","summary":"Get CCIP router address for a chain","description":"Returns the CCIP router contract address for the specified chain.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID to get the CCIP router address for","schema":{"example":42161,"type":"number"}}],"responses":{"200":{"description":"CCIP router address","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CcipRouterResponse"}}}},"400":{"description":"Chain not supported by CCIP"}},"tags":["ccip"]}},"/api/v1/ccip/bridge/check":{"get":{"operationId":"CcipController_checkBridgeTransaction","summary":"Check CCIP bridge transaction status","description":"Returns comprehensive information about a cross-chain CCIP bridge transaction, including CCIP message parameters, on-chain events, and transaction data from Enso.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the source transaction","schema":{"example":56,"type":"number"}},{"name":"txHash","required":true,"in":"query","description":"Transaction hash of the CCIP bridge transaction on source chain","schema":{"example":"0x80f1faf0652a5618ea1de0fc5142418e380676b3c6c74d482cfac1237638d6d4","type":"string"}}],"responses":{"200":{"description":"Bridge transaction status and details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CcipBridgeTransactionResponse"}}}},"429":{"description":"Rate limit exceeded"}},"tags":["ccip"]}},"/api/v1/relay/bridge/check":{"get":{"operationId":"RelayController_checkBridgeTransaction","summary":"Check Relay bridge transaction status","description":"Returns comprehensive information about a cross-chain Relay bridge transaction, including Relay message parameters, on-chain events, and transaction data from Enso.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the source transaction","schema":{"example":1,"type":"number"}},{"name":"txHash","required":true,"in":"query","description":"Transaction hash of the Relay bridge transaction on source chain","schema":{"example":"0x94e5ea92d395fc8969b3253395ce58d51b27781c7305376d494f0804b109a8b5","type":"string"}}],"responses":{"200":{"description":"Bridge transaction status and details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayBridgeTransactionResponse"}}}},"429":{"description":"Rate limit exceeded"}},"tags":["relay"]}},"/api/v1/cctp/bridge/check":{"get":{"operationId":"CctpController_checkBridgeTransaction","summary":"Check CCTP bridge transaction status","description":"Returns information about a cross-chain CCTP bridge transaction, including attestation status, amount, fee, and destination transaction. Rate limited to 1 request per 10 seconds.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the source transaction","schema":{"example":143,"type":"number"}},{"name":"txHash","required":true,"in":"query","description":"Transaction hash of the CCTP bridge transaction on source chain","schema":{"example":"0x4ac72089eef92b827702281bb2668b416ee6d3e9d953600dc363842e473a157c","type":"string"}}],"responses":{"200":{"description":"Bridge transaction status and details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CctpBridgeTransactionResponse"}}}},"429":{"description":"Rate limit exceeded (max 1 request per 10 seconds)"}},"tags":["cctp"]}},"/api/v1/cctp/bridge/tokenmessengerv2":{"get":{"operationId":"CctpController_getTokenMessenger","summary":"Get TokenMessengerV2 address for a chain","description":"Returns the CCTP TokenMessengerV2 contract address for the specified chain.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID","schema":{"example":1,"type":"number"}}],"responses":{"200":{"description":"TokenMessengerV2 address","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CctpTokenMessengerResponse"}}}},"400":{"description":"Chain not supported by CCTP"}},"tags":["cctp"]}},"/api/v1/cctp/bridge/claim":{"get":{"operationId":"CctpController_getClaimTx","summary":"Generate claim transaction for a CCTP bridge transfer","description":"Returns a ready-to-submit receiveMessage transaction for the destination chain if the attestation is complete and the transfer has not been claimed yet. Rate limited to 1 request per 10 seconds.","parameters":[{"name":"chainId","required":true,"in":"query","description":"Chain ID of the source transaction","schema":{"example":143,"type":"number"}},{"name":"txHash","required":true,"in":"query","description":"Transaction hash of the CCTP bridge transaction on source chain","schema":{"example":"0x4ac72089eef92b827702281bb2668b416ee6d3e9d953600dc363842e473a157c","type":"string"}}],"responses":{"200":{"description":"Claim transaction or reason why not claimable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CctpClaimResponse"}}}},"429":{"description":"Rate limit exceeded (max 1 request per 10 seconds)"}},"tags":["cctp"]}}},"info":{"title":"","description":"#### Enso API\n- Find detailed documentation on [docs.enso.finance](https://docs.enso.finance).\n- To use the API, **you must include your API Key in the Authorization header** (Bearer format).\n- For testing, Swagger pre-authorizes you using the key: `1e02632d-6feb-4a75-a157-documentation` (1rps).\n- Get your own API Key at [enso.finance/developers](https://developers.enso.build/).","version":"1.0","contact":{}},"tags":[{"name":"shortcuts","description":""}],"servers":[{"url":"https://api.enso.finance"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"apiKey","type":"http"}},"schemas":{"ConnectedNetwork":{"type":"object","properties":{"id":{"type":"number","example":1},"name":{"type":"string","example":"Ethereum"},"isConnected":{"type":"boolean","example":true}},"required":["id","name","isConnected"]},"Price":{"type":"object","properties":{"decimals":{"type":"number","example":8},"price":{"type":"number","example":27052},"address":{"type":"string","example":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"},"symbol":{"type":"string","example":"WBTC"},"name":{"type":"string","example":"Wrapped Bitcoin"},"timestamp":{"type":"number","example":1695197412},"chainId":{"type":"number","example":1}},"required":["decimals","price","address","chainId"]},"BridgeRefundAsset":{"type":"object","properties":{"protocol":{"type":"string","enum":["cctp","stargate","ccip","relay"]},"chainId":{"type":"number"},"token":{"type":"string","description":"Address of the bridge principal token that may be refunded","example":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},"recipient":{"type":"string","description":"Address that would receive the bridge principal refund","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"symbol":{"type":"string","description":"Token symbol when metadata is available","example":"USDC"}},"required":["protocol","chainId","token","recipient"]},"BridgeFee":{"type":"object","properties":{"protocol":{"type":"string","description":"Bridge protocol charging the fee"},"chainId":{"type":"number","description":"Chain on which the fee is paid"},"destinationChainId":{"type":"number","description":"Destination chain of the bridge action"},"token":{"type":"string","description":"Token used to pay the bridge fee"},"type":{"type":"string","enum":["maximum","quoted"],"description":"Whether amount is a maximum reserved for execution or a quote-time fee breakdown"},"deductedFromAmountOut":{"type":"boolean","description":"Whether the fee has already reduced the candidate amountOut and must not be subtracted again when scoring."},"amount":{"type":"string","description":"Bridge fee in the token base unit."}},"required":["protocol","chainId","destinationChainId","token","type","deductedFromAmountOut","amount"]},"ShortcutResponseMetadata":{"type":"object","properties":{"bridgeRefundAssets":{"description":"Protocol-specific refund destinations for bridge principal in the returned transaction. An entry does not guarantee that every bridge failure is refundable.","type":"array","items":{"$ref":"#/components/schemas/BridgeRefundAsset"}},"bridgeFees":{"description":"Fees reserved for bridge actions","type":"array","items":{"$ref":"#/components/schemas/BridgeFee"}}},"required":["bridgeRefundAssets"]},"Transaction":{"type":"object","properties":{"data":{"type":"string"},"to":{"type":"string"},"from":{"type":"string"},"value":{"type":"string"}},"required":["data","to","from","value"]},"Hop":{"type":"object","properties":{"tokenIn":{"type":"array","items":{"type":"string"}},"tokenOut":{"type":"array","items":{"type":"string"}},"protocol":{"type":"string"},"action":{"type":"string","enum":["approve","borrow","borrowwithpositionid","bridge","deposit","singledeposit","singledepositwithpositionid","multideposit","multidepositwithpositionid","tokenizedsingledeposit","tokenizedmultideposit","multioutsingledeposit","depositclmm","depositwithestimate","encodedswap","flashloan","singletokenflashloan","multitokenflashloan","harvest","nftborrow","nftdeposit","nftmultideposit","nftmultiredeem","nftredeem","nftrepay","permittransferfrom","redeem","singleredeem","singleredeemwithpositionid","multiredeem","tokenizedsingleredeem","tokenizedmultiredeem","redeemclmm","redeemwithestimate","repay","repaywithpositionid","swap","transfer","transferfrom","withdraw","singlewithdraw","singlewithdrawwithpositionid","multiwithdraw","route","call","split","merge","ondosplit","ondomerge","balance","minamountout","slippage","fee","ensofee","paymasterfee","depositposition","add","sub","mul","div","min","max","isequal","islessthan","isequalorlessthan","isgreaterthan","isequalorgreaterthan","not","check","toggle"]},"primaryAddress":{"type":"string"},"internalRoutes":{"type":"array","items":{"type":"string"}},"args":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"sources":{"type":"array","items":{"type":"string"}},"poolAddresses":{"type":"array","items":{"type":"string"}},"estimatedAmountOut":{"description":"Only available for split actions returned by the pathfinder routing engine. Display estimates use the planned split input, are ordered to match tokenOut, and are not execution guarantees","type":"array","items":{"type":"string"}},"chainId":{"type":"number"},"sourceChainId":{"type":"number"},"destinationChainId":{"type":"number"},"positionOut":{"description":"Non-tokenized position ID for deposit actions","type":"array","items":{"type":"string"}},"via":{"type":"string","description":"Off-chain settler for this hop. Set when the hop is descriptive metadata rather than a weiroll call in `tx.data` — execution happens asynchronously via the named external system (e.g. Circle's CctpForwarder credits HyperCore on CCTP message receipt). Absent on hops that are actual on-chain weiroll calls.","enum":["cctp-forwarder"],"example":"cctp-forwarder"}},"required":["tokenIn","tokenOut","protocol","action"]},"UserOperation":{"type":"object","properties":{"callData":{"type":"string"},"callGasLimit":{"type":"string"},"factory":{"type":"string"},"factoryData":{"type":"string"},"maxFeePerGas":{"type":"string"},"maxPriorityFeePerGas":{"type":"string"},"nonce":{"type":"string"},"paymaster":{"type":"string"},"paymasterData":{"type":"string"},"paymasterPostOpGasLimit":{"type":"string"},"paymasterVerificationGasLimit":{"type":"string"},"preVerificationGas":{"type":"string"},"sender":{"type":"string"},"signature":{"type":"string"},"verificationGasLimit":{"type":"string"}},"required":["callData","callGasLimit","maxFeePerGas","maxPriorityFeePerGas","nonce","preVerificationGas","sender","signature","verificationGasLimit"]},"PreTransaction":{"type":"object","properties":{"type":{"type":"string","enum":["tokenApproval","requiredApproval"]},"tx":{"description":"Transaction to execute before the main shortcut transaction","allOf":[{"$ref":"#/components/schemas/Transaction"}]},"token":{"type":"string","description":"Token whose allowance is being set"},"spender":{"type":"string","description":"Account receiving the token allowance"},"amount":{"type":"string","description":"Total allowance required by the shortcut"},"description":{"type":"string","description":"Human-readable explanation for a required approval"}},"required":["type","tx"]},"BridgeLatencyEstimate":{"type":"object","properties":{"fromChainId":{"type":"number"},"toChainId":{"type":"number"},"token":{"type":"string","description":"Token bridged to the destination chain"},"estimatedSeconds":{"type":"number","description":"Estimated bridge latency in seconds"},"sendConfirmations":{"type":"number","description":"Send confirmations used for the estimation"},"receiveConfirmations":{"type":"number","description":"Receive confirmations"},"sendBlockTimeSeconds":{"type":"number","description":"Average block time assumed for the source chain (seconds)"},"receiveBlockTimeSeconds":{"type":"number","description":"Average block time assumed for the destination chain (seconds)"},"bridge":{"type":"string","description":"Bridge implementation or provider that produced the estimate"},"source":{"type":"string","description":"Source of the data (defaults, override, fallback)","enum":["defaults","override","fallback"]},"note":{"type":"string","description":"Optional note describing overrides or fallbacks applied"}},"required":["fromChainId","toChainId","token","estimatedSeconds"]},"RouteShortcutTransaction":{"type":"object","properties":{"gas":{"type":"string"},"amountOut":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"blockNumber":{"type":"number","description":"Block number the quote was simulated against"},"priceImpact":{"type":"number","description":"Price impact in basis points, null if USD price not found","nullable":true},"feeAmount":{"description":"An array of the fee amount collected for each tokenIn","type":"array","items":{"type":"string"}},"ensoFeeAmount":{"description":"An array of the enso fee amount collected for each tokenIn, when applicable","type":"array","items":{"type":"string"}},"metadata":{"$ref":"#/components/schemas/ShortcutResponseMetadata"},"minAmountOut":{"description":"The minimum allowable amount out after slippage","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"createdAt":{"type":"number","description":"Block number the transaction was created on"},"tx":{"description":"The tx object to use in `ethers`","allOf":[{"$ref":"#/components/schemas/Transaction"}]},"route":{"description":"Simple description of meta actions the route takes","type":"array","items":{"$ref":"#/components/schemas/Hop"}},"detailedRoute":{"description":"Detailed description of the route","type":"array","items":{"type":"string"}},"userOp":{"description":"The ERC-4337 user operation object","allOf":[{"$ref":"#/components/schemas/UserOperation"}]},"preTransactions":{"description":"Transactions that may need to be executed before the main shortcut transaction. Token approvals should be skipped when the current allowance is already sufficient.","type":"array","items":{"$ref":"#/components/schemas/PreTransaction"}},"bridgingEstimates":{"description":"Estimated bridging durations when applicable","type":"array","items":{"$ref":"#/components/schemas/BridgeLatencyEstimate"}},"validUntil":{"type":"number","description":"Unix timestamp (seconds) after which this quote expires. Transactions submitted after this time may revert."},"transactionCost":{"type":"string","description":"Point-in-time lower-bound estimate of mandatory source-chain transaction fees in the native token smallest unit. Excludes priority fees, transaction value, bridge fees, and destination execution.","nullable":true},"transactionCostUsd":{"type":"string","description":"Decimal string USD value of transactionCost. Null when the native-token price or source-chain fee estimate is unavailable.","nullable":true}},"required":["gas","amountOut","metadata","createdAt","tx","route"]},"RouteShortcutVariableInputs":{"type":"object","properties":{"chainId":{"type":"number","description":"Chain ID of the network to execute the transaction on","default":1},"fromAddress":{"type":"string","description":"Ethereum address of the wallet to send the transaction from","default":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"routingStrategy":{"type":"string","description":"Routing strategy to use","nullable":true,"enum":["ensowallet-v2","router","delegate","router-legacy","delegate-legacy"]},"executionMode":{"type":"string","description":"Controls how quote is built based on execution mode","enum":["user","backend"],"default":"user"},"toEoa":{"type":"boolean","description":"Flag that indicates if gained tokenOut should be sent to EOA","nullable":true,"deprecated":true},"includeTransactionCost":{"type":"boolean","description":"Include point-in-time source-chain transaction cost estimates in native units and USD","default":false},"receiver":{"type":"string","description":"Ethereum address of the receiver of the tokenOut","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"spender":{"type":"string","description":"Ethereum address of the spender of the tokenIn","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"refundReceiver":{"type":"string","description":"Ethereum address of the receiver of any dust tokens that might be produced during the execution of actions","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"amountIn":{"description":"Amount of tokenIn to swap in wei","example":["1000000000000000000"],"type":"array","items":{"type":"string"}},"minAmountOut":{"description":"Minimum amount out in wei. If specified, slippage should not be specified","default":null,"type":"array","items":{"type":"string"}},"slippage":{"type":"string","description":"Slippage in basis points (1/10000). e.g. 50 = 0.50%. If specified, minAmountOut should not be specified","example":"300","default":"50"},"fee":{"description":"Fee in basis points per amountIn. Use 1-100. All-zero fees are ignored. Collection is on the source chain unless a cross-chain route sets destinationFeeReceiver.","example":["100"],"type":"array","items":{"type":"string"}},"feeReceiver":{"type":"string","description":"The Ethereum address that receives the source-chain fee and remains the fallback when destination collection does not apply. Required if fee is provided.","example":"0x220866B1A2219f40e72f5c628B65D54268cA3A9D"},"destinationFeeReceiver":{"type":"string","description":"Optional destination-chain fee receiver. For a cross-chain route with destination execution, the requested fee is collected atomically from the delivered bridge asset on the destination chain. Otherwise feeReceiver remains the source-chain receiver.","example":"0x220866B1A2219f40e72f5c628B65D54268cA3A9D"},"ignoreAggregators":{"type":"array","description":"A list of swap aggregators to be ignored from consideration","nullable":true,"items":{"type":"string","enum":["0x","1inch","openocean","kyberswap","native","paraswap","bebop","barter","sushiswap-router","ooga-booga","renegade","uniswap","rooster","wowmax","grapher","hyperbloom","hyperswap","hyperflow","fly","eisen","nordstern","everlong","bitget"]}},"ignoreStandards":{"description":"A list of standards to be ignored from consideration","nullable":true,"type":"array","items":{"type":"string"}},"ignoreBridges":{"type":"array","description":"A list of bridges to be ignored from consideration","default":[],"items":{"type":"string","enum":["cctp","stargate","ccip","relay"]}},"crosschainRouteMode":{"type":"string","description":"Controls cross-chain route complexity. direct uses only a bridge, source allows routing before the bridge, destination allows routing after the bridge, sourceOrDestination allows routing on either chain but not both, and full allows routing on both chains","enum":["direct","source","destination","sourceOrDestination","full"],"default":"full"},"referralCode":{"type":"string","description":"Referral code that will be included in an on-chain event.","example":"0123456789ABCDEF","maxLength":16},"tokenIn":{"description":"Ethereum address of the token to swap from. For ETH, use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","example":["0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"],"type":"array","items":{"type":"string"}},"tokenOut":{"description":"Ethereum address of the token to swap to. For ETH, use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","example":["0x6b175474e89094c44da98b954eedeac495271d0f"],"type":"array","items":{"type":"string"}},"destinationChainId":{"type":"number","description":"Chain ID of the network to bridge to and receive tokenOut"}},"required":["chainId","fromAddress","amountIn","tokenIn","tokenOut"]},"NontokenizedRouteShortcutTransaction":{"type":"object","properties":{"metadata":{"$ref":"#/components/schemas/ShortcutResponseMetadata"},"createdAt":{"type":"number","description":"Block number the transaction was created on"},"gas":{"type":"string"},"amountDeposited":{"description":"Amount deposited into the position. Balanced multi-token deposits return an array ordered to match the deposit tokens in the route.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"amountOut":{"type":"string","description":"Amount out in the destination protocol precision. Only available for hypercore-spot deposits, where it represents the amount in 8-decimal HyperCore precision."},"priceImpact":{"type":"number","description":"Price impact in basis points (1/10000) between the initial route value and the positionAmount. For example, 50 = 0.50%. Returns null if price impact calculation is not available.","nullable":true},"tx":{"description":"The tx object to use in `ethers`","allOf":[{"$ref":"#/components/schemas/Transaction"}]},"route":{"description":"The route the shortcut will use","type":"array","items":{"$ref":"#/components/schemas/Hop"}},"feeAmount":{"type":"array","items":{"type":"string"}},"ensoFeeAmount":{"type":"array","items":{"type":"string"}},"userOp":{"description":"The ERC-4337 user operation object","allOf":[{"$ref":"#/components/schemas/UserOperation"}]},"bridgingEstimates":{"description":"Estimated bridge durations when the flow contains bridges","type":"array","items":{"$ref":"#/components/schemas/BridgeLatencyEstimate"}},"validUntil":{"type":"number","description":"Unix timestamp (seconds) after which this quote expires. Transactions submitted after this time may revert."}},"required":["metadata","createdAt","gas","amountDeposited","tx","route"]},"WalletTransaction":{"type":"object","properties":{"data":{"type":"string","example":"0x"},"to":{"type":"string","example":"0x1111111111111111111111111111111111111111"},"from":{"type":"string","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"value":{"type":"string","example":"0"}},"required":["data","to","from"]},"WalletApproveTransaction":{"type":"object","properties":{"tx":{"description":"The transaction object to use in `ethers`","allOf":[{"$ref":"#/components/schemas/WalletTransaction"}]},"gas":{"type":"string","description":"The gas estimate for the transaction"},"token":{"type":"string","description":"The token address to approve"},"amount":{"type":"string","description":"The amount of tokens to approve"},"spender":{"type":"string","description":"The spender address to approve"}},"required":["tx","gas","token","amount","spender"]},"WalletBalance":{"type":"object","properties":{"token":{"type":"string","description":"The address of the token"},"amount":{"type":"string","description":"The unformatted balance of the token","example":"0x0000000"},"chainId":{"type":"integer","description":"Chain ID of the network"},"decimals":{"type":"number","description":"The unformatted balance of the token","example":18},"price":{"type":"string","description":"Price of the token in usd","example":"0.0","nullable":true},"name":{"type":"string","description":"Name of the token","nullable":true},"symbol":{"type":"string","description":"Symbol of the token","nullable":true},"logoUri":{"type":"string","description":"Logo of the token","nullable":true}},"required":["token","amount","chainId","decimals","price","name","symbol","logoUri"]},"PaginationMeta":{"type":"object","properties":{"total":{"type":"number","description":"Total amount of pages"},"lastPage":{"type":"number","description":"Last page number","nullable":true},"currentPage":{"type":"number","description":"Current page number","nullable":true},"perPage":{"type":"number","description":"Amount of elements per page"},"prev":{"type":"number","description":"Previous page","nullable":true},"next":{"type":"number","description":"Next page","nullable":true},"cursor":{"type":"number","description":"Cursor for pagination","nullable":true}},"required":["total","perPage"]},"PaginatedResult":{"type":"object","properties":{"meta":{"description":"Metadata for pagination","allOf":[{"$ref":"#/components/schemas/PaginationMeta"}]}},"required":["meta"]},"TokenModel":{"type":"object","properties":{"address":{"type":"string","description":"Ethereum address of the token"},"chainId":{"type":"number","description":"Chain ID of the network of the token"},"type":{"type":"string","description":"Type of token"},"decimals":{"type":"number","description":"Token decimals"},"symbol":{"type":"string","description":"Token name","nullable":true},"name":{"type":"string","description":"Token symbol","nullable":true},"logosUri":{"description":"A list of logos for the token","nullable":true,"type":"array","items":{"type":"string"}}},"required":["address","chainId","type","decimals"]},"PositionModel":{"type":"object","properties":{"address":{"type":"string","description":"Ethereum address of the token"},"chainId":{"type":"number","description":"Chain ID of the network of the token"},"type":{"type":"string","description":"Type of token"},"decimals":{"type":"number","description":"Token decimals"},"symbol":{"type":"string","description":"Token name","nullable":true},"name":{"type":"string","description":"Token symbol","nullable":true},"logosUri":{"description":"A list of logos for the token","nullable":true,"type":"array","items":{"type":"string"}},"underlyingTokens":{"description":"Underlying tokens of defi token","nullable":true,"type":"array","items":{"$ref":"#/components/schemas/TokenModel"}},"project":{"type":"string","description":"The overarching project or platform associated with the DeFi token","example":"aave","nullable":true},"protocol":{"type":"string","description":"The specific standard integration or version of the DeFi project","nullable":true},"depositType":{"type":"number","description":"Type of liquidity for deposits"},"redeemType":{"type":"number","description":"Type of liquidity for redeems"},"apy":{"type":"number","description":"The defi position APY","nullable":true,"example":3.8},"apyBase":{"type":"number","description":"The defi position base APY","nullable":true,"example":2.6},"apyReward":{"type":"number","description":"The defi position reward APY","nullable":true,"example":1.2},"borrowApyBase":{"type":"number","description":"The defi position base borrow APY","nullable":true,"example":2.6},"borrowApyReward":{"type":"number","description":"The defi position reward borrow APY","nullable":true,"example":1.2},"tvl":{"type":"number","description":"The defi position TVL","nullable":true,"example":3001020.8},"primaryAddress":{"type":"string","description":"Ethereum address for contract interaction of defi token","nullable":true}},"required":["address","chainId","type","decimals"]},"ActionInputMetadata":{"type":"object","properties":{"type":{"type":"string"},"description":{"type":"string"},"optional":{"type":"boolean"}},"required":["type","description"]},"ActionVariant":{"type":"object","properties":{"action":{"type":"string"},"inputs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ActionInputMetadata"}},"bundleName":{"type":"string"}},"required":["action","inputs"]},"Action":{"type":"object","properties":{"action":{"type":"string","enum":["approve","borrow","borrowwithpositionid","bridge","deposit","singledeposit","singledepositwithpositionid","multideposit","multidepositwithpositionid","tokenizedsingledeposit","tokenizedmultideposit","multioutsingledeposit","depositclmm","depositwithestimate","encodedswap","flashloan","singletokenflashloan","multitokenflashloan","harvest","nftborrow","nftdeposit","nftmultideposit","nftmultiredeem","nftredeem","nftrepay","permittransferfrom","redeem","singleredeem","singleredeemwithpositionid","multiredeem","tokenizedsingleredeem","tokenizedmultiredeem","redeemclmm","redeemwithestimate","repay","repaywithpositionid","swap","transfer","transferfrom","withdraw","singlewithdraw","singlewithdrawwithpositionid","multiwithdraw","route","call","split","merge","ondosplit","ondomerge","balance","minamountout","slippage","fee","ensofee","paymasterfee","depositposition","add","sub","mul","div","min","max","isequal","islessthan","isequalorlessthan","isgreaterthan","isequalorgreaterthan","not","check","toggle"]},"inputs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/ActionInputMetadata"}},"variants":{"type":"array","items":{"$ref":"#/components/schemas/ActionVariant"}}},"required":["action","inputs"]},"LZDestinationTokenData":{"type":"object","properties":{"pool":{"type":"string","description":"LayerZero pool address on the destination chain","example":"0xf03b4d9ac1d5d1e7c4cef54c2a313b9fe051a0ad"},"token":{"type":"string","description":"Token address on the destination chain","example":"0x01bff41798a0bcf287b996046ca68b395dbc1071"},"decimals":{"type":"number","description":"Decimals of the token on the destination chain","example":6}},"required":["pool","token","decimals"]},"LZPoolLookupResponse":{"type":"object","properties":{"pool":{"type":"string","description":"LayerZero pool address for the source token","example":"0x6c96de32cea08842dcc4058c14d3aaad7fa41dee"},"chainId":{"type":"number","description":"Source chain ID","example":1},"destinationChainId":{"type":"number","description":"Destination chain ID","example":10},"token":{"type":"string","description":"Source token address","example":"0xdac17f958d2ee523a2206206994597c13d831ec7"},"decimals":{"type":"number","description":"Decimals of the source token","example":6},"destinationData":{"description":"Details about the destination pool and token","allOf":[{"$ref":"#/components/schemas/LZDestinationTokenData"}]}},"required":["pool","chainId","destinationChainId","token","decimals","destinationData"]},"LayerZeroMessageStatus":{"type":"object","properties":{"srcEid":{"type":"number","description":"Source chain endpoint ID"},"dstEid":{"type":"number","description":"Destination chain endpoint ID"},"srcChainId":{"type":"number","description":"Source chain ID (EVM)"},"dstChainId":{"type":"number","description":"Destination chain ID (EVM)"},"status":{"type":"string","description":"Message status from LayerZero"},"srcTxHash":{"type":"string","description":"Source transaction hash"},"dstTxHash":{"type":"string","description":"Destination transaction hash (if delivered)"},"srcBlockNumber":{"type":"number","description":"Source block number"},"dstBlockNumber":{"type":"number","description":"Destination block number (if delivered)"},"srcTimestamp":{"type":"string","description":"Source timestamp"},"dstTimestamp":{"type":"string","description":"Destination timestamp (if delivered)"},"sender":{"type":"string","description":"Sender address"},"receiver":{"type":"string","description":"Receiver address"}},"required":["srcEid","dstEid","status"]},"RefundDetails":{"type":"object","properties":{"token":{"type":"string","description":"Token address (0xeee... for native token)"},"amount":{"type":"string","description":"Amount refunded"},"recipient":{"type":"string","description":"Recipient address"},"isNative":{"type":"boolean","description":"Whether the refund is in native token"}},"required":["token","amount","recipient","isNative"]},"EnsoEvent":{"type":"object","properties":{"accountId":{"type":"string","description":"Account ID from ShortcutExecuted event"},"requestId":{"type":"string","description":"Request ID from ShortcutExecuted event"},"blockNumber":{"type":"number","description":"Block number where the event was emitted"},"transactionHash":{"type":"string","description":"Transaction hash"},"chainId":{"type":"number","description":"Chain ID where the event was emitted"},"success":{"type":"boolean","description":"Whether the shortcut execution was successful"},"error":{"type":"string","description":"Error data if execution failed"},"refundDetails":{"description":"Refund details if execution failed and funds were returned","allOf":[{"$ref":"#/components/schemas/RefundDetails"}]}},"required":["blockNumber","transactionHash","chainId","success"]},"BridgeHop":{"type":"object","properties":{"sourceChainId":{"type":"number","description":"Source chain ID for this hop"},"sourceTxHash":{"type":"string","description":"Source transaction hash for this hop"},"destinationChainId":{"type":"number","description":"Destination chain ID (if known)"},"destinationTxHash":{"type":"string","description":"Destination transaction hash (if completed)"},"status":{"type":"string","description":"Status of this hop","enum":["pending","inflight","delivered","failed","ready_for_manual_execution","unknown"]},"layerZeroMessage":{"description":"LayerZero message information","allOf":[{"$ref":"#/components/schemas/LayerZeroMessageStatus"}]},"ensoSourceEvent":{"description":"Enso shortcut event from source chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]},"ensoDestinationEvent":{"description":"Enso shortcut event from destination chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]}},"required":["sourceChainId","sourceTxHash","status"]},"EnsoMetadata":{"type":"object","properties":{"tokenIn":{"type":"string","description":"Token in address"},"tokenOut":{"type":"string","description":"Token out address"},"amountIn":{"type":"string","description":"Amount in"},"chainId":{"type":"number","description":"Chain ID from the request"},"timestamp":{"type":"number","description":"Timestamp of the request"}}},"BridgeTransactionResponse":{"type":"object","properties":{"sourceChainId":{"type":"number","description":"Source chain ID"},"sourceTxHash":{"type":"string","description":"Source transaction hash"},"destinationChainId":{"type":"number","description":"Destination chain ID (if known)"},"destinationTxHash":{"type":"string","description":"Destination transaction hash (if completed)"},"status":{"type":"string","description":"Overall bridge status","enum":["pending","inflight","delivered","failed","ready_for_manual_execution","unknown"]},"isMultiBridge":{"type":"boolean","description":"Whether this transaction involves multiple sequential bridges. Only present when true."},"hops":{"description":"Array of individual bridge hops. Only present for multi-bridge transactions.","type":"array","items":{"$ref":"#/components/schemas/BridgeHop"}},"layerZeroMessage":{"description":"LayerZero message information","allOf":[{"$ref":"#/components/schemas/LayerZeroMessageStatus"}]},"ensoSourceEvent":{"description":"Enso shortcut event from source chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]},"ensoDestinationEvent":{"description":"Enso shortcut event from destination chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]},"ensoMetadata":{"description":"Enso transaction metadata","allOf":[{"$ref":"#/components/schemas/EnsoMetadata"}]},"error":{"type":"string","description":"Error message if something went wrong"}},"required":["sourceChainId","sourceTxHash","status"]},"Protocol":{"type":"object","properties":{"slug":{"type":"string"},"url":{"type":"string"}},"required":["slug","url"]},"Network":{"type":"object","properties":{"id":{"type":"number"},"name":{"type":"string"}},"required":["id","name"]},"StandardAction":{"type":"object","properties":{"action":{"type":"string","enum":["approve","borrow","borrowwithpositionid","bridge","deposit","singledeposit","singledepositwithpositionid","multideposit","multidepositwithpositionid","tokenizedsingledeposit","tokenizedmultideposit","multioutsingledeposit","depositclmm","depositwithestimate","encodedswap","flashloan","singletokenflashloan","multitokenflashloan","harvest","nftborrow","nftdeposit","nftmultideposit","nftmultiredeem","nftredeem","nftrepay","permittransferfrom","redeem","singleredeem","singleredeemwithpositionid","multiredeem","tokenizedsingleredeem","tokenizedmultiredeem","redeemclmm","redeemwithestimate","repay","repaywithpositionid","swap","transfer","transferfrom","withdraw","singlewithdraw","singlewithdrawwithpositionid","multiwithdraw","route","call","split","merge","ondosplit","ondomerge","balance","minamountout","slippage","fee","ensofee","paymasterfee","depositposition","add","sub","mul","div","min","max","isequal","islessthan","isequalorlessthan","isgreaterthan","isequalorgreaterthan","not","check","toggle"]},"name":{"type":"string"},"functionNames":{"type":"array","items":{"type":"string"}},"supportedChains":{"type":"array","items":{"$ref":"#/components/schemas/Network"}},"inputs":{"type":"array","items":{"type":"string"}}},"required":["action","name","functionNames","supportedChains","inputs"]},"Standard":{"type":"object","properties":{"protocol":{"$ref":"#/components/schemas/Protocol"},"forks":{"type":"array","items":{"$ref":"#/components/schemas/Protocol"}},"actions":{"type":"array","items":{"$ref":"#/components/schemas/StandardAction"}}},"required":["protocol","forks","actions"]},"ProtocolModel":{"type":"object","properties":{"project":{"type":"string","example":"uniswap"},"slug":{"type":"string","example":"uniswap-v2"},"name":{"type":"string","example":"Uniswap V2","nullable":true},"description":{"type":"string","nullable":true},"url":{"type":"string","example":"https://app.uniswap.org/swap","nullable":true},"logosUri":{"example":"https://icons.llama.fi/uniswap-v2.png","nullable":true,"type":"array","items":{"type":"string"}},"chains":{"nullable":true,"example":[{"id":1,"name":"mainnet"}],"type":"array","items":{"$ref":"#/components/schemas/Network"}}},"required":["project","slug","name","description","url","logosUri","chains"]},"CallOutput":{"type":"object","properties":{"useOutputOfCallAt":{"type":"number"},"index":{"type":"number"}},"required":["useOutputOfCallAt"]},"ActionToBundle":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol to interact with","example":"enso"},"action":{"type":"string","enum":["approve","borrow","borrowwithpositionid","bridge","deposit","singledeposit","singledepositwithpositionid","multideposit","multidepositwithpositionid","tokenizedsingledeposit","tokenizedmultideposit","multioutsingledeposit","depositclmm","depositwithestimate","encodedswap","flashloan","singletokenflashloan","multitokenflashloan","harvest","nftborrow","nftdeposit","nftmultideposit","nftmultiredeem","nftredeem","nftrepay","permittransferfrom","redeem","singleredeem","singleredeemwithpositionid","multiredeem","tokenizedsingleredeem","tokenizedmultiredeem","redeemclmm","redeemwithestimate","repay","repaywithpositionid","swap","transfer","transferfrom","withdraw","singlewithdraw","singlewithdrawwithpositionid","multiwithdraw","route","call","split","merge","ondosplit","ondomerge","balance","minamountout","slippage","fee","ensofee","paymasterfee","depositposition","add","sub","mul","div","min","max","isequal","islessthan","isequalorlessthan","isgreaterthan","isequalorgreaterthan","not","check","toggle"],"example":"route"},"args":{"type":"object","additionalProperties":true,"example":{"tokenIn":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","tokenOut":"0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84","amountIn":"100000000000","slippage":"300","fee":["100"],"feeReceiver":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"}}},"required":["protocol","action","args"]},"BundleApprovalTransaction":{"type":"object","properties":{"to":{"type":"string"},"from":{"type":"string"},"data":{"type":"string"},"description":{"type":"string"}},"required":["to","from","data"]},"BundleShortcutTransaction":{"type":"object","properties":{"bundle":{"type":"array","items":{"$ref":"#/components/schemas/ActionToBundle"}},"gas":{"type":"string","description":"Gas estimate for the transaction"},"amountsOut":{"type":"object","description":"Expected output amounts by token address","additionalProperties":{"type":"string"}},"route":{"description":"The route the shortcut will use","type":"array","items":{"$ref":"#/components/schemas/Hop"}},"metadata":{"$ref":"#/components/schemas/ShortcutResponseMetadata"},"createdAt":{"type":"number","description":"Block number the transaction was created on"},"tx":{"description":"The tx object to use in `ethers`","allOf":[{"$ref":"#/components/schemas/Transaction"}]},"minAmountsOut":{"type":"object","description":"Expected minimal output amounts by token address","additionalProperties":{"type":"string"}},"priceImpact":{"type":"number","description":"Price impact in basis points, null if USD price not found","nullable":true},"feeAmount":{"type":"object","description":"Fees by token address","additionalProperties":{"type":"string"}},"userOp":{"description":"The ERC-4337 user operation object","allOf":[{"$ref":"#/components/schemas/UserOperation"}]},"approvals":{"description":"Deprecated: use `preTransactions` instead. Legacy standards-required approvals that must be executed before the bundle.","deprecated":true,"example":[{"from":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","to":"0x1111111111111111111111111111111111111111","data":"0x"}],"type":"array","items":{"$ref":"#/components/schemas/BundleApprovalTransaction"}},"preTransactions":{"description":"Transactions that may need to be executed before the main shortcut transaction. Token approvals should be skipped when the current allowance is already sufficient.","type":"array","items":{"$ref":"#/components/schemas/PreTransaction"}},"bridgingEstimates":{"description":"Estimated bridging durations for any bridge hops","type":"array","items":{"$ref":"#/components/schemas/BridgeLatencyEstimate"}},"validUntil":{"type":"number","description":"Unix timestamp (seconds) after which this quote expires. Transactions submitted after this time may revert."}},"required":["bundle","metadata","createdAt","tx"]},"RouteArgsDto":{"type":"object","properties":{"tokenIn":{"type":"string","description":"Input token address","example":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"},"tokenOut":{"type":"string","description":"Output token address","example":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},"amountIn":{"description":"Amount to route in wei (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000000000000000"},"slippage":{"type":"string","description":"Slippage tolerance in basis points (100 = 1%)","example":"100"},"receiver":{"type":"string","description":"Receiver address if not the caller","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"destinationChainId":{"type":"integer","description":"Destination chain ID for a cross-chain route","example":42161},"refundReceiver":{"type":"string","description":"Address to receive refunded dust for a cross-chain route","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"minAmountOut":{"description":"Minimum acceptable amount or amounts out","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"},{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]}}],"example":["995000000"]},"fee":{"description":"Fee in basis points per amountIn. Use 1-100. All-zero fees are ignored. Collection is on the source chain unless a cross-chain route sets destinationFeeReceiver.","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"},{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]}}],"example":["50"]},"feeReceiver":{"type":"string","description":"The Ethereum address that receives the source-chain fee and remains the fallback when destination collection does not apply. Required if fee is provided.","example":"0x5fe5C43f1c4B2A1BA49cC6fE4A6a62f2f1619B82"},"destinationFeeReceiver":{"type":"string","description":"Optional destination-chain fee receiver. For a cross-chain route with destination execution, the requested fee is collected atomically from the delivered bridge asset on the destination chain. Otherwise feeReceiver remains the source-chain receiver.","example":"0x5fe5C43f1c4B2A1BA49cC6fE4A6a62f2f1619B82"},"ignoreAggregators":{"type":"array","description":"Aggregators to ignore","example":["1inch","paraswap"],"items":{"type":"string","enum":["0x","1inch","openocean","kyberswap","native","paraswap","bebop","barter","sushiswap-router","ooga-booga","renegade","uniswap","rooster","wowmax","grapher","hyperbloom","hyperswap","hyperflow","fly","eisen","nordstern","everlong","bitget"]}},"ignoreStandards":{"description":"Standards to ignore","example":["uniswap-v2"],"type":"array","items":{"type":"string"}},"ignoreBridges":{"type":"array","description":"Bridges to ignore. Only used for cross-chain route actions.","example":["ccip"],"default":[],"items":{"type":"string","enum":["cctp","stargate","ccip","relay"]}}},"required":["tokenIn","tokenOut","amountIn"]},"RouteActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"enso"},"action":{"type":"string","description":"Action","example":"route"},"args":{"description":"Route action arguments","allOf":[{"$ref":"#/components/schemas/RouteArgsDto"}]}},"required":["protocol","action","args"]},"BalanceArgsDto":{"type":"object","properties":{"token":{"type":"string","description":"Token address to check balance","example":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},"estimate":{"type":"string","description":"Estimated balance amount (wei). Used for route building when the account may not have a balance yet.","example":"1000000000000000000"},"account":{"type":"string","description":"Account address to check balance of. Defaults to the shortcut wallet address.","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"}},"required":["token"]},"BalanceActionDto":{"type":"object","properties":{"protocol":{"type":"string","example":"enso"},"action":{"type":"string","example":"balance"},"args":{"$ref":"#/components/schemas/BalanceArgsDto"}},"required":["protocol","action","args"]},"ApproveArgsDto":{"type":"object","properties":{"token":{"type":"string","description":"Token to approve","example":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"},"spender":{"type":"string","description":"Spender address","example":"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D"},"amount":{"description":"Amount to approve in wei (or previous output reference). Required for erc20.","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"115792089237316195423570985008687907853269984665640564039457"},"tokenId":{"type":"string","description":"ERC721 token id to approve. Required for erc721.","example":"123"}},"required":["token","spender"]},"ApproveActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"erc20","enum":["erc20","erc721"]},"action":{"type":"string","example":"approve"},"args":{"$ref":"#/components/schemas/ApproveArgsDto"}},"required":["protocol","action","args"]},"BorrowArgsDto":{"type":"object","properties":{"collateral":{"description":"Collateral token address or addresses","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":"0x..."},"tokenOut":{"type":"string","description":"Token to borrow","example":"0xA0b8...eB48"},"amountOut":{"description":"Amount to borrow in wei (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Lending pool contract address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."},"onBehalfOf":{"type":"string","description":"Address that will own the debt position","example":"0x..."},"positionId":{"type":"string","description":"Position identifier for position-based lending protocols","example":"0x01"},"tokenId":{"type":"string","description":"Token identifier for token-based lending positions","example":"123"},"args":{"type":"object","description":"Protocol-specific additional borrow arguments","additionalProperties":{"type":"string"}}},"required":["tokenOut","amountOut","primaryAddress"]},"BorrowActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol to borrow from","example":"aave-v3"},"action":{"type":"string","example":"borrow"},"args":{"$ref":"#/components/schemas/BorrowArgsDto"}},"required":["protocol","action","args"]},"HarvestArgsDto":{"type":"object","properties":{"token":{"type":"string","description":"Token to harvest","example":"0x..."},"primaryAddress":{"type":"string","description":"Primary contract address","example":"0x..."}},"required":["token","primaryAddress"]},"HarvestActionDto":{"type":"object","properties":{"action":{"type":"string","description":"Action","example":"harvest"},"protocol":{"type":"string","description":"Protocol","example":"convex"},"args":{"$ref":"#/components/schemas/HarvestArgsDto"}},"required":["action","protocol","args"]},"RepayArgsDto":{"type":"object","properties":{"tokenIn":{"type":"string","description":"Token to repay with","example":"0xC02a..."},"amountIn":{"description":"Amount to repay (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000000000000000"},"primaryAddress":{"type":"string","description":"Lending pool contract address","example":"0x..."},"onBehalfOf":{"type":"string","description":"Address on whose behalf the debt is repaid","example":"0x..."},"positionId":{"type":"string","description":"Position identifier for position-based lending protocols","example":"0x01"},"tokenId":{"type":"string","description":"Token identifier for token-based lending positions","example":"123"},"args":{"type":"object","description":"Protocol-specific additional repay arguments","additionalProperties":{"type":"string"}}},"required":["tokenIn","amountIn","primaryAddress"]},"RepayActionDto":{"type":"object","properties":{"action":{"type":"string","example":"repay"},"protocol":{"type":"string","description":"Protocol","example":"aave-v3"},"args":{"$ref":"#/components/schemas/RepayArgsDto"}},"required":["action","protocol","args"]},"CallArgsDto":{"type":"object","properties":{"tokenIn":{"type":"string","description":"Optional input token address","example":"0x..."},"tokenOut":{"type":"string","description":"Optional output token address","example":"0x..."},"address":{"type":"string","description":"Contract address to call","example":"0x..."},"method":{"type":"string","description":"Method name to call","example":"collect"},"abi":{"type":"string","description":"Flattened function signature","example":"function collect((uint256 tokenId, address recipient, uint128 amount0Max, uint128 amount1Max) params) external returns (uint256 amount0, uint256 amount1)"},"args":{"type":"array","description":"Arguments for the method","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/CallOutput"},{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"$ref":"#/components/schemas/CallOutput"}]}}]},"example":[123,true,{"useOutputOfCallAt":0},["1","2"]]},"value":{"description":"Native value to send (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"0"}},"required":["address","method","abi","args"]},"CallActionDto":{"type":"object","properties":{"action":{"type":"string","example":"call"},"protocol":{"type":"string","description":"Protocol to interact with","example":"uniswap-v3"},"args":{"$ref":"#/components/schemas/CallArgsDto"}},"required":["action","protocol","args"]},"FlashloanArgsDto":{"type":"object","properties":{"flashloanToken":{"description":"Token address or addresses to flashloan","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":"0xfcbd14dc51f0a4d49d5e53c2e0950e0bc26d0dce"},"flashloanAmount":{"description":"Flashloan amount or amounts in wei","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"},{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]}}],"example":"1000000000000000000"},"tokenIn":{"description":"Additional user token address or addresses to combine with the flashloan","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"amountIn":{"description":"Amount or amounts for additional user tokens","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"},{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]}}]},"tokenId":{"description":"Token id or ids when tokenIn is an ERC721 position. Mutually exclusive with amountIn.","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":"876"},"tokenOut":{"description":"Token address or addresses expected after the callback","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"callback":{"type":"array","description":"Actions to execute within the flashloan callback","items":{"oneOf":[{"$ref":"#/components/schemas/RouteActionDto"},{"$ref":"#/components/schemas/SwapActionDto"},{"$ref":"#/components/schemas/BridgeActionDto"},{"$ref":"#/components/schemas/BalanceActionDto"},{"$ref":"#/components/schemas/ApproveActionDto"},{"$ref":"#/components/schemas/TransferActionDto"},{"$ref":"#/components/schemas/TransferFromActionDto"},{"$ref":"#/components/schemas/PermitTransferFromActionDto"},{"$ref":"#/components/schemas/DepositActionDto"},{"$ref":"#/components/schemas/RedeemActionDto"},{"$ref":"#/components/schemas/DepositCLMMActionDto"},{"$ref":"#/components/schemas/RedeemCLMMActionDto"},{"$ref":"#/components/schemas/TokenizedSingleDepositActionDto"},{"$ref":"#/components/schemas/TokenizedMultiDepositActionDto"},{"$ref":"#/components/schemas/TokenizedSingleRedeemActionDto"},{"$ref":"#/components/schemas/TokenizedMultiRedeemActionDto"},{"$ref":"#/components/schemas/MultiOutSingleDepositActionDto"},{"$ref":"#/components/schemas/CallActionDto"},{"$ref":"#/components/schemas/FlashloanActionDto"},{"$ref":"#/components/schemas/WithdrawActionDto"},{"$ref":"#/components/schemas/SplitActionDto"},{"$ref":"#/components/schemas/MergeActionDto"},{"$ref":"#/components/schemas/MinAmountOutActionDto"},{"$ref":"#/components/schemas/SlippageActionDto"},{"$ref":"#/components/schemas/FeeActionDto"},{"$ref":"#/components/schemas/EnsoFeeActionDto"},{"$ref":"#/components/schemas/PaymasterFeeActionDto"},{"$ref":"#/components/schemas/RepayActionDto"},{"$ref":"#/components/schemas/BorrowActionDto"},{"$ref":"#/components/schemas/HarvestActionDto"},{"$ref":"#/components/schemas/SingleDepositActionDto"},{"$ref":"#/components/schemas/MultiDepositActionDto"},{"$ref":"#/components/schemas/SingleRedeemActionDto"},{"$ref":"#/components/schemas/MultiRedeemActionDto"},{"$ref":"#/components/schemas/MathActionDto"},{"$ref":"#/components/schemas/ComparisonActionDto"},{"$ref":"#/components/schemas/ConditionActionDto"},{"$ref":"#/components/schemas/ToggleActionDto"}],"discriminator":{"propertyName":"action","mapping":{"route":"#/components/schemas/RouteActionDto","swap":"#/components/schemas/SwapActionDto","bridge":"#/components/schemas/BridgeActionDto","balance":"#/components/schemas/BalanceActionDto","approve":"#/components/schemas/ApproveActionDto","transfer":"#/components/schemas/TransferActionDto","transferfrom":"#/components/schemas/TransferFromActionDto","permittransferfrom":"#/components/schemas/PermitTransferFromActionDto","deposit":"#/components/schemas/DepositActionDto","redeem":"#/components/schemas/RedeemActionDto","depositclmm":"#/components/schemas/DepositCLMMActionDto","redeemclmm":"#/components/schemas/RedeemCLMMActionDto","tokenizedsingledeposit":"#/components/schemas/TokenizedSingleDepositActionDto","tokenizedmultideposit":"#/components/schemas/TokenizedMultiDepositActionDto","tokenizedsingleredeem":"#/components/schemas/TokenizedSingleRedeemActionDto","tokenizedmultiredeem":"#/components/schemas/TokenizedMultiRedeemActionDto","multioutsingledeposit":"#/components/schemas/MultiOutSingleDepositActionDto","call":"#/components/schemas/CallActionDto","flashloan":"#/components/schemas/FlashloanActionDto","withdraw":"#/components/schemas/WithdrawActionDto","singlewithdraw":"#/components/schemas/WithdrawActionDto","singlewithdrawwithpositionid":"#/components/schemas/WithdrawActionDto","multiwithdraw":"#/components/schemas/WithdrawActionDto","split":"#/components/schemas/SplitActionDto","merge":"#/components/schemas/MergeActionDto","minamountout":"#/components/schemas/MinAmountOutActionDto","slippage":"#/components/schemas/SlippageActionDto","fee":"#/components/schemas/FeeActionDto","ensofee":"#/components/schemas/EnsoFeeActionDto","paymasterfee":"#/components/schemas/PaymasterFeeActionDto","repay":"#/components/schemas/RepayActionDto","borrow":"#/components/schemas/BorrowActionDto","harvest":"#/components/schemas/HarvestActionDto","singledeposit":"#/components/schemas/SingleDepositActionDto","multideposit":"#/components/schemas/MultiDepositActionDto","singleredeem":"#/components/schemas/SingleRedeemActionDto","multiredeem":"#/components/schemas/MultiRedeemActionDto","add":"#/components/schemas/MathActionDto","sub":"#/components/schemas/MathActionDto","mul":"#/components/schemas/MathActionDto","div":"#/components/schemas/MathActionDto","min":"#/components/schemas/MathActionDto","max":"#/components/schemas/MathActionDto","isequal":"#/components/schemas/ComparisonActionDto","islessthan":"#/components/schemas/ComparisonActionDto","isequalorlessthan":"#/components/schemas/ComparisonActionDto","isgreaterthan":"#/components/schemas/ComparisonActionDto","isequalorgreaterthan":"#/components/schemas/ComparisonActionDto","not":"#/components/schemas/ConditionActionDto","check":"#/components/schemas/ConditionActionDto","toggle":"#/components/schemas/ToggleActionDto"}}}},"receiver":{"type":"string","description":"Receiver address","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"primaryAddress":{"type":"string","description":"Flashloan pool or lender contract address","example":"0x24147243f9c08d835C218Cda1e135f8dFD0517D0"}},"required":["flashloanToken","flashloanAmount","tokenOut","callback"]},"FlashloanActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"bend"},"action":{"type":"string","enum":["flashloan"],"example":"flashloan"},"args":{"$ref":"#/components/schemas/FlashloanArgsDto"}},"required":["protocol","action","args"]},"WithdrawArgsDto":{"type":"object","properties":{"tokenOut":{"description":"Output token address or addresses","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":"0x..."},"amountOut":{"description":"Amount or amounts to withdraw in wei","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"},{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]}}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Protocol contract address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"onBehalfOf":{"type":"string","description":"Address on whose behalf the withdrawal is made","example":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"},"positionId":{"type":"string","description":"Position identifier for singlewithdrawwithpositionid","example":"0x01"},"args":{"type":"object","description":"Protocol-specific additional withdrawal arguments","additionalProperties":{"type":"string"}}},"required":["tokenOut","amountOut","primaryAddress"]},"WithdrawActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"morpho-markets-v1"},"action":{"type":"string","enum":["withdraw","singlewithdraw","singlewithdrawwithpositionid","multiwithdraw"],"example":"withdraw"},"args":{"$ref":"#/components/schemas/WithdrawArgsDto"}},"required":["protocol","action","args"]},"SplitArgsDto":{"type":"object","properties":{"tokenIn":{"type":"string","description":"Token to split","example":"0xC02a..."},"tokenOut":{"description":"Output token addresses","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"amountIn":{"description":"Amount to split (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000000000000000"},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","tokenOut","amountIn"]},"SplitActionDto":{"type":"object","properties":{"protocol":{"type":"string","example":"enso"},"action":{"type":"string","example":"split"},"args":{"$ref":"#/components/schemas/SplitArgsDto"}},"required":["protocol","action","args"]},"MergeArgsDto":{"type":"object","properties":{"tokenIn":{"description":"Input token addresses","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"tokenOut":{"type":"string","description":"Output token address","example":"0x..."},"amountIn":{"description":"Amounts to merge (or previous output reference)","example":["1000",{"useOutputOfCallAt":0}],"type":"array","items":{"oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}]}},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","tokenOut","amountIn"]},"MergeActionDto":{"type":"object","properties":{"protocol":{"type":"string","example":"enso"},"action":{"type":"string","example":"merge"},"args":{"$ref":"#/components/schemas/MergeArgsDto"}},"required":["protocol","action","args"]},"MinAmountOutArgsDto":{"type":"object","properties":{"amountOut":{"description":"Expected output amount (previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":{"useOutputOfCallAt":0}},"minAmountOut":{"description":"Minimum acceptable amount","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"995000000"}},"required":["amountOut","minAmountOut"]},"MinAmountOutActionDto":{"type":"object","properties":{"protocol":{"type":"string","example":"enso"},"action":{"type":"string","example":"minamountout"},"args":{"$ref":"#/components/schemas/MinAmountOutArgsDto"}},"required":["protocol","action","args"]},"SlippageArgsDto":{"type":"object","properties":{"bps":{"type":"string","description":"Maximum slippage in basis points","example":"100"},"amountOut":{"description":"Expected output amount reference","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":{"useOutputOfCallAt":0}}},"required":["bps","amountOut"]},"SlippageActionDto":{"type":"object","properties":{"protocol":{"type":"string","example":"enso"},"action":{"type":"string","example":"slippage"},"args":{"$ref":"#/components/schemas/SlippageArgsDto"}},"required":["protocol","action","args"]},"FeeArgsDto":{"type":"object","properties":{"receiver":{"type":"string","description":"Receiver of the fee","example":"0x5fe5C43f1c4B2A1BA49cC6fE4A6a62f2f1619B82"},"token":{"type":"string","description":"Token to apply fee to","example":"0xA0b8...eB48"},"amount":{"description":"Amount (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"bps":{"type":"string","description":"Fee in basis points","example":"50"}},"required":["receiver","token","amount","bps"]},"FeeActionDto":{"type":"object","properties":{"protocol":{"type":"string","example":"enso"},"action":{"type":"string","example":"fee"},"args":{"$ref":"#/components/schemas/FeeArgsDto"}},"required":["protocol","action","args"]},"EnsoFeeArgsDto":{"type":"object","properties":{"token":{"type":"string","description":"Token to apply fee to","example":"0xA0b8...eB48"},"amount":{"description":"Amount (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"bps":{"type":"string","description":"Fee in basis points","example":"50"}},"required":["token","amount","bps"]},"EnsoFeeActionDto":{"type":"object","properties":{"protocol":{"type":"string","example":"enso"},"action":{"type":"string","example":"ensofee"},"args":{"$ref":"#/components/schemas/EnsoFeeArgsDto"}},"required":["protocol","action","args"]},"PaymasterFeeArgsDto":{"type":"object","properties":{"token":{"type":"string","description":"Token to apply fee to","example":"0xA0b8...eB48"},"amount":{"description":"Amount (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"}},"required":["token","amount"]},"PaymasterFeeActionDto":{"type":"object","properties":{"protocol":{"type":"string","example":"enso"},"action":{"type":"string","example":"paymasterfee"},"args":{"$ref":"#/components/schemas/PaymasterFeeArgsDto"}},"required":["protocol","action","args"]},"BinaryOperationArgsDto":{"type":"object","properties":{"amountA":{"description":"First operand (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"amountB":{"description":"Second operand (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"500000"}},"required":["amountA","amountB"]},"MathActionDto":{"type":"object","properties":{"protocol":{"type":"string","enum":["math"],"example":"math"},"action":{"type":"string","enum":["add","sub","mul","div","min","max"],"example":"add"},"args":{"$ref":"#/components/schemas/BinaryOperationArgsDto"}},"required":["protocol","action","args"]},"ComparisonActionDto":{"type":"object","properties":{"protocol":{"type":"string","enum":["helpers"],"example":"helpers"},"action":{"type":"string","enum":["isequal","islessthan","isequalorlessthan","isgreaterthan","isequalorgreaterthan"],"example":"isequal"},"args":{"$ref":"#/components/schemas/BinaryOperationArgsDto"}},"required":["protocol","action","args"]},"ConditionArgsDto":{"type":"object","properties":{"condition":{"description":"Boolean condition (or previous output reference)","oneOf":[{"type":"boolean"},{"$ref":"#/components/schemas/CallOutput"}],"example":{"useOutputOfCallAt":0}}},"required":["condition"]},"ConditionActionDto":{"type":"object","properties":{"protocol":{"type":"string","enum":["helpers"],"example":"helpers"},"action":{"type":"string","enum":["not","check"],"example":"check"},"args":{"$ref":"#/components/schemas/ConditionArgsDto"}},"required":["protocol","action","args"]},"ToggleArgsDto":{"type":"object","properties":{"condition":{"description":"Boolean condition (or previous output reference)","oneOf":[{"type":"boolean"},{"$ref":"#/components/schemas/CallOutput"}],"example":{"useOutputOfCallAt":0}},"amountA":{"description":"Value when condition is true (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"amountB":{"description":"Value when condition is false (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"0"}},"required":["condition","amountA","amountB"]},"ToggleActionDto":{"type":"object","properties":{"protocol":{"type":"string","enum":["helpers"],"example":"helpers"},"action":{"type":"string","enum":["toggle"],"example":"toggle"},"args":{"$ref":"#/components/schemas/ToggleArgsDto"}},"required":["protocol","action","args"]},"DepositArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"description":"Input token(s)","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":["0x...","0x..."]},"tokenOut":{"description":"Output token(s)","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":"0x..."},"amountIn":{"description":"Amount(s) (or previous output reference)","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"},{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]}}],"example":["1000000",{"useOutputOfCallAt":0}]},"primaryAddress":{"type":"string","description":"Protocol contract address","example":"0x..."},"positionId":{"type":"string","description":"Position identifier for position-based protocols","example":"0x01"},"tokenId":{"type":"string","description":"Token identifier for token-based protocol positions","example":"123"},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","amountIn","primaryAddress"]},"DepositActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"deposit"},"args":{"$ref":"#/components/schemas/DepositArgsDto"}},"required":["protocol","action","args"]},"RedeemArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"type":"string","description":"Input token (shares) address","example":"0x..."},"tokenOut":{"description":"Output token(s)","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":["0x...","0x..."]},"amountIn":{"description":"Amount to redeem (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Protocol contract address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."},"positionId":{"type":"string","description":"Position identifier for position-based protocols","example":"0x01"},"tokenId":{"type":"string","description":"Token identifier for token-based protocol positions","example":"123"}},"required":["tokenOut","amountIn","primaryAddress"]},"RedeemActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"redeem"},"args":{"$ref":"#/components/schemas/RedeemArgsDto"}},"required":["protocol","action","args"]},"DepositCLMMArgsDto":{"type":"object","properties":{"tokenIn":{"description":"Input token addresses","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"tokenOut":{"type":"string","description":"Output token address","example":"0x..."},"amountIn":{"type":"array","description":"Amounts (or previous output references)","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]},"example":["100",{"useOutputOfCallAt":0}]},"ticks":{"description":"Ticks for the position","example":["-276300","276300"],"type":"array","items":{"type":"string"}},"poolFee":{"type":"string","description":"Pool fee in basis points","example":"3000"},"receiver":{"type":"string","description":"Receiver address","example":"0x..."},"tickSpacing":{"type":"string","description":"Tick spacing","example":"60"},"hook":{"type":"string","description":"Hook address","example":"0x..."}},"required":["tokenIn","tokenOut","amountIn","ticks"]},"DepositCLMMActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"uniswap-v4"},"action":{"type":"string","example":"depositclmm"},"args":{"$ref":"#/components/schemas/DepositCLMMArgsDto"}},"required":["protocol","action","args"]},"RedeemCLMMArgsDto":{"type":"object","properties":{"tokenIn":{"type":"string","description":"Input token address to redeem","example":"0x..."},"tokenOut":{"description":"Output token addresses","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"liquidity":{"description":"Liquidity to redeem (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"100000"},"tokenId":{"type":"string","description":"Token ID of the NFT position","example":"12345"},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","tokenOut","liquidity","tokenId"]},"RedeemCLMMActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"uniswap-v4"},"action":{"type":"string","example":"redeemclmm"},"args":{"$ref":"#/components/schemas/RedeemCLMMArgsDto"}},"required":["protocol","action","args"]},"TokenizedSingleDepositArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"type":"string","description":"Input token address","example":"0x..."},"tokenOut":{"type":"string","description":"Output token address","example":"0x..."},"amountIn":{"description":"Amount to deposit (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Primary contract address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","tokenOut","amountIn","primaryAddress"]},"TokenizedSingleDepositActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"tokenizedsingledeposit"},"args":{"$ref":"#/components/schemas/TokenizedSingleDepositArgsDto"}},"required":["protocol","action","args"]},"TokenizedMultiDepositArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"description":"Input token addresses","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"tokenOut":{"type":"string","description":"Output token address","example":"0x..."},"amountIn":{"type":"array","description":"Amounts to deposit (or previous output references)","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]},"example":["100",{"useOutputOfCallAt":0}]},"primaryAddress":{"type":"string","description":"Primary contract address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","tokenOut","amountIn","primaryAddress"]},"TokenizedMultiDepositActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"tokenizedmultideposit"},"args":{"$ref":"#/components/schemas/TokenizedMultiDepositArgsDto"}},"required":["protocol","action","args"]},"TokenizedSingleRedeemArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"type":"string","description":"Input token address","example":"0x..."},"tokenOut":{"type":"string","description":"Output token address","example":"0x..."},"amountIn":{"description":"Amount to redeem (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Primary contract address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","tokenOut","amountIn","primaryAddress"]},"TokenizedSingleRedeemActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"tokenizedsingleredeem"},"args":{"$ref":"#/components/schemas/TokenizedSingleRedeemArgsDto"}},"required":["protocol","action","args"]},"TokenizedMultiRedeemArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"type":"string","description":"Input token address","example":"0x..."},"tokenOut":{"description":"Output token addresses","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"amountIn":{"description":"Amount to redeem (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Primary contract address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","tokenOut","amountIn","primaryAddress"]},"TokenizedMultiRedeemActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"tokenizedmultiredeem"},"args":{"$ref":"#/components/schemas/TokenizedMultiRedeemArgsDto"}},"required":["protocol","action","args"]},"MultiOutSingleDepositArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"type":"string","description":"Input token address","example":"0x..."},"tokenOut":{"description":"Output token addresses","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"amountIn":{"description":"Amount to deposit (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Primary contract address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","tokenOut","amountIn","primaryAddress"]},"MultiOutSingleDepositActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"balancer"},"action":{"type":"string","example":"multioutsingledeposit"},"args":{"$ref":"#/components/schemas/MultiOutSingleDepositArgsDto"}},"required":["protocol","action","args"]},"TransferArgsDto":{"type":"object","properties":{"token":{"type":"string","description":"Token address","example":"0xA0b8...eB48"},"amount":{"description":"Amount to transfer (or previous output reference). Required for erc20.","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"receiver":{"type":"string","description":"Receiver address","example":"0x..."},"tokenId":{"type":"string","description":"ERC721 token id. Required for erc721; ignored otherwise.","example":"123"}},"required":["token","receiver"]},"TransferActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"erc20"},"action":{"type":"string","example":"transfer"},"args":{"$ref":"#/components/schemas/TransferArgsDto"}},"required":["protocol","action","args"]},"TransferFromArgsDto":{"type":"object","properties":{"token":{"type":"string","description":"Token address","example":"0xA0b8...eB48"},"sender":{"type":"string","description":"Sender address. Required for erc20; optional for erc721 (defaults to the executing wallet).","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."},"amount":{"description":"Amount to transfer (or previous output reference). Required for erc20.","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"tokenId":{"type":"string","description":"ERC721 token id. Required for erc721; ignored otherwise.","example":"123"}},"required":["token","receiver"]},"TransferFromActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"erc20","enum":["erc20","erc721"]},"action":{"type":"string","example":"transferfrom"},"args":{"$ref":"#/components/schemas/TransferFromArgsDto"}},"required":["protocol","action","args"]},"PermitTransferFromArgsDto":{"type":"object","properties":{"token":{"description":"Token(s) to transfer","oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"example":["0x..."]},"amount":{"description":"Amount(s) (or previous output references)","oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"},{"type":"array","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]}}],"example":["1000000"]},"sender":{"type":"string","description":"Sender address","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."},"nonce":{"type":"string","description":"Nonce for signature replay protection","example":"1"},"deadline":{"type":"string","description":"Deadline timestamp","example":"1699999999"},"signature":{"type":"string","description":"EIP-2612 permit signature","example":"0x..."}},"required":["token","amount","sender","receiver","nonce","deadline","signature"]},"PermitTransferFromActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"erc20"},"action":{"type":"string","example":"permittransferfrom"},"args":{"$ref":"#/components/schemas/PermitTransferFromArgsDto"}},"required":["protocol","action","args"]},"SingleDepositArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"type":"string","description":"Input token","example":"0x..."},"tokenOut":{"type":"string","description":"Output token","example":"0x..."},"amountIn":{"description":"Amount (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Primary contract","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","amountIn","primaryAddress"]},"SingleDepositActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"singledeposit"},"args":{"$ref":"#/components/schemas/SingleDepositArgsDto"}},"required":["protocol","action","args"]},"MultiDepositArgsDto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"description":"Input tokens","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"tokenOut":{"type":"string","description":"Output token","example":"0x..."},"amountIn":{"type":"array","description":"Amounts (or previous output references)","items":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/CallOutput"}]},"example":["100",{"useOutputOfCallAt":0}]},"primaryAddress":{"type":"string","description":"Primary contract","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenIn","amountIn","primaryAddress"]},"MultiDepositActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"multideposit"},"args":{"$ref":"#/components/schemas/MultiDepositArgsDto"}},"required":["protocol","action","args"]},"SingleRedeemArgs2Dto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"type":"string","description":"Input token","example":"0x..."},"tokenOut":{"type":"string","description":"Output token","example":"0x..."},"amountIn":{"description":"Amount (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Primary contract","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenOut","amountIn","primaryAddress"]},"SingleRedeemActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"singleredeem"},"args":{"$ref":"#/components/schemas/SingleRedeemArgs2Dto"}},"required":["protocol","action","args"]},"MultiRedeemArgs2Dto":{"type":"object","properties":{"onBehalfOf":{"type":"string","description":"Address that will own the resulting protocol position","example":"0x..."},"args":{"type":"object","description":"Protocol-specific additional action arguments","additionalProperties":{"type":"string"}},"tokenIn":{"type":"string","description":"Input token","example":"0x..."},"tokenOut":{"description":"Output tokens","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"amountIn":{"description":"Amount (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000"},"primaryAddress":{"type":"string","description":"Primary contract","example":"0x..."},"receiver":{"type":"string","description":"Receiver address","example":"0x..."}},"required":["tokenOut","amountIn","primaryAddress"]},"MultiRedeemActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"yearn"},"action":{"type":"string","example":"multiredeem"},"args":{"$ref":"#/components/schemas/MultiRedeemArgs2Dto"}},"required":["protocol","action","args"]},"SwapArgsDto":{"type":"object","properties":{"tokenIn":{"type":"string","description":"Input token address","example":"0xC02a..."},"tokenOut":{"type":"string","description":"Output token address","example":"0xA0b8...eB48"},"amountIn":{"description":"Amount to swap (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000000000000000"},"primaryAddress":{"type":"string","description":"Router or pool contract address","example":"0x7a25..."},"receiver":{"type":"string","description":"Receiver address","example":"0xd8da6bf..."},"slippage":{"type":"string","description":"Slippage in basis points","example":"100"},"poolFee":{"type":"string","description":"Pool fee in basis points","example":"3000"},"tickSpacing":{"type":"string","description":"Tick spacing for concentrated liquidity pools","example":"60"},"hooks":{"type":"string","description":"Hook contract address","example":"0x..."},"poolId":{"type":"string","description":"Pool identifier (if protocol-specific)","example":"0x..."},"salt":{"type":"string","description":"Protocol-specific pool salt","example":"0x..."},"path":{"description":"Token path for multi-hop protocol swaps","example":["0x...","0x..."],"type":"array","items":{"type":"string"}},"args":{"type":"object","description":"Protocol-specific additional swap arguments","additionalProperties":{"type":"string"}}},"required":["tokenIn","tokenOut","amountIn","primaryAddress"]},"SwapActionDto":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocol","example":"uniswap-v2"},"action":{"type":"string","example":"swap"},"args":{"$ref":"#/components/schemas/SwapArgsDto"}},"required":["protocol","action","args"]},"CctpBridgeProtocolArgsDto":{"type":"object","properties":{"transferType":{"type":"string","description":"CCTP only. Preferred finality threshold. \"fast\" requires Circle-designated fast-source support; falls back to \"standard\" silently when unavailable.","enum":["fast","standard"],"example":"fast"},"forwardFee":{"type":"string","description":"CCTP only. Forwarding Service fee bracket (destination-chain gas buffer). Applies to all CCTP transfers — Forwarding is always used to guarantee destination execution. Defaults to `med`. Pass `high` for more headroom against fee drift between quote and forward execution, or `low` to trade delivery headroom for a better quote. An under-budgeted maxFee can strand the transfer until Circle re-attempts.","enum":["low","med","high"],"default":"med","example":"med"},"isHyperCoreTransfer":{"type":"boolean","description":"CCTP HyperCore only. When true, the CCTP burn delivers USDC into HyperCore via Circle's CctpForwarder instead of minting at `receiver` on HyperEVM. Requires `destinationChainId = 999` (HyperEVM) and a source chain other than HyperEVM. Most consumers should NOT set this directly — use the `callback: [enso:balance, hypercore-spot:deposit]` shape, or rely on `/route/nontokenized` with `positionOut = 0x2000…0000` to set it automatically.","example":true}}},"BridgeArgsDto":{"type":"object","properties":{"tokenIn":{"type":"string","description":"Input token address","example":"0xC02a..."},"amountIn":{"description":"Amount to bridge (or previous output reference)","oneOf":[{"type":"string","description":"Literal string value (e.g. wei amount)"},{"$ref":"#/components/schemas/CallOutput","description":"Reference output from a previous action"}],"example":"1000000000000000000"},"primaryAddress":{"type":"string","description":"Bridging protocol contract address","example":"0x..."},"destinationChainId":{"type":"number","description":"Destination chain id","example":10},"receiver":{"type":"string","description":"Receiver address on destination chain","example":"0x..."},"callback":{"type":"array","description":"Optional callback bundle on destination chain (MUST start with balance action)","items":{"oneOf":[{"$ref":"#/components/schemas/RouteActionDto"},{"$ref":"#/components/schemas/SwapActionDto"},{"$ref":"#/components/schemas/BridgeActionDto"},{"$ref":"#/components/schemas/BalanceActionDto"},{"$ref":"#/components/schemas/ApproveActionDto"},{"$ref":"#/components/schemas/TransferActionDto"},{"$ref":"#/components/schemas/TransferFromActionDto"},{"$ref":"#/components/schemas/PermitTransferFromActionDto"},{"$ref":"#/components/schemas/DepositActionDto"},{"$ref":"#/components/schemas/RedeemActionDto"},{"$ref":"#/components/schemas/DepositCLMMActionDto"},{"$ref":"#/components/schemas/RedeemCLMMActionDto"},{"$ref":"#/components/schemas/TokenizedSingleDepositActionDto"},{"$ref":"#/components/schemas/TokenizedMultiDepositActionDto"},{"$ref":"#/components/schemas/TokenizedSingleRedeemActionDto"},{"$ref":"#/components/schemas/TokenizedMultiRedeemActionDto"},{"$ref":"#/components/schemas/MultiOutSingleDepositActionDto"},{"$ref":"#/components/schemas/CallActionDto"},{"$ref":"#/components/schemas/FlashloanActionDto"},{"$ref":"#/components/schemas/WithdrawActionDto"},{"$ref":"#/components/schemas/SplitActionDto"},{"$ref":"#/components/schemas/MergeActionDto"},{"$ref":"#/components/schemas/MinAmountOutActionDto"},{"$ref":"#/components/schemas/SlippageActionDto"},{"$ref":"#/components/schemas/FeeActionDto"},{"$ref":"#/components/schemas/EnsoFeeActionDto"},{"$ref":"#/components/schemas/PaymasterFeeActionDto"},{"$ref":"#/components/schemas/RepayActionDto"},{"$ref":"#/components/schemas/BorrowActionDto"},{"$ref":"#/components/schemas/HarvestActionDto"},{"$ref":"#/components/schemas/SingleDepositActionDto"},{"$ref":"#/components/schemas/MultiDepositActionDto"},{"$ref":"#/components/schemas/SingleRedeemActionDto"},{"$ref":"#/components/schemas/MultiRedeemActionDto"},{"$ref":"#/components/schemas/MathActionDto"},{"$ref":"#/components/schemas/ComparisonActionDto"},{"$ref":"#/components/schemas/ConditionActionDto"},{"$ref":"#/components/schemas/ToggleActionDto"}],"discriminator":{"propertyName":"action","mapping":{"route":"#/components/schemas/RouteActionDto","swap":"#/components/schemas/SwapActionDto","bridge":"#/components/schemas/BridgeActionDto","balance":"#/components/schemas/BalanceActionDto","approve":"#/components/schemas/ApproveActionDto","transfer":"#/components/schemas/TransferActionDto","transferfrom":"#/components/schemas/TransferFromActionDto","permittransferfrom":"#/components/schemas/PermitTransferFromActionDto","deposit":"#/components/schemas/DepositActionDto","redeem":"#/components/schemas/RedeemActionDto","depositclmm":"#/components/schemas/DepositCLMMActionDto","redeemclmm":"#/components/schemas/RedeemCLMMActionDto","tokenizedsingledeposit":"#/components/schemas/TokenizedSingleDepositActionDto","tokenizedmultideposit":"#/components/schemas/TokenizedMultiDepositActionDto","tokenizedsingleredeem":"#/components/schemas/TokenizedSingleRedeemActionDto","tokenizedmultiredeem":"#/components/schemas/TokenizedMultiRedeemActionDto","multioutsingledeposit":"#/components/schemas/MultiOutSingleDepositActionDto","call":"#/components/schemas/CallActionDto","flashloan":"#/components/schemas/FlashloanActionDto","withdraw":"#/components/schemas/WithdrawActionDto","singlewithdraw":"#/components/schemas/WithdrawActionDto","singlewithdrawwithpositionid":"#/components/schemas/WithdrawActionDto","multiwithdraw":"#/components/schemas/WithdrawActionDto","split":"#/components/schemas/SplitActionDto","merge":"#/components/schemas/MergeActionDto","minamountout":"#/components/schemas/MinAmountOutActionDto","slippage":"#/components/schemas/SlippageActionDto","fee":"#/components/schemas/FeeActionDto","ensofee":"#/components/schemas/EnsoFeeActionDto","paymasterfee":"#/components/schemas/PaymasterFeeActionDto","repay":"#/components/schemas/RepayActionDto","borrow":"#/components/schemas/BorrowActionDto","harvest":"#/components/schemas/HarvestActionDto","singledeposit":"#/components/schemas/SingleDepositActionDto","multideposit":"#/components/schemas/MultiDepositActionDto","singleredeem":"#/components/schemas/SingleRedeemActionDto","multiredeem":"#/components/schemas/MultiRedeemActionDto","add":"#/components/schemas/MathActionDto","sub":"#/components/schemas/MathActionDto","mul":"#/components/schemas/MathActionDto","div":"#/components/schemas/MathActionDto","min":"#/components/schemas/MathActionDto","max":"#/components/schemas/MathActionDto","isequal":"#/components/schemas/ComparisonActionDto","islessthan":"#/components/schemas/ComparisonActionDto","isequalorlessthan":"#/components/schemas/ComparisonActionDto","isgreaterthan":"#/components/schemas/ComparisonActionDto","isequalorgreaterthan":"#/components/schemas/ComparisonActionDto","not":"#/components/schemas/ConditionActionDto","check":"#/components/schemas/ConditionActionDto","toggle":"#/components/schemas/ToggleActionDto"}}}},"protocolArgs":{"description":"Protocol-specific bridge args nested under a single field.","allOf":[{"$ref":"#/components/schemas/CctpBridgeProtocolArgsDto"}]}},"required":["tokenIn","amountIn","primaryAddress","destinationChainId","receiver"]},"BridgeActionDto":{"type":"object","properties":{"action":{"type":"string","description":"Action","example":"bridge"},"protocol":{"type":"string","description":"Protocol to use for bridging","enum":["cctp","stargate","ccip","relay"],"example":"stargate"},"args":{"$ref":"#/components/schemas/BridgeArgsDto"}},"required":["action","protocol","args"]},"QuoteEndpointResponse":{"type":"object","properties":{"amountOut":{"type":"string"},"priceImpact":{"type":"number","description":"Price impact in basis points, null if USD price not found","nullable":true},"route":{"description":"The route selected for the quote","type":"array","items":{"$ref":"#/components/schemas/Hop"}},"feeAmount":{"description":"An array of the fee amount collected for each tokenIn","type":"array","items":{"type":"string"}},"ensoFeeAmount":{"type":"array","items":{"type":"string"}}},"required":["amountOut","route"]},"IporShortcutInput":{"type":"object","properties":{"isRouter":{"type":"boolean","description":"Flag that indicates whether to use the shared router","nullable":true},"amountIn":{"type":"string","description":"Amount of tokenIn in wei","example":"1000000000000000"},"tokenIn":{"type":"string","description":"Address of the tokenIn. For ETH, use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee","example":"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"},"tokenBToBuy":{"type":"string","description":"Address of the tokenBToBuy","example":"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"},"percentageForTokenB":{"type":"string","description":"Percentage of tokenB to buy in basis points (1/10000)","example":"5000"},"slippage":{"type":"string","description":"Slippage in basis points (1/10000). Default is 300","example":"300","default":"300"},"simulate":{"type":"boolean","description":"Flag that indicates whether to simulate the transaction, verify some assertions, return simulationURL and events","nullable":true,"default":false}},"required":["amountIn","tokenIn","tokenBToBuy","percentageForTokenB"]},"IporLog":{"type":"object","properties":{"topics":{"type":"array","items":{"type":"string"}},"data":{"type":"string"},"address":{"type":"string"}},"required":["topics","data","address"]},"IporShortcutTransaction":{"type":"object","properties":{"createdAt":{"type":"number","description":"Block number the transaction was created on"},"tx":{"description":"The tx object to use in `ethers`","allOf":[{"$ref":"#/components/schemas/Transaction"}]},"logs":{"description":"Logs from the simulated transaction","type":"array","items":{"$ref":"#/components/schemas/IporLog"}},"simulationURL":{"type":"string","description":"Tenderly simulation URL"}},"required":["createdAt","tx","logs","simulationURL"]},"NonTokenizedModel":{"type":"object","properties":{"chainId":{"type":"number","description":"Chain ID of the network of the nontokenized position"},"project":{"type":"string","description":"The project associated with the nontokenized position"},"protocol":{"type":"string","description":"The specific standard integration or version of the nontokenized position"},"address":{"type":"string","description":"Ethereum address of the nontokenized position"},"positionId":{"type":"string","description":"Opaque position identifier of the nontokenized position"},"primaryAddress":{"type":"string","description":"Ethereum address of the nontokenized position"},"name":{"type":"string","description":"Name of the nontokenized position"},"logosUri":{"type":"string","description":"Logo of the nontokenized position"},"underlyingTokens":{"description":"Underlying tokens of nontokenized position","nullable":true,"type":"array","items":{"$ref":"#/components/schemas/TokenModel"}}},"required":["chainId","project","protocol","address","positionId","primaryAddress"]},"Project":{"type":"object","properties":{"id":{"type":"string"},"chains":{"type":"array","items":{"type":"number"}},"protocols":{"type":"array","items":{"type":"string"}}},"required":["id","protocols"]},"CcipEvmTokenAmount":{"type":"object","properties":{"token":{"type":"string"},"amount":{"type":"string"}},"required":["token","amount"]},"CcipEvm2AnyMessage":{"type":"object","properties":{"receiver":{"type":"string"},"tokenAmounts":{"type":"array","items":{"$ref":"#/components/schemas/CcipEvmTokenAmount"}},"feeToken":{"type":"string"}},"required":["receiver","tokenAmounts","feeToken"]},"DecodedValidationError":{"type":"object","properties":{"errorCodeName":{"type":"string","description":"Human-readable error code name from EnsoCCIPReceiver","example":"MALFORMED_MESSAGE_DATA"},"errorDescription":{"type":"string","description":"Human-readable description of what went wrong","example":"Message payload could not be decoded as (address receiver, bytes shortcutData)"},"refundKind":{"type":"string","description":"Expected refund policy based on error code (NONE, TO_RECEIVER, TO_ESCROW)","example":"TO_ESCROW"},"refundKindDescription":{"type":"string","description":"Human-readable description of the refund outcome","example":"Tokens were quarantined in the EnsoCCIPReceiver contract for manual recovery"}},"required":["errorCodeName","errorDescription","refundKind","refundKindDescription"]},"MessageValidationFailedError":{"type":"object","properties":{"reason":{"type":"string","description":"Error reason - indicates CCIP message validation failed at the receiver","example":"MessageValidationFailed"},"messageId":{"type":"string","description":"CCIP message ID that failed validation","example":"0x9a3e6a8a52b82a1f4b523b0d50be133df0ad9407814b32e42d67119e1ae1947d"},"errorCode":{"type":"number","description":"Validation error code from EnsoCCIPReceiver contract","example":5},"errorData":{"type":"string","description":"Additional error data in hex format","example":"0x"},"decoded":{"description":"Human-readable decoded error information","allOf":[{"$ref":"#/components/schemas/DecodedValidationError"}]}},"required":["reason","messageId","errorCode","errorData","decoded"]},"ShortcutExecutionFailedError":{"type":"object","properties":{"reason":{"type":"string","description":"Error reason - indicates shortcut execution failed","example":"ShortcutExecutionFailed"},"messageId":{"type":"string","description":"CCIP message ID for the failed execution","example":"0x9a3e6a8a52b82a1f4b523b0d50be133df0ad9407814b32e42d67119e1ae1947d"},"error":{"type":"string","description":"Error details from the failed shortcut execution","example":"0x08c379a0000000000000000000000000..."}},"required":["reason","messageId","error"]},"CcipRouterResponse":{"type":"object","properties":{"router":{"type":"string","description":"CCIP router contract address for the specified chain","example":"0x141fa059441E0ca23ce184B6A78bafD2A517DdE8"}},"required":["router"]},"CcipSendParams":{"type":"object","properties":{"destinationChainSelector":{"type":"string","description":"Destination chain selector (CCIP format, not Enso ChainId). See https://docs.chain.link/ccip/supported-networks","example":"15971525489660198786"},"message":{"description":"CCIP message parameters (Client.EVM2AnyMessage structure with receiver, tokenAmounts and feeToken; the raw data/extraArgs bytes are not echoed — read them from the source transaction on chain)","allOf":[{"$ref":"#/components/schemas/CcipEvm2AnyMessage"}]}},"required":["destinationChainSelector","message"]},"DecodedMessageData":{"type":"object","properties":{"receiver":{"type":"string","description":"Receiver address extracted from CCIP message data","example":"0x1234567890123456789012345678901234567890"},"error":{"type":"string","description":"Error message if message.data could not be decoded as (address,bytes)","example":"Could not decode message.data as (address,bytes)"}},"required":["receiver"]},"TokenInfo":{"type":"object","properties":{"address":{"type":"string","description":"Token contract address","example":"0x55d398326f99059fF775485246999027B3197955"},"symbol":{"type":"string","description":"Token symbol (e.g., USDT, USDC)","example":"USDT"},"name":{"type":"string","description":"Token full name","example":"Tether USD"},"decimals":{"type":"number","description":"Token decimals","example":18}},"required":["address"]},"TokenAmount":{"type":"object","properties":{"token":{"description":"Token information","allOf":[{"$ref":"#/components/schemas/TokenInfo"}]},"amount":{"type":"string","description":"Token amount (in wei/smallest unit)","example":"1000000000000000000"}},"required":["token","amount"]},"FeeDetails":{"type":"object","properties":{"token":{"description":"Fee token information","allOf":[{"$ref":"#/components/schemas/TokenInfo"}]},"amount":{"type":"string","description":"Fee amount paid for CCIP message (in wei/smallest unit)","example":"5000000000000000"}},"required":["token","amount"]},"ExtraArgs":{"type":"object","properties":{"gasLimit":{"type":"string","description":"Gas limit allocated for shortcut execution on destination chain","example":"2000000"},"allowOutOfOrderExecution":{"type":"boolean","description":"Whether CCIP can execute this message out of order (true = allow)","example":false}},"required":["gasLimit","allowOutOfOrderExecution"]},"CcipSendParamsDecoded":{"type":"object","properties":{"destinationChainId":{"type":"number","description":"Destination chain ID","example":8453},"data":{"description":"Decoded message data containing receiver address and shortcut execution data","allOf":[{"$ref":"#/components/schemas/DecodedMessageData"}]},"tokenAmounts":{"description":"Token amounts being transferred cross-chain with full token metadata","type":"array","items":{"$ref":"#/components/schemas/TokenAmount"}},"fee":{"description":"CCIP fee details with token information","allOf":[{"$ref":"#/components/schemas/FeeDetails"}]},"extraArgs":{"description":"CCIP extra arguments (gas limit and execution order preferences)","allOf":[{"$ref":"#/components/schemas/ExtraArgs"}]}}},"CcipBridgeTransactionResponse":{"type":"object","properties":{"sourceChainId":{"type":"number","description":"Source chain ID where the CCIP message was sent from","example":56},"sourceTxHash":{"type":"string","description":"Source chain transaction hash","example":"0x80f1faf0652a5618ea1de0fc5142418e380676b3c6c74d482cfac1237638d6d4"},"sourceChainIdFinality":{"type":"number","description":"CCIP finality time in seconds for the source chain (time required for CCIP to achieve finality)","example":5},"sourceChainEstimatedTimeForFinalitySeconds":{"type":"number","description":"Estimated seconds remaining until source chain finality is achieved","example":0},"ccipSendParams":{"description":"Raw CCIP send parameters extracted from Chainlink API (destinationChainSelector and message)","allOf":[{"$ref":"#/components/schemas/CcipSendParams"}]},"ccipSendParamsDecoded":{"description":"Decoded and enriched CCIP send parameters with full token metadata and human-readable data","allOf":[{"$ref":"#/components/schemas/CcipSendParamsDecoded"}]},"destinationChainId":{"type":"number","description":"Destination chain ID where the CCIP message was delivered","example":8453},"destinationTxHash":{"type":"string","description":"Destination chain transaction hash (if message was delivered)","example":"0x9a3e6a8a52b82a1f4b523b0d50be133df0ad9407814b32e42d67119e1ae1947d"},"status":{"type":"string","description":"Overall bridge status. `ready_for_manual_execution` means destination execution failed/stalled but is recoverable — anyone can (re)trigger manual execution once the underlying cause is resolved.","enum":["pending","inflight","delivered","failed","ready_for_manual_execution","unknown"]},"readyForManualExecution":{"type":"boolean","description":"True if the CCIP message is awaiting (or can be retried via) manual execution on the destination chain. A failed message that is ready for manual execution can be re-triggered by anyone once the underlying cause (e.g. token pool liquidity) is resolved.","example":true},"ensoSourceEvent":{"description":"Enso shortcut event from source chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]},"ensoDestinationEvent":{"description":"Enso shortcut event from destination chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]},"error":{"type":"string","description":"Error message if the API request failed (e.g., transaction not found, invalid chain selector, API errors)","example":"Transaction receipt not found for 0x..."}},"required":["sourceChainId","sourceTxHash","sourceChainIdFinality","status"]},"RelayTx":{"type":"object","properties":{"hash":{"type":"string","description":"Transaction hash","example":"0x80f1faf0652a5618ea1de0fc5142418e380676b3c6c74d482cfac1237638d6d4"},"chainId":{"type":"number","description":"Chain ID","example":8453},"block":{"type":"number","description":"Block number","example":12345678},"timestamp":{"type":"number","description":"Transaction timestamp (unix seconds)","example":1700000000},"status":{"type":"string","description":"Transaction status","example":"success"}},"required":["hash","chainId"]},"RelayCurrencyInfo":{"type":"object","properties":{"chainId":{"type":"number","description":"Chain ID of the currency","example":1},"address":{"type":"string","description":"Token contract address","example":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"},"symbol":{"type":"string","description":"Token symbol","example":"USDC"},"name":{"type":"string","description":"Token name","example":"USD Coin"},"decimals":{"type":"number","description":"Token decimals","example":6}},"required":["chainId","address","symbol","name","decimals"]},"RelayFees":{"type":"object","properties":{"gas":{"type":"string","description":"Estimated gas cost in wei","example":"50000000000000"},"fixed":{"type":"string","description":"Fixed fee in wei","example":"0"},"price":{"type":"string","description":"Dynamic fee from chain and amount in wei","example":"100000"},"gateway":{"type":"string","description":"Fee taken by API gateway in wei","example":"0"}},"required":["gas","fixed","price"]},"RelayRequestData":{"type":"object","properties":{"status":{"type":"string","description":"Relay request status","example":"success","enum":["success","failure","refund","pending","depositing","waiting"]},"user":{"type":"string","description":"User address that initiated the bridge","example":"0x1234567890123456789012345678901234567890"},"recipient":{"type":"string","description":"Recipient address on destination chain","example":"0x1234567890123456789012345678901234567890"},"inTxs":{"description":"Source chain transactions","type":"array","items":{"$ref":"#/components/schemas/RelayTx"}},"outTxs":{"description":"Destination chain transactions","type":"array","items":{"$ref":"#/components/schemas/RelayTx"}},"currency":{"description":"Currency being bridged","allOf":[{"$ref":"#/components/schemas/RelayCurrencyInfo"}]},"fees":{"description":"Fee breakdown in wei","allOf":[{"$ref":"#/components/schemas/RelayFees"}]},"feesUsd":{"description":"Fee breakdown in USD","allOf":[{"$ref":"#/components/schemas/RelayFees"}]},"failReason":{"type":"string","description":"Reason for failure if the bridge failed","example":"EXECUTION_REVERTED"},"createdAt":{"type":"string","description":"When the relay request was created","example":"2024-01-15T12:00:00Z"},"updatedAt":{"type":"string","description":"When the relay request was last updated","example":"2024-01-15T12:05:00Z"}},"required":["status"]},"RelayBridgeTransactionResponse":{"type":"object","properties":{"sourceChainId":{"type":"number","description":"Source chain ID where the Relay message was sent from","example":1},"sourceTxHash":{"type":"string","description":"Source chain transaction hash","example":"0x80f1faf0652a5618ea1de0fc5142418e380676b3c6c74d482cfac1237638d6d4"},"destinationChainId":{"type":"number","description":"Destination chain ID where the Relay message was delivered","example":8453},"destinationTxHash":{"type":"string","description":"Destination chain transaction hash (if message was delivered)","example":"0x9a3e6a8a52b82a1f4b523b0d50be133df0ad9407814b32e42d67119e1ae1947d"},"refundChainId":{"type":"number","description":"Chain the funds were refunded on — the origin chain — present when the request was refunded instead of delivered. destinationChainId then names the intended destination and destinationTxHash is absent (nothing arrived there).","example":42161},"refundTxHash":{"type":"string","description":"The refund payout transaction, present when the request was refunded instead of delivered"},"status":{"type":"string","description":"Overall bridge status","enum":["pending","inflight","delivered","failed","unknown"]},"relayRequest":{"description":"Relay API request data with fee breakdown and status details","allOf":[{"$ref":"#/components/schemas/RelayRequestData"}]},"ensoSourceEvent":{"description":"Enso shortcut event from source chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]},"ensoDestinationEvent":{"description":"Enso shortcut event from destination chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]},"error":{"type":"string","description":"Error message if the API request failed (e.g., transaction not found, API errors)","example":"Transaction receipt not found for 0x..."}},"required":["sourceChainId","sourceTxHash","status"]},"ForwardingStatusInfo":{"type":"object","properties":{"state":{"type":"string","description":"Raw forward state reported by Circle's Forwarding Service (e.g. PENDING, COMPLETED, FAILED). Present only for forwarding-service transfers (incl. HyperCore deposits).","example":"FAILED"},"errorCode":{"type":"string","description":"Error code when the forward failed (e.g. INSUFFICIENT_FEE).","example":"INSUFFICIENT_FEE"},"errorDetails":{"type":"string","description":"Human-readable details when the forward failed.","example":"Fee provided insufficient for forwarding"},"txHash":{"type":"string","description":"Transaction hash of the forward (mint) transaction on the destination chain."}},"required":["state"]},"DepositForBurnParams":{"type":"object","properties":{"amount":{"type":"string","description":"Amount in token subunits","example":"100000"},"destinationDomain":{"type":"number","description":"CCTP destination domain ID","example":0},"mintRecipient":{"type":"string","description":"Mint recipient as bytes32","example":"0x00000000000000000000000042d023187acedd3306e3dce2f1b9e4a81d636503"},"burnToken":{"type":"string","description":"Burn token address on source chain","example":"0x754704bc059f8c67012fed69bc8a327a5aafb603"},"destinationCaller":{"type":"string","description":"Destination caller restriction (bytes32(0) = anyone)","example":"0x0000000000000000000000000000000000000000000000000000000000000000"},"maxFee":{"type":"string","description":"Maximum fee in token subunits","example":"0"},"minFinalityThreshold":{"type":"number","description":"Minimum finality threshold","example":1000}},"required":["amount","destinationDomain","mintRecipient","burnToken","destinationCaller","maxFee","minFinalityThreshold"]},"FinalityInfo":{"type":"object","properties":{"value":{"type":"number","description":"Raw finality threshold value","example":1000},"type":{"type":"string","description":"Transfer type: fast (<= 1000) or standard (>= 2000)","enum":["fast","standard"],"example":"fast"}},"required":["value","type"]},"DepositForBurnDecoded":{"type":"object","properties":{"burnToken":{"$ref":"#/components/schemas/TokenAmount"},"destinationChainId":{"type":"number","description":"Destination chain ID","example":1},"mintRecipient":{"type":"string","description":"Recipient address on destination chain (decoded from bytes32)","example":"0x42d023187acedd3306e3dce2f1b9e4a81d636503"},"destinationCaller":{"type":"string","description":"Destination caller as EVM address (decoded from bytes32)","example":"0x0000000000000000000000000000000000000000"},"maxFee":{"description":"Maximum fee with token info","allOf":[{"$ref":"#/components/schemas/TokenAmount"}]},"minFinalityThreshold":{"description":"Requested finality threshold and type","allOf":[{"$ref":"#/components/schemas/FinalityInfo"}]},"finalityThresholdExecuted":{"description":"Actual finality threshold executed by Circle (may differ from requested)","allOf":[{"$ref":"#/components/schemas/FinalityInfo"}]},"feeExecuted":{"description":"Actual fee deducted from minted amount, with token info","allOf":[{"$ref":"#/components/schemas/TokenAmount"}]}},"required":["burnToken","destinationChainId","mintRecipient","destinationCaller","maxFee","minFinalityThreshold"]},"DepositForBurnWithHookParams":{"type":"object","properties":{"amount":{"type":"string","description":"Amount in token subunits","example":"100000"},"destinationDomain":{"type":"number","description":"CCTP destination domain ID","example":0},"mintRecipient":{"type":"string","description":"Mint recipient as bytes32","example":"0x00000000000000000000000042d023187acedd3306e3dce2f1b9e4a81d636503"},"burnToken":{"type":"string","description":"Burn token address on source chain","example":"0x754704bc059f8c67012fed69bc8a327a5aafb603"},"destinationCaller":{"type":"string","description":"Destination caller restriction (bytes32(0) = anyone)","example":"0x0000000000000000000000000000000000000000000000000000000000000000"},"maxFee":{"type":"string","description":"Maximum fee in token subunits","example":"0"},"minFinalityThreshold":{"type":"number","description":"Minimum finality threshold","example":1000},"hookData":{"type":"string","description":"Raw hookData bytes","example":"0x636374702d666f72776172640000000000000000000000000000000000000000"}},"required":["amount","destinationDomain","mintRecipient","burnToken","destinationCaller","maxFee","minFinalityThreshold","hookData"]},"HookDataInfo":{"type":"object","properties":{"raw":{"type":"string","description":"Raw hookData bytes","example":"0x636374702d666f72776172640000000000000000000000000000000000000000"},"forwardingService":{"type":"boolean","description":"Whether the hookData payload matches Circle's Forwarding Service \"cctp-forward\" magic bytes.","example":true},"hyperCoreTransfer":{"type":"boolean","description":"True when the hookData is the 56-byte HyperCore forwarding payload (forwards the mint into HyperCore via the CctpForwarder).","example":true},"hyperCoreRecipient":{"type":"string","description":"HyperCore recipient decoded from the forwarding hookData (present for HyperCore transfers).","example":"0x42d023187acedd3306e3dce2f1b9e4a81d636503"},"hyperCoreDestinationDex":{"type":"number","description":"Raw destinationDex from the HyperCore hookData (0 = perps, 4294967295 = spot).","example":4294967295},"hyperCoreDestinationDexType":{"type":"string","description":"Human-readable HyperCore destination DEX.","enum":["perps","spot","unknown"],"example":"spot"}},"required":["raw","forwardingService"]},"DepositForBurnWithHookDecoded":{"type":"object","properties":{"burnToken":{"$ref":"#/components/schemas/TokenAmount"},"destinationChainId":{"type":"number","description":"Destination chain ID","example":1},"mintRecipient":{"type":"string","description":"Recipient address on destination chain (decoded from bytes32)","example":"0x42d023187acedd3306e3dce2f1b9e4a81d636503"},"destinationCaller":{"type":"string","description":"Destination caller as EVM address (decoded from bytes32)","example":"0x0000000000000000000000000000000000000000"},"maxFee":{"description":"Maximum fee with token info","allOf":[{"$ref":"#/components/schemas/TokenAmount"}]},"minFinalityThreshold":{"description":"Requested finality threshold and type","allOf":[{"$ref":"#/components/schemas/FinalityInfo"}]},"finalityThresholdExecuted":{"description":"Actual finality threshold executed by Circle (may differ from requested)","allOf":[{"$ref":"#/components/schemas/FinalityInfo"}]},"feeExecuted":{"description":"Actual fee deducted from minted amount, with token info","allOf":[{"$ref":"#/components/schemas/TokenAmount"}]},"hookData":{"description":"hookData payload. `forwardingService` is true when the bytes match Circle's \"cctp-forward\" magic.","allOf":[{"$ref":"#/components/schemas/HookDataInfo"}]}},"required":["burnToken","destinationChainId","mintRecipient","destinationCaller","maxFee","minFinalityThreshold","hookData"]},"CctpBridgeTransactionResponse":{"type":"object","properties":{"sourceChainId":{"type":"number","description":"Source chain ID where the CCTP burn was initiated","example":143},"sourceTxHash":{"type":"string","description":"Source chain transaction hash","example":"0x4ac72089eef92b827702281bb2668b416ee6d3e9d953600dc363842e473a157c"},"destinationChainId":{"type":"number","description":"Destination chain ID where the mint occurs","example":1},"destinationTxHash":{"type":"string","description":"Destination chain transaction hash (if mint has completed)"},"status":{"type":"string","description":"Overall bridge status. ready_for_manual_execution: the burn is attested but the destination mint has not been executed — claim it via /api/v1/cctp/bridge/claim.","enum":["pending","inflight","delivered","failed","ready_for_manual_execution","unknown"]},"transferType":{"type":"string","description":"CCTP transfer type based on finalityThresholdExecuted: \"fast\" (<= 1000) or \"standard\" (>= 2000)","enum":["fast","standard"]},"delayReason":{"type":"string","description":"Reason Circle reports for delayed message processing (insufficient_fee, amount_above_max, insufficient_allowance_available).","example":"insufficient_fee"},"forward":{"description":"Forwarding Service status for transfers with a forwarding hook (incl. HyperCore deposits). The bridge is only 'delivered' once the forward completes.","allOf":[{"$ref":"#/components/schemas/ForwardingStatusInfo"}]},"depositForBurn":{"description":"Raw depositForBurn function parameters. Present iff the source-chain call was plain depositForBurn (no hookData).","allOf":[{"$ref":"#/components/schemas/DepositForBurnParams"}]},"depositForBurnDecoded":{"description":"Decoded depositForBurn parameters with token metadata, chain IDs, and human-readable values.","allOf":[{"$ref":"#/components/schemas/DepositForBurnDecoded"}]},"depositForBurnWithHook":{"description":"Raw depositForBurnWithHook function parameters. Present iff the source-chain call was depositForBurnWithHook (non-empty hookData).","allOf":[{"$ref":"#/components/schemas/DepositForBurnWithHookParams"}]},"depositForBurnWithHookDecoded":{"description":"Decoded depositForBurnWithHook parameters with token metadata, chain IDs, and human-readable values.","allOf":[{"$ref":"#/components/schemas/DepositForBurnWithHookDecoded"}]},"ensoSourceEvent":{"description":"Enso shortcut event from source chain (ShortcutExecuted + execution result). Null if not found.","nullable":true,"allOf":[{"$ref":"#/components/schemas/EnsoEvent"}]},"error":{"type":"string","description":"Error message if the check failed"}},"required":["sourceChainId","sourceTxHash","status"]},"CctpTokenMessengerResponse":{"type":"object","properties":{"address":{"type":"string","description":"TokenMessengerV2 contract address on the specified chain","example":"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d"}},"required":["address"]},"CctpClaimTransaction":{"type":"object","properties":{"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"},"chainId":{"type":"number"}},"required":["to","data","value","chainId"]},"CctpClaimResponse":{"type":"object","properties":{"claimable":{"type":"boolean","description":"Whether the claim transaction is available","example":true},"destinationChainId":{"type":"number","description":"Destination chain ID where receiveMessage should be called","example":1},"tx":{"description":"Ready-to-submit transaction to call MessageTransmitterV2.receiveMessage on the destination chain","allOf":[{"$ref":"#/components/schemas/CctpClaimTransaction"}]},"reason":{"type":"string","description":"Reason if not claimable","example":"Already claimed"}},"required":["claimable"]}}},"security":[{"bearer":[]}]}