ABI

[
  {
    "type": "constructor",
    "inputs": [
      { "name": "_beacon", "type": "address", "internalType": "address" },
      { "name": "_maxNumOrders", "type": "uint256", "internalType": "uint256" },
      { "name": "_makerFees", "type": "uint16[]", "internalType": "uint16[]" },
      { "name": "_takerFees", "type": "uint16[]", "internalType": "uint16[]" }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "ABI_VERSION",
    "inputs": [],
    "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "approveOperator",
    "inputs": [
      { "name": "operator", "type": "address", "internalType": "address" },
      { "name": "roles", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "beacon",
    "inputs": [],
    "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "cancelOwnershipHandover",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "collectFees",
    "inputs": [
      { "name": "token", "type": "address", "internalType": "address" }
    ],
    "outputs": [
      { "name": "fee", "type": "uint256", "internalType": "uint256" }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "completeOwnershipHandover",
    "inputs": [
      { "name": "pendingOwner", "type": "address", "internalType": "address" }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "createMarket",
    "inputs": [
      { "name": "baseToken", "type": "address", "internalType": "address" },
      { "name": "quoteToken", "type": "address", "internalType": "address" },
      {
        "name": "settings",
        "type": "tuple",
        "internalType": "struct ICLOBManager.SettingsParams",
        "components": [
          { "name": "owner", "type": "address", "internalType": "address" },
          {
            "name": "maxLimitsPerTx",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "minLimitOrderAmountInBase",
            "type": "uint256",
            "internalType": "uint256"
          },
          { "name": "tickSize", "type": "uint256", "internalType": "uint256" }
        ]
      }
    ],
    "outputs": [
      { "name": "marketAddress", "type": "address", "internalType": "address" }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "creditAccount",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" },
      { "name": "token", "type": "address", "internalType": "address" },
      { "name": "amount", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "debitAccount",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" },
      { "name": "token", "type": "address", "internalType": "address" },
      { "name": "amount", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "deposit",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" },
      { "name": "token", "type": "address", "internalType": "address" },
      { "name": "amount", "type": "uint256", "internalType": "uint256" },
      { "name": "fromOperator", "type": "bool", "internalType": "bool" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "disapproveOperator",
    "inputs": [
      { "name": "operator", "type": "address", "internalType": "address" },
      { "name": "roles", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "getAccountBalance",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" },
      { "name": "token", "type": "address", "internalType": "address" }
    ],
    "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getEventNonce",
    "inputs": [],
    "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getFeeRecipient",
    "inputs": [],
    "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getFeeTier",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" }
    ],
    "outputs": [
      { "name": "", "type": "uint8", "internalType": "enum FeeTiers" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getMakerFeeRate",
    "inputs": [
      { "name": "feeTier", "type": "uint8", "internalType": "enum FeeTiers" }
    ],
    "outputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getMarketAddress",
    "inputs": [
      { "name": "quoteToken", "type": "address", "internalType": "address" },
      { "name": "baseToken", "type": "address", "internalType": "address" }
    ],
    "outputs": [
      { "name": "marketAddress", "type": "address", "internalType": "address" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getOperatorRoleApprovals",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" },
      { "name": "operator", "type": "address", "internalType": "address" }
    ],
    "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getTakerFeeRate",
    "inputs": [
      { "name": "feeTier", "type": "uint8", "internalType": "enum FeeTiers" }
    ],
    "outputs": [{ "name": "", "type": "uint16", "internalType": "uint16" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "gteRouter",
    "inputs": [],
    "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "initialize",
    "inputs": [
      { "name": "_owner", "type": "address", "internalType": "address" },
      { "name": "_feeRecipient", "type": "address", "internalType": "address" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "isMarket",
    "inputs": [
      { "name": "market", "type": "address", "internalType": "address" }
    ],
    "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "makerFees",
    "inputs": [],
    "outputs": [
      { "name": "", "type": "uint256", "internalType": "PackedFeeRates" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "maxNumOrders",
    "inputs": [],
    "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "owner",
    "inputs": [],
    "outputs": [
      { "name": "result", "type": "address", "internalType": "address" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "ownershipHandoverExpiresAt",
    "inputs": [
      { "name": "pendingOwner", "type": "address", "internalType": "address" }
    ],
    "outputs": [
      { "name": "result", "type": "uint256", "internalType": "uint256" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pullFromAccount",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" },
      { "name": "token", "type": "address", "internalType": "address" },
      { "name": "amount", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "pushToAccount",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" },
      { "name": "token", "type": "address", "internalType": "address" },
      { "name": "amount", "type": "uint256", "internalType": "uint256" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "renounceOwnership",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "requestOwnershipHandover",
    "inputs": [],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "setAccountFeeTiers",
    "inputs": [
      { "name": "accounts", "type": "address[]", "internalType": "address[]" },
      {
        "name": "feeTiers",
        "type": "uint8[]",
        "internalType": "enum FeeTiers[]"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "setFeeRecipient",
    "inputs": [
      {
        "name": "newFeeRecipient",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "settleIncomingOrder",
    "inputs": [
      {
        "name": "params",
        "type": "tuple",
        "internalType": "struct SettleParams",
        "components": [
          { "name": "taker", "type": "address", "internalType": "address" },
          {
            "name": "quoteToken",
            "type": "address",
            "internalType": "address"
          },
          { "name": "baseToken", "type": "address", "internalType": "address" },
          { "name": "side", "type": "uint8", "internalType": "enum Side" },
          {
            "name": "settlement",
            "type": "uint8",
            "internalType": "enum ICLOB.Settlement"
          },
          {
            "name": "takerQuoteAmount",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "takerBaseAmount",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "makerCredits",
            "type": "tuple[]",
            "internalType": "struct MakerCredit[]",
            "components": [
              { "name": "maker", "type": "address", "internalType": "address" },
              {
                "name": "quoteAmount",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "baseAmount",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          }
        ]
      }
    ],
    "outputs": [
      { "name": "takerFee", "type": "uint256", "internalType": "uint256" }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "takerFees",
    "inputs": [],
    "outputs": [
      { "name": "", "type": "uint256", "internalType": "PackedFeeRates" }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "transferOwnership",
    "inputs": [
      { "name": "newOwner", "type": "address", "internalType": "address" }
    ],
    "outputs": [],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "withdraw",
    "inputs": [
      { "name": "account", "type": "address", "internalType": "address" },
      { "name": "token", "type": "address", "internalType": "address" },
      { "name": "amount", "type": "uint256", "internalType": "uint256" },
      { "name": "toOperator", "type": "bool", "internalType": "bool" }
    ],
    "outputs": [],
    "stateMutability": "nonpayable"
  },
  {
    "type": "event",
    "name": "AccountCredited",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "token",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "amount",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "AccountDebited",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "token",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "amount",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "AccountFeeTierUpdated",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "feeTier",
        "type": "uint8",
        "indexed": false,
        "internalType": "enum FeeTiers"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Deposit",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "funder",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "token",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "amount",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "FeeCollected",
    "inputs": [
      {
        "name": "token",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "fee",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "FeeRecipientSet",
    "inputs": [
      {
        "name": "feeRecipient",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Initialized",
    "inputs": [
      {
        "name": "version",
        "type": "uint64",
        "indexed": false,
        "internalType": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "MarketCreated",
    "inputs": [
      {
        "name": "creator",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "baseToken",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "quoteToken",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "market",
        "type": "address",
        "indexed": false,
        "internalType": "address"
      },
      {
        "name": "quoteDecimals",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      },
      {
        "name": "baseDecimals",
        "type": "uint8",
        "indexed": false,
        "internalType": "uint8"
      },
      {
        "name": "config",
        "type": "tuple",
        "indexed": false,
        "internalType": "struct ICLOBManager.ConfigParams",
        "components": [
          {
            "name": "quoteToken",
            "type": "address",
            "internalType": "address"
          },
          { "name": "baseToken", "type": "address", "internalType": "address" },
          { "name": "quoteSize", "type": "uint256", "internalType": "uint256" },
          { "name": "baseSize", "type": "uint256", "internalType": "uint256" }
        ]
      },
      {
        "name": "settings",
        "type": "tuple",
        "indexed": false,
        "internalType": "struct ICLOBManager.SettingsParams",
        "components": [
          { "name": "owner", "type": "address", "internalType": "address" },
          {
            "name": "maxLimitsPerTx",
            "type": "uint8",
            "internalType": "uint8"
          },
          {
            "name": "minLimitOrderAmountInBase",
            "type": "uint256",
            "internalType": "uint256"
          },
          { "name": "tickSize", "type": "uint256", "internalType": "uint256" }
        ]
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OperatorApproved",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "operator",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OperatorDisapproved",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "operator",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipHandoverCanceled",
    "inputs": [
      {
        "name": "pendingOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipHandoverRequested",
    "inputs": [
      {
        "name": "pendingOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "OwnershipTransferred",
    "inputs": [
      {
        "name": "oldOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "newOwner",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RolesApproved",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "operator",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "roles",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RolesDisapproved",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "operator",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "roles",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "Withdraw",
    "inputs": [
      {
        "name": "account",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "recipient",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "token",
        "type": "address",
        "indexed": true,
        "internalType": "address"
      },
      {
        "name": "amount",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      },
      {
        "name": "eventNonce",
        "type": "uint256",
        "indexed": false,
        "internalType": "uint256"
      }
    ],
    "anonymous": false
  },
  { "type": "error", "name": "AlreadyInitialized", "inputs": [] },
  { "type": "error", "name": "CLOBBeaconMustHaveRouter", "inputs": [] },
  { "type": "error", "name": "IndexOutOfBounds", "inputs": [] },
  { "type": "error", "name": "InsufficientBalance", "inputs": [] },
  { "type": "error", "name": "InvalidBeaconAddress", "inputs": [] },
  { "type": "error", "name": "InvalidFeeRecipient", "inputs": [] },
  { "type": "error", "name": "InvalidInitialization", "inputs": [] },
  { "type": "error", "name": "InvalidPair", "inputs": [] },
  { "type": "error", "name": "InvalidSettings", "inputs": [] },
  {
    "type": "error",
    "name": "InvalidTierLength_ReduceFeeTierEnumSize",
    "inputs": []
  },
  { "type": "error", "name": "InvalidTokenAddress", "inputs": [] },
  { "type": "error", "name": "MarketAlreadyExists", "inputs": [] },
  { "type": "error", "name": "MarketDoesNotExist", "inputs": [] },
  { "type": "error", "name": "NewOwnerIsZeroAddress", "inputs": [] },
  { "type": "error", "name": "NoHandoverRequest", "inputs": [] },
  { "type": "error", "name": "NotInitializing", "inputs": [] },
  { "type": "error", "name": "OperatorDoesNotHaveRole", "inputs": [] },
  { "type": "error", "name": "TooManyFeeTiers", "inputs": [] },
  { "type": "error", "name": "Unauthorized", "inputs": [] },
  { "type": "error", "name": "UnauthorizedMarket", "inputs": [] },
  { "type": "error", "name": "UnmatchingArrayLengths", "inputs": [] }
]