Batch Router ABI

[
  {
    inputs: [],
    name: "SwapDeadline",
    type: "error",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "contract IERC20",
            name: "tokenIn",
            type: "address",
          },
          {
            components: [
              {
                internalType: "address",
                name: "pool",
                type: "address",
              },
              {
                internalType: "contract IERC20",
                name: "tokenOut",
                type: "address",
              },
            ],
            internalType: "struct IBatchRouter.SwapPathStep[]",
            name: "steps",
            type: "tuple[]",
          },
          {
            internalType: "uint256",
            name: "exactAmountIn",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "minAmountOut",
            type: "uint256",
          },
        ],
        internalType: "struct IBatchRouter.SwapPathExactAmountIn[]",
        name: "paths",
        type: "tuple[]",
      },
      {
        internalType: "bytes",
        name: "userData",
        type: "bytes",
      },
    ],
    name: "querySwapExactIn",
    outputs: [
      {
        internalType: "uint256[]",
        name: "pathAmountsOut",
        type: "uint256[]",
      },
      {
        internalType: "address[]",
        name: "tokensOut",
        type: "address[]",
      },
      {
        internalType: "uint256[]",
        name: "amountsOut",
        type: "uint256[]",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "contract IERC20",
            name: "tokenIn",
            type: "address",
          },
          {
            components: [
              {
                internalType: "address",
                name: "pool",
                type: "address",
              },
              {
                internalType: "contract IERC20",
                name: "tokenOut",
                type: "address",
              },
            ],
            internalType: "struct IBatchRouter.SwapPathStep[]",
            name: "steps",
            type: "tuple[]",
          },
          {
            internalType: "uint256",
            name: "maxAmountIn",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "exactAmountOut",
            type: "uint256",
          },
        ],
        internalType: "struct IBatchRouter.SwapPathExactAmountOut[]",
        name: "paths",
        type: "tuple[]",
      },
      {
        internalType: "bytes",
        name: "userData",
        type: "bytes",
      },
    ],
    name: "querySwapExactOut",
    outputs: [
      {
        internalType: "uint256[]",
        name: "pathAmountsIn",
        type: "uint256[]",
      },
      {
        internalType: "address[]",
        name: "tokensIn",
        type: "address[]",
      },
      {
        internalType: "uint256[]",
        name: "amountsIn",
        type: "uint256[]",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "contract IERC20",
            name: "tokenIn",
            type: "address",
          },
          {
            components: [
              {
                internalType: "address",
                name: "pool",
                type: "address",
              },
              {
                internalType: "contract IERC20",
                name: "tokenOut",
                type: "address",
              },
            ],
            internalType: "struct IBatchRouter.SwapPathStep[]",
            name: "steps",
            type: "tuple[]",
          },
          {
            internalType: "uint256",
            name: "exactAmountIn",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "minAmountOut",
            type: "uint256",
          },
        ],
        internalType: "struct IBatchRouter.SwapPathExactAmountIn[]",
        name: "paths",
        type: "tuple[]",
      },
      {
        internalType: "uint256",
        name: "deadline",
        type: "uint256",
      },
      {
        internalType: "bool",
        name: "wethIsEth",
        type: "bool",
      },
      {
        internalType: "bytes",
        name: "userData",
        type: "bytes",
      },
    ],
    name: "swapExactIn",
    outputs: [
      {
        internalType: "uint256[]",
        name: "pathAmountsOut",
        type: "uint256[]",
      },
      {
        internalType: "address[]",
        name: "tokensOut",
        type: "address[]",
      },
      {
        internalType: "uint256[]",
        name: "amountsOut",
        type: "uint256[]",
      },
    ],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "contract IERC20",
            name: "tokenIn",
            type: "address",
          },
          {
            components: [
              {
                internalType: "address",
                name: "pool",
                type: "address",
              },
              {
                internalType: "contract IERC20",
                name: "tokenOut",
                type: "address",
              },
            ],
            internalType: "struct IBatchRouter.SwapPathStep[]",
            name: "steps",
            type: "tuple[]",
          },
          {
            internalType: "uint256",
            name: "maxAmountIn",
            type: "uint256",
          },
          {
            internalType: "uint256",
            name: "exactAmountOut",
            type: "uint256",
          },
        ],
        internalType: "struct IBatchRouter.SwapPathExactAmountOut[]",
        name: "paths",
        type: "tuple[]",
      },
      {
        internalType: "uint256",
        name: "deadline",
        type: "uint256",
      },
      {
        internalType: "bool",
        name: "wethIsEth",
        type: "bool",
      },
      {
        internalType: "bytes",
        name: "userData",
        type: "bytes",
      },
    ],
    name: "swapExactOut",
    outputs: [
      {
        internalType: "uint256[]",
        name: "pathAmountsIn",
        type: "uint256[]",
      },
      {
        internalType: "address[]",
        name: "tokensIn",
        type: "address[]",
      },
      {
        internalType: "uint256[]",
        name: "amountsIn",
        type: "uint256[]",
      },
    ],
    stateMutability: "payable",
    type: "function",
  },
]