[
    {
        "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": "fTotalMarginBalance",
                        "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": "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": "minimalSpreadTbps",
                        "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": "fTotalMarginBalance",
                        "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": [
            {
                "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": "uint8",
                "name": "_iPoolIndex",
                "type": "uint8"
            }
        ],
        "name": "updateDefaultFundTargetSizeRandom",
        "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"
    }
]
