/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */

import { Contract, Interface, type ContractRunner } from "ethers";
import type {
  IPerpetualManager,
  IPerpetualManagerInterface,
} from "../IPerpetualManager";

const _abi = [
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: false,
        internalType: "address",
        name: "oldOwner",
        type: "address",
      },
      {
        indexed: false,
        internalType: "address",
        name: "newOwner",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint32",
        name: "numLots",
        type: "uint32",
      },
    ],
    name: "BrokerLotsTransferred",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: false,
        internalType: "address",
        name: "oldOwner",
        type: "address",
      },
      {
        indexed: false,
        internalType: "address",
        name: "newOwner",
        type: "address",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fVolume",
        type: "int128",
      },
    ],
    name: "BrokerVolumeTransferred",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
    ],
    name: "Clear",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "protocolFeeCC",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "participationFundFeeCC",
        type: "int128",
      },
    ],
    name: "DistributeFees",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "address",
        name: "liquidator",
        type: "address",
      },
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "amountLiquidatedBC",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "liquidationPrice",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "newPositionSizeBC",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fFeeCC",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fPnlCC",
        type: "int128",
      },
    ],
    name: "Liquidate",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: true,
        internalType: "address",
        name: "user",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "tokenAmount",
        type: "uint256",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "shareAmount",
        type: "uint256",
      },
    ],
    name: "LiquidityAdded",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint8",
        name: "id",
        type: "uint8",
      },
      {
        indexed: false,
        internalType: "address",
        name: "marginTokenAddress",
        type: "address",
      },
      {
        indexed: false,
        internalType: "address",
        name: "shareTokenAddress",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint16",
        name: "iTargetPoolSizeUpdateTime",
        type: "uint16",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fBrokerCollateralLotSize",
        type: "int128",
      },
    ],
    name: "LiquidityPoolCreated",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "bool",
        name: "pauseOn",
        type: "bool",
      },
      {
        indexed: false,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
    ],
    name: "LiquidityProvisionPaused",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: true,
        internalType: "address",
        name: "user",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "tokenAmount",
        type: "uint256",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "shareAmount",
        type: "uint256",
      },
    ],
    name: "LiquidityRemoved",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: true,
        internalType: "address",
        name: "user",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "shareAmount",
        type: "uint256",
      },
    ],
    name: "LiquidityWithdrawalInitiated",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: false,
        internalType: "uint24",
        name: "id",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "int128[7]",
        name: "baseParams",
        type: "int128[7]",
      },
      {
        indexed: false,
        internalType: "int128[5]",
        name: "underlyingRiskParams",
        type: "int128[5]",
      },
      {
        indexed: false,
        internalType: "int128[12]",
        name: "defaultFundRiskParams",
        type: "int128[12]",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "eCollateralCurrency",
        type: "uint256",
      },
    ],
    name: "PerpetualCreated",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "bytes32",
        name: "orderHash",
        type: "bytes32",
      },
    ],
    name: "PerpetualLimitOrderCancelled",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint8",
        name: "_liqPoolID",
        type: "uint8",
      },
    ],
    name: "RunLiquidityPool",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint8",
        name: "delay",
        type: "uint8",
      },
    ],
    name: "SetBlockDelay",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint32[]",
        name: "designations",
        type: "uint32[]",
      },
      {
        indexed: false,
        internalType: "uint16[]",
        name: "fees",
        type: "uint16[]",
      },
    ],
    name: "SetBrokerDesignations",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint256[]",
        name: "tiers",
        type: "uint256[]",
      },
      {
        indexed: false,
        internalType: "uint16[]",
        name: "feesTbps",
        type: "uint16[]",
      },
    ],
    name: "SetBrokerTiers",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint256[]",
        name: "tiers",
        type: "uint256[]",
      },
      {
        indexed: false,
        internalType: "uint16[]",
        name: "feesTbps",
        type: "uint16[]",
      },
    ],
    name: "SetBrokerVolumeTiers",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
    ],
    name: "SetClearedState",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
      {
        indexed: true,
        internalType: "address",
        name: "delegate",
        type: "address",
      },
      {
        indexed: false,
        internalType: "uint256",
        name: "index",
        type: "uint256",
      },
    ],
    name: "SetDelegate",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fSettlementMarkPremiumRate",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fSettlementS2Price",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fSettlementS3Price",
        type: "int128",
      },
    ],
    name: "SetEmergencyState",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
    ],
    name: "SetNormalState",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "bytes4[2]",
        name: "baseQuoteS2",
        type: "bytes4[2]",
      },
      {
        indexed: false,
        internalType: "bytes4[2]",
        name: "baseQuoteS3",
        type: "bytes4[2]",
      },
    ],
    name: "SetOracles",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "string",
        name: "name",
        type: "string",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "value",
        type: "int128",
      },
    ],
    name: "SetParameter",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "string",
        name: "name",
        type: "string",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "value1",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "value2",
        type: "int128",
      },
    ],
    name: "SetParameterPair",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "int128[7]",
        name: "baseParams",
        type: "int128[7]",
      },
    ],
    name: "SetPerpetualBaseParameters",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "int128[5]",
        name: "underlyingRiskParams",
        type: "int128[5]",
      },
      {
        indexed: false,
        internalType: "int128[12]",
        name: "defaultFundRiskParams",
        type: "int128[12]",
      },
    ],
    name: "SetPerpetualRiskParameters",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: false,
        internalType: "string",
        name: "name",
        type: "string",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "value",
        type: "int128",
      },
    ],
    name: "SetPoolParameter",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint256[]",
        name: "tiers",
        type: "uint256[]",
      },
      {
        indexed: false,
        internalType: "uint16[]",
        name: "feesTbps",
        type: "uint16[]",
      },
    ],
    name: "SetTraderTiers",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "uint256[]",
        name: "tiers",
        type: "uint256[]",
      },
      {
        indexed: false,
        internalType: "uint16[]",
        name: "feesTbps",
        type: "uint16[]",
      },
    ],
    name: "SetTraderVolumeTiers",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "address",
        name: "tokenAddr",
        type: "address",
      },
    ],
    name: "SetUtilityToken",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
      {
        indexed: false,
        internalType: "int256",
        name: "amount",
        type: "int256",
      },
    ],
    name: "Settle",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
    ],
    name: "SettleState",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
    ],
    name: "SettlementComplete",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "amount",
        type: "int128",
      },
    ],
    name: "TokensDeposited",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "amount",
        type: "int128",
      },
    ],
    name: "TokensWithdrawn",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
      {
        components: [
          {
            internalType: "uint16",
            name: "leverageTDR",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "brokerFeeTbps",
            type: "uint16",
          },
          {
            internalType: "uint24",
            name: "iPerpetualId",
            type: "uint24",
          },
          {
            internalType: "address",
            name: "traderAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "executionTimestamp",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "brokerAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "submittedTimestamp",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "flags",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "iDeadline",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "executorAddr",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fAmount",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLimitPrice",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTriggerPrice",
            type: "int128",
          },
          {
            internalType: "bytes",
            name: "brokerSignature",
            type: "bytes",
          },
        ],
        indexed: false,
        internalType: "struct IPerpetualOrder.Order",
        name: "order",
        type: "tuple",
      },
      {
        indexed: false,
        internalType: "bytes32",
        name: "orderDigest",
        type: "bytes32",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "newPositionSizeBC",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "price",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fFeeCC",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fPnlCC",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fB2C",
        type: "int128",
      },
    ],
    name: "Trade",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: false,
        internalType: "string",
        name: "name",
        type: "string",
      },
      {
        indexed: false,
        internalType: "address",
        name: "oldOBFactory",
        type: "address",
      },
      {
        indexed: false,
        internalType: "address",
        name: "newOBFactory",
        type: "address",
      },
    ],
    name: "TransferAddressTo",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        indexed: false,
        internalType: "uint32",
        name: "iLots",
        type: "uint32",
      },
      {
        indexed: false,
        internalType: "uint32",
        name: "iNewBrokerLots",
        type: "uint32",
      },
    ],
    name: "UpdateBrokerAddedCash",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fFundingRate",
        type: "int128",
      },
    ],
    name: "UpdateFundingRate",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: true,
        internalType: "address",
        name: "trader",
        type: "address",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fFundingPaymentCC",
        type: "int128",
      },
    ],
    name: "UpdateMarginAccount",
    type: "event",
  },
  {
    anonymous: false,
    inputs: [
      {
        indexed: true,
        internalType: "uint24",
        name: "perpetualId",
        type: "uint24",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fMidPricePremium",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fMarkPricePremium",
        type: "int128",
      },
      {
        indexed: false,
        internalType: "int128",
        name: "fMarkIndexPrice",
        type: "int128",
      },
    ],
    name: "UpdateMarkPrice",
    type: "event",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "activatePerpetual",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_iPoolIndex",
        type: "uint8",
      },
      {
        internalType: "uint256",
        name: "_tokenAmount",
        type: "uint256",
      },
    ],
    name: "addLiquidity",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "int128",
        name: "_fSettlementS2",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fSettlementS3",
        type: "int128",
      },
    ],
    name: "adjustSettlementPrice",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int128[2]",
        name: "_fK2AMM",
        type: "int128[2]",
      },
      {
        internalType: "int128",
        name: "_fk2Trader",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fCoverN",
        type: "int128",
      },
      {
        internalType: "int128[2]",
        name: "fStressRet2",
        type: "int128[2]",
      },
      {
        internalType: "int128[2]",
        name: "fStressRet3",
        type: "int128[2]",
      },
      {
        internalType: "int128[2]",
        name: "fIndexPrices",
        type: "int128[2]",
      },
      {
        internalType: "enum AMMPerpLogic.CollateralCurrency",
        name: "_eCCY",
        type: "uint8",
      },
    ],
    name: "calculateDefaultFundSize",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "int128",
            name: "fLockedValue1",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fPoolM1",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fPoolM2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fPoolM3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fAMM_K2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fCurrentTraderExposureEMA",
            type: "int128",
          },
        ],
        internalType: "struct AMMPerpLogic.AMMVariables",
        name: "_ammVars",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "int128",
            name: "fIndexPriceS2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fIndexPriceS3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fRho23",
            type: "int128",
          },
        ],
        internalType: "struct AMMPerpLogic.MarketVariables",
        name: "_mktVars",
        type: "tuple",
      },
      {
        internalType: "int128",
        name: "_fTradeAmount",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fBidAskSpread",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fIncentiveSpread",
        type: "int128",
      },
    ],
    name: "calculatePerpetualPrice",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "int128",
            name: "fLockedValue1",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fPoolM1",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fPoolM2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fPoolM3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fAMM_K2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fCurrentTraderExposureEMA",
            type: "int128",
          },
        ],
        internalType: "struct AMMPerpLogic.AMMVariables",
        name: "_ammVars",
        type: "tuple",
      },
      {
        components: [
          {
            internalType: "int128",
            name: "fIndexPriceS2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fIndexPriceS3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fRho23",
            type: "int128",
          },
        ],
        internalType: "struct AMMPerpLogic.MarketVariables",
        name: "_mktVars",
        type: "tuple",
      },
      {
        internalType: "int128",
        name: "_fTradeAmount",
        type: "int128",
      },
      {
        internalType: "bool",
        name: "_withCDF",
        type: "bool",
      },
    ],
    name: "calculateRiskNeutralPD",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_id",
        type: "uint8",
      },
      {
        internalType: "uint256",
        name: "_bulkSize",
        type: "uint256",
      },
    ],
    name: "clearTradersInPool",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "countActivePerpAccounts",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_marginTokenAddress",
        type: "address",
      },
      {
        internalType: "uint16",
        name: "_iTargetPoolSizeUpdateTime",
        type: "uint16",
      },
      {
        internalType: "int128",
        name: "_fBrokerCollateralLotSize",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fCeilPnLShare",
        type: "int128",
      },
    ],
    name: "createLiquidityPool",
    outputs: [
      {
        internalType: "uint8",
        name: "",
        type: "uint8",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_iPoolId",
        type: "uint8",
      },
      {
        internalType: "bytes4[2]",
        name: "_baseQuoteS2",
        type: "bytes4[2]",
      },
      {
        internalType: "bytes4[2]",
        name: "_baseQuoteS3",
        type: "bytes4[2]",
      },
      {
        internalType: "int128[7]",
        name: "_baseParams",
        type: "int128[7]",
      },
      {
        internalType: "int128[5]",
        name: "_underlyingRiskParams",
        type: "int128[5]",
      },
      {
        internalType: "int128[12]",
        name: "_defaultFundRiskParams",
        type: "int128[12]",
      },
      {
        internalType: "uint256",
        name: "_eCollateralCurrency",
        type: "uint256",
      },
    ],
    name: "createPerpetual",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "deactivatePerp",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint16",
        name: "num",
        type: "uint16",
      },
    ],
    name: "decodeUint16Float",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_iPoolIdx",
        type: "uint8",
      },
      {
        internalType: "int128",
        name: "_fAmount",
        type: "int128",
      },
    ],
    name: "decreasePoolCash",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "int128",
        name: "_fAmount",
        type: "int128",
      },
      {
        internalType: "bytes[]",
        name: "_updateData",
        type: "bytes[]",
      },
      {
        internalType: "uint64[]",
        name: "_publishTimes",
        type: "uint64[]",
      },
    ],
    name: "deposit",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "uint32",
        name: "_iLots",
        type: "uint32",
      },
    ],
    name: "depositBrokerLots",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "int128",
        name: "_fDepositRequired",
        type: "int128",
      },
      {
        components: [
          {
            internalType: "uint16",
            name: "leverageTDR",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "brokerFeeTbps",
            type: "uint16",
          },
          {
            internalType: "uint24",
            name: "iPerpetualId",
            type: "uint24",
          },
          {
            internalType: "address",
            name: "traderAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "executionTimestamp",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "brokerAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "submittedTimestamp",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "flags",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "iDeadline",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "executorAddr",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fAmount",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLimitPrice",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTriggerPrice",
            type: "int128",
          },
          {
            internalType: "bytes",
            name: "brokerSignature",
            type: "bytes",
          },
        ],
        internalType: "struct IPerpetualOrder.Order",
        name: "_order",
        type: "tuple",
      },
    ],
    name: "depositMarginForOpeningTrade",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "int128",
        name: "_fAmount",
        type: "int128",
      },
    ],
    name: "depositToDefaultFund",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "uint16",
            name: "leverageTDR",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "brokerFeeTbps",
            type: "uint16",
          },
          {
            internalType: "uint24",
            name: "iPerpetualId",
            type: "uint24",
          },
          {
            internalType: "address",
            name: "traderAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "executionTimestamp",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "brokerAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "submittedTimestamp",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "flags",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "iDeadline",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "executorAddr",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fAmount",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLimitPrice",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTriggerPrice",
            type: "int128",
          },
          {
            internalType: "bytes",
            name: "brokerSignature",
            type: "bytes",
          },
        ],
        internalType: "struct IPerpetualOrder.Order",
        name: "_order",
        type: "tuple",
      },
    ],
    name: "determineExchangeFee",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "uint16",
            name: "leverageTDR",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "brokerFeeTbps",
            type: "uint16",
          },
          {
            internalType: "uint24",
            name: "iPerpetualId",
            type: "uint24",
          },
          {
            internalType: "address",
            name: "traderAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "executionTimestamp",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "brokerAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "submittedTimestamp",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "flags",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "iDeadline",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "executorAddr",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fAmount",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLimitPrice",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTriggerPrice",
            type: "int128",
          },
          {
            internalType: "bytes",
            name: "brokerSignature",
            type: "bytes",
          },
        ],
        internalType: "struct IPerpetualOrder.Order",
        name: "_order",
        type: "tuple",
      },
      {
        internalType: "uint16",
        name: "_brkrFeeTbps",
        type: "uint16",
      },
      {
        internalType: "uint16",
        name: "_protocolFeeTbps",
        type: "uint16",
      },
      {
        internalType: "bool",
        name: "_hasOpened",
        type: "bool",
      },
    ],
    name: "distributeFees",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "int128",
        name: "_fDeltaPositionBC",
        type: "int128",
      },
      {
        internalType: "uint16",
        name: "_protocolFeeTbps",
        type: "uint16",
      },
    ],
    name: "distributeFeesLiquidation",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int128",
        name: "_p",
        type: "int128",
      },
    ],
    name: "entropy",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "bytes32",
        name: "_digest",
        type: "bytes32",
      },
    ],
    name: "executeCancelOrder",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_lpAddr",
        type: "address",
      },
    ],
    name: "executeLiquidityWithdrawal",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "int128",
        name: "_fTraderPos",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fTradeAmount",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fPrice",
        type: "int128",
      },
      {
        internalType: "bool",
        name: "_isClose",
        type: "bool",
      },
    ],
    name: "executeTrade",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "getAMMPerpLogic",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "int128[2]",
        name: "_fIndexPrice",
        type: "int128[2]",
      },
    ],
    name: "getAMMState",
    outputs: [
      {
        internalType: "int128[15]",
        name: "",
        type: "int128[15]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "getActivePerpAccounts",
    outputs: [
      {
        internalType: "address[]",
        name: "",
        type: "address[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "uint256",
        name: "_from",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "_to",
        type: "uint256",
      },
    ],
    name: "getActivePerpAccountsByChunks",
    outputs: [
      {
        internalType: "address[]",
        name: "",
        type: "address[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_brokerAddr",
        type: "address",
      },
    ],
    name: "getBrokerDesignation",
    outputs: [
      {
        internalType: "uint32",
        name: "",
        type: "uint32",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_brokerAddr",
        type: "address",
      },
    ],
    name: "getBrokerInducedFee",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
    ],
    name: "getCollateralTokenAmountForPricing",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_brokerAddr",
        type: "address",
      },
    ],
    name: "getCurrentBrokerVolume",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
    ],
    name: "getCurrentTraderVolume",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int128",
        name: "_fPosition0",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fBalance0",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fTradeAmount",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fTargetLeverage",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fPrice",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fS2Mark",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fS3",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fS2",
        type: "int128",
      },
    ],
    name: "getDepositAmountForLvgPosition",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "int128",
        name: "_fAmount",
        type: "int128",
      },
      {
        internalType: "uint16",
        name: "_leverageTDR",
        type: "uint16",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
    ],
    name: "getExchangeFeePrdMkts",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint32",
        name: "_brokerDesignation",
        type: "uint32",
      },
    ],
    name: "getFeeForBrokerDesignation",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "brokerAddr",
        type: "address",
      },
    ],
    name: "getFeeForBrokerStake",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_brokerAddr",
        type: "address",
      },
    ],
    name: "getFeeForBrokerVolume",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "traderAddr",
        type: "address",
      },
    ],
    name: "getFeeForTraderStake",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
    ],
    name: "getFeeForTraderVolume",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
    ],
    name: "getLastPerpetualBaseToUSDConversion",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "int128[2]",
        name: "_fIndexPrice",
        type: "int128[2]",
      },
    ],
    name: "getLiquidatableAccounts",
    outputs: [
      {
        internalType: "address[]",
        name: "unsafeAccounts",
        type: "address[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
    ],
    name: "getLiquidityPool",
    outputs: [
      {
        components: [
          {
            internalType: "bool",
            name: "isRunning",
            type: "bool",
          },
          {
            internalType: "uint8",
            name: "iPerpetualCount",
            type: "uint8",
          },
          {
            internalType: "uint8",
            name: "id",
            type: "uint8",
          },
          {
            internalType: "int32",
            name: "fCeilPnLShare",
            type: "int32",
          },
          {
            internalType: "uint8",
            name: "marginTokenDecimals",
            type: "uint8",
          },
          {
            internalType: "uint16",
            name: "iTargetPoolSizeUpdateTime",
            type: "uint16",
          },
          {
            internalType: "address",
            name: "marginTokenAddress",
            type: "address",
          },
          {
            internalType: "uint64",
            name: "prevAnchor",
            type: "uint64",
          },
          {
            internalType: "int128",
            name: "fRedemptionRate",
            type: "int128",
          },
          {
            internalType: "address",
            name: "shareTokenAddress",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fPnLparticipantsCashCC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTargetAMMFundSize",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fDefaultFundCashCC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTargetDFSize",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fBrokerCollateralLotSize",
            type: "int128",
          },
          {
            internalType: "uint128",
            name: "prevTokenAmount",
            type: "uint128",
          },
          {
            internalType: "uint128",
            name: "nextTokenAmount",
            type: "uint128",
          },
          {
            internalType: "uint128",
            name: "totalSupplyShareToken",
            type: "uint128",
          },
          {
            internalType: "int128",
            name: "fBrokerFundCashCC",
            type: "int128",
          },
        ],
        internalType: "struct PerpStorage.LiquidityPoolData",
        name: "",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolIdFrom",
        type: "uint8",
      },
      {
        internalType: "uint8",
        name: "_poolIdTo",
        type: "uint8",
      },
    ],
    name: "getLiquidityPools",
    outputs: [
      {
        components: [
          {
            internalType: "bool",
            name: "isRunning",
            type: "bool",
          },
          {
            internalType: "uint8",
            name: "iPerpetualCount",
            type: "uint8",
          },
          {
            internalType: "uint8",
            name: "id",
            type: "uint8",
          },
          {
            internalType: "int32",
            name: "fCeilPnLShare",
            type: "int32",
          },
          {
            internalType: "uint8",
            name: "marginTokenDecimals",
            type: "uint8",
          },
          {
            internalType: "uint16",
            name: "iTargetPoolSizeUpdateTime",
            type: "uint16",
          },
          {
            internalType: "address",
            name: "marginTokenAddress",
            type: "address",
          },
          {
            internalType: "uint64",
            name: "prevAnchor",
            type: "uint64",
          },
          {
            internalType: "int128",
            name: "fRedemptionRate",
            type: "int128",
          },
          {
            internalType: "address",
            name: "shareTokenAddress",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fPnLparticipantsCashCC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTargetAMMFundSize",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fDefaultFundCashCC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTargetDFSize",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fBrokerCollateralLotSize",
            type: "int128",
          },
          {
            internalType: "uint128",
            name: "prevTokenAmount",
            type: "uint128",
          },
          {
            internalType: "uint128",
            name: "nextTokenAmount",
            type: "uint128",
          },
          {
            internalType: "uint128",
            name: "totalSupplyShareToken",
            type: "uint128",
          },
          {
            internalType: "int128",
            name: "fBrokerFundCashCC",
            type: "int128",
          },
        ],
        internalType: "struct PerpStorage.LiquidityPoolData[]",
        name: "",
        type: "tuple[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddress",
        type: "address",
      },
    ],
    name: "getMarginAccount",
    outputs: [
      {
        components: [
          {
            internalType: "int128",
            name: "fLockedInValueQC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fCashCC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fPositionBC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fUnitAccumulatedFundingStart",
            type: "int128",
          },
        ],
        internalType: "struct PerpStorage.MarginAccount",
        name: "",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24[]",
        name: "_perpetualIds",
        type: "uint24[]",
      },
      {
        internalType: "address",
        name: "_traderAddress",
        type: "address",
      },
    ],
    name: "getMarginAccounts",
    outputs: [
      {
        components: [
          {
            internalType: "int128",
            name: "fLockedInValueQC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fCashCC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fPositionBC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fUnitAccumulatedFundingStart",
            type: "int128",
          },
        ],
        internalType: "struct PerpStorage.MarginAccount[]",
        name: "",
        type: "tuple[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "int128",
        name: "_fCurrentTraderPos",
        type: "int128",
      },
      {
        internalType: "bool",
        name: "_isBuy",
        type: "bool",
      },
    ],
    name: "getMaxSignedOpenTradeSizeForPos",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "int128[2]",
        name: "_fIndexPrice",
        type: "int128[2]",
      },
    ],
    name: "getNextLiquidatableTrader",
    outputs: [
      {
        internalType: "address",
        name: "traderAddr",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "getOracleFactory",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes4[2]",
        name: "_baseQuote",
        type: "bytes4[2]",
      },
    ],
    name: "getOraclePrice",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
      {
        internalType: "uint64",
        name: "",
        type: "uint64",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "getOracleUpdateTime",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "getOrderBookAddress",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "getOrderBookFactoryAddress",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "getPerpetual",
    outputs: [
      {
        components: [
          {
            internalType: "uint8",
            name: "poolId",
            type: "uint8",
          },
          {
            internalType: "uint24",
            name: "id",
            type: "uint24",
          },
          {
            internalType: "int32",
            name: "fInitialMarginRate",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fSigma2",
            type: "int32",
          },
          {
            internalType: "uint32",
            name: "iLastFundingTime",
            type: "uint32",
          },
          {
            internalType: "int32",
            name: "fDFCoverNRate",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fMaintenanceMarginRate",
            type: "int32",
          },
          {
            internalType: "enum PerpStorage.PerpetualState",
            name: "state",
            type: "uint8",
          },
          {
            internalType: "enum AMMPerpLogic.CollateralCurrency",
            name: "eCollateralCurrency",
            type: "uint8",
          },
          {
            internalType: "bytes4",
            name: "S2BaseCCY",
            type: "bytes4",
          },
          {
            internalType: "bytes4",
            name: "S2QuoteCCY",
            type: "bytes4",
          },
          {
            internalType: "uint16",
            name: "incentiveSpreadTbps",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "minimalSpreadBps",
            type: "uint16",
          },
          {
            internalType: "bytes4",
            name: "S3BaseCCY",
            type: "bytes4",
          },
          {
            internalType: "bytes4",
            name: "S3QuoteCCY",
            type: "bytes4",
          },
          {
            internalType: "int32",
            name: "fSigma3",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fRho23",
            type: "int32",
          },
          {
            internalType: "uint16",
            name: "liquidationPenaltyRateTbps",
            type: "uint16",
          },
          {
            components: [
              {
                internalType: "int128",
                name: "fPrice",
                type: "int128",
              },
              {
                internalType: "uint64",
                name: "time",
                type: "uint64",
              },
            ],
            internalType: "struct PerpStorage.PriceTimeData",
            name: "currentMarkPremiumRate",
            type: "tuple",
          },
          {
            internalType: "int128",
            name: "premiumRatesEMA",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fUnitAccumulatedFunding",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fOpenInterest",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTargetAMMFundSize",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fCurrentTraderExposureEMA",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fCurrentFundingRate",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLotSizeBC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fReferralRebateCC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTargetDFSize",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fkStar",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fAMMTargetDD",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "perpFlags",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fMinimalTraderExposureEMA",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fMinimalAMMExposureEMA",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSettlementS3PriceData",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSettlementS2PriceData",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fParams",
            type: "int128",
          },
          {
            internalType: "int32",
            name: "fMarkPriceEMALambda",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fFundingRateClamp",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fMaximalTradeSizeBumpUp",
            type: "int32",
          },
          {
            internalType: "uint32",
            name: "iLastTargetPoolSizeTime",
            type: "uint32",
          },
          {
            internalType: "int128[2]",
            name: "fStressReturnS3",
            type: "int128[2]",
          },
          {
            internalType: "int128[2]",
            name: "fDFLambda",
            type: "int128[2]",
          },
          {
            internalType: "int128[2]",
            name: "fCurrentAMMExposureEMA",
            type: "int128[2]",
          },
          {
            internalType: "int128[2]",
            name: "fStressReturnS2",
            type: "int128[2]",
          },
        ],
        internalType: "struct PerpStorage.PerpetualData",
        name: "",
        type: "tuple",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
    ],
    name: "getPerpetualCountInPool",
    outputs: [
      {
        internalType: "uint8",
        name: "",
        type: "uint8",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "uint8",
        name: "_perpetualIndex",
        type: "uint8",
      },
    ],
    name: "getPerpetualId",
    outputs: [
      {
        internalType: "uint24",
        name: "",
        type: "uint24",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24[]",
        name: "perpetualIds",
        type: "uint24[]",
      },
    ],
    name: "getPerpetualStaticInfo",
    outputs: [
      {
        components: [
          {
            internalType: "uint24",
            name: "id",
            type: "uint24",
          },
          {
            internalType: "address",
            name: "limitOrderBookAddr",
            type: "address",
          },
          {
            internalType: "int32",
            name: "fInitialMarginRate",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fMaintenanceMarginRate",
            type: "int32",
          },
          {
            internalType: "uint8",
            name: "perpetualState",
            type: "uint8",
          },
          {
            internalType: "enum AMMPerpLogic.CollateralCurrency",
            name: "collCurrencyType",
            type: "uint8",
          },
          {
            internalType: "bytes4",
            name: "S2BaseCCY",
            type: "bytes4",
          },
          {
            internalType: "bytes4",
            name: "S2QuoteCCY",
            type: "bytes4",
          },
          {
            internalType: "bytes4",
            name: "S3BaseCCY",
            type: "bytes4",
          },
          {
            internalType: "bytes4",
            name: "S3QuoteCCY",
            type: "bytes4",
          },
          {
            internalType: "int128",
            name: "fLotSizeBC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fReferralRebateCC",
            type: "int128",
          },
          {
            internalType: "bytes32[]",
            name: "priceIds",
            type: "bytes32[]",
          },
          {
            internalType: "bool[]",
            name: "isPyth",
            type: "bool[]",
          },
          {
            internalType: "int128",
            name: "perpFlags",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fAMMTargetDD",
            type: "int128",
          },
        ],
        internalType: "struct IPerpetualInfo.PerpetualStaticInfo[]",
        name: "",
        type: "tuple[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24[]",
        name: "perpetualIds",
        type: "uint24[]",
      },
    ],
    name: "getPerpetuals",
    outputs: [
      {
        components: [
          {
            internalType: "uint8",
            name: "poolId",
            type: "uint8",
          },
          {
            internalType: "uint24",
            name: "id",
            type: "uint24",
          },
          {
            internalType: "int32",
            name: "fInitialMarginRate",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fSigma2",
            type: "int32",
          },
          {
            internalType: "uint32",
            name: "iLastFundingTime",
            type: "uint32",
          },
          {
            internalType: "int32",
            name: "fDFCoverNRate",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fMaintenanceMarginRate",
            type: "int32",
          },
          {
            internalType: "enum PerpStorage.PerpetualState",
            name: "state",
            type: "uint8",
          },
          {
            internalType: "enum AMMPerpLogic.CollateralCurrency",
            name: "eCollateralCurrency",
            type: "uint8",
          },
          {
            internalType: "bytes4",
            name: "S2BaseCCY",
            type: "bytes4",
          },
          {
            internalType: "bytes4",
            name: "S2QuoteCCY",
            type: "bytes4",
          },
          {
            internalType: "uint16",
            name: "incentiveSpreadTbps",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "minimalSpreadBps",
            type: "uint16",
          },
          {
            internalType: "bytes4",
            name: "S3BaseCCY",
            type: "bytes4",
          },
          {
            internalType: "bytes4",
            name: "S3QuoteCCY",
            type: "bytes4",
          },
          {
            internalType: "int32",
            name: "fSigma3",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fRho23",
            type: "int32",
          },
          {
            internalType: "uint16",
            name: "liquidationPenaltyRateTbps",
            type: "uint16",
          },
          {
            components: [
              {
                internalType: "int128",
                name: "fPrice",
                type: "int128",
              },
              {
                internalType: "uint64",
                name: "time",
                type: "uint64",
              },
            ],
            internalType: "struct PerpStorage.PriceTimeData",
            name: "currentMarkPremiumRate",
            type: "tuple",
          },
          {
            internalType: "int128",
            name: "premiumRatesEMA",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fUnitAccumulatedFunding",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fOpenInterest",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTargetAMMFundSize",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fCurrentTraderExposureEMA",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fCurrentFundingRate",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLotSizeBC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fReferralRebateCC",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTargetDFSize",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fkStar",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fAMMTargetDD",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "perpFlags",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fMinimalTraderExposureEMA",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fMinimalAMMExposureEMA",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSettlementS3PriceData",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSettlementS2PriceData",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fParams",
            type: "int128",
          },
          {
            internalType: "int32",
            name: "fMarkPriceEMALambda",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fFundingRateClamp",
            type: "int32",
          },
          {
            internalType: "int32",
            name: "fMaximalTradeSizeBumpUp",
            type: "int32",
          },
          {
            internalType: "uint32",
            name: "iLastTargetPoolSizeTime",
            type: "uint32",
          },
          {
            internalType: "int128[2]",
            name: "fStressReturnS3",
            type: "int128[2]",
          },
          {
            internalType: "int128[2]",
            name: "fDFLambda",
            type: "int128[2]",
          },
          {
            internalType: "int128[2]",
            name: "fCurrentAMMExposureEMA",
            type: "int128[2]",
          },
          {
            internalType: "int128[2]",
            name: "fStressReturnS2",
            type: "int128[2]",
          },
        ],
        internalType: "struct PerpStorage.PerpetualData[]",
        name: "",
        type: "tuple[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "getPoolCount",
    outputs: [
      {
        internalType: "uint8",
        name: "",
        type: "uint8",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "getPoolIdByPerpetualId",
    outputs: [
      {
        internalType: "uint8",
        name: "",
        type: "uint8",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolFromIdx",
        type: "uint8",
      },
      {
        internalType: "uint8",
        name: "_poolToIdx",
        type: "uint8",
      },
    ],
    name: "getPoolStaticInfo",
    outputs: [
      {
        internalType: "uint24[][]",
        name: "",
        type: "uint24[][]",
      },
      {
        internalType: "address[]",
        name: "",
        type: "address[]",
      },
      {
        internalType: "address[]",
        name: "",
        type: "address[]",
      },
      {
        internalType: "address",
        name: "_oracleFactoryAddress",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "getPriceInfo",
    outputs: [
      {
        internalType: "bytes32[]",
        name: "",
        type: "bytes32[]",
      },
      {
        internalType: "bool[]",
        name: "",
        type: "bool[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "uint256",
        name: "start",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "count",
        type: "uint256",
      },
    ],
    name: "getSettleableAccounts",
    outputs: [
      {
        internalType: "address[]",
        name: "",
        type: "address[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "getShareTokenFactory",
    outputs: [
      {
        internalType: "contract IShareTokenFactory",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
    ],
    name: "getShareTokenPriceD18",
    outputs: [
      {
        internalType: "uint256",
        name: "price",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int128",
        name: "_fK2",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fL1",
        type: "int128",
      },
      {
        components: [
          {
            internalType: "int128",
            name: "fIndexPriceS2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fIndexPriceS3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fRho23",
            type: "int128",
          },
        ],
        internalType: "struct AMMPerpLogic.MarketVariables",
        name: "_mktVars",
        type: "tuple",
      },
      {
        internalType: "int128",
        name: "_fTargetDD",
        type: "int128",
      },
    ],
    name: "getTargetCollateralM1",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int128",
        name: "_fK2",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fL1",
        type: "int128",
      },
      {
        components: [
          {
            internalType: "int128",
            name: "fIndexPriceS2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fIndexPriceS3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fRho23",
            type: "int128",
          },
        ],
        internalType: "struct AMMPerpLogic.MarketVariables",
        name: "_mktVars",
        type: "tuple",
      },
      {
        internalType: "int128",
        name: "_fTargetDD",
        type: "int128",
      },
    ],
    name: "getTargetCollateralM2",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int128",
        name: "_fK2",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fL1",
        type: "int128",
      },
      {
        components: [
          {
            internalType: "int128",
            name: "fIndexPriceS2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fIndexPriceS3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma2",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fSigma3",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fRho23",
            type: "int128",
          },
        ],
        internalType: "struct AMMPerpLogic.MarketVariables",
        name: "_mktVars",
        type: "tuple",
      },
      {
        internalType: "int128",
        name: "_fTargetDD",
        type: "int128",
      },
    ],
    name: "getTargetCollateralM3",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "uint256",
        name: "_shareAmount",
        type: "uint256",
      },
    ],
    name: "getTokenAmountToReturn",
    outputs: [
      {
        internalType: "uint256",
        name: "",
        type: "uint256",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddress",
        type: "address",
      },
      {
        internalType: "int128[2]",
        name: "_fIndexPrice",
        type: "int128[2]",
      },
    ],
    name: "getTraderState",
    outputs: [
      {
        internalType: "int128[11]",
        name: "",
        type: "int128[11]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [],
    name: "getTreasuryAddress",
    outputs: [
      {
        internalType: "address",
        name: "",
        type: "address",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "poolId",
        type: "uint8",
      },
      {
        internalType: "uint256",
        name: "_fromIdx",
        type: "uint256",
      },
      {
        internalType: "uint256",
        name: "numRequests",
        type: "uint256",
      },
    ],
    name: "getWithdrawRequests",
    outputs: [
      {
        components: [
          {
            internalType: "address",
            name: "lp",
            type: "address",
          },
          {
            internalType: "uint256",
            name: "shareTokens",
            type: "uint256",
          },
          {
            internalType: "uint64",
            name: "withdrawTimestamp",
            type: "uint64",
          },
        ],
        internalType: "struct PerpStorage.WithdrawRequest[]",
        name: "",
        type: "tuple[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_iPoolIdx",
        type: "uint8",
      },
      {
        internalType: "int128",
        name: "_fAmount",
        type: "int128",
      },
    ],
    name: "increasePoolCash",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddress",
        type: "address",
      },
    ],
    name: "isActiveAccount",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_trader",
        type: "address",
      },
      {
        internalType: "address",
        name: "_delegate",
        type: "address",
      },
    ],
    name: "isDelegate",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes4",
        name: "_baseCurrency",
        type: "bytes4",
      },
      {
        internalType: "bytes4",
        name: "_quoteCurrency",
        type: "bytes4",
      },
    ],
    name: "isMarketClosed",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes32",
        name: "digest",
        type: "bytes32",
      },
    ],
    name: "isOrderCanceled",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bytes32",
        name: "digest",
        type: "bytes32",
      },
    ],
    name: "isOrderExecuted",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "isPerpMarketClosed",
    outputs: [
      {
        internalType: "bool",
        name: "isClosed",
        type: "bool",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualIndex",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_liquidatorAddr",
        type: "address",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "bytes[]",
        name: "_updateData",
        type: "bytes[]",
      },
      {
        internalType: "uint64[]",
        name: "_publishTimes",
        type: "uint64[]",
      },
    ],
    name: "liquidateByAMM",
    outputs: [
      {
        internalType: "int128",
        name: "liquidatedAmount",
        type: "int128",
      },
    ],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "bool",
        name: "_pauseOn",
        type: "bool",
      },
    ],
    name: "pauseLiquidityProvision",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int128",
        name: "_fPx",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fm",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fTradeAmt",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fMgnRate",
        type: "int128",
      },
    ],
    name: "prdMktsLvgFee",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "uint16",
            name: "leverageTDR",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "brokerFeeTbps",
            type: "uint16",
          },
          {
            internalType: "uint24",
            name: "iPerpetualId",
            type: "uint24",
          },
          {
            internalType: "address",
            name: "traderAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "executionTimestamp",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "brokerAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "submittedTimestamp",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "flags",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "iDeadline",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "executorAddr",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fAmount",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLimitPrice",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTriggerPrice",
            type: "int128",
          },
          {
            internalType: "bytes",
            name: "brokerSignature",
            type: "bytes",
          },
        ],
        internalType: "struct IPerpetualOrder.Order",
        name: "_order",
        type: "tuple",
      },
    ],
    name: "preTrade",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "int128",
        name: "_amount",
        type: "int128",
      },
      {
        internalType: "uint64",
        name: "_params",
        type: "uint64",
      },
    ],
    name: "priceImpact",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "address",
        name: "_brokerAddr",
        type: "address",
      },
    ],
    name: "queryExchangeFee",
    outputs: [
      {
        internalType: "uint16",
        name: "",
        type: "uint16",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24[]",
        name: "_perpetualIds",
        type: "uint24[]",
      },
      {
        internalType: "int128[]",
        name: "_idxPriceDataPairs",
        type: "int128[]",
      },
    ],
    name: "queryMidPrices",
    outputs: [
      {
        internalType: "int128[]",
        name: "",
        type: "int128[]",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "int128",
        name: "_fTradeAmountBC",
        type: "int128",
      },
      {
        internalType: "int128[2]",
        name: "_fIndexPrice",
        type: "int128[2]",
      },
      {
        internalType: "uint16",
        name: "_confTbps",
        type: "uint16",
      },
      {
        internalType: "uint64",
        name: "_params",
        type: "uint64",
      },
    ],
    name: "queryPerpetualPrice",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "view",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
    ],
    name: "rebalance",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "int128",
        name: "_fAmountToWithdraw",
        type: "int128",
      },
    ],
    name: "reduceMarginCollateral",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
    ],
    name: "resetMarkPremium",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_liqPoolID",
        type: "uint8",
      },
    ],
    name: "runLiquidityPool",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_AMMPerpLogic",
        type: "address",
      },
    ],
    name: "setAMMPerpLogic",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_delay",
        type: "uint8",
      },
    ],
    name: "setBlockDelay",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256[]",
        name: "_tiers",
        type: "uint256[]",
      },
      {
        internalType: "uint16[]",
        name: "_feesTbps",
        type: "uint16[]",
      },
    ],
    name: "setBrokerTiers",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256[]",
        name: "_tiers",
        type: "uint256[]",
      },
      {
        internalType: "uint16[]",
        name: "_feesTbps",
        type: "uint16[]",
      },
    ],
    name: "setBrokerVolumeTiers",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "delegate",
        type: "address",
      },
      {
        internalType: "uint256",
        name: "index",
        type: "uint256",
      },
    ],
    name: "setDelegate",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
    ],
    name: "setEmergencyState",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint32[]",
        name: "_designations",
        type: "uint32[]",
      },
      {
        internalType: "uint16[]",
        name: "_fees",
        type: "uint16[]",
      },
    ],
    name: "setFeesForDesignation",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_brokerAddr",
        type: "address",
      },
      {
        internalType: "uint16",
        name: "_feeTbps",
        type: "uint16",
      },
    ],
    name: "setInitialVolumeForFee",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
    ],
    name: "setNormalState",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_oracleFactory",
        type: "address",
      },
    ],
    name: "setOracleFactory",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_oracleAddr",
        type: "address",
      },
    ],
    name: "setOracleFactoryForPerpetual",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_orderBookFactory",
        type: "address",
      },
    ],
    name: "setOrderBookFactory",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "int128[7]",
        name: "_baseParams",
        type: "int128[7]",
      },
    ],
    name: "setPerpetualBaseParams",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "bytes4[2]",
        name: "_baseQuoteS2",
        type: "bytes4[2]",
      },
      {
        internalType: "bytes4[2]",
        name: "_baseQuoteS3",
        type: "bytes4[2]",
      },
    ],
    name: "setPerpetualOracles",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "string",
        name: "_varName",
        type: "string",
      },
      {
        internalType: "int128",
        name: "_value",
        type: "int128",
      },
    ],
    name: "setPerpetualParam",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "string",
        name: "_name",
        type: "string",
      },
      {
        internalType: "int128",
        name: "_value1",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_value2",
        type: "int128",
      },
    ],
    name: "setPerpetualParamPair",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_shareTokenFactory",
        type: "address",
      },
    ],
    name: "setPerpetualPoolFactory",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "int128[5]",
        name: "_underlyingRiskParams",
        type: "int128[5]",
      },
      {
        internalType: "int128[12]",
        name: "_defaultFundRiskParams",
        type: "int128[12]",
      },
    ],
    name: "setPerpetualRiskParams",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "string",
        name: "_name",
        type: "string",
      },
      {
        internalType: "int128",
        name: "_value",
        type: "int128",
      },
    ],
    name: "setPoolParam",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256[]",
        name: "_tiers",
        type: "uint256[]",
      },
      {
        internalType: "uint16[]",
        name: "_feesTbps",
        type: "uint16[]",
      },
    ],
    name: "setTraderTiers",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint256[]",
        name: "_tiers",
        type: "uint256[]",
      },
      {
        internalType: "uint16[]",
        name: "_feesTbps",
        type: "uint16[]",
      },
    ],
    name: "setTraderVolumeTiers",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "_treasury",
        type: "address",
      },
    ],
    name: "setTreasury",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "address",
        name: "tokenAddr",
        type: "address",
      },
    ],
    name: "setUtilityTokenAddr",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualID",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
    ],
    name: "settle",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_id",
        type: "uint8",
      },
    ],
    name: "settleNextTraderInPool",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualID",
        type: "uint24",
      },
      {
        internalType: "uint256",
        name: "_bulkSize",
        type: "uint256",
      },
    ],
    name: "settleTraders",
    outputs: [
      {
        internalType: "uint256",
        name: "_settled",
        type: "uint256",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint16",
        name: "fee",
        type: "uint16",
      },
    ],
    name: "splitProtocolFee",
    outputs: [
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "",
        type: "int128",
      },
    ],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [],
    name: "sponsor",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "uint16",
            name: "leverageTDR",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "brokerFeeTbps",
            type: "uint16",
          },
          {
            internalType: "uint24",
            name: "iPerpetualId",
            type: "uint24",
          },
          {
            internalType: "address",
            name: "traderAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "executionTimestamp",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "brokerAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "submittedTimestamp",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "flags",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "iDeadline",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "executorAddr",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fAmount",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLimitPrice",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTriggerPrice",
            type: "int128",
          },
          {
            internalType: "bytes",
            name: "brokerSignature",
            type: "bytes",
          },
        ],
        internalType: "struct IPerpetualOrder.Order",
        name: "_order",
        type: "tuple",
      },
    ],
    name: "testTradeEvent",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
    ],
    name: "togglePerpEmergencyState",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        components: [
          {
            internalType: "uint16",
            name: "leverageTDR",
            type: "uint16",
          },
          {
            internalType: "uint16",
            name: "brokerFeeTbps",
            type: "uint16",
          },
          {
            internalType: "uint24",
            name: "iPerpetualId",
            type: "uint24",
          },
          {
            internalType: "address",
            name: "traderAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "executionTimestamp",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "brokerAddr",
            type: "address",
          },
          {
            internalType: "uint32",
            name: "submittedTimestamp",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "flags",
            type: "uint32",
          },
          {
            internalType: "uint32",
            name: "iDeadline",
            type: "uint32",
          },
          {
            internalType: "address",
            name: "executorAddr",
            type: "address",
          },
          {
            internalType: "int128",
            name: "fAmount",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fLimitPrice",
            type: "int128",
          },
          {
            internalType: "int128",
            name: "fTriggerPrice",
            type: "int128",
          },
          {
            internalType: "bytes",
            name: "brokerSignature",
            type: "bytes",
          },
        ],
        internalType: "struct IPerpetualOrder.Order",
        name: "_order",
        type: "tuple",
      },
      {
        internalType: "address",
        name: "_executor",
        type: "address",
      },
    ],
    name: "tradeViaOrderBook",
    outputs: [
      {
        internalType: "bool",
        name: "",
        type: "bool",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_transferToAddr",
        type: "address",
      },
      {
        internalType: "uint32",
        name: "_lots",
        type: "uint32",
      },
    ],
    name: "transferBrokerLots",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "address",
        name: "_transferToAddr",
        type: "address",
      },
    ],
    name: "transferBrokerOwnership",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "int128",
        name: "_fAmount",
        type: "int128",
      },
    ],
    name: "transferEarningsToTreasury",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [],
    name: "transferValueToTreasury",
    outputs: [
      {
        internalType: "bool",
        name: "success",
        type: "bool",
      },
    ],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
    ],
    name: "updateAMMTargetFundSize",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
    ],
    name: "updateDefaultFundTargetSize",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
    ],
    name: "updateFundingAndPricesAfter",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "bool",
        name: "_revertIfClosed",
        type: "bool",
      },
    ],
    name: "updateFundingAndPricesBefore",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_perpetualId",
        type: "uint24",
      },
      {
        internalType: "bytes[]",
        name: "_updateData",
        type: "bytes[]",
      },
      {
        internalType: "uint64[]",
        name: "_publishTimes",
        type: "uint64[]",
      },
      {
        internalType: "uint256",
        name: "_maxAcceptableFeedAge",
        type: "uint256",
      },
    ],
    name: "updatePriceFeeds",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "address",
        name: "_brokerAddr",
        type: "address",
      },
      {
        internalType: "int128",
        name: "_tradeAmountBC",
        type: "int128",
      },
    ],
    name: "updateVolumeEMAOnNewTrade",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "bool",
        name: "_isLong",
        type: "bool",
      },
      {
        internalType: "int128",
        name: "_fMarkPrice",
        type: "int128",
      },
      {
        internalType: "int128",
        name: "_fTriggerPrice",
        type: "int128",
      },
    ],
    name: "validateStopPrice",
    outputs: [],
    stateMutability: "pure",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "int128",
        name: "_fAmount",
        type: "int128",
      },
      {
        internalType: "bytes[]",
        name: "_updateData",
        type: "bytes[]",
      },
      {
        internalType: "uint64[]",
        name: "_publishTimes",
        type: "uint64[]",
      },
    ],
    name: "withdraw",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
      {
        internalType: "bytes[]",
        name: "_updateData",
        type: "bytes[]",
      },
      {
        internalType: "uint64[]",
        name: "_publishTimes",
        type: "uint64[]",
      },
    ],
    name: "withdrawAll",
    outputs: [],
    stateMutability: "payable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint24",
        name: "_iPerpetualId",
        type: "uint24",
      },
      {
        internalType: "address",
        name: "_traderAddr",
        type: "address",
      },
    ],
    name: "withdrawDepositFromMarginAccount",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_poolId",
        type: "uint8",
      },
      {
        internalType: "int128",
        name: "_fAmount",
        type: "int128",
      },
    ],
    name: "withdrawFromDefaultFund",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
  {
    inputs: [
      {
        internalType: "uint8",
        name: "_iPoolIndex",
        type: "uint8",
      },
      {
        internalType: "uint256",
        name: "_shareAmount",
        type: "uint256",
      },
    ],
    name: "withdrawLiquidity",
    outputs: [],
    stateMutability: "nonpayable",
    type: "function",
  },
] as const;

export class IPerpetualManager__factory {
  static readonly abi = _abi;
  static createInterface(): IPerpetualManagerInterface {
    return new Interface(_abi) as IPerpetualManagerInterface;
  }
  static connect(
    address: string,
    runner?: ContractRunner | null
  ): IPerpetualManager {
    return new Contract(address, _abi, runner) as unknown as IPerpetualManager;
  }
}
