ABI

[
  {
    "type": "constructor",
    "inputs": [
      { "name": "weth_", "type": "address", "internalType": "address payable" },
      { "name": "launchpad_", "type": "address", "internalType": "address" },
      { "name": "clobFactory_", "type": "address", "internalType": "address" },
      { "name": "uniV2Router_", "type": "address", "internalType": "address" },
      { "name": "permit2_", "type": "address", "internalType": "address" }
    ],
    "stateMutability": "nonpayable"
  },
  { "type": "receive", "stateMutability": "payable" },
  {
    "type": "function",
    "name": "ABI_VERSION",
    "inputs": [],
    "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "clobCancel",
    "inputs": [
      { "name": "clob", "type": "address", "internalType": "contract ICLOB" },
      {
        "name": "args",
        "type": "tuple",
        "internalType": "struct ICLOB.CancelArgs",
        "components": [
          {
            "name": "orderIds",
            "type": "uint256[]",
            "internalType": "uint256[]"
          },
          {
            "name": "settlement",
            "type": "uint8",
            "internalType": "enum ICLOB.Settlement"
          }
        ]
      },
      { "name": "isUnwrapping", "type": "bool", "internalType": "bool" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "clobDeposit",
    "inputs": [
      { "name": "token", "type": "address", "internalType": "address" },
      { "name": "amount", "type": "uint256", "internalType": "uint256" },
      { "name": "fromRouter", "type": "bool", "internalType": "bool" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "clobFactory",
    "inputs": [],
    "outputs": [
      { "name": "", "type": "address", "internalType": "contract ICLOBManager" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "clobPostFillOrder",
    "inputs": [
      { "name": "clob", "type": "address", "internalType": "contract ICLOB" },
      {
        "name": "args",
        "type": "tuple",
        "internalType": "struct ICLOB.PostFillOrderArgs",
        "components": [
          { "name": "amount", "type": "uint256", "internalType": "uint256" },
          {
            "name": "priceLimit",
            "type": "uint256",
            "internalType": "uint256"
          },
          { "name": "side", "type": "uint8", "internalType": "enum Side" },
          { "name": "amountIsBase", "type": "bool", "internalType": "bool" },
          {
            "name": "fillOrderType",
            "type": "uint8",
            "internalType": "enum ICLOB.FillOrderType"
          },
          {
            "name": "settlement",
            "type": "uint8",
            "internalType": "enum ICLOB.Settlement"
          }
        ]
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "clobPostLimitOrder",
    "inputs": [
      { "name": "clob", "type": "address", "internalType": "contract ICLOB" },
      {
        "name": "args",
        "type": "tuple",
        "internalType": "struct ICLOB.PostLimitOrderArgs",
        "components": [
          {
            "name": "amountInBase",
            "type": "uint256",
            "internalType": "uint256"
          },
          { "name": "price", "type": "uint256", "internalType": "uint256" },
          {
            "name": "cancelTimestamp",
            "type": "uint256",
            "internalType": "uint256"
          },
          { "name": "side", "type": "uint8", "internalType": "enum Side" },
          {
            "name": "clientOrderId",
            "type": "uint96",
            "internalType": "uint96"
          },
          {
            "name": "limitOrderType",
            "type": "uint8",
            "internalType": "enum ICLOB.LimitOrderType"
          },
          {
            "name": "settlement",
            "type": "uint8",
            "internalType": "enum ICLOB.Settlement"
          }
        ]
      }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "clobWithdraw",
    "inputs": [
      { "name": "token", "type": "address", "internalType": "address" },
      { "name": "amount", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "executeRoute",
    "inputs": [
      { "name": "tokenIn", "type": "address", "internalType": "address" },
      { "name": "amountIn", "type": "uint256", "internalType": "uint256" },
      { "name": "amountOutMin", "type": "uint256", "internalType": "uint256" },
      { "name": "deadline", "type": "uint256", "internalType": "uint256" },
      { "name": "isUnwrapping", "type": "bool", "internalType": "bool" },
      {
        "name": "settlementIn",
        "type": "uint8",
        "internalType": "enum ICLOB.Settlement"
      },
      { "name": "hops", "type": "bytes[]", "internalType": "bytes[]" }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "launchpad",
    "inputs": [],
    "outputs": [
      { "name": "", "type": "address", "internalType": "contract ILaunchpad" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "launchpadBuy",
    "inputs": [
      { "name": "launchToken", "type": "address", "internalType": "address" },
      { "name": "amountOutBase", "type": "uint256", "internalType": "uint256" },
      { "name": "quoteToken", "type": "address", "internalType": "address" },
      {
        "name": "worstAmountInQuote",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      { "name": "baseBought", "type": "uint256", "internalType": "uint256" },
      { "name": "quoteSpent", "type": "uint256", "internalType": "uint256" }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "launchpadBuyPermit2",
    "inputs": [
      { "name": "launchToken", "type": "address", "internalType": "address" },
      { "name": "amountOutBase", "type": "uint256", "internalType": "uint256" },
      { "name": "quoteToken", "type": "address", "internalType": "address" },
      {
        "name": "worstAmountInQuote",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "permitSingle",
        "type": "tuple",
        "internalType": "struct IAllowanceTransfer.PermitSingle",
        "components": [
          {
            "name": "details",
            "type": "tuple",
            "internalType": "struct IAllowanceTransfer.PermitDetails",
            "components": [
              { "name": "token", "type": "address", "internalType": "address" },
              {
                "name": "amount",
                "type": "uint160",
                "internalType": "uint160"
              },
              {
                "name": "expiration",
                "type": "uint48",
                "internalType": "uint48"
              },
              { "name": "nonce", "type": "uint48", "internalType": "uint48" }
            ]
          },
          { "name": "spender", "type": "address", "internalType": "address" },
          {
            "name": "sigDeadline",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      },
      { "name": "signature", "type": "bytes", "internalType": "bytes" }
    ],
    "outputs": [
      { "name": "baseBought", "type": "uint256", "internalType": "uint256" },
      { "name": "quoteSpent", "type": "uint256", "internalType": "uint256" }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "launchpadSell",
    "inputs": [
      { "name": "launchToken", "type": "address", "internalType": "address" },
      { "name": "amountInBase", "type": "uint256", "internalType": "uint256" },
      {
        "name": "worstAmountOutQuote",
        "type": "uint256",
        "internalType": "uint256"
      },
      { "name": "unwrapEth", "type": "bool", "internalType": "bool" }
    ],
    "outputs": [
      { "name": "baseSpent", "type": "uint256", "internalType": "uint256" },
      { "name": "quoteBought", "type": "uint256", "internalType": "uint256" }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "launchpadSellPermit2",
    "inputs": [
      { "name": "launchToken", "type": "address", "internalType": "address" },
      { "name": "amountInBase", "type": "uint256", "internalType": "uint256" },
      {
        "name": "worstAmountOutQuote",
        "type": "uint256",
        "internalType": "uint256"
      },
      { "name": "unwrapEth", "type": "bool", "internalType": "bool" },
      {
        "name": "permitSingle",
        "type": "tuple",
        "internalType": "struct IAllowanceTransfer.PermitSingle",
        "components": [
          {
            "name": "details",
            "type": "tuple",
            "internalType": "struct IAllowanceTransfer.PermitDetails",
            "components": [
              { "name": "token", "type": "address", "internalType": "address" },
              {
                "name": "amount",
                "type": "uint160",
                "internalType": "uint160"
              },
              {
                "name": "expiration",
                "type": "uint48",
                "internalType": "uint48"
              },
              { "name": "nonce", "type": "uint48", "internalType": "uint48" }
            ]
          },
          { "name": "spender", "type": "address", "internalType": "address" },
          {
            "name": "sigDeadline",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      },
      { "name": "signature", "type": "bytes", "internalType": "bytes" }
    ],
    "outputs": [
      { "name": "baseSpent", "type": "uint256", "internalType": "uint256" },
      { "name": "quoteBought", "type": "uint256", "internalType": "uint256" }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "permit2",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract IAllowanceTransfer"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "uniV2Router",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract IUniswapV2Router01"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "uniV2SwapExactTokensForTokens",
    "inputs": [
      { "name": "amountIn", "type": "uint256", "internalType": "uint256" },
      { "name": "amountOutMin", "type": "uint256", "internalType": "uint256" },
      { "name": "path", "type": "address[]", "internalType": "address[]" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "weth",
    "inputs": [],
    "outputs": [
      { "name": "", "type": "address", "internalType": "contract WETH" }
    ],
    "stateMutability": "view"
  },
  { "type": "error", "name": "DeadlineExceeded", "inputs": [] },
  {
    "type": "error",
    "name": "EthRefundFailed",
    "inputs": [
      { "name": "returnData", "type": "bytes", "internalType": "bytes" }
    ]
  },
  { "type": "error", "name": "InvalidCLOBAddress", "inputs": [] },
  { "type": "error", "name": "InvalidCLOBAmountSide", "inputs": [] },
  { "type": "error", "name": "InvalidCLOBSide", "inputs": [] },
  { "type": "error", "name": "InvalidSettlementForWrap", "inputs": [] },
  { "type": "error", "name": "InvalidTokenRoute", "inputs": [] },
  {
    "type": "error",
    "name": "InvalidUnwrapAndSettlementPreference",
    "inputs": []
  },
  { "type": "error", "name": "InvalidWrapAmount", "inputs": [] },
  { "type": "error", "name": "Permit2TransferAmountTooLarge", "inputs": [] },
  { "type": "error", "name": "Reentrancy", "inputs": [] },
  { "type": "error", "name": "SlippageToleranceExceeded", "inputs": [] },
  { "type": "error", "name": "UnsupportedSelector", "inputs": [] },
  { "type": "error", "name": "UnwrapWethOnly", "inputs": [] },
  { "type": "error", "name": "ValueSentWithoutWrap", "inputs": [] }
]