> ## Documentation Index
> Fetch the complete documentation index at: https://docs.compasslabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Construct Bundled Transaction

> Bundle arbitrary transactions together into a single multicall transaction using
EIP-7702.

This endpoint allows bundling multiple contract calls into a single atomic
transaction, reducing gas costs and ensuring all operations succeed or fail
together. The transaction must be authorized using the /authorization endpoint to
prevent replay attacks.



## OpenAPI

````yaml /v1/combined_spec.json post /v1/transaction_bundler/execute
openapi: 3.1.0
info:
  title: Compass API
  description: Compass Labs DeFi API
  version: 0.0.1
servers:
  - url: https://api.compasslabs.ai
    description: Production server
security:
  - ApiKeyAuth: []
paths:
  /v1/transaction_bundler/execute:
    post:
      tags:
        - Transaction Bundler
      summary: Construct Bundled Transaction
      description: >-
        Bundle arbitrary transactions together into a single multicall
        transaction using

        EIP-7702.


        This endpoint allows bundling multiple contract calls into a single
        atomic

        transaction, reducing gas costs and ensuring all operations succeed or
        fail

        together. The transaction must be authorized using the /authorization
        endpoint to

        prevent replay attacks.
      operationId: v1_transaction_bundler_execute
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MulticallExecuteRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BundlerTransactionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
        - lang: python
          label: Python (SDK)
          source: |-
            from compass_api_sdk import CompassAPI, models


            with CompassAPI(
                api_key_auth="<YOUR_API_KEY_HERE>",
            ) as compass_api:

                res = compass_api.transaction_bundler.transaction_bundler_execute(chain=models.MulticallExecuteRequestChain.ARBITRUM, sender="0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B", actions=[
                    models.UserOperation(
                        body=models.SetAllowanceParams(
                            token="WETH",
                            contract=models.SetAllowanceParamsContractEnum.UNISWAP_V3_ROUTER,
                            amount="1000",
                        ),
                    ),
                    models.UserOperation(
                        body=models.UniswapBuyExactlyParams(
                            token_in="WETH",
                            token_out="USDC",
                            fee=models.FeeEnum.ZERO_DOT_01,
                            amount_out="1000",
                            max_slippage_percent=0.5,
                        ),
                    ),
                    models.UserOperation(
                        body=models.SetAllowanceParams(
                            token="USDC",
                            contract=models.SetAllowanceParamsContractEnum.AAVE_V3_POOL,
                            amount="1000",
                        ),
                    ),
                    models.UserOperation(
                        body=models.SetAllowanceParams(
                            token="WETH",
                            contract=models.SetAllowanceParamsContractEnum.AAVE_V3_POOL,
                            amount="0.1",
                        ),
                    ),
                    models.UserOperation(
                        body=models.AaveSupplyParams(
                            token="USDC",
                            amount="1000",
                        ),
                    ),
                    models.UserOperation(
                        body=models.AaveBorrowParams(
                            token="WETH",
                            amount="0.1",
                            interest_rate_mode=models.InterestRateMode.VARIABLE,
                        ),
                    ),
                ], estimate_gas=True, signed_authorization={
                    "nonce": 1000,
                    "address": "0xcA11bde05977b3631167028862bE2a173976CA11",
                    "chain_id": 42161,
                    "r": "0x5f9f3f3226ac91bc01a72dd117141f6c6de1ed30d3af9f95c3423316dc21d615",
                    "s": "0x78f7982ede9dabc53d7153974c5692fda8a21fc73bdafc42aaf135505e22817c",
                    "y_parity": 0,
                })

                # Handle response
                print(res)
        - lang: typescript
          label: Typescript (SDK)
          source: |-
            import { CompassApiSDK } from "@compass-labs/api-sdk";

            const compassApiSDK = new CompassApiSDK({
              apiKeyAuth: "<YOUR_API_KEY_HERE>",
            });

            async function run() {
              const result = await compassApiSDK.transactionBundler.transactionBundlerExecute({
                chain: "arbitrum",
                sender: "0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B",
                estimateGas: true,
                signedAuthorization: {
                  nonce: 1000,
                  address: "0xcA11bde05977b3631167028862bE2a173976CA11",
                  chainId: 42161,
                  r: "0x5f9f3f3226ac91bc01a72dd117141f6c6de1ed30d3af9f95c3423316dc21d615",
                  s: "0x78f7982ede9dabc53d7153974c5692fda8a21fc73bdafc42aaf135505e22817c",
                  yParity: 0,
                },
                actions: [
                  {
                    body: {
                      actionType: "SET_ALLOWANCE",
                      token: "WETH",
                      contract: "UniswapV3Router",
                      amount: "1000",
                    },
                  },
                  {
                    body: {
                      actionType: "UNISWAP_BUY_EXACTLY",
                      tokenIn: "WETH",
                      tokenOut: "USDC",
                      fee: "0.01",
                      amountOut: "1000",
                      maxSlippagePercent: 0.5,
                    },
                  },
                  {
                    body: {
                      actionType: "SET_ALLOWANCE",
                      token: "USDC",
                      contract: "AaveV3Pool",
                      amount: "1000",
                    },
                  },
                  {
                    body: {
                      actionType: "SET_ALLOWANCE",
                      token: "WETH",
                      contract: "AaveV3Pool",
                      amount: "0.1",
                    },
                  },
                  {
                    body: {
                      actionType: "AAVE_SUPPLY",
                      token: "USDC",
                      amount: "1000",
                    },
                  },
                  {
                    body: {
                      actionType: "AAVE_BORROW",
                      token: "WETH",
                      amount: "0.1",
                      interestRateMode: "variable",
                    },
                  },
                ],
              });

              console.log(result);
            }

            run();
components:
  schemas:
    MulticallExecuteRequest:
      properties:
        chain:
          type: string
          enum:
            - arbitrum
            - base
            - ethereum
          title: Chain
          default: arbitrum
          examples:
            - arbitrum
        sender:
          type: string
          title: Sender
          description: The address of the transaction sender.
          examples:
            - '0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B'
          default: '0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B'
        estimate_gas:
          type: boolean
          title: Estimate Gas
          description: >-
            Determines whether to estimate gas costs for transactions, also
            verifying that the transaction can be successfully executed.
          default: true
          examples:
            - true
        signed_authorization:
          anyOf:
            - $ref: '#/components/schemas/SignedAuthorization'
            - type: 'null'
          description: EIP-7702 authorization
          examples:
            - address: '0xcA11bde05977b3631167028862bE2a173976CA11'
              chainId: 42161
              nonce: 1000
              r: >-
                0x5f9f3f3226ac91bc01a72dd117141f6c6de1ed30d3af9f95c3423316dc21d615
              s: >-
                0x78f7982ede9dabc53d7153974c5692fda8a21fc73bdafc42aaf135505e22817c
              yParity: 0
          default:
            address: '0xcA11bde05977b3631167028862bE2a173976CA11'
            chainId: 42161
            nonce: 1000
            r: '0x5f9f3f3226ac91bc01a72dd117141f6c6de1ed30d3af9f95c3423316dc21d615'
            s: '0x78f7982ede9dabc53d7153974c5692fda8a21fc73bdafc42aaf135505e22817c'
            yParity: 0
        actions:
          items:
            $ref: '#/components/schemas/UserOperation'
          type: array
          title: Actions
          description: List of possible actions for multicall
          examples:
            - body:
                action_type: SET_ALLOWANCE
                amount: '1000'
                contract: UniswapV3Router
                token: WETH
            - body:
                action_type: UNISWAP_BUY_EXACTLY
                amount_out: '1000'
                fee: '0.01'
                max_slippage_percent: 0.5
                token_in: WETH
                token_out: USDC
            - body:
                action_type: SET_ALLOWANCE
                amount: '1000'
                contract: AaveV3Pool
                token: USDC
            - body:
                action_type: SET_ALLOWANCE
                amount: '0.1'
                contract: AaveV3Pool
                token: WETH
            - body:
                action_type: AAVE_SUPPLY
                amount: '1000'
                token: USDC
            - body:
                action_type: AAVE_BORROW
                amount: '0.1'
                interest_rate_mode: variable
                token: WETH
          default:
            - body:
                action_type: SET_ALLOWANCE
                amount: '1000'
                contract: UniswapV3Router
                token: WETH
            - body:
                action_type: UNISWAP_BUY_EXACTLY
                amount_out: '1000'
                fee: '0.01'
                max_slippage_percent: 0.5
                token_in: WETH
                token_out: USDC
            - body:
                action_type: SET_ALLOWANCE
                amount: '1000'
                contract: AaveV3Pool
                token: USDC
            - body:
                action_type: SET_ALLOWANCE
                amount: '0.1'
                contract: AaveV3Pool
                token: WETH
            - body:
                action_type: AAVE_SUPPLY
                amount: '1000'
                token: USDC
            - body:
                action_type: AAVE_BORROW
                amount: '0.1'
                interest_rate_mode: variable
                token: WETH
      type: object
      required:
        - chain
        - sender
        - actions
      title: MulticallExecuteRequest
      description: Request model for executing a multicall.
      default:
        chain: arbitrum
        sender: '0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B'
        estimate_gas: true
        signed_authorization:
          address: '0xcA11bde05977b3631167028862bE2a173976CA11'
          chainId: 42161
          nonce: 1000
          r: '0x5f9f3f3226ac91bc01a72dd117141f6c6de1ed30d3af9f95c3423316dc21d615'
          s: '0x78f7982ede9dabc53d7153974c5692fda8a21fc73bdafc42aaf135505e22817c'
          yParity: 0
        actions:
          - body:
              action_type: SET_ALLOWANCE
              amount: '1000'
              contract: UniswapV3Router
              token: WETH
          - body:
              action_type: UNISWAP_BUY_EXACTLY
              amount_out: '1000'
              fee: '0.01'
              max_slippage_percent: 0.5
              token_in: WETH
              token_out: USDC
          - body:
              action_type: SET_ALLOWANCE
              amount: '1000'
              contract: AaveV3Pool
              token: USDC
          - body:
              action_type: SET_ALLOWANCE
              amount: '0.1'
              contract: AaveV3Pool
              token: WETH
          - body:
              action_type: AAVE_SUPPLY
              amount: '1000'
              token: USDC
          - body:
              action_type: AAVE_BORROW
              amount: '0.1'
              interest_rate_mode: variable
              token: WETH
      required_allowances: []
    BundlerTransactionResponse:
      properties:
        transaction:
          $ref: '#/components/schemas/UnsignedMulticallTransaction'
          description: >-
            The unsigned multicall transaction data. User must sign and
            broadcast to network.
      type: object
      required:
        - transaction
      title: BundlerTransactionResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SignedAuthorization:
      properties:
        nonce:
          type: integer
          title: Nonce
          description: The nonce of the authorization
          examples:
            - 1000
        address:
          type: string
          title: Address
          description: The address of the authorization
          examples:
            - '0xcA11bde05977b3631167028862bE2a173976CA11'
        chainId:
          type: integer
          title: Chainid
          description: The chain ID
          examples:
            - 42161
        r:
          anyOf:
            - type: integer
            - type: string
          title: R
          description: The r value of the signature
          examples:
            - '0x5f9f3f3226ac91bc01a72dd117141f6c6de1ed30d3af9f95c3423316dc21d615'
        s:
          anyOf:
            - type: integer
            - type: string
          title: S
          description: The s value of the signature
          examples:
            - '0x78f7982ede9dabc53d7153974c5692fda8a21fc73bdafc42aaf135505e22817c'
        yParity:
          type: integer
          title: Yparity
          description: The y-parity of the signature (0 or 1)
          examples:
            - 0
      type: object
      required:
        - nonce
        - address
        - chainId
        - r
        - s
        - yParity
      title: SignedAuthorization
    UserOperation:
      properties:
        body:
          oneOf:
            - $ref: '#/components/schemas/AaveBorrowParams'
            - $ref: '#/components/schemas/AaveRepayParams'
            - $ref: '#/components/schemas/AaveSetUserEModeParams'
            - $ref: '#/components/schemas/AaveSupplyParams'
            - $ref: '#/components/schemas/AaveWithdrawParams'
            - $ref: '#/components/schemas/AerodromeSlipstreamBuyExactlyParams'
            - $ref: >-
                #/components/schemas/AerodromeSlipstreamIncreaseLiquidityProvisionParams
            - $ref: >-
                #/components/schemas/AerodromeSlipstreamMintLiquidityProvisionParams
            - $ref: '#/components/schemas/AerodromeSlipstreamSellExactlyParams'
            - $ref: >-
                #/components/schemas/AerodromeSlipstreamWithdrawLiquidityProvisionParams
            - $ref: '#/components/schemas/EthenaDepositParams'
            - $ref: '#/components/schemas/EthenaRequestToWithdrawParams'
            - $ref: '#/components/schemas/EthenaUnstakeParams'
            - $ref: '#/components/schemas/MorphoBorrowParams'
            - $ref: '#/components/schemas/MorphoDepositParams'
            - $ref: '#/components/schemas/MorphoRepayParams'
            - $ref: '#/components/schemas/MorphoSupplyCollateralParams'
            - $ref: '#/components/schemas/MorphoWithdrawParams'
            - $ref: '#/components/schemas/MorphoWithdrawCollateralParams'
            - $ref: '#/components/schemas/OdosSwapParams'
            - $ref: '#/components/schemas/OneInchSwapParams'
            - $ref: '#/components/schemas/PendleManageLiquidityParams'
            - $ref: '#/components/schemas/PendleRedeemYieldParams'
            - $ref: '#/components/schemas/PendleTradePtParams'
            - $ref: '#/components/schemas/PendleTradeYtParams'
            - $ref: '#/components/schemas/SetAllowanceParams'
            - $ref: '#/components/schemas/SkyBuyParams'
            - $ref: '#/components/schemas/SkyDepositParams'
            - $ref: '#/components/schemas/SkySellParams'
            - $ref: '#/components/schemas/SkyWithdrawParams'
            - $ref: '#/components/schemas/TokenTransferParams'
            - $ref: '#/components/schemas/UniswapIncreaseLiquidityProvisionParams'
            - $ref: '#/components/schemas/UniswapBuyExactlyParams'
            - $ref: '#/components/schemas/UniswapMintLiquidityProvisionParams'
            - $ref: '#/components/schemas/UniswapSellExactlyParams'
            - $ref: '#/components/schemas/UniswapWithdrawLiquidityProvisionParams'
            - $ref: '#/components/schemas/UnwrapWethParams'
            - $ref: '#/components/schemas/VaultDepositParams'
            - $ref: '#/components/schemas/VaultWithdrawParams'
            - $ref: '#/components/schemas/WrapEthParams'
          discriminator:
            propertyName: action_type
            mapping:
              AAVE_BORROW:
                $ref: '#/components/schemas/AaveBorrowParams'
              AAVE_REPAY:
                $ref: '#/components/schemas/AaveRepayParams'
              AAVE_SET_USER_EMODE:
                $ref: '#/components/schemas/AaveSetUserEModeParams'
              AAVE_SUPPLY:
                $ref: '#/components/schemas/AaveSupplyParams'
              AAVE_WITHDRAW:
                $ref: '#/components/schemas/AaveWithdrawParams'
              AERODROME_SLIPSTREAM_BUY_EXACTLY:
                $ref: '#/components/schemas/AerodromeSlipstreamBuyExactlyParams'
              AERODROME_SLIPSTREAM_INCREASE_LIQUIDITY_PROVISION:
                $ref: >-
                  #/components/schemas/AerodromeSlipstreamIncreaseLiquidityProvisionParams
              AERODROME_SLIPSTREAM_MINT_LIQUIDITY_PROVISION:
                $ref: >-
                  #/components/schemas/AerodromeSlipstreamMintLiquidityProvisionParams
              AERODROME_SLIPSTREAM_SELL_EXACTLY:
                $ref: '#/components/schemas/AerodromeSlipstreamSellExactlyParams'
              AERODROME_SLIPSTREAM_WITHDRAW_LIQUIDITY_PROVISION:
                $ref: >-
                  #/components/schemas/AerodromeSlipstreamWithdrawLiquidityProvisionParams
              ETHENA_DEPOSIT:
                $ref: '#/components/schemas/EthenaDepositParams'
              ETHENA_REQUEST_WITHDRAW:
                $ref: '#/components/schemas/EthenaRequestToWithdrawParams'
              ETHENA_UNSTAKE:
                $ref: '#/components/schemas/EthenaUnstakeParams'
              MORPHO_BORROW:
                $ref: '#/components/schemas/MorphoBorrowParams'
              MORPHO_DEPOSIT:
                $ref: '#/components/schemas/MorphoDepositParams'
              MORPHO_REPAY:
                $ref: '#/components/schemas/MorphoRepayParams'
              MORPHO_SUPPLY_COLLATERAL:
                $ref: '#/components/schemas/MorphoSupplyCollateralParams'
              MORPHO_WITHDRAW:
                $ref: '#/components/schemas/MorphoWithdrawParams'
              MORPHO_WITHDRAW_COLLATERAL:
                $ref: '#/components/schemas/MorphoWithdrawCollateralParams'
              ODOS_SWAP:
                $ref: '#/components/schemas/OdosSwapParams'
              ONE_INCH_SWAP:
                $ref: '#/components/schemas/OneInchSwapParams'
              PENDLE_MANAGE_LIQUIDITY:
                $ref: '#/components/schemas/PendleManageLiquidityParams'
              PENDLE_REDEEM_YIELD:
                $ref: '#/components/schemas/PendleRedeemYieldParams'
              PENDLE_TRADE_PT:
                $ref: '#/components/schemas/PendleTradePtParams'
              PENDLE_TRADE_YT:
                $ref: '#/components/schemas/PendleTradeYtParams'
              SET_ALLOWANCE:
                $ref: '#/components/schemas/SetAllowanceParams'
              SKY_BUY:
                $ref: '#/components/schemas/SkyBuyParams'
              SKY_DEPOSIT:
                $ref: '#/components/schemas/SkyDepositParams'
              SKY_SELL:
                $ref: '#/components/schemas/SkySellParams'
              SKY_WITHDRAW:
                $ref: '#/components/schemas/SkyWithdrawParams'
              TOKEN_TRANSFER:
                $ref: '#/components/schemas/TokenTransferParams'
              UNISWAP_ADD_LIQUIDITY:
                $ref: '#/components/schemas/UniswapIncreaseLiquidityProvisionParams'
              UNISWAP_BUY_EXACTLY:
                $ref: '#/components/schemas/UniswapBuyExactlyParams'
              UNISWAP_MINT_LIQUIDITY_PROVISION:
                $ref: '#/components/schemas/UniswapMintLiquidityProvisionParams'
              UNISWAP_SELL_EXACTLY:
                $ref: '#/components/schemas/UniswapSellExactlyParams'
              UNISWAP_WITHDRAW_LIQUIDITY_PROVISION:
                $ref: '#/components/schemas/UniswapWithdrawLiquidityProvisionParams'
              UNWRAP_WETH:
                $ref: '#/components/schemas/UnwrapWethParams'
              VAULT_DEPOSIT:
                $ref: '#/components/schemas/VaultDepositParams'
              VAULT_WITHDRAW:
                $ref: '#/components/schemas/VaultWithdrawParams'
              WRAP_ETH:
                $ref: '#/components/schemas/WrapEthParams'
      type: object
      required:
        - action_type
        - body
      title: UserOperation
    UnsignedMulticallTransaction:
      properties:
        chainId:
          type: string
          title: Chainid
          description: The chain id of the transaction
        data:
          type: string
          title: Data
          description: The data of the transaction
        from:
          type: string
          title: From
          description: The sender of the transaction
        gas:
          anyOf:
            - type: string
            - type: 'null'
          title: Gas
          description: The gas of the transaction
        to:
          type: string
          title: To
          description: The recipient of the transaction
        value:
          type: string
          title: Value
          description: The value of the transaction
        nonce:
          type: string
          title: Nonce
          description: The nonce of the address
        maxFeePerGas:
          type: string
          title: Maxfeepergas
          description: The max fee per gas of the transaction
        maxPriorityFeePerGas:
          type: string
          title: Maxpriorityfeepergas
          description: The max priority fee per gas of the transaction
        authorizationList:
          items:
            $ref: '#/components/schemas/SignedAuthorization'
          type: array
          title: Authorizationlist
          description: EIP-7702 authorization
          default: []
      type: object
      required:
        - chainId
        - data
        - from
        - gas
        - to
        - value
        - nonce
        - maxFeePerGas
        - maxPriorityFeePerGas
      title: UnsignedMulticallTransaction
      example:
        chainId: '0x2105'
        data: >-
          0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d
        from: '0x4A83b4413CF41C3244027e1590E35a0F48403F0c'
        gas: '0x7a120'
        maxFeePerGas: '0x59682f00'
        maxPriorityFeePerGas: '0x3b9aca00'
        nonce: '0x5'
        to: '0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67'
        value: '0x0'
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    AaveBorrowParams:
      properties:
        action_type:
          type: string
          const: AAVE_BORROW
          title: Action Type
          default: AAVE_BORROW
        token:
          type: string
          title: Token
          description: The symbol or address of the underlying asset to borrow..
          examples:
            - WETH
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of the asset to borrow
          examples:
            - 150.5
        interest_rate_mode:
          $ref: '#/components/schemas/InterestRateMode'
          description: The interest rate mode to borrow
          examples:
            - variable
        on_behalf_of:
          anyOf:
            - type: string
            - type: 'null'
          title: On Behalf Of
          description: The address on behalf of whom the supply is made
      type: object
      required:
        - token
        - amount
        - interest_rate_mode
      title: AaveBorrowParams
    AaveRepayParams:
      properties:
        action_type:
          type: string
          const: AAVE_REPAY
          title: Action Type
          default: AAVE_REPAY
        token:
          type: string
          title: Token
          description: The symbol of the underlying asset to repay..
          examples:
            - WETH
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of the asset to repay
          examples:
            - 150.5
        interest_rate_mode:
          $ref: '#/components/schemas/InterestRateMode'
          description: The interest rate mode to repay
          examples:
            - stable
        on_behalf_of:
          anyOf:
            - type: string
            - type: 'null'
          title: On Behalf Of
          description: The address on behalf of whom the supply is made
      type: object
      required:
        - token
        - amount
        - interest_rate_mode
      title: AaveRepayParams
    AaveSetUserEModeParams:
      properties:
        action_type:
          type: string
          const: AAVE_SET_USER_EMODE
          title: Action Type
          default: AAVE_SET_USER_EMODE
        category_id:
          type: integer
          maximum: 255
          minimum: 0
          title: Category Id
          description: >-
            The eMode category ID to set for the user. 0 = no eMode, 1+ =
            specific eMode category.
          examples:
            - 0
            - 1
            - 2
      type: object
      required:
        - category_id
      title: AaveSetUserEModeParams
    AaveSupplyParams:
      properties:
        action_type:
          type: string
          const: AAVE_SUPPLY
          title: Action Type
          default: AAVE_SUPPLY
        token:
          type: string
          title: Token
          description: >-
            The symbol or address of the underlying asset to supply as
            collateral. You can borrow against it..
          examples:
            - WETH
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of the asset to supply
          examples:
            - 1.5
        on_behalf_of:
          anyOf:
            - type: string
            - type: 'null'
          title: On Behalf Of
          description: >-
            The address on behalf of whom the supply is made. Defaults to the
            transaction sender.
      type: object
      required:
        - token
        - amount
      title: AaveSupplyParams
    AaveWithdrawParams:
      properties:
        action_type:
          type: string
          const: AAVE_WITHDRAW
          title: Action Type
          default: AAVE_WITHDRAW
        token:
          type: string
          title: Token
          description: The symbol of the underlying asset to withdraw..
          examples:
            - WETH
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of the asset to withdraw
          examples:
            - 1.5
        recipient:
          type: string
          title: Recipient
          description: The address of the recipient of the withdrawn funds.
          examples:
            - '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2'
      type: object
      required:
        - token
        - amount
        - recipient
      title: AaveWithdrawParams
    AerodromeSlipstreamBuyExactlyParams:
      properties:
        action_type:
          type: string
          const: AERODROME_SLIPSTREAM_BUY_EXACTLY
          title: Action Type
          default: AERODROME_SLIPSTREAM_BUY_EXACTLY
        token_in:
          type: string
          title: Token
          description: The symbol of the token to swap from.
          examples:
            - WETH
        token_out:
          type: string
          title: Token
          description: The symbol of the token to swap to.
          examples:
            - WETH
        tick_spacing:
          type: integer
          minimum: 1
          title: Tick Spacing
          description: The tick spacing of the pool
          examples:
            - 100
            - 300
            - 400
            - 500
            - 1000
            - 1500
            - 2500
            - 2700
            - 3000
            - 5000
            - 6000
            - 7000
            - 8000
            - 9000
            - 10000
            - 20000
        amount_out:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount Out
          description: The amount of the token to swap to
          examples:
            - 1.5
        amount_in_maximum:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount In Maximum
          description: The maximum amount of the token to swap from
          examples:
            - 1.6
      type: object
      required:
        - token_in
        - token_out
        - tick_spacing
        - amount_out
        - amount_in_maximum
      title: AerodromeSlipstreamBuyExactlyParams
      description: Parameters model for buying exactly an amount of tokens.
    AerodromeSlipstreamIncreaseLiquidityProvisionParams:
      properties:
        action_type:
          type: string
          const: AERODROME_SLIPSTREAM_INCREASE_LIQUIDITY_PROVISION
          title: Action Type
          default: AERODROME_SLIPSTREAM_INCREASE_LIQUIDITY_PROVISION
        token_id:
          type: integer
          title: Token Id
          description: Token ID of the NFT representing the liquidity provisioned position.
        amount0_desired:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount0 Desired
          description: The desired amount of the first token to deposit
          examples:
            - '1.5'
        amount1_desired:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount1 Desired
          description: The desired amount of the second token to deposit
          examples:
            - '1.7'
        amount0_min:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount0 Min
          description: The minimum amount of the first token to deposit
          examples:
            - '1.4'
        amount1_min:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount1 Min
          description: The minimum amount of the second token to deposit
          examples:
            - '1.6'
      type: object
      required:
        - token_id
        - amount0_desired
        - amount1_desired
        - amount0_min
        - amount1_min
      title: AerodromeSlipstreamIncreaseLiquidityProvisionParams
      description: >-
        Endpoint parameters for increasing liquidity provision on aerodrome
        slipstream.


        This action is performed on the NonfungiblePosition Manager to increase
        the

        liquidity of an existing position.
    AerodromeSlipstreamMintLiquidityProvisionParams:
      properties:
        action_type:
          type: string
          const: AERODROME_SLIPSTREAM_MINT_LIQUIDITY_PROVISION
          title: Action Type
          default: AERODROME_SLIPSTREAM_MINT_LIQUIDITY_PROVISION
        token0:
          type: string
          title: Token
          description: The symbol or address of the first token in the pair.
          examples:
            - WETH
        token1:
          type: string
          title: Token
          description: The symbol or address of the second token in the pair.
          examples:
            - USDC
        tick_spacing:
          type: integer
          minimum: 1
          title: Tick Spacing
          description: The tick spacing of the pool
          examples:
            - 100
            - 300
            - 400
            - 500
            - 1000
            - 1500
            - 2500
            - 2700
            - 3000
            - 5000
            - 6000
            - 7000
            - 8000
            - 9000
            - 10000
            - 20000
        tick_lower:
          type: integer
          title: Tick Lower
          description: The lower tick of the range to mint the position in
          examples:
            - -1000
        tick_upper:
          type: integer
          title: Tick Upper
          description: The upper tick of the range to mint the position in
          examples:
            - 1000
        amount0_desired:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount0 Desired
          description: The desired amount of the first token to deposit
          examples:
            - '1.5'
        amount1_desired:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount1 Desired
          description: The desired amount of the second token to deposit
          examples:
            - '1.7'
        amount0_min:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount0 Min
          description: The minimum amount of the first token to deposit
          examples:
            - '1.4'
        amount1_min:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount1 Min
          description: The minimum amount of the second token to deposit
          examples:
            - '1.6'
        recipient:
          anyOf:
            - type: string
            - type: 'null'
          title: Recipient
          description: The address that will receive the LP tokens
          examples:
            - '0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B'
      type: object
      required:
        - token0
        - token1
        - tick_spacing
        - tick_lower
        - tick_upper
        - amount0_desired
        - amount1_desired
        - amount0_min
        - amount1_min
      title: AerodromeSlipstreamMintLiquidityProvisionParams
      description: Parameters model for minting a new liquidity position.
    AerodromeSlipstreamSellExactlyParams:
      properties:
        action_type:
          type: string
          const: AERODROME_SLIPSTREAM_SELL_EXACTLY
          title: Action Type
          default: AERODROME_SLIPSTREAM_SELL_EXACTLY
        token_in:
          type: string
          title: Token
          description: The symbol or address of the token to swap from.
          examples:
            - WETH
        token_out:
          type: string
          title: Token
          description: The symbol or address of the token to swap to.
          examples:
            - WETH
        tick_spacing:
          type: integer
          minimum: 1
          title: Tick Spacing
          description: The tick spacing of the pool
          examples:
            - 100
            - 300
            - 400
            - 500
            - 1000
            - 1500
            - 2500
            - 2700
            - 3000
            - 5000
            - 6000
            - 7000
            - 8000
            - 9000
            - 10000
            - 20000
        amount_in:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount In
          description: The amount of the token to swap from
          examples:
            - 1.5
        amount_out_minimum:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount Out Minimum
          description: The minimum amount of the token to swap to, defaults to 0
          default: '0'
          examples:
            - 1.4
      type: object
      required:
        - token_in
        - token_out
        - tick_spacing
        - amount_in
      title: AerodromeSlipstreamSellExactlyParams
      description: Parameters model for selling exactly an amount of tokens.
    AerodromeSlipstreamWithdrawLiquidityProvisionParams:
      properties:
        action_type:
          type: string
          const: AERODROME_SLIPSTREAM_WITHDRAW_LIQUIDITY_PROVISION
          title: Action Type
          default: AERODROME_SLIPSTREAM_WITHDRAW_LIQUIDITY_PROVISION
        token_id:
          type: integer
          title: Token Id
          description: Token ID of the NFT representing the liquidity provisioned position.
        percentage_for_withdrawal:
          anyOf:
            - type: number
              maximum: 100
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Percentage For Withdrawal
          description: How much liquidity to take out in percentage.
          examples:
            - '25'
            - '50'
            - '75'
            - '100'
      type: object
      required:
        - token_id
        - percentage_for_withdrawal
      title: AerodromeSlipstreamWithdrawLiquidityProvisionParams
      description: >-
        Endpoint parameters for liquidity provision withdrawal on aerodrome
        slipstream.


        This action is performed in a multicall on the NonfungiblePosition
        Manager:
        https://github.com/AerodromeSlipstream/v3-periphery/blob/0682387198a24c7cd63566a2c58398533860a5d1/contracts/base/Multicall.sol#L11-L27

        First, we call decrease liquidity then collect the tokens owed to the
        user.
    EthenaDepositParams:
      properties:
        action_type:
          type: string
          const: ETHENA_DEPOSIT
          title: Action Type
          default: ETHENA_DEPOSIT
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of USDe to deposit into Ethena's vault.
          examples:
            - 1.5
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address which will receive the shares (sUSDe) from Ethena's
            vault representing their proportional ownership of the vault's
            assets. Defaults to the sender.
      type: object
      required:
        - amount
      title: EthenaDepositParams
    EthenaRequestToWithdrawParams:
      properties:
        action_type:
          type: string
          const: ETHENA_REQUEST_WITHDRAW
          title: Action Type
          default: ETHENA_REQUEST_WITHDRAW
        amount:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: string
              const: ALL
          title: Amount
          description: >-
            The amount of USDe to request to withdraw from Ethena's vault. If
            set to 'ALL', your total deposited USDe amount will be requested to
            be withdrawn.
          examples:
            - 1.5
            - ALL
      type: object
      required:
        - amount
      title: EthenaRequestToWithdrawParams
    EthenaUnstakeParams:
      properties:
        action_type:
          type: string
          const: ETHENA_UNSTAKE
          title: Action Type
          default: ETHENA_UNSTAKE
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address which will receive the unstaked USDe. Defaults to the
            sender.
      type: object
      title: EthenaUnstakeParams
    MorphoBorrowParams:
      properties:
        action_type:
          type: string
          const: MORPHO_BORROW
          title: Action Type
          default: MORPHO_BORROW
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: Amount of the token to borrow from the market.
          examples:
            - 1.5
        unique_market_key:
          type: string
          pattern: ^0x.*
          title: Unique Market Key
          description: >-
            The key that uniquely identifies the market. This can be found using
            the 'Get Markets' endpoint.
          examples:
            - '0xe7399fdebc318d76dfec7356caafcf8cd4b91287e139a3ec423f09aeeb656fc4'
        on_behalf_of:
          anyOf:
            - type: string
            - type: 'null'
          title: On Behalf Of
          description: >-
            The address where the collateral is borrowed against. Defaults to
            sender.
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address of the receiver of the tokens borrowed. Defaults to the
            transaction sender.
      type: object
      required:
        - amount
        - unique_market_key
      title: MorphoBorrowParams
    MorphoDepositParams:
      properties:
        action_type:
          type: string
          const: MORPHO_DEPOSIT
          title: Action Type
          default: MORPHO_DEPOSIT
        vault_address:
          type: string
          title: Vault Address
          description: The vault address you are depositing to.
          examples:
            - '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa'
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of tokens to deposit into the vault.
          examples:
            - 1.5
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address which will receive the shares from the vault
            representing their proportional ownership of the vault's assets.
            Defaults to the sender.
      type: object
      required:
        - vault_address
        - amount
      title: MorphoDepositParams
    MorphoRepayParams:
      properties:
        action_type:
          type: string
          const: MORPHO_REPAY
          title: Action Type
          default: MORPHO_REPAY
        amount:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: string
              const: ALL
          title: Amount
          description: >-
            Amount of the token to repay to the market. If set to 'ALL', all
            debt plus interest will be paid back if the user has a sufficient
            token balance in their wallet.
          examples:
            - 1.5
            - ALL
        unique_market_key:
          type: string
          pattern: ^0x.*
          title: Unique Market Key
          description: >-
            The key that uniquely identifies the market. This can be found using
            the 'Get Markets' endpoint.
          examples:
            - '0xe7399fdebc318d76dfec7356caafcf8cd4b91287e139a3ec423f09aeeb656fc4'
        on_behalf_of:
          anyOf:
            - type: string
            - type: 'null'
          title: On Behalf Of
          description: >-
            The address on behalf of whom the repayment is made. Defaults to
            sender.
        callback_data:
          anyOf:
            - type: string
              format: binary
            - type: 'null'
          title: Callback Data
          description: >-
            An optional field for callback byte data that will be triggered upon
            successful repaying of debt.
      type: object
      required:
        - amount
        - unique_market_key
      title: MorphoRepayParams
    MorphoSupplyCollateralParams:
      properties:
        action_type:
          type: string
          const: MORPHO_SUPPLY_COLLATERAL
          title: Action Type
          default: MORPHO_SUPPLY_COLLATERAL
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: Amount of the token to supply to the market as collateral.
          examples:
            - 1.5
        unique_market_key:
          type: string
          pattern: ^0x.*
          title: Unique Market Key
          description: >-
            The key that uniquely identifies the market. This can be found using
            the 'Get Markets' endpoint.
          examples:
            - '0xe7399fdebc318d76dfec7356caafcf8cd4b91287e139a3ec423f09aeeb656fc4'
        on_behalf_of:
          anyOf:
            - type: string
            - type: 'null'
          title: On Behalf Of
          description: >-
            The address on behalf of whom the supplied collateral is made.
            Defaults to sender.
        callback_data:
          anyOf:
            - type: string
              format: binary
            - type: 'null'
          title: Callback Data
          description: >-
            An optional field for callback byte data that will be triggered upon
            successful supplying of collateral.
      type: object
      required:
        - amount
        - unique_market_key
      title: MorphoSupplyCollateralParams
    MorphoWithdrawParams:
      properties:
        action_type:
          type: string
          const: MORPHO_WITHDRAW
          title: Action Type
          default: MORPHO_WITHDRAW
        vault_address:
          type: string
          title: Vault Address
          description: The vault address you are withdrawing from.
          examples:
            - '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa'
        amount:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: string
              const: ALL
          title: Amount
          description: >-
            The amount of tokens to withdraw from the vault. If set to 'ALL',
            your total deposited token amount will be withdrawn.
          examples:
            - 1.5
            - ALL
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address which will receive the tokens withdrawn. Defaults to the
            sender.
      type: object
      required:
        - vault_address
        - amount
      title: MorphoWithdrawParams
    MorphoWithdrawCollateralParams:
      properties:
        action_type:
          type: string
          const: MORPHO_WITHDRAW_COLLATERAL
          title: Action Type
          default: MORPHO_WITHDRAW_COLLATERAL
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: Amount of the token to supply to the market as collateral.
          examples:
            - 1.5
        unique_market_key:
          type: string
          pattern: ^0x.*
          title: Unique Market Key
          description: >-
            The key that uniquely identifies the market. This can be found using
            the 'Get Markets' endpoint.
          examples:
            - '0xe7399fdebc318d76dfec7356caafcf8cd4b91287e139a3ec423f09aeeb656fc4'
        on_behalf_of:
          anyOf:
            - type: string
            - type: 'null'
          title: On Behalf Of
          description: >-
            The address on behalf of whom the withdraw is made. Defaults to
            sender.
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address where the withdrawn collateral will be received.
            Defaults to sender.
      type: object
      required:
        - amount
        - unique_market_key
      title: MorphoWithdrawCollateralParams
    OdosSwapParams:
      properties:
        action_type:
          type: string
          const: ODOS_SWAP
          title: Action Type
          default: ODOS_SWAP
        token_in:
          type: string
          title: Token
          description: The symbol or address of the token that is to be sold.
          examples:
            - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
        token_out:
          type: string
          title: Token
          description: The symbol or address of the token that is to be bought.
          examples:
            - '0xdac17f958d2ee523a2206206994597c13d831ec7'
        amount_in:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount In
          description: The amount of token_in to be sold.
          examples:
            - 1.5
        max_slippage_percent:
          type: number
          maximum: 10
          minimum: 0
          title: Max Slippage Percent
          description: >-
            The maximum slippage allowed in percent. e.g. `1` means `1%`
            slippage allowed.
          examples:
            - 0.5
      type: object
      required:
        - token_in
        - token_out
        - amount_in
        - max_slippage_percent
      title: OdosSwapParams
    OneInchSwapParams:
      properties:
        action_type:
          type: string
          const: ONE_INCH_SWAP
          title: Action Type
          default: ONE_INCH_SWAP
        token_in:
          type: string
          title: Token
          description: The symbol or address of the token that is to be sold.
          examples:
            - '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
        token_out:
          type: string
          title: Token
          description: The symbol or address of the token that is to be bought.
          examples:
            - '0xdac17f958d2ee523a2206206994597c13d831ec7'
        amount_in:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount In
          description: The amount of token_in to be sold.
          examples:
            - 1.5
        max_slippage_percent:
          type: number
          maximum: 10
          minimum: 0
          title: Max Slippage Percent
          description: >-
            The maximum slippage allowed in percent. e.g. `1` means `1%`
            slippage allowed.
          examples:
            - 0.5
      type: object
      required:
        - token_in
        - token_out
        - amount_in
        - max_slippage_percent
      title: OneInchSwapParams
      description: Parameters for 1inch swap operations.
    PendleManageLiquidityParams:
      properties:
        action_type:
          type: string
          const: PENDLE_MANAGE_LIQUIDITY
          title: Action Type
          default: PENDLE_MANAGE_LIQUIDITY
        market_address:
          type: string
          title: Market Address
          description: >-
            The address identifying which Pendle Market you would like to add
            liquidity to.
          examples:
            - '0x08a152834de126d2ef83d612ff36e4523fd0017f'
        action:
          type: string
          enum:
            - SUPPLY
            - WITHDRAW
          title: Action
          description: >-
            Specifies the direction of the liquidity operation for the Pendle
            market. Valid values are `SUPPLY` (to add liquidity) or `WITHDRAW`
            (to remove liquidity).
          examples:
            - SUPPLY
            - WITHDRAW
        token:
          type: string
          title: Token
          description: >-
            The symbol or address of the token to manage liquidity with. For
            `action` set to `SUPPLY`, this is the token to add as liquidity. For
            `action` set to `WITHDRAW`, this is the token to remove from
            liquidity.
          examples:
            - USDC
            - '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
        amount_in:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount In
          description: >-
            For `action` set to `SUPPLY`, this is the amount in of `token` to
            add as liquidity in exchange for Liquidity Provider (LP) tokens. For
            `action` set to `WITHDRAW`, this is the amount in of LP tokens to
            redeem for `token`.
          examples:
            - 1.5
        max_slippage_percent:
          type: number
          maximum: 10
          minimum: 0
          title: Max Slippage Percent
          description: >-
            The maximum slippage allowed in percent. e.g. `1` means `1%`
            slippage allowed.
          examples:
            - 0.5
      type: object
      required:
        - market_address
        - action
        - token
        - amount_in
        - max_slippage_percent
      title: PendleManageLiquidityParams
    PendleRedeemYieldParams:
      properties:
        action_type:
          type: string
          const: PENDLE_REDEEM_YIELD
          title: Action Type
          default: PENDLE_REDEEM_YIELD
        market_address:
          type: string
          title: Market Address
          description: >-
            The address of the market identifying which Yield Token (YT) you
            would like to claim yield from.
          examples:
            - '0x08a152834de126d2ef83d612ff36e4523fd0017f'
      type: object
      required:
        - market_address
      title: PendleRedeemYieldParams
    PendleTradePtParams:
      properties:
        action_type:
          type: string
          const: PENDLE_TRADE_PT
          title: Action Type
          default: PENDLE_TRADE_PT
        market_address:
          type: string
          title: Market Address
          description: >-
            The address of the market identifying which Principal Token (PT) you
            would like to trade.
          examples:
            - '0x08a152834de126d2ef83d612ff36e4523fd0017f'
        action:
          type: string
          enum:
            - BUY
            - SELL
          title: Action
          description: >-
            Specifies the direction of the PT trade. Valid values are `BUY` (to
            buy PT) or `SELL` (to sell PT).
          examples:
            - BUY
            - SELL
        token:
          type: string
          title: Token
          description: >-
            TThe symbol or address of the token to trade PT with. For `action`
            set to `BUY`, this is the token to buy PT with. For `action` set to
            `SELL`, this is the token to sell PT for.
          examples:
            - USDC
            - '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
        amount_in:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount In
          description: >-
            For `action` set to `BUY`, this is the amount in of `token` to buy
            PT with. For `action` set to `SELL`, this is the amount in of PT to
            sell for `token`.
          examples:
            - 1.5
        max_slippage_percent:
          type: number
          maximum: 10
          minimum: 0
          title: Max Slippage Percent
          description: >-
            The maximum slippage allowed in percent. e.g. `1` means `1%`
            slippage allowed.
          examples:
            - 0.5
      type: object
      required:
        - market_address
        - action
        - token
        - amount_in
        - max_slippage_percent
      title: PendleTradePtParams
    PendleTradeYtParams:
      properties:
        action_type:
          type: string
          const: PENDLE_TRADE_YT
          title: Action Type
          default: PENDLE_TRADE_YT
        market_address:
          type: string
          title: Market Address
          description: >-
            The address of the market identifying which Yield Token (YT) you
            would like to trade.
          examples:
            - '0x08a152834de126d2ef83d612ff36e4523fd0017f'
        action:
          type: string
          enum:
            - BUY
            - SELL
          title: Action
          description: >-
            Specifies the direction of the YT trade. Valid values are `BUY` (to
            buy YT) or `SELL` (to sell YT).
          examples:
            - BUY
            - SELL
        token:
          type: string
          title: Token
          description: >-
            TThe symbol or address of the token to trade YT with. For `action`
            set to `BUY`, this is the token to buy YT with. For `action` set to
            `SELL`, this is the token to sell YT for.
          examples:
            - USDC
            - '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
        amount_in:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount In
          description: >-
            For `action` set to `BUY`, this is the amount in of `token` to buy
            YT with. For `action` set to `SELL`, this is the amount in of YT to
            sell for `token`.
          examples:
            - 1.5
        max_slippage_percent:
          type: number
          maximum: 10
          minimum: 0
          title: Max Slippage Percent
          description: >-
            The maximum slippage allowed in percent. e.g. `1` means `1%`
            slippage allowed.
          examples:
            - 0.5
      type: object
      required:
        - market_address
        - action
        - token
        - amount_in
        - max_slippage_percent
      title: PendleTradeYtParams
    SetAllowanceParams:
      properties:
        action_type:
          type: string
          const: SET_ALLOWANCE
          title: Action Type
          default: SET_ALLOWANCE
        token:
          type: string
          title: Token
          description: The symbol or address of the token for which the allowance is set..
          examples:
            - USDC
            - '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
        contract:
          anyOf:
            - type: string
              enum:
                - AaveV3Pool
                - AerodromeBasicRouter
                - AerodromeSlipstreamRouter
                - AerodromeSlipstreamNonfungiblePositionManager
                - UniswapV3Router
                - UniswapV3NFTPositionManager
                - MorphoMarket
                - SkyDaiUsdsConverter
                - SkyUsdcUsdsConverter
                - SkyUsdsVault
                - PendleRouter
                - OdosRouter
                - EthenaVault
            - type: string
          title: Contract
          description: The name or address of the contract to set spending allowance for.
          examples:
            - AaveV3Pool
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount to set the allowance to.
          examples:
            - 1.5
      type: object
      required:
        - token
        - contract
        - amount
      title: SetAllowanceParams
      description: Parameters model for setting the token allowance for a given contract.
    SkyBuyParams:
      properties:
        action_type:
          type: string
          const: SKY_BUY
          title: Action Type
          default: SKY_BUY
        token_in:
          type: string
          enum:
            - DAI
            - USDC
          title: Token In
          description: >-
            The token you would like to swap 1:1 for USDS. Choose from DAI or
            USDC.
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of USDS you would like to buy 1:1 with 'token_in'.
          examples:
            - 1.5
      type: object
      required:
        - token_in
        - amount
      title: SkyBuyParams
    SkyDepositParams:
      properties:
        action_type:
          type: string
          const: SKY_DEPOSIT
          title: Action Type
          default: SKY_DEPOSIT
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: >-
            The amount of USDS you would like to deposit for sUSDS to earn
            yield.
          examples:
            - 1.5
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: The address which will receive the sUSDS. Defaults to the sender.
      type: object
      required:
        - amount
      title: SkyDepositParams
    SkySellParams:
      properties:
        action_type:
          type: string
          const: SKY_SELL
          title: Action Type
          default: SKY_SELL
        token_out:
          type: string
          enum:
            - DAI
            - USDC
          title: Token Out
          description: >-
            The token you would like to swap 1:1 with USDS. Choose from DAI or
            USDC.
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of USDS you would like to sell 1:1 for 'token_out'.
          examples:
            - 1.5
      type: object
      required:
        - token_out
        - amount
      title: SkySellParams
    SkyWithdrawParams:
      properties:
        action_type:
          type: string
          const: SKY_WITHDRAW
          title: Action Type
          default: SKY_WITHDRAW
        amount:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: string
              const: ALL
          title: Amount
          description: >-
            The amount of USDS you would like to withdraw. If set to 'ALL', your
            total deposited USDS amount will be withdrawn.
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address which will receive the withdrawn USDS. Defaults to the
            sender.
      type: object
      required:
        - amount
      title: SkyWithdrawParams
    TokenTransferParams:
      properties:
        action_type:
          type: string
          const: TOKEN_TRANSFER
          title: Action Type
          default: TOKEN_TRANSFER
        to:
          type: string
          title: To
          description: The recipient of the tokens.
          examples:
            - '0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc44'
        token:
          type: string
          title: Token
          description: The symbol or address of the token to transfer.
          examples:
            - USDC
            - WETH
            - '0xA0b86a33E6441ccF30EE5DdEF1E9b652C91ac1c8'
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: Amount of token to transfer
          examples:
            - 1.5
      type: object
      required:
        - to
        - token
        - amount
      title: TokenTransferParams
      description: Parameters model for transferring ETH or ERC20 tokens.
    UniswapIncreaseLiquidityProvisionParams:
      properties:
        action_type:
          type: string
          const: UNISWAP_ADD_LIQUIDITY
          title: Action Type
          default: UNISWAP_ADD_LIQUIDITY
        token_id:
          type: integer
          title: Token Id
          description: Token ID of the NFT representing the liquidity provisioned position.
        amount0_desired:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount0 Desired
          description: The desired amount of the first token to deposit
          examples:
            - '1.5'
        amount1_desired:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount1 Desired
          description: The desired amount of the second token to deposit
          examples:
            - '1.7'
        amount0_min:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount0 Min
          description: The minimum amount of the first token to deposit
          examples:
            - '1.4'
        amount1_min:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount1 Min
          description: The minimum amount of the second token to deposit
          examples:
            - '1.6'
      type: object
      required:
        - token_id
        - amount0_desired
        - amount1_desired
        - amount0_min
        - amount1_min
      title: UniswapIncreaseLiquidityProvisionParams
    UniswapBuyExactlyParams:
      properties:
        action_type:
          type: string
          const: UNISWAP_BUY_EXACTLY
          title: Action Type
          default: UNISWAP_BUY_EXACTLY
        token_in:
          type: string
          title: Token
          description: The symbol or address of the token to swap from..
          examples:
            - WETH
        token_out:
          type: string
          title: Token
          description: The symbol or address of the token to swap to..
          examples:
            - WETH
        fee:
          $ref: '#/components/schemas/FeeEnum'
          description: The swap fee of the pool
          examples:
            - '0.3'
        amount_out:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount Out
          description: The amount of 'token_out' to buy.
          examples:
            - 1.5
        max_slippage_percent:
          type: number
          maximum: 10
          minimum: 0
          title: Max Slippage Percent
          description: >-
            The maximum slippage allowed in percent. e.g. `1` means `1 %`
            slippage allowed.
          examples:
            - 0.5
      type: object
      required:
        - token_in
        - token_out
        - fee
        - amount_out
        - max_slippage_percent
      title: UniswapBuyExactlyParams
    UniswapMintLiquidityProvisionParams:
      properties:
        action_type:
          type: string
          const: UNISWAP_MINT_LIQUIDITY_PROVISION
          title: Action Type
          default: UNISWAP_MINT_LIQUIDITY_PROVISION
        token0:
          type: string
          title: Token
          description: The symbol or address of the first token in the pair.
          examples:
            - WETH
        token1:
          type: string
          title: Token
          description: The symbol or address of the second token in the pair.
          examples:
            - WETH
        fee:
          $ref: '#/components/schemas/FeeEnum'
          description: The swap fee of the pool
          examples:
            - '0.3'
        tick_lower:
          type: integer
          maximum: 887272
          minimum: -887272
          title: Tick Lower
          description: The lower tick of the range to mint the position in
          examples:
            - -1000
        tick_upper:
          type: integer
          maximum: 887272
          minimum: -887272
          title: Tick Upper
          description: The upper tick of the range to mint the position in
          examples:
            - 1000
        amount0_desired:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount0 Desired
          description: The desired amount of the first token to deposit
          examples:
            - '1.5'
        amount1_desired:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount1 Desired
          description: The desired amount of the second token to deposit
          examples:
            - '1.7'
        amount0_min:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount0 Min
          description: The minimum amount of the first token to deposit
          examples:
            - '1.4'
        amount1_min:
          anyOf:
            - type: number
              minimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount1 Min
          description: The minimum amount of the second token to deposit
          examples:
            - '1.6'
        recipient:
          anyOf:
            - type: string
            - type: 'null'
          title: Recipient
          description: The address that will receive the LP tokens
          examples:
            - '0x29F20a192328eF1aD35e1564aBFf4Be9C5ce5f7B'
      type: object
      required:
        - token0
        - token1
        - fee
        - tick_lower
        - tick_upper
        - amount0_desired
        - amount1_desired
        - amount0_min
        - amount1_min
      title: UniswapMintLiquidityProvisionParams
    UniswapSellExactlyParams:
      properties:
        action_type:
          type: string
          const: UNISWAP_SELL_EXACTLY
          title: Action Type
          default: UNISWAP_SELL_EXACTLY
        token_in:
          type: string
          title: Token
          description: The symbol or address of the token to sell..
          examples:
            - WETH
        token_out:
          type: string
          title: Token
          description: The symbol or address of the token to buy..
          examples:
            - WETH
        fee:
          $ref: '#/components/schemas/FeeEnum'
          description: The swap fee of the pool
          examples:
            - '0.3'
        amount_in:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount In
          description: The amount of the `token_in` to sell
          examples:
            - 1.5
        max_slippage_percent:
          type: number
          maximum: 10
          minimum: 0
          title: Max Slippage Percent
          description: >-
            The maximum slippage allowed in percent. e.g. `1` means `1 %`
            slippage allowed.
          examples:
            - 0.5
      type: object
      required:
        - token_in
        - token_out
        - fee
        - amount_in
        - max_slippage_percent
      title: UniswapSellExactlyParams
      description: Parameters model for selling exactly an amount of tokens.
    UniswapWithdrawLiquidityProvisionParams:
      properties:
        action_type:
          type: string
          const: UNISWAP_WITHDRAW_LIQUIDITY_PROVISION
          title: Action Type
          default: UNISWAP_WITHDRAW_LIQUIDITY_PROVISION
        token_id:
          type: integer
          title: Token Id
          description: Token ID of the NFT representing the liquidity provisioned position.
        percentage_for_withdrawal:
          anyOf:
            - type: number
              maximum: 100
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Percentage For Withdrawal
          description: How much liquidity to take out in percentage.
          examples:
            - '25'
            - '50'
            - '75'
            - '100'
      type: object
      required:
        - token_id
        - percentage_for_withdrawal
      title: UniswapWithdrawLiquidityProvisionParams
      description: >-
        Endpoint parameters for liquidity provision withdrawal on uniswap v3.


        This action is performed in a multicall on the NonfungiblePosition
        Manager:
        https://github.com/Uniswap/v3-periphery/blob/0682387198a24c7cd63566a2c58398533860a5d1/contracts/base/Multicall.sol#L11-L27

        First, we call decrease liquidity then collect the tokens owed to the
        user.
    UnwrapWethParams:
      properties:
        action_type:
          type: string
          const: UNWRAP_WETH
          title: Action Type
          default: UNWRAP_WETH
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of WETH to unwrap.
          examples:
            - 1.5
      type: object
      required:
        - amount
      title: UnwrapWethParams
      description: Parameters model for unwrapping WETH back to native ETH.
    VaultDepositParams:
      properties:
        action_type:
          type: string
          const: VAULT_DEPOSIT
          title: Action Type
          default: VAULT_DEPOSIT
        vault_address:
          type: string
          title: Vault Address
          description: The vault address you are depositing to.
          examples:
            - '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa'
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of tokens to deposit into the vault.
          examples:
            - 1.5
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address which will receive the shares from the vault
            representing their proportional ownership of the vault's assets.
            Defaults to the sender.
      type: object
      required:
        - vault_address
        - amount
      title: VaultDepositParams
    VaultWithdrawParams:
      properties:
        action_type:
          type: string
          const: VAULT_WITHDRAW
          title: Action Type
          default: VAULT_WITHDRAW
        vault_address:
          type: string
          title: Vault Address
          description: The vault address you are withdrawing from.
          examples:
            - '0xbEef047a543E45807105E51A8BBEFCc5950fcfBa'
        amount:
          anyOf:
            - type: number
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
            - type: string
              const: ALL
          title: Amount
          description: >-
            The amount of tokens to withdraw from the vault. If set to 'ALL',
            your total deposited token amount will be withdrawn.
          examples:
            - 1.5
            - ALL
        receiver:
          anyOf:
            - type: string
            - type: 'null'
          title: Receiver
          description: >-
            The address which will receive the tokens withdrawn. Defaults to the
            sender.
      type: object
      required:
        - vault_address
        - amount
      title: VaultWithdrawParams
    WrapEthParams:
      properties:
        action_type:
          type: string
          const: WRAP_ETH
          title: Action Type
          default: WRAP_ETH
        amount:
          anyOf:
            - type: number
              exclusiveMinimum: 0
            - type: string
              pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Amount
          description: The amount of ETH to wrap.
          examples:
            - 1.5
      type: object
      required:
        - amount
      title: WrapEthParams
      description: Parameters model for wrapping ETH into WETH.
    InterestRateMode:
      type: string
      enum:
        - stable
        - variable
      title: InterestRateMode
      description: |-
        On AAVE there are 2 different interest modes.

        A stable (but typically higher rate), or a variable rate.
    FeeEnum:
      type: string
      enum:
        - '0.01'
        - '0.05'
        - '0.3'
        - '1.0'
      title: FeeEnum
      description: |-
        The transaction fee of a Uniswap pool in bips.

        Uniswap supports 4 different fee levels.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your Compass API Key. Get your key
        [here](https://www.compasslabs.ai/dashboard).

````