/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
import type {
  BaseContract,
  BigNumberish,
  BytesLike,
  FunctionFragment,
  Result,
  Interface,
  EventFragment,
  AddressLike,
  ContractRunner,
  ContractMethod,
  Listener,
} from "ethers";
import type {
  TypedContractEvent,
  TypedDeferredTopicFilter,
  TypedEventLog,
  TypedLogDescription,
  TypedListener,
  TypedContractMethod,
} from "./common";

export declare namespace IPerpetualOrder {
  export type OrderStruct = {
    leverageTDR: BigNumberish;
    brokerFeeTbps: BigNumberish;
    iPerpetualId: BigNumberish;
    traderAddr: AddressLike;
    executionTimestamp: BigNumberish;
    brokerAddr: AddressLike;
    submittedTimestamp: BigNumberish;
    flags: BigNumberish;
    iDeadline: BigNumberish;
    executorAddr: AddressLike;
    fAmount: BigNumberish;
    fLimitPrice: BigNumberish;
    fTriggerPrice: BigNumberish;
    brokerSignature: BytesLike;
  };

  export type OrderStructOutput = [
    leverageTDR: bigint,
    brokerFeeTbps: bigint,
    iPerpetualId: bigint,
    traderAddr: string,
    executionTimestamp: bigint,
    brokerAddr: string,
    submittedTimestamp: bigint,
    flags: bigint,
    iDeadline: bigint,
    executorAddr: string,
    fAmount: bigint,
    fLimitPrice: bigint,
    fTriggerPrice: bigint,
    brokerSignature: string
  ] & {
    leverageTDR: bigint;
    brokerFeeTbps: bigint;
    iPerpetualId: bigint;
    traderAddr: string;
    executionTimestamp: bigint;
    brokerAddr: string;
    submittedTimestamp: bigint;
    flags: bigint;
    iDeadline: bigint;
    executorAddr: string;
    fAmount: bigint;
    fLimitPrice: bigint;
    fTriggerPrice: bigint;
    brokerSignature: string;
  };
}

export declare namespace AMMPerpLogic {
  export type AMMVariablesStruct = {
    fLockedValue1: BigNumberish;
    fPoolM1: BigNumberish;
    fPoolM2: BigNumberish;
    fPoolM3: BigNumberish;
    fAMM_K2: BigNumberish;
    fCurrentTraderExposureEMA: BigNumberish;
  };

  export type AMMVariablesStructOutput = [
    fLockedValue1: bigint,
    fPoolM1: bigint,
    fPoolM2: bigint,
    fPoolM3: bigint,
    fAMM_K2: bigint,
    fCurrentTraderExposureEMA: bigint
  ] & {
    fLockedValue1: bigint;
    fPoolM1: bigint;
    fPoolM2: bigint;
    fPoolM3: bigint;
    fAMM_K2: bigint;
    fCurrentTraderExposureEMA: bigint;
  };

  export type MarketVariablesStruct = {
    fIndexPriceS2: BigNumberish;
    fIndexPriceS3: BigNumberish;
    fSigma2: BigNumberish;
    fSigma3: BigNumberish;
    fRho23: BigNumberish;
  };

  export type MarketVariablesStructOutput = [
    fIndexPriceS2: bigint,
    fIndexPriceS3: bigint,
    fSigma2: bigint,
    fSigma3: bigint,
    fRho23: bigint
  ] & {
    fIndexPriceS2: bigint;
    fIndexPriceS3: bigint;
    fSigma2: bigint;
    fSigma3: bigint;
    fRho23: bigint;
  };
}

export declare namespace PerpStorage {
  export type LiquidityPoolDataStruct = {
    isRunning: boolean;
    iPerpetualCount: BigNumberish;
    id: BigNumberish;
    fCeilPnLShare: BigNumberish;
    marginTokenDecimals: BigNumberish;
    iTargetPoolSizeUpdateTime: BigNumberish;
    marginTokenAddress: AddressLike;
    prevAnchor: BigNumberish;
    fRedemptionRate: BigNumberish;
    shareTokenAddress: AddressLike;
    fPnLparticipantsCashCC: BigNumberish;
    fTargetAMMFundSize: BigNumberish;
    fDefaultFundCashCC: BigNumberish;
    fTargetDFSize: BigNumberish;
    fBrokerCollateralLotSize: BigNumberish;
    prevTokenAmount: BigNumberish;
    nextTokenAmount: BigNumberish;
    totalSupplyShareToken: BigNumberish;
    fBrokerFundCashCC: BigNumberish;
  };

  export type LiquidityPoolDataStructOutput = [
    isRunning: boolean,
    iPerpetualCount: bigint,
    id: bigint,
    fCeilPnLShare: bigint,
    marginTokenDecimals: bigint,
    iTargetPoolSizeUpdateTime: bigint,
    marginTokenAddress: string,
    prevAnchor: bigint,
    fRedemptionRate: bigint,
    shareTokenAddress: string,
    fPnLparticipantsCashCC: bigint,
    fTargetAMMFundSize: bigint,
    fDefaultFundCashCC: bigint,
    fTargetDFSize: bigint,
    fBrokerCollateralLotSize: bigint,
    prevTokenAmount: bigint,
    nextTokenAmount: bigint,
    totalSupplyShareToken: bigint,
    fBrokerFundCashCC: bigint
  ] & {
    isRunning: boolean;
    iPerpetualCount: bigint;
    id: bigint;
    fCeilPnLShare: bigint;
    marginTokenDecimals: bigint;
    iTargetPoolSizeUpdateTime: bigint;
    marginTokenAddress: string;
    prevAnchor: bigint;
    fRedemptionRate: bigint;
    shareTokenAddress: string;
    fPnLparticipantsCashCC: bigint;
    fTargetAMMFundSize: bigint;
    fDefaultFundCashCC: bigint;
    fTargetDFSize: bigint;
    fBrokerCollateralLotSize: bigint;
    prevTokenAmount: bigint;
    nextTokenAmount: bigint;
    totalSupplyShareToken: bigint;
    fBrokerFundCashCC: bigint;
  };

  export type MarginAccountStruct = {
    fLockedInValueQC: BigNumberish;
    fCashCC: BigNumberish;
    fPositionBC: BigNumberish;
    fUnitAccumulatedFundingStart: BigNumberish;
  };

  export type MarginAccountStructOutput = [
    fLockedInValueQC: bigint,
    fCashCC: bigint,
    fPositionBC: bigint,
    fUnitAccumulatedFundingStart: bigint
  ] & {
    fLockedInValueQC: bigint;
    fCashCC: bigint;
    fPositionBC: bigint;
    fUnitAccumulatedFundingStart: bigint;
  };

  export type PriceTimeDataStruct = {
    fPrice: BigNumberish;
    time: BigNumberish;
  };

  export type PriceTimeDataStructOutput = [fPrice: bigint, time: bigint] & {
    fPrice: bigint;
    time: bigint;
  };

  export type PerpetualDataStruct = {
    poolId: BigNumberish;
    id: BigNumberish;
    fInitialMarginRate: BigNumberish;
    fSigma2: BigNumberish;
    iLastFundingTime: BigNumberish;
    fDFCoverNRate: BigNumberish;
    fMaintenanceMarginRate: BigNumberish;
    state: BigNumberish;
    eCollateralCurrency: BigNumberish;
    S2BaseCCY: BytesLike;
    S2QuoteCCY: BytesLike;
    incentiveSpreadTbps: BigNumberish;
    minimalSpreadBps: BigNumberish;
    S3BaseCCY: BytesLike;
    S3QuoteCCY: BytesLike;
    fSigma3: BigNumberish;
    fRho23: BigNumberish;
    liquidationPenaltyRateTbps: BigNumberish;
    currentMarkPremiumRate: PerpStorage.PriceTimeDataStruct;
    premiumRatesEMA: BigNumberish;
    fUnitAccumulatedFunding: BigNumberish;
    fOpenInterest: BigNumberish;
    fTargetAMMFundSize: BigNumberish;
    fCurrentTraderExposureEMA: BigNumberish;
    fCurrentFundingRate: BigNumberish;
    fLotSizeBC: BigNumberish;
    fReferralRebateCC: BigNumberish;
    fTargetDFSize: BigNumberish;
    fkStar: BigNumberish;
    fAMMTargetDD: BigNumberish;
    perpFlags: BigNumberish;
    fMinimalTraderExposureEMA: BigNumberish;
    fMinimalAMMExposureEMA: BigNumberish;
    fSettlementS3PriceData: BigNumberish;
    fSettlementS2PriceData: BigNumberish;
    fTotalMarginBalance: BigNumberish;
    fMarkPriceEMALambda: BigNumberish;
    fFundingRateClamp: BigNumberish;
    fMaximalTradeSizeBumpUp: BigNumberish;
    iLastTargetPoolSizeTime: BigNumberish;
    fStressReturnS3: [BigNumberish, BigNumberish];
    fDFLambda: [BigNumberish, BigNumberish];
    fCurrentAMMExposureEMA: [BigNumberish, BigNumberish];
    fStressReturnS2: [BigNumberish, BigNumberish];
  };

  export type PerpetualDataStructOutput = [
    poolId: bigint,
    id: bigint,
    fInitialMarginRate: bigint,
    fSigma2: bigint,
    iLastFundingTime: bigint,
    fDFCoverNRate: bigint,
    fMaintenanceMarginRate: bigint,
    state: bigint,
    eCollateralCurrency: bigint,
    S2BaseCCY: string,
    S2QuoteCCY: string,
    incentiveSpreadTbps: bigint,
    minimalSpreadBps: bigint,
    S3BaseCCY: string,
    S3QuoteCCY: string,
    fSigma3: bigint,
    fRho23: bigint,
    liquidationPenaltyRateTbps: bigint,
    currentMarkPremiumRate: PerpStorage.PriceTimeDataStructOutput,
    premiumRatesEMA: bigint,
    fUnitAccumulatedFunding: bigint,
    fOpenInterest: bigint,
    fTargetAMMFundSize: bigint,
    fCurrentTraderExposureEMA: bigint,
    fCurrentFundingRate: bigint,
    fLotSizeBC: bigint,
    fReferralRebateCC: bigint,
    fTargetDFSize: bigint,
    fkStar: bigint,
    fAMMTargetDD: bigint,
    perpFlags: bigint,
    fMinimalTraderExposureEMA: bigint,
    fMinimalAMMExposureEMA: bigint,
    fSettlementS3PriceData: bigint,
    fSettlementS2PriceData: bigint,
    fTotalMarginBalance: bigint,
    fMarkPriceEMALambda: bigint,
    fFundingRateClamp: bigint,
    fMaximalTradeSizeBumpUp: bigint,
    iLastTargetPoolSizeTime: bigint,
    fStressReturnS3: [bigint, bigint],
    fDFLambda: [bigint, bigint],
    fCurrentAMMExposureEMA: [bigint, bigint],
    fStressReturnS2: [bigint, bigint]
  ] & {
    poolId: bigint;
    id: bigint;
    fInitialMarginRate: bigint;
    fSigma2: bigint;
    iLastFundingTime: bigint;
    fDFCoverNRate: bigint;
    fMaintenanceMarginRate: bigint;
    state: bigint;
    eCollateralCurrency: bigint;
    S2BaseCCY: string;
    S2QuoteCCY: string;
    incentiveSpreadTbps: bigint;
    minimalSpreadBps: bigint;
    S3BaseCCY: string;
    S3QuoteCCY: string;
    fSigma3: bigint;
    fRho23: bigint;
    liquidationPenaltyRateTbps: bigint;
    currentMarkPremiumRate: PerpStorage.PriceTimeDataStructOutput;
    premiumRatesEMA: bigint;
    fUnitAccumulatedFunding: bigint;
    fOpenInterest: bigint;
    fTargetAMMFundSize: bigint;
    fCurrentTraderExposureEMA: bigint;
    fCurrentFundingRate: bigint;
    fLotSizeBC: bigint;
    fReferralRebateCC: bigint;
    fTargetDFSize: bigint;
    fkStar: bigint;
    fAMMTargetDD: bigint;
    perpFlags: bigint;
    fMinimalTraderExposureEMA: bigint;
    fMinimalAMMExposureEMA: bigint;
    fSettlementS3PriceData: bigint;
    fSettlementS2PriceData: bigint;
    fTotalMarginBalance: bigint;
    fMarkPriceEMALambda: bigint;
    fFundingRateClamp: bigint;
    fMaximalTradeSizeBumpUp: bigint;
    iLastTargetPoolSizeTime: bigint;
    fStressReturnS3: [bigint, bigint];
    fDFLambda: [bigint, bigint];
    fCurrentAMMExposureEMA: [bigint, bigint];
    fStressReturnS2: [bigint, bigint];
  };

  export type WithdrawRequestStruct = {
    lp: AddressLike;
    shareTokens: BigNumberish;
    withdrawTimestamp: BigNumberish;
  };

  export type WithdrawRequestStructOutput = [
    lp: string,
    shareTokens: bigint,
    withdrawTimestamp: bigint
  ] & { lp: string; shareTokens: bigint; withdrawTimestamp: bigint };
}

export declare namespace IPerpetualInfo {
  export type PerpetualStaticInfoStruct = {
    id: BigNumberish;
    limitOrderBookAddr: AddressLike;
    fInitialMarginRate: BigNumberish;
    fMaintenanceMarginRate: BigNumberish;
    perpetualState: BigNumberish;
    collCurrencyType: BigNumberish;
    S2BaseCCY: BytesLike;
    S2QuoteCCY: BytesLike;
    S3BaseCCY: BytesLike;
    S3QuoteCCY: BytesLike;
    fLotSizeBC: BigNumberish;
    fReferralRebateCC: BigNumberish;
    priceIds: BytesLike[];
    isPyth: boolean[];
    perpFlags: BigNumberish;
  };

  export type PerpetualStaticInfoStructOutput = [
    id: bigint,
    limitOrderBookAddr: string,
    fInitialMarginRate: bigint,
    fMaintenanceMarginRate: bigint,
    perpetualState: bigint,
    collCurrencyType: bigint,
    S2BaseCCY: string,
    S2QuoteCCY: string,
    S3BaseCCY: string,
    S3QuoteCCY: string,
    fLotSizeBC: bigint,
    fReferralRebateCC: bigint,
    priceIds: string[],
    isPyth: boolean[],
    perpFlags: bigint
  ] & {
    id: bigint;
    limitOrderBookAddr: string;
    fInitialMarginRate: bigint;
    fMaintenanceMarginRate: bigint;
    perpetualState: bigint;
    collCurrencyType: bigint;
    S2BaseCCY: string;
    S2QuoteCCY: string;
    S3BaseCCY: string;
    S3QuoteCCY: string;
    fLotSizeBC: bigint;
    fReferralRebateCC: bigint;
    priceIds: string[];
    isPyth: boolean[];
    perpFlags: bigint;
  };
}

export interface IPerpetualManagerInterface extends Interface {
  getFunction(
    nameOrSignature:
      | "activatePerpetual"
      | "addLiquidity"
      | "adjustSettlementPrice"
      | "calculateDefaultFundSize"
      | "calculatePerpetualPrice"
      | "calculateRiskNeutralPD"
      | "clearTradersInPool"
      | "countActivePerpAccounts"
      | "createLiquidityPool"
      | "createPerpetual"
      | "deactivatePerp"
      | "decodeUint16Float"
      | "decreasePoolCash"
      | "deposit"
      | "depositBrokerLots"
      | "depositMarginForOpeningTrade"
      | "depositToDefaultFund"
      | "determineExchangeFee"
      | "distributeFees"
      | "distributeFeesLiquidation"
      | "entropy"
      | "executeCancelOrder"
      | "executeLiquidityWithdrawal"
      | "executeTrade"
      | "getAMMPerpLogic"
      | "getAMMState"
      | "getActivePerpAccounts"
      | "getActivePerpAccountsByChunks"
      | "getBrokerDesignation"
      | "getBrokerInducedFee"
      | "getCollateralTokenAmountForPricing"
      | "getCurrentBrokerVolume"
      | "getCurrentTraderVolume"
      | "getDepositAmountForLvgPosition"
      | "getExchangeFeePrdMkts"
      | "getFeeForBrokerDesignation"
      | "getFeeForBrokerStake"
      | "getFeeForBrokerVolume"
      | "getFeeForTraderStake"
      | "getFeeForTraderVolume"
      | "getLastPerpetualBaseToUSDConversion"
      | "getLiquidatableAccounts"
      | "getLiquidityPool"
      | "getLiquidityPools"
      | "getMarginAccount"
      | "getMarginAccounts"
      | "getMaxSignedOpenTradeSizeForPos"
      | "getNextLiquidatableTrader"
      | "getOracleFactory"
      | "getOraclePrice"
      | "getOracleUpdateTime"
      | "getOrderBookAddress"
      | "getOrderBookFactoryAddress"
      | "getPerpetual"
      | "getPerpetualCountInPool"
      | "getPerpetualId"
      | "getPerpetualStaticInfo"
      | "getPerpetuals"
      | "getPoolCount"
      | "getPoolIdByPerpetualId"
      | "getPoolStaticInfo"
      | "getPriceInfo"
      | "getSettleableAccounts"
      | "getShareTokenFactory"
      | "getShareTokenPriceD18"
      | "getTargetCollateralM1"
      | "getTargetCollateralM2"
      | "getTargetCollateralM3"
      | "getTokenAmountToReturn"
      | "getTraderState"
      | "getTreasuryAddress"
      | "getWithdrawRequests"
      | "increasePoolCash"
      | "isActiveAccount"
      | "isDelegate"
      | "isMarketClosed"
      | "isOrderCanceled"
      | "isOrderExecuted"
      | "isPerpMarketClosed"
      | "liquidateByAMM"
      | "pauseLiquidityProvision"
      | "prdMktsLvgFee"
      | "preTrade"
      | "priceImpact"
      | "queryExchangeFee"
      | "queryMidPrices"
      | "queryPerpetualPrice"
      | "rebalance"
      | "reduceMarginCollateral"
      | "resetMarkPremium"
      | "runLiquidityPool"
      | "setAMMPerpLogic"
      | "setBlockDelay"
      | "setBrokerTiers"
      | "setBrokerVolumeTiers"
      | "setDelegate"
      | "setEmergencyState"
      | "setFeesForDesignation"
      | "setInitialVolumeForFee"
      | "setNormalState"
      | "setOracleFactory"
      | "setOracleFactoryForPerpetual"
      | "setOrderBookFactory"
      | "setPerpetualBaseParams"
      | "setPerpetualOracles"
      | "setPerpetualParam"
      | "setPerpetualParamPair"
      | "setPerpetualPoolFactory"
      | "setPerpetualRiskParams"
      | "setPoolParam"
      | "setTraderTiers"
      | "setTraderVolumeTiers"
      | "setTreasury"
      | "setUtilityTokenAddr"
      | "settle"
      | "settleNextTraderInPool"
      | "settleTraders"
      | "splitProtocolFee"
      | "togglePerpEmergencyState"
      | "tradeViaOrderBook"
      | "transferBrokerLots"
      | "transferBrokerOwnership"
      | "transferEarningsToTreasury"
      | "transferValueToTreasury"
      | "updateAMMTargetFundSize"
      | "updateDefaultFundTargetSize"
      | "updateDefaultFundTargetSizeRandom"
      | "updateFundingAndPricesAfter"
      | "updateFundingAndPricesBefore"
      | "updatePriceFeeds"
      | "updateVolumeEMAOnNewTrade"
      | "validateStopPrice"
      | "withdraw"
      | "withdrawAll"
      | "withdrawDepositFromMarginAccount"
      | "withdrawFromDefaultFund"
      | "withdrawLiquidity"
  ): FunctionFragment;

  getEvent(
    nameOrSignatureOrTopic:
      | "BrokerLotsTransferred"
      | "BrokerVolumeTransferred"
      | "Clear"
      | "DistributeFees"
      | "Liquidate"
      | "LiquidityAdded"
      | "LiquidityPoolCreated"
      | "LiquidityProvisionPaused"
      | "LiquidityRemoved"
      | "LiquidityWithdrawalInitiated"
      | "PerpetualCreated"
      | "PerpetualLimitOrderCancelled"
      | "RunLiquidityPool"
      | "SetBlockDelay"
      | "SetBrokerDesignations"
      | "SetBrokerTiers"
      | "SetBrokerVolumeTiers"
      | "SetClearedState"
      | "SetDelegate"
      | "SetEmergencyState"
      | "SetNormalState"
      | "SetOracles"
      | "SetParameter"
      | "SetParameterPair"
      | "SetPerpetualBaseParameters"
      | "SetPerpetualRiskParameters"
      | "SetPoolParameter"
      | "SetTraderTiers"
      | "SetTraderVolumeTiers"
      | "SetUtilityToken"
      | "Settle"
      | "SettleState"
      | "SettlementComplete"
      | "TokensDeposited"
      | "TokensWithdrawn"
      | "Trade"
      | "TransferAddressTo"
      | "UpdateBrokerAddedCash"
      | "UpdateFundingRate"
      | "UpdateMarginAccount"
      | "UpdateMarkPrice"
  ): EventFragment;

  encodeFunctionData(
    functionFragment: "activatePerpetual",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "addLiquidity",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "adjustSettlementPrice",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "calculateDefaultFundSize",
    values: [
      [BigNumberish, BigNumberish],
      BigNumberish,
      BigNumberish,
      [BigNumberish, BigNumberish],
      [BigNumberish, BigNumberish],
      [BigNumberish, BigNumberish],
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "calculatePerpetualPrice",
    values: [
      AMMPerpLogic.AMMVariablesStruct,
      AMMPerpLogic.MarketVariablesStruct,
      BigNumberish,
      BigNumberish,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "calculateRiskNeutralPD",
    values: [
      AMMPerpLogic.AMMVariablesStruct,
      AMMPerpLogic.MarketVariablesStruct,
      BigNumberish,
      boolean
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "clearTradersInPool",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "countActivePerpAccounts",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "createLiquidityPool",
    values: [AddressLike, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "createPerpetual",
    values: [
      BigNumberish,
      [BytesLike, BytesLike],
      [BytesLike, BytesLike],
      BigNumberish[],
      [BigNumberish, BigNumberish, BigNumberish, BigNumberish, BigNumberish],
      BigNumberish[],
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "deactivatePerp",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "decodeUint16Float",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "decreasePoolCash",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "deposit",
    values: [
      BigNumberish,
      AddressLike,
      BigNumberish,
      BytesLike[],
      BigNumberish[]
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "depositBrokerLots",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "depositMarginForOpeningTrade",
    values: [BigNumberish, BigNumberish, IPerpetualOrder.OrderStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "depositToDefaultFund",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "determineExchangeFee",
    values: [IPerpetualOrder.OrderStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeFees",
    values: [IPerpetualOrder.OrderStruct, BigNumberish, BigNumberish, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "distributeFeesLiquidation",
    values: [BigNumberish, AddressLike, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "entropy",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "executeCancelOrder",
    values: [BigNumberish, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "executeLiquidityWithdrawal",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "executeTrade",
    values: [
      BigNumberish,
      AddressLike,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      boolean
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "getAMMPerpLogic",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getAMMState",
    values: [BigNumberish, [BigNumberish, BigNumberish]]
  ): string;
  encodeFunctionData(
    functionFragment: "getActivePerpAccounts",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getActivePerpAccountsByChunks",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getBrokerDesignation",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getBrokerInducedFee",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getCollateralTokenAmountForPricing",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getCurrentBrokerVolume",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getCurrentTraderVolume",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getDepositAmountForLvgPosition",
    values: [
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "getExchangeFeePrdMkts",
    values: [BigNumberish, BigNumberish, BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getFeeForBrokerDesignation",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getFeeForBrokerStake",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getFeeForBrokerVolume",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getFeeForTraderStake",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getFeeForTraderVolume",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getLastPerpetualBaseToUSDConversion",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getLiquidatableAccounts",
    values: [BigNumberish, [BigNumberish, BigNumberish]]
  ): string;
  encodeFunctionData(
    functionFragment: "getLiquidityPool",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getLiquidityPools",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getMarginAccount",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getMarginAccounts",
    values: [BigNumberish[], AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "getMaxSignedOpenTradeSizeForPos",
    values: [BigNumberish, BigNumberish, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "getNextLiquidatableTrader",
    values: [BigNumberish, [BigNumberish, BigNumberish]]
  ): string;
  encodeFunctionData(
    functionFragment: "getOracleFactory",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getOraclePrice",
    values: [[BytesLike, BytesLike]]
  ): string;
  encodeFunctionData(
    functionFragment: "getOracleUpdateTime",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getOrderBookAddress",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getOrderBookFactoryAddress",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getPerpetual",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPerpetualCountInPool",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPerpetualId",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPerpetualStaticInfo",
    values: [BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "getPerpetuals",
    values: [BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "getPoolCount",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getPoolIdByPerpetualId",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPoolStaticInfo",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getPriceInfo",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getSettleableAccounts",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getShareTokenFactory",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getShareTokenPriceD18",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTargetCollateralM1",
    values: [
      BigNumberish,
      BigNumberish,
      AMMPerpLogic.MarketVariablesStruct,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "getTargetCollateralM2",
    values: [
      BigNumberish,
      BigNumberish,
      AMMPerpLogic.MarketVariablesStruct,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "getTargetCollateralM3",
    values: [
      BigNumberish,
      BigNumberish,
      AMMPerpLogic.MarketVariablesStruct,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "getTokenAmountToReturn",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "getTraderState",
    values: [BigNumberish, AddressLike, [BigNumberish, BigNumberish]]
  ): string;
  encodeFunctionData(
    functionFragment: "getTreasuryAddress",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "getWithdrawRequests",
    values: [BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "increasePoolCash",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "isActiveAccount",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isDelegate",
    values: [AddressLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isMarketClosed",
    values: [BytesLike, BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isOrderCanceled",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isOrderExecuted",
    values: [BytesLike]
  ): string;
  encodeFunctionData(
    functionFragment: "isPerpMarketClosed",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "liquidateByAMM",
    values: [
      BigNumberish,
      AddressLike,
      AddressLike,
      BytesLike[],
      BigNumberish[]
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "pauseLiquidityProvision",
    values: [BigNumberish, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "prdMktsLvgFee",
    values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "preTrade",
    values: [IPerpetualOrder.OrderStruct]
  ): string;
  encodeFunctionData(
    functionFragment: "priceImpact",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "queryExchangeFee",
    values: [BigNumberish, AddressLike, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "queryMidPrices",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "queryPerpetualPrice",
    values: [
      BigNumberish,
      BigNumberish,
      [BigNumberish, BigNumberish],
      BigNumberish,
      BigNumberish
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "rebalance",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "reduceMarginCollateral",
    values: [BigNumberish, AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "resetMarkPremium",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "runLiquidityPool",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setAMMPerpLogic",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setBlockDelay",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setBrokerTiers",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setBrokerVolumeTiers",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setDelegate",
    values: [AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setEmergencyState",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setFeesForDesignation",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setInitialVolumeForFee",
    values: [BigNumberish, AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setNormalState",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setOracleFactory",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setOracleFactoryForPerpetual",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setOrderBookFactory",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setPerpetualBaseParams",
    values: [BigNumberish, BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setPerpetualOracles",
    values: [BigNumberish, [BytesLike, BytesLike], [BytesLike, BytesLike]]
  ): string;
  encodeFunctionData(
    functionFragment: "setPerpetualParam",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setPerpetualParamPair",
    values: [BigNumberish, string, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setPerpetualPoolFactory",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setPerpetualRiskParams",
    values: [
      BigNumberish,
      [BigNumberish, BigNumberish, BigNumberish, BigNumberish, BigNumberish],
      BigNumberish[]
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "setPoolParam",
    values: [BigNumberish, string, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "setTraderTiers",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setTraderVolumeTiers",
    values: [BigNumberish[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "setTreasury",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "setUtilityTokenAddr",
    values: [AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "settle",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "settleNextTraderInPool",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "settleTraders",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "splitProtocolFee",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "togglePerpEmergencyState",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "tradeViaOrderBook",
    values: [IPerpetualOrder.OrderStruct, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "transferBrokerLots",
    values: [BigNumberish, AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "transferBrokerOwnership",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "transferEarningsToTreasury",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "transferValueToTreasury",
    values?: undefined
  ): string;
  encodeFunctionData(
    functionFragment: "updateAMMTargetFundSize",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateDefaultFundTargetSize",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateDefaultFundTargetSizeRandom",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateFundingAndPricesAfter",
    values: [BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateFundingAndPricesBefore",
    values: [BigNumberish, boolean]
  ): string;
  encodeFunctionData(
    functionFragment: "updatePriceFeeds",
    values: [BigNumberish, BytesLike[], BigNumberish[], BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "updateVolumeEMAOnNewTrade",
    values: [BigNumberish, AddressLike, AddressLike, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "validateStopPrice",
    values: [boolean, BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "withdraw",
    values: [
      BigNumberish,
      AddressLike,
      BigNumberish,
      BytesLike[],
      BigNumberish[]
    ]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawAll",
    values: [BigNumberish, AddressLike, BytesLike[], BigNumberish[]]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawDepositFromMarginAccount",
    values: [BigNumberish, AddressLike]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawFromDefaultFund",
    values: [BigNumberish, BigNumberish]
  ): string;
  encodeFunctionData(
    functionFragment: "withdrawLiquidity",
    values: [BigNumberish, BigNumberish]
  ): string;

  decodeFunctionResult(
    functionFragment: "activatePerpetual",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "addLiquidity",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "adjustSettlementPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "calculateDefaultFundSize",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "calculatePerpetualPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "calculateRiskNeutralPD",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "clearTradersInPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "countActivePerpAccounts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "createLiquidityPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "createPerpetual",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "deactivatePerp",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "decodeUint16Float",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "decreasePoolCash",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "depositBrokerLots",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "depositMarginForOpeningTrade",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "depositToDefaultFund",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "determineExchangeFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "distributeFees",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "distributeFeesLiquidation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "entropy", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "executeCancelOrder",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "executeLiquidityWithdrawal",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "executeTrade",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getAMMPerpLogic",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getAMMState",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getActivePerpAccounts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getActivePerpAccountsByChunks",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBrokerDesignation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getBrokerInducedFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getCollateralTokenAmountForPricing",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getCurrentBrokerVolume",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getCurrentTraderVolume",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getDepositAmountForLvgPosition",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getExchangeFeePrdMkts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFeeForBrokerDesignation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFeeForBrokerStake",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFeeForBrokerVolume",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFeeForTraderStake",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getFeeForTraderVolume",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLastPerpetualBaseToUSDConversion",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLiquidatableAccounts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLiquidityPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getLiquidityPools",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMarginAccount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMarginAccounts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getMaxSignedOpenTradeSizeForPos",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getNextLiquidatableTrader",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getOracleFactory",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getOraclePrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getOracleUpdateTime",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getOrderBookAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getOrderBookFactoryAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPerpetual",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPerpetualCountInPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPerpetualId",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPerpetualStaticInfo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPerpetuals",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPoolCount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPoolIdByPerpetualId",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPoolStaticInfo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getPriceInfo",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getSettleableAccounts",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getShareTokenFactory",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getShareTokenPriceD18",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTargetCollateralM1",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTargetCollateralM2",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTargetCollateralM3",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTokenAmountToReturn",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTraderState",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getTreasuryAddress",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "getWithdrawRequests",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "increasePoolCash",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isActiveAccount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "isDelegate", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "isMarketClosed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isOrderCanceled",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isOrderExecuted",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "isPerpMarketClosed",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "liquidateByAMM",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "pauseLiquidityProvision",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "prdMktsLvgFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "preTrade", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "priceImpact",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "queryExchangeFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "queryMidPrices",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "queryPerpetualPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "rebalance", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "reduceMarginCollateral",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "resetMarkPremium",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "runLiquidityPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setAMMPerpLogic",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setBlockDelay",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setBrokerTiers",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setBrokerVolumeTiers",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setDelegate",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setEmergencyState",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setFeesForDesignation",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setInitialVolumeForFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setNormalState",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setOracleFactory",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setOracleFactoryForPerpetual",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setOrderBookFactory",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPerpetualBaseParams",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPerpetualOracles",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPerpetualParam",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPerpetualParamPair",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPerpetualPoolFactory",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPerpetualRiskParams",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setPoolParam",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTraderTiers",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTraderVolumeTiers",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setTreasury",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "setUtilityTokenAddr",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "settle", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "settleNextTraderInPool",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "settleTraders",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "splitProtocolFee",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "togglePerpEmergencyState",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "tradeViaOrderBook",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferBrokerLots",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferBrokerOwnership",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferEarningsToTreasury",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "transferValueToTreasury",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateAMMTargetFundSize",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateDefaultFundTargetSize",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateDefaultFundTargetSizeRandom",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateFundingAndPricesAfter",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateFundingAndPricesBefore",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updatePriceFeeds",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "updateVolumeEMAOnNewTrade",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "validateStopPrice",
    data: BytesLike
  ): Result;
  decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result;
  decodeFunctionResult(
    functionFragment: "withdrawAll",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawDepositFromMarginAccount",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawFromDefaultFund",
    data: BytesLike
  ): Result;
  decodeFunctionResult(
    functionFragment: "withdrawLiquidity",
    data: BytesLike
  ): Result;
}

export namespace BrokerLotsTransferredEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    oldOwner: AddressLike,
    newOwner: AddressLike,
    numLots: BigNumberish
  ];
  export type OutputTuple = [
    poolId: bigint,
    oldOwner: string,
    newOwner: string,
    numLots: bigint
  ];
  export interface OutputObject {
    poolId: bigint;
    oldOwner: string;
    newOwner: string;
    numLots: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace BrokerVolumeTransferredEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    oldOwner: AddressLike,
    newOwner: AddressLike,
    fVolume: BigNumberish
  ];
  export type OutputTuple = [
    poolId: bigint,
    oldOwner: string,
    newOwner: string,
    fVolume: bigint
  ];
  export interface OutputObject {
    poolId: bigint;
    oldOwner: string;
    newOwner: string;
    fVolume: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace ClearEvent {
  export type InputTuple = [perpetualId: BigNumberish, trader: AddressLike];
  export type OutputTuple = [perpetualId: bigint, trader: string];
  export interface OutputObject {
    perpetualId: bigint;
    trader: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace DistributeFeesEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    perpetualId: BigNumberish,
    trader: AddressLike,
    protocolFeeCC: BigNumberish,
    participationFundFeeCC: BigNumberish
  ];
  export type OutputTuple = [
    poolId: bigint,
    perpetualId: bigint,
    trader: string,
    protocolFeeCC: bigint,
    participationFundFeeCC: bigint
  ];
  export interface OutputObject {
    poolId: bigint;
    perpetualId: bigint;
    trader: string;
    protocolFeeCC: bigint;
    participationFundFeeCC: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace LiquidateEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    liquidator: AddressLike,
    trader: AddressLike,
    amountLiquidatedBC: BigNumberish,
    liquidationPrice: BigNumberish,
    newPositionSizeBC: BigNumberish,
    fFeeCC: BigNumberish,
    fPnlCC: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    liquidator: string,
    trader: string,
    amountLiquidatedBC: bigint,
    liquidationPrice: bigint,
    newPositionSizeBC: bigint,
    fFeeCC: bigint,
    fPnlCC: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    liquidator: string;
    trader: string;
    amountLiquidatedBC: bigint;
    liquidationPrice: bigint;
    newPositionSizeBC: bigint;
    fFeeCC: bigint;
    fPnlCC: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace LiquidityAddedEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    user: AddressLike,
    tokenAmount: BigNumberish,
    shareAmount: BigNumberish
  ];
  export type OutputTuple = [
    poolId: bigint,
    user: string,
    tokenAmount: bigint,
    shareAmount: bigint
  ];
  export interface OutputObject {
    poolId: bigint;
    user: string;
    tokenAmount: bigint;
    shareAmount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace LiquidityPoolCreatedEvent {
  export type InputTuple = [
    id: BigNumberish,
    marginTokenAddress: AddressLike,
    shareTokenAddress: AddressLike,
    iTargetPoolSizeUpdateTime: BigNumberish,
    fBrokerCollateralLotSize: BigNumberish
  ];
  export type OutputTuple = [
    id: bigint,
    marginTokenAddress: string,
    shareTokenAddress: string,
    iTargetPoolSizeUpdateTime: bigint,
    fBrokerCollateralLotSize: bigint
  ];
  export interface OutputObject {
    id: bigint;
    marginTokenAddress: string;
    shareTokenAddress: string;
    iTargetPoolSizeUpdateTime: bigint;
    fBrokerCollateralLotSize: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace LiquidityProvisionPausedEvent {
  export type InputTuple = [pauseOn: boolean, poolId: BigNumberish];
  export type OutputTuple = [pauseOn: boolean, poolId: bigint];
  export interface OutputObject {
    pauseOn: boolean;
    poolId: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace LiquidityRemovedEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    user: AddressLike,
    tokenAmount: BigNumberish,
    shareAmount: BigNumberish
  ];
  export type OutputTuple = [
    poolId: bigint,
    user: string,
    tokenAmount: bigint,
    shareAmount: bigint
  ];
  export interface OutputObject {
    poolId: bigint;
    user: string;
    tokenAmount: bigint;
    shareAmount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace LiquidityWithdrawalInitiatedEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    user: AddressLike,
    shareAmount: BigNumberish
  ];
  export type OutputTuple = [poolId: bigint, user: string, shareAmount: bigint];
  export interface OutputObject {
    poolId: bigint;
    user: string;
    shareAmount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace PerpetualCreatedEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    id: BigNumberish,
    baseParams: BigNumberish[],
    underlyingRiskParams: [
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish
    ],
    defaultFundRiskParams: BigNumberish[],
    eCollateralCurrency: BigNumberish
  ];
  export type OutputTuple = [
    poolId: bigint,
    id: bigint,
    baseParams: bigint[],
    underlyingRiskParams: [bigint, bigint, bigint, bigint, bigint],
    defaultFundRiskParams: bigint[],
    eCollateralCurrency: bigint
  ];
  export interface OutputObject {
    poolId: bigint;
    id: bigint;
    baseParams: bigint[];
    underlyingRiskParams: [bigint, bigint, bigint, bigint, bigint];
    defaultFundRiskParams: bigint[];
    eCollateralCurrency: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace PerpetualLimitOrderCancelledEvent {
  export type InputTuple = [perpetualId: BigNumberish, orderHash: BytesLike];
  export type OutputTuple = [perpetualId: bigint, orderHash: string];
  export interface OutputObject {
    perpetualId: bigint;
    orderHash: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace RunLiquidityPoolEvent {
  export type InputTuple = [_liqPoolID: BigNumberish];
  export type OutputTuple = [_liqPoolID: bigint];
  export interface OutputObject {
    _liqPoolID: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetBlockDelayEvent {
  export type InputTuple = [delay: BigNumberish];
  export type OutputTuple = [delay: bigint];
  export interface OutputObject {
    delay: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetBrokerDesignationsEvent {
  export type InputTuple = [designations: BigNumberish[], fees: BigNumberish[]];
  export type OutputTuple = [designations: bigint[], fees: bigint[]];
  export interface OutputObject {
    designations: bigint[];
    fees: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetBrokerTiersEvent {
  export type InputTuple = [tiers: BigNumberish[], feesTbps: BigNumberish[]];
  export type OutputTuple = [tiers: bigint[], feesTbps: bigint[]];
  export interface OutputObject {
    tiers: bigint[];
    feesTbps: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetBrokerVolumeTiersEvent {
  export type InputTuple = [tiers: BigNumberish[], feesTbps: BigNumberish[]];
  export type OutputTuple = [tiers: bigint[], feesTbps: bigint[]];
  export interface OutputObject {
    tiers: bigint[];
    feesTbps: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetClearedStateEvent {
  export type InputTuple = [perpetualId: BigNumberish];
  export type OutputTuple = [perpetualId: bigint];
  export interface OutputObject {
    perpetualId: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetDelegateEvent {
  export type InputTuple = [
    trader: AddressLike,
    delegate: AddressLike,
    index: BigNumberish
  ];
  export type OutputTuple = [trader: string, delegate: string, index: bigint];
  export interface OutputObject {
    trader: string;
    delegate: string;
    index: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetEmergencyStateEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    fSettlementMarkPremiumRate: BigNumberish,
    fSettlementS2Price: BigNumberish,
    fSettlementS3Price: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    fSettlementMarkPremiumRate: bigint,
    fSettlementS2Price: bigint,
    fSettlementS3Price: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    fSettlementMarkPremiumRate: bigint;
    fSettlementS2Price: bigint;
    fSettlementS3Price: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetNormalStateEvent {
  export type InputTuple = [perpetualId: BigNumberish];
  export type OutputTuple = [perpetualId: bigint];
  export interface OutputObject {
    perpetualId: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetOraclesEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    baseQuoteS2: [BytesLike, BytesLike],
    baseQuoteS3: [BytesLike, BytesLike]
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    baseQuoteS2: [string, string],
    baseQuoteS3: [string, string]
  ];
  export interface OutputObject {
    perpetualId: bigint;
    baseQuoteS2: [string, string];
    baseQuoteS3: [string, string];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetParameterEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    name: string,
    value: BigNumberish
  ];
  export type OutputTuple = [perpetualId: bigint, name: string, value: bigint];
  export interface OutputObject {
    perpetualId: bigint;
    name: string;
    value: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetParameterPairEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    name: string,
    value1: BigNumberish,
    value2: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    name: string,
    value1: bigint,
    value2: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    name: string;
    value1: bigint;
    value2: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetPerpetualBaseParametersEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    baseParams: BigNumberish[]
  ];
  export type OutputTuple = [perpetualId: bigint, baseParams: bigint[]];
  export interface OutputObject {
    perpetualId: bigint;
    baseParams: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetPerpetualRiskParametersEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    underlyingRiskParams: [
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish,
      BigNumberish
    ],
    defaultFundRiskParams: BigNumberish[]
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    underlyingRiskParams: [bigint, bigint, bigint, bigint, bigint],
    defaultFundRiskParams: bigint[]
  ];
  export interface OutputObject {
    perpetualId: bigint;
    underlyingRiskParams: [bigint, bigint, bigint, bigint, bigint];
    defaultFundRiskParams: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetPoolParameterEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    name: string,
    value: BigNumberish
  ];
  export type OutputTuple = [poolId: bigint, name: string, value: bigint];
  export interface OutputObject {
    poolId: bigint;
    name: string;
    value: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetTraderTiersEvent {
  export type InputTuple = [tiers: BigNumberish[], feesTbps: BigNumberish[]];
  export type OutputTuple = [tiers: bigint[], feesTbps: bigint[]];
  export interface OutputObject {
    tiers: bigint[];
    feesTbps: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetTraderVolumeTiersEvent {
  export type InputTuple = [tiers: BigNumberish[], feesTbps: BigNumberish[]];
  export type OutputTuple = [tiers: bigint[], feesTbps: bigint[]];
  export interface OutputObject {
    tiers: bigint[];
    feesTbps: bigint[];
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SetUtilityTokenEvent {
  export type InputTuple = [tokenAddr: AddressLike];
  export type OutputTuple = [tokenAddr: string];
  export interface OutputObject {
    tokenAddr: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SettleEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    trader: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    trader: string,
    amount: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    trader: string;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SettleStateEvent {
  export type InputTuple = [perpetualId: BigNumberish];
  export type OutputTuple = [perpetualId: bigint];
  export interface OutputObject {
    perpetualId: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace SettlementCompleteEvent {
  export type InputTuple = [perpetualId: BigNumberish];
  export type OutputTuple = [perpetualId: bigint];
  export interface OutputObject {
    perpetualId: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TokensDepositedEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    trader: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    trader: string,
    amount: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    trader: string;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TokensWithdrawnEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    trader: AddressLike,
    amount: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    trader: string,
    amount: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    trader: string;
    amount: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TradeEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    trader: AddressLike,
    order: IPerpetualOrder.OrderStruct,
    orderDigest: BytesLike,
    newPositionSizeBC: BigNumberish,
    price: BigNumberish,
    fFeeCC: BigNumberish,
    fPnlCC: BigNumberish,
    fB2C: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    trader: string,
    order: IPerpetualOrder.OrderStructOutput,
    orderDigest: string,
    newPositionSizeBC: bigint,
    price: bigint,
    fFeeCC: bigint,
    fPnlCC: bigint,
    fB2C: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    trader: string;
    order: IPerpetualOrder.OrderStructOutput;
    orderDigest: string;
    newPositionSizeBC: bigint;
    price: bigint;
    fFeeCC: bigint;
    fPnlCC: bigint;
    fB2C: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace TransferAddressToEvent {
  export type InputTuple = [
    name: string,
    oldOBFactory: AddressLike,
    newOBFactory: AddressLike
  ];
  export type OutputTuple = [
    name: string,
    oldOBFactory: string,
    newOBFactory: string
  ];
  export interface OutputObject {
    name: string;
    oldOBFactory: string;
    newOBFactory: string;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace UpdateBrokerAddedCashEvent {
  export type InputTuple = [
    poolId: BigNumberish,
    iLots: BigNumberish,
    iNewBrokerLots: BigNumberish
  ];
  export type OutputTuple = [
    poolId: bigint,
    iLots: bigint,
    iNewBrokerLots: bigint
  ];
  export interface OutputObject {
    poolId: bigint;
    iLots: bigint;
    iNewBrokerLots: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace UpdateFundingRateEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    fFundingRate: BigNumberish
  ];
  export type OutputTuple = [perpetualId: bigint, fFundingRate: bigint];
  export interface OutputObject {
    perpetualId: bigint;
    fFundingRate: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace UpdateMarginAccountEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    trader: AddressLike,
    fFundingPaymentCC: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    trader: string,
    fFundingPaymentCC: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    trader: string;
    fFundingPaymentCC: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export namespace UpdateMarkPriceEvent {
  export type InputTuple = [
    perpetualId: BigNumberish,
    fMidPricePremium: BigNumberish,
    fMarkPricePremium: BigNumberish,
    fMarkIndexPrice: BigNumberish
  ];
  export type OutputTuple = [
    perpetualId: bigint,
    fMidPricePremium: bigint,
    fMarkPricePremium: bigint,
    fMarkIndexPrice: bigint
  ];
  export interface OutputObject {
    perpetualId: bigint;
    fMidPricePremium: bigint;
    fMarkPricePremium: bigint;
    fMarkIndexPrice: bigint;
  }
  export type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
  export type Filter = TypedDeferredTopicFilter<Event>;
  export type Log = TypedEventLog<Event>;
  export type LogDescription = TypedLogDescription<Event>;
}

export interface IPerpetualManager extends BaseContract {
  connect(runner?: ContractRunner | null): IPerpetualManager;
  waitForDeployment(): Promise<this>;

  interface: IPerpetualManagerInterface;

  queryFilter<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;
  queryFilter<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    fromBlockOrBlockhash?: string | number | undefined,
    toBlock?: string | number | undefined
  ): Promise<Array<TypedEventLog<TCEvent>>>;

  on<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  on<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  once<TCEvent extends TypedContractEvent>(
    event: TCEvent,
    listener: TypedListener<TCEvent>
  ): Promise<this>;
  once<TCEvent extends TypedContractEvent>(
    filter: TypedDeferredTopicFilter<TCEvent>,
    listener: TypedListener<TCEvent>
  ): Promise<this>;

  listeners<TCEvent extends TypedContractEvent>(
    event: TCEvent
  ): Promise<Array<TypedListener<TCEvent>>>;
  listeners(eventName?: string): Promise<Array<Listener>>;
  removeAllListeners<TCEvent extends TypedContractEvent>(
    event?: TCEvent
  ): Promise<this>;

  activatePerpetual: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  addLiquidity: TypedContractMethod<
    [_iPoolIndex: BigNumberish, _tokenAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  adjustSettlementPrice: TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _fSettlementS2: BigNumberish,
      _fSettlementS3: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  calculateDefaultFundSize: TypedContractMethod<
    [
      _fK2AMM: [BigNumberish, BigNumberish],
      _fk2Trader: BigNumberish,
      _fCoverN: BigNumberish,
      fStressRet2: [BigNumberish, BigNumberish],
      fStressRet3: [BigNumberish, BigNumberish],
      fIndexPrices: [BigNumberish, BigNumberish],
      _eCCY: BigNumberish
    ],
    [bigint],
    "view"
  >;

  calculatePerpetualPrice: TypedContractMethod<
    [
      _ammVars: AMMPerpLogic.AMMVariablesStruct,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTradeAmount: BigNumberish,
      _fBidAskSpread: BigNumberish,
      _fIncentiveSpread: BigNumberish
    ],
    [bigint],
    "view"
  >;

  calculateRiskNeutralPD: TypedContractMethod<
    [
      _ammVars: AMMPerpLogic.AMMVariablesStruct,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTradeAmount: BigNumberish,
      _withCDF: boolean
    ],
    [[bigint, bigint]],
    "view"
  >;

  clearTradersInPool: TypedContractMethod<
    [_id: BigNumberish, _bulkSize: BigNumberish],
    [boolean],
    "nonpayable"
  >;

  countActivePerpAccounts: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [bigint],
    "view"
  >;

  createLiquidityPool: TypedContractMethod<
    [
      _marginTokenAddress: AddressLike,
      _iTargetPoolSizeUpdateTime: BigNumberish,
      _fBrokerCollateralLotSize: BigNumberish,
      _fCeilPnLShare: BigNumberish
    ],
    [bigint],
    "nonpayable"
  >;

  createPerpetual: TypedContractMethod<
    [
      _iPoolId: BigNumberish,
      _baseQuoteS2: [BytesLike, BytesLike],
      _baseQuoteS3: [BytesLike, BytesLike],
      _baseParams: BigNumberish[],
      _underlyingRiskParams: [
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish
      ],
      _defaultFundRiskParams: BigNumberish[],
      _eCollateralCurrency: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  deactivatePerp: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  decodeUint16Float: TypedContractMethod<[num: BigNumberish], [bigint], "view">;

  decreasePoolCash: TypedContractMethod<
    [_iPoolIdx: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  deposit: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fAmount: BigNumberish,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[]
    ],
    [void],
    "payable"
  >;

  depositBrokerLots: TypedContractMethod<
    [_poolId: BigNumberish, _iLots: BigNumberish],
    [void],
    "nonpayable"
  >;

  depositMarginForOpeningTrade: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _fDepositRequired: BigNumberish,
      _order: IPerpetualOrder.OrderStruct
    ],
    [boolean],
    "nonpayable"
  >;

  depositToDefaultFund: TypedContractMethod<
    [_poolId: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  determineExchangeFee: TypedContractMethod<
    [_order: IPerpetualOrder.OrderStruct],
    [bigint],
    "view"
  >;

  distributeFees: TypedContractMethod<
    [
      _order: IPerpetualOrder.OrderStruct,
      _brkrFeeTbps: BigNumberish,
      _protocolFeeTbps: BigNumberish,
      _hasOpened: boolean
    ],
    [bigint],
    "nonpayable"
  >;

  distributeFeesLiquidation: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fDeltaPositionBC: BigNumberish,
      _protocolFeeTbps: BigNumberish
    ],
    [bigint],
    "nonpayable"
  >;

  entropy: TypedContractMethod<[_p: BigNumberish], [bigint], "view">;

  executeCancelOrder: TypedContractMethod<
    [_perpetualId: BigNumberish, _digest: BytesLike],
    [void],
    "nonpayable"
  >;

  executeLiquidityWithdrawal: TypedContractMethod<
    [_poolId: BigNumberish, _lpAddr: AddressLike],
    [void],
    "nonpayable"
  >;

  executeTrade: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fTraderPos: BigNumberish,
      _fTradeAmount: BigNumberish,
      _fPrice: BigNumberish,
      _isClose: boolean
    ],
    [bigint],
    "nonpayable"
  >;

  getAMMPerpLogic: TypedContractMethod<[], [string], "view">;

  getAMMState: TypedContractMethod<
    [_perpetualId: BigNumberish, _fIndexPrice: [BigNumberish, BigNumberish]],
    [bigint[]],
    "view"
  >;

  getActivePerpAccounts: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [string[]],
    "view"
  >;

  getActivePerpAccountsByChunks: TypedContractMethod<
    [_perpetualId: BigNumberish, _from: BigNumberish, _to: BigNumberish],
    [string[]],
    "view"
  >;

  getBrokerDesignation: TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;

  getBrokerInducedFee: TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;

  getCollateralTokenAmountForPricing: TypedContractMethod<
    [_poolId: BigNumberish],
    [bigint],
    "view"
  >;

  getCurrentBrokerVolume: TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;

  getCurrentTraderVolume: TypedContractMethod<
    [_poolId: BigNumberish, _traderAddr: AddressLike],
    [bigint],
    "view"
  >;

  getDepositAmountForLvgPosition: TypedContractMethod<
    [
      _fPosition0: BigNumberish,
      _fBalance0: BigNumberish,
      _fTradeAmount: BigNumberish,
      _fTargetLeverage: BigNumberish,
      _fPrice: BigNumberish,
      _fS2Mark: BigNumberish,
      _fS3: BigNumberish,
      _fS2: BigNumberish
    ],
    [bigint],
    "view"
  >;

  getExchangeFeePrdMkts: TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _fAmount: BigNumberish,
      _leverageTDR: BigNumberish,
      _traderAddr: AddressLike
    ],
    [bigint],
    "view"
  >;

  getFeeForBrokerDesignation: TypedContractMethod<
    [_brokerDesignation: BigNumberish],
    [bigint],
    "view"
  >;

  getFeeForBrokerStake: TypedContractMethod<
    [brokerAddr: AddressLike],
    [bigint],
    "view"
  >;

  getFeeForBrokerVolume: TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;

  getFeeForTraderStake: TypedContractMethod<
    [traderAddr: AddressLike],
    [bigint],
    "view"
  >;

  getFeeForTraderVolume: TypedContractMethod<
    [_poolId: BigNumberish, _traderAddr: AddressLike],
    [bigint],
    "view"
  >;

  getLastPerpetualBaseToUSDConversion: TypedContractMethod<
    [_iPerpetualId: BigNumberish],
    [bigint],
    "view"
  >;

  getLiquidatableAccounts: TypedContractMethod<
    [_perpetualId: BigNumberish, _fIndexPrice: [BigNumberish, BigNumberish]],
    [string[]],
    "view"
  >;

  getLiquidityPool: TypedContractMethod<
    [_poolId: BigNumberish],
    [PerpStorage.LiquidityPoolDataStructOutput],
    "view"
  >;

  getLiquidityPools: TypedContractMethod<
    [_poolIdFrom: BigNumberish, _poolIdTo: BigNumberish],
    [PerpStorage.LiquidityPoolDataStructOutput[]],
    "view"
  >;

  getMarginAccount: TypedContractMethod<
    [_perpetualId: BigNumberish, _traderAddress: AddressLike],
    [PerpStorage.MarginAccountStructOutput],
    "view"
  >;

  getMarginAccounts: TypedContractMethod<
    [_perpetualIds: BigNumberish[], _traderAddress: AddressLike],
    [PerpStorage.MarginAccountStructOutput[]],
    "view"
  >;

  getMaxSignedOpenTradeSizeForPos: TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _fCurrentTraderPos: BigNumberish,
      _isBuy: boolean
    ],
    [bigint],
    "view"
  >;

  getNextLiquidatableTrader: TypedContractMethod<
    [_perpetualId: BigNumberish, _fIndexPrice: [BigNumberish, BigNumberish]],
    [string],
    "view"
  >;

  getOracleFactory: TypedContractMethod<[], [string], "view">;

  getOraclePrice: TypedContractMethod<
    [_baseQuote: [BytesLike, BytesLike]],
    [[bigint, bigint]],
    "view"
  >;

  getOracleUpdateTime: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [bigint],
    "view"
  >;

  getOrderBookAddress: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [string],
    "view"
  >;

  getOrderBookFactoryAddress: TypedContractMethod<[], [string], "view">;

  getPerpetual: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [PerpStorage.PerpetualDataStructOutput],
    "view"
  >;

  getPerpetualCountInPool: TypedContractMethod<
    [_poolId: BigNumberish],
    [bigint],
    "view"
  >;

  getPerpetualId: TypedContractMethod<
    [_poolId: BigNumberish, _perpetualIndex: BigNumberish],
    [bigint],
    "view"
  >;

  getPerpetualStaticInfo: TypedContractMethod<
    [perpetualIds: BigNumberish[]],
    [IPerpetualInfo.PerpetualStaticInfoStructOutput[]],
    "view"
  >;

  getPerpetuals: TypedContractMethod<
    [perpetualIds: BigNumberish[]],
    [PerpStorage.PerpetualDataStructOutput[]],
    "view"
  >;

  getPoolCount: TypedContractMethod<[], [bigint], "view">;

  getPoolIdByPerpetualId: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [bigint],
    "view"
  >;

  getPoolStaticInfo: TypedContractMethod<
    [_poolFromIdx: BigNumberish, _poolToIdx: BigNumberish],
    [
      [bigint[][], string[], string[], string] & {
        _oracleFactoryAddress: string;
      }
    ],
    "view"
  >;

  getPriceInfo: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [[string[], boolean[]]],
    "view"
  >;

  getSettleableAccounts: TypedContractMethod<
    [_perpetualId: BigNumberish, start: BigNumberish, count: BigNumberish],
    [string[]],
    "view"
  >;

  getShareTokenFactory: TypedContractMethod<[], [string], "view">;

  getShareTokenPriceD18: TypedContractMethod<
    [_poolId: BigNumberish],
    [bigint],
    "view"
  >;

  getTargetCollateralM1: TypedContractMethod<
    [
      _fK2: BigNumberish,
      _fL1: BigNumberish,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTargetDD: BigNumberish
    ],
    [bigint],
    "view"
  >;

  getTargetCollateralM2: TypedContractMethod<
    [
      _fK2: BigNumberish,
      _fL1: BigNumberish,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTargetDD: BigNumberish
    ],
    [bigint],
    "view"
  >;

  getTargetCollateralM3: TypedContractMethod<
    [
      _fK2: BigNumberish,
      _fL1: BigNumberish,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTargetDD: BigNumberish
    ],
    [bigint],
    "view"
  >;

  getTokenAmountToReturn: TypedContractMethod<
    [_poolId: BigNumberish, _shareAmount: BigNumberish],
    [bigint],
    "view"
  >;

  getTraderState: TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _traderAddress: AddressLike,
      _fIndexPrice: [BigNumberish, BigNumberish]
    ],
    [bigint[]],
    "view"
  >;

  getTreasuryAddress: TypedContractMethod<[], [string], "view">;

  getWithdrawRequests: TypedContractMethod<
    [poolId: BigNumberish, _fromIdx: BigNumberish, numRequests: BigNumberish],
    [PerpStorage.WithdrawRequestStructOutput[]],
    "view"
  >;

  increasePoolCash: TypedContractMethod<
    [_iPoolIdx: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  isActiveAccount: TypedContractMethod<
    [_perpetualId: BigNumberish, _traderAddress: AddressLike],
    [boolean],
    "view"
  >;

  isDelegate: TypedContractMethod<
    [_trader: AddressLike, _delegate: AddressLike],
    [boolean],
    "view"
  >;

  isMarketClosed: TypedContractMethod<
    [_baseCurrency: BytesLike, _quoteCurrency: BytesLike],
    [boolean],
    "view"
  >;

  isOrderCanceled: TypedContractMethod<[digest: BytesLike], [boolean], "view">;

  isOrderExecuted: TypedContractMethod<[digest: BytesLike], [boolean], "view">;

  isPerpMarketClosed: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [boolean],
    "view"
  >;

  liquidateByAMM: TypedContractMethod<
    [
      _perpetualIndex: BigNumberish,
      _liquidatorAddr: AddressLike,
      _traderAddr: AddressLike,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[]
    ],
    [bigint],
    "payable"
  >;

  pauseLiquidityProvision: TypedContractMethod<
    [_poolId: BigNumberish, _pauseOn: boolean],
    [void],
    "nonpayable"
  >;

  prdMktsLvgFee: TypedContractMethod<
    [
      _fPx: BigNumberish,
      _fm: BigNumberish,
      _fTradeAmt: BigNumberish,
      _fMgnRate: BigNumberish
    ],
    [bigint],
    "view"
  >;

  preTrade: TypedContractMethod<
    [_order: IPerpetualOrder.OrderStruct],
    [[bigint, bigint]],
    "nonpayable"
  >;

  priceImpact: TypedContractMethod<
    [_amount: BigNumberish, _params: BigNumberish],
    [bigint],
    "view"
  >;

  queryExchangeFee: TypedContractMethod<
    [_poolId: BigNumberish, _traderAddr: AddressLike, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;

  queryMidPrices: TypedContractMethod<
    [_perpetualIds: BigNumberish[], _idxPriceDataPairs: BigNumberish[]],
    [bigint[]],
    "view"
  >;

  queryPerpetualPrice: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _fTradeAmountBC: BigNumberish,
      _fIndexPrice: [BigNumberish, BigNumberish],
      _confTbps: BigNumberish,
      _params: BigNumberish
    ],
    [bigint],
    "view"
  >;

  rebalance: TypedContractMethod<
    [_iPerpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  reduceMarginCollateral: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fAmountToWithdraw: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  resetMarkPremium: TypedContractMethod<
    [_iPerpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  runLiquidityPool: TypedContractMethod<
    [_liqPoolID: BigNumberish],
    [void],
    "nonpayable"
  >;

  setAMMPerpLogic: TypedContractMethod<
    [_AMMPerpLogic: AddressLike],
    [void],
    "nonpayable"
  >;

  setBlockDelay: TypedContractMethod<
    [_delay: BigNumberish],
    [void],
    "nonpayable"
  >;

  setBrokerTiers: TypedContractMethod<
    [_tiers: BigNumberish[], _feesTbps: BigNumberish[]],
    [void],
    "nonpayable"
  >;

  setBrokerVolumeTiers: TypedContractMethod<
    [_tiers: BigNumberish[], _feesTbps: BigNumberish[]],
    [void],
    "nonpayable"
  >;

  setDelegate: TypedContractMethod<
    [delegate: AddressLike, index: BigNumberish],
    [void],
    "nonpayable"
  >;

  setEmergencyState: TypedContractMethod<
    [_iPerpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  setFeesForDesignation: TypedContractMethod<
    [_designations: BigNumberish[], _fees: BigNumberish[]],
    [void],
    "nonpayable"
  >;

  setInitialVolumeForFee: TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike, _feeTbps: BigNumberish],
    [void],
    "nonpayable"
  >;

  setNormalState: TypedContractMethod<
    [_iPerpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  setOracleFactory: TypedContractMethod<
    [_oracleFactory: AddressLike],
    [void],
    "nonpayable"
  >;

  setOracleFactoryForPerpetual: TypedContractMethod<
    [_iPerpetualId: BigNumberish, _oracleAddr: AddressLike],
    [void],
    "nonpayable"
  >;

  setOrderBookFactory: TypedContractMethod<
    [_orderBookFactory: AddressLike],
    [void],
    "nonpayable"
  >;

  setPerpetualBaseParams: TypedContractMethod<
    [_iPerpetualId: BigNumberish, _baseParams: BigNumberish[]],
    [void],
    "nonpayable"
  >;

  setPerpetualOracles: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _baseQuoteS2: [BytesLike, BytesLike],
      _baseQuoteS3: [BytesLike, BytesLike]
    ],
    [void],
    "nonpayable"
  >;

  setPerpetualParam: TypedContractMethod<
    [_iPerpetualId: BigNumberish, _varName: string, _value: BigNumberish],
    [void],
    "nonpayable"
  >;

  setPerpetualParamPair: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _name: string,
      _value1: BigNumberish,
      _value2: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  setPerpetualPoolFactory: TypedContractMethod<
    [_shareTokenFactory: AddressLike],
    [void],
    "nonpayable"
  >;

  setPerpetualRiskParams: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _underlyingRiskParams: [
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish
      ],
      _defaultFundRiskParams: BigNumberish[]
    ],
    [void],
    "nonpayable"
  >;

  setPoolParam: TypedContractMethod<
    [_poolId: BigNumberish, _name: string, _value: BigNumberish],
    [void],
    "nonpayable"
  >;

  setTraderTiers: TypedContractMethod<
    [_tiers: BigNumberish[], _feesTbps: BigNumberish[]],
    [void],
    "nonpayable"
  >;

  setTraderVolumeTiers: TypedContractMethod<
    [_tiers: BigNumberish[], _feesTbps: BigNumberish[]],
    [void],
    "nonpayable"
  >;

  setTreasury: TypedContractMethod<
    [_treasury: AddressLike],
    [void],
    "nonpayable"
  >;

  setUtilityTokenAddr: TypedContractMethod<
    [tokenAddr: AddressLike],
    [void],
    "nonpayable"
  >;

  settle: TypedContractMethod<
    [_perpetualID: BigNumberish, _traderAddr: AddressLike],
    [void],
    "nonpayable"
  >;

  settleNextTraderInPool: TypedContractMethod<
    [_id: BigNumberish],
    [boolean],
    "nonpayable"
  >;

  settleTraders: TypedContractMethod<
    [_perpetualID: BigNumberish, _bulkSize: BigNumberish],
    [bigint],
    "nonpayable"
  >;

  splitProtocolFee: TypedContractMethod<
    [fee: BigNumberish],
    [[bigint, bigint]],
    "view"
  >;

  togglePerpEmergencyState: TypedContractMethod<
    [_perpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  tradeViaOrderBook: TypedContractMethod<
    [_order: IPerpetualOrder.OrderStruct, _executor: AddressLike],
    [boolean],
    "nonpayable"
  >;

  transferBrokerLots: TypedContractMethod<
    [_poolId: BigNumberish, _transferToAddr: AddressLike, _lots: BigNumberish],
    [void],
    "nonpayable"
  >;

  transferBrokerOwnership: TypedContractMethod<
    [_poolId: BigNumberish, _transferToAddr: AddressLike],
    [void],
    "nonpayable"
  >;

  transferEarningsToTreasury: TypedContractMethod<
    [_poolId: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  transferValueToTreasury: TypedContractMethod<[], [boolean], "nonpayable">;

  updateAMMTargetFundSize: TypedContractMethod<
    [_iPerpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  updateDefaultFundTargetSize: TypedContractMethod<
    [_iPerpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  updateDefaultFundTargetSizeRandom: TypedContractMethod<
    [_iPoolIndex: BigNumberish],
    [void],
    "nonpayable"
  >;

  updateFundingAndPricesAfter: TypedContractMethod<
    [_iPerpetualId: BigNumberish],
    [void],
    "nonpayable"
  >;

  updateFundingAndPricesBefore: TypedContractMethod<
    [_iPerpetualId: BigNumberish, _revertIfClosed: boolean],
    [void],
    "nonpayable"
  >;

  updatePriceFeeds: TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[],
      _maxAcceptableFeedAge: BigNumberish
    ],
    [void],
    "payable"
  >;

  updateVolumeEMAOnNewTrade: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _brokerAddr: AddressLike,
      _tradeAmountBC: BigNumberish
    ],
    [void],
    "nonpayable"
  >;

  validateStopPrice: TypedContractMethod<
    [_isLong: boolean, _fMarkPrice: BigNumberish, _fTriggerPrice: BigNumberish],
    [void],
    "view"
  >;

  withdraw: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fAmount: BigNumberish,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[]
    ],
    [void],
    "payable"
  >;

  withdrawAll: TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[]
    ],
    [void],
    "payable"
  >;

  withdrawDepositFromMarginAccount: TypedContractMethod<
    [_iPerpetualId: BigNumberish, _traderAddr: AddressLike],
    [void],
    "nonpayable"
  >;

  withdrawFromDefaultFund: TypedContractMethod<
    [_poolId: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  withdrawLiquidity: TypedContractMethod<
    [_iPoolIndex: BigNumberish, _shareAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  getFunction<T extends ContractMethod = ContractMethod>(
    key: string | FunctionFragment
  ): T;

  getFunction(
    nameOrSignature: "activatePerpetual"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "addLiquidity"
  ): TypedContractMethod<
    [_iPoolIndex: BigNumberish, _tokenAmount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "adjustSettlementPrice"
  ): TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _fSettlementS2: BigNumberish,
      _fSettlementS3: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "calculateDefaultFundSize"
  ): TypedContractMethod<
    [
      _fK2AMM: [BigNumberish, BigNumberish],
      _fk2Trader: BigNumberish,
      _fCoverN: BigNumberish,
      fStressRet2: [BigNumberish, BigNumberish],
      fStressRet3: [BigNumberish, BigNumberish],
      fIndexPrices: [BigNumberish, BigNumberish],
      _eCCY: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "calculatePerpetualPrice"
  ): TypedContractMethod<
    [
      _ammVars: AMMPerpLogic.AMMVariablesStruct,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTradeAmount: BigNumberish,
      _fBidAskSpread: BigNumberish,
      _fIncentiveSpread: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "calculateRiskNeutralPD"
  ): TypedContractMethod<
    [
      _ammVars: AMMPerpLogic.AMMVariablesStruct,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTradeAmount: BigNumberish,
      _withCDF: boolean
    ],
    [[bigint, bigint]],
    "view"
  >;
  getFunction(
    nameOrSignature: "clearTradersInPool"
  ): TypedContractMethod<
    [_id: BigNumberish, _bulkSize: BigNumberish],
    [boolean],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "countActivePerpAccounts"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "createLiquidityPool"
  ): TypedContractMethod<
    [
      _marginTokenAddress: AddressLike,
      _iTargetPoolSizeUpdateTime: BigNumberish,
      _fBrokerCollateralLotSize: BigNumberish,
      _fCeilPnLShare: BigNumberish
    ],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "createPerpetual"
  ): TypedContractMethod<
    [
      _iPoolId: BigNumberish,
      _baseQuoteS2: [BytesLike, BytesLike],
      _baseQuoteS3: [BytesLike, BytesLike],
      _baseParams: BigNumberish[],
      _underlyingRiskParams: [
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish
      ],
      _defaultFundRiskParams: BigNumberish[],
      _eCollateralCurrency: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "deactivatePerp"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "decodeUint16Float"
  ): TypedContractMethod<[num: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "decreasePoolCash"
  ): TypedContractMethod<
    [_iPoolIdx: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "deposit"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fAmount: BigNumberish,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[]
    ],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "depositBrokerLots"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _iLots: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "depositMarginForOpeningTrade"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _fDepositRequired: BigNumberish,
      _order: IPerpetualOrder.OrderStruct
    ],
    [boolean],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "depositToDefaultFund"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "determineExchangeFee"
  ): TypedContractMethod<
    [_order: IPerpetualOrder.OrderStruct],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "distributeFees"
  ): TypedContractMethod<
    [
      _order: IPerpetualOrder.OrderStruct,
      _brkrFeeTbps: BigNumberish,
      _protocolFeeTbps: BigNumberish,
      _hasOpened: boolean
    ],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "distributeFeesLiquidation"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fDeltaPositionBC: BigNumberish,
      _protocolFeeTbps: BigNumberish
    ],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "entropy"
  ): TypedContractMethod<[_p: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "executeCancelOrder"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish, _digest: BytesLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "executeLiquidityWithdrawal"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _lpAddr: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "executeTrade"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fTraderPos: BigNumberish,
      _fTradeAmount: BigNumberish,
      _fPrice: BigNumberish,
      _isClose: boolean
    ],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "getAMMPerpLogic"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getAMMState"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish, _fIndexPrice: [BigNumberish, BigNumberish]],
    [bigint[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getActivePerpAccounts"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [string[]], "view">;
  getFunction(
    nameOrSignature: "getActivePerpAccountsByChunks"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish, _from: BigNumberish, _to: BigNumberish],
    [string[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getBrokerDesignation"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getBrokerInducedFee"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getCollateralTokenAmountForPricing"
  ): TypedContractMethod<[_poolId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getCurrentBrokerVolume"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getCurrentTraderVolume"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _traderAddr: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getDepositAmountForLvgPosition"
  ): TypedContractMethod<
    [
      _fPosition0: BigNumberish,
      _fBalance0: BigNumberish,
      _fTradeAmount: BigNumberish,
      _fTargetLeverage: BigNumberish,
      _fPrice: BigNumberish,
      _fS2Mark: BigNumberish,
      _fS3: BigNumberish,
      _fS2: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getExchangeFeePrdMkts"
  ): TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _fAmount: BigNumberish,
      _leverageTDR: BigNumberish,
      _traderAddr: AddressLike
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getFeeForBrokerDesignation"
  ): TypedContractMethod<[_brokerDesignation: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getFeeForBrokerStake"
  ): TypedContractMethod<[brokerAddr: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getFeeForBrokerVolume"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getFeeForTraderStake"
  ): TypedContractMethod<[traderAddr: AddressLike], [bigint], "view">;
  getFunction(
    nameOrSignature: "getFeeForTraderVolume"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _traderAddr: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getLastPerpetualBaseToUSDConversion"
  ): TypedContractMethod<[_iPerpetualId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getLiquidatableAccounts"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish, _fIndexPrice: [BigNumberish, BigNumberish]],
    [string[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getLiquidityPool"
  ): TypedContractMethod<
    [_poolId: BigNumberish],
    [PerpStorage.LiquidityPoolDataStructOutput],
    "view"
  >;
  getFunction(
    nameOrSignature: "getLiquidityPools"
  ): TypedContractMethod<
    [_poolIdFrom: BigNumberish, _poolIdTo: BigNumberish],
    [PerpStorage.LiquidityPoolDataStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getMarginAccount"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish, _traderAddress: AddressLike],
    [PerpStorage.MarginAccountStructOutput],
    "view"
  >;
  getFunction(
    nameOrSignature: "getMarginAccounts"
  ): TypedContractMethod<
    [_perpetualIds: BigNumberish[], _traderAddress: AddressLike],
    [PerpStorage.MarginAccountStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getMaxSignedOpenTradeSizeForPos"
  ): TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _fCurrentTraderPos: BigNumberish,
      _isBuy: boolean
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getNextLiquidatableTrader"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish, _fIndexPrice: [BigNumberish, BigNumberish]],
    [string],
    "view"
  >;
  getFunction(
    nameOrSignature: "getOracleFactory"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getOraclePrice"
  ): TypedContractMethod<
    [_baseQuote: [BytesLike, BytesLike]],
    [[bigint, bigint]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getOracleUpdateTime"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getOrderBookAddress"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [string], "view">;
  getFunction(
    nameOrSignature: "getOrderBookFactoryAddress"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getPerpetual"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish],
    [PerpStorage.PerpetualDataStructOutput],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPerpetualCountInPool"
  ): TypedContractMethod<[_poolId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPerpetualId"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _perpetualIndex: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPerpetualStaticInfo"
  ): TypedContractMethod<
    [perpetualIds: BigNumberish[]],
    [IPerpetualInfo.PerpetualStaticInfoStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPerpetuals"
  ): TypedContractMethod<
    [perpetualIds: BigNumberish[]],
    [PerpStorage.PerpetualDataStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPoolCount"
  ): TypedContractMethod<[], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPoolIdByPerpetualId"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getPoolStaticInfo"
  ): TypedContractMethod<
    [_poolFromIdx: BigNumberish, _poolToIdx: BigNumberish],
    [
      [bigint[][], string[], string[], string] & {
        _oracleFactoryAddress: string;
      }
    ],
    "view"
  >;
  getFunction(
    nameOrSignature: "getPriceInfo"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish],
    [[string[], boolean[]]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getSettleableAccounts"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish, start: BigNumberish, count: BigNumberish],
    [string[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getShareTokenFactory"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getShareTokenPriceD18"
  ): TypedContractMethod<[_poolId: BigNumberish], [bigint], "view">;
  getFunction(
    nameOrSignature: "getTargetCollateralM1"
  ): TypedContractMethod<
    [
      _fK2: BigNumberish,
      _fL1: BigNumberish,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTargetDD: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getTargetCollateralM2"
  ): TypedContractMethod<
    [
      _fK2: BigNumberish,
      _fL1: BigNumberish,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTargetDD: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getTargetCollateralM3"
  ): TypedContractMethod<
    [
      _fK2: BigNumberish,
      _fL1: BigNumberish,
      _mktVars: AMMPerpLogic.MarketVariablesStruct,
      _fTargetDD: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getTokenAmountToReturn"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _shareAmount: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "getTraderState"
  ): TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _traderAddress: AddressLike,
      _fIndexPrice: [BigNumberish, BigNumberish]
    ],
    [bigint[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "getTreasuryAddress"
  ): TypedContractMethod<[], [string], "view">;
  getFunction(
    nameOrSignature: "getWithdrawRequests"
  ): TypedContractMethod<
    [poolId: BigNumberish, _fromIdx: BigNumberish, numRequests: BigNumberish],
    [PerpStorage.WithdrawRequestStructOutput[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "increasePoolCash"
  ): TypedContractMethod<
    [_iPoolIdx: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "isActiveAccount"
  ): TypedContractMethod<
    [_perpetualId: BigNumberish, _traderAddress: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isDelegate"
  ): TypedContractMethod<
    [_trader: AddressLike, _delegate: AddressLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isMarketClosed"
  ): TypedContractMethod<
    [_baseCurrency: BytesLike, _quoteCurrency: BytesLike],
    [boolean],
    "view"
  >;
  getFunction(
    nameOrSignature: "isOrderCanceled"
  ): TypedContractMethod<[digest: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isOrderExecuted"
  ): TypedContractMethod<[digest: BytesLike], [boolean], "view">;
  getFunction(
    nameOrSignature: "isPerpMarketClosed"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [boolean], "view">;
  getFunction(
    nameOrSignature: "liquidateByAMM"
  ): TypedContractMethod<
    [
      _perpetualIndex: BigNumberish,
      _liquidatorAddr: AddressLike,
      _traderAddr: AddressLike,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[]
    ],
    [bigint],
    "payable"
  >;
  getFunction(
    nameOrSignature: "pauseLiquidityProvision"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _pauseOn: boolean],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "prdMktsLvgFee"
  ): TypedContractMethod<
    [
      _fPx: BigNumberish,
      _fm: BigNumberish,
      _fTradeAmt: BigNumberish,
      _fMgnRate: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "preTrade"
  ): TypedContractMethod<
    [_order: IPerpetualOrder.OrderStruct],
    [[bigint, bigint]],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "priceImpact"
  ): TypedContractMethod<
    [_amount: BigNumberish, _params: BigNumberish],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "queryExchangeFee"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _traderAddr: AddressLike, _brokerAddr: AddressLike],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "queryMidPrices"
  ): TypedContractMethod<
    [_perpetualIds: BigNumberish[], _idxPriceDataPairs: BigNumberish[]],
    [bigint[]],
    "view"
  >;
  getFunction(
    nameOrSignature: "queryPerpetualPrice"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _fTradeAmountBC: BigNumberish,
      _fIndexPrice: [BigNumberish, BigNumberish],
      _confTbps: BigNumberish,
      _params: BigNumberish
    ],
    [bigint],
    "view"
  >;
  getFunction(
    nameOrSignature: "rebalance"
  ): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "reduceMarginCollateral"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fAmountToWithdraw: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "resetMarkPremium"
  ): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "runLiquidityPool"
  ): TypedContractMethod<[_liqPoolID: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setAMMPerpLogic"
  ): TypedContractMethod<[_AMMPerpLogic: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setBlockDelay"
  ): TypedContractMethod<[_delay: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setBrokerTiers"
  ): TypedContractMethod<
    [_tiers: BigNumberish[], _feesTbps: BigNumberish[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setBrokerVolumeTiers"
  ): TypedContractMethod<
    [_tiers: BigNumberish[], _feesTbps: BigNumberish[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setDelegate"
  ): TypedContractMethod<
    [delegate: AddressLike, index: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setEmergencyState"
  ): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setFeesForDesignation"
  ): TypedContractMethod<
    [_designations: BigNumberish[], _fees: BigNumberish[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setInitialVolumeForFee"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _brokerAddr: AddressLike, _feeTbps: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setNormalState"
  ): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setOracleFactory"
  ): TypedContractMethod<[_oracleFactory: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setOracleFactoryForPerpetual"
  ): TypedContractMethod<
    [_iPerpetualId: BigNumberish, _oracleAddr: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setOrderBookFactory"
  ): TypedContractMethod<
    [_orderBookFactory: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPerpetualBaseParams"
  ): TypedContractMethod<
    [_iPerpetualId: BigNumberish, _baseParams: BigNumberish[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPerpetualOracles"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _baseQuoteS2: [BytesLike, BytesLike],
      _baseQuoteS3: [BytesLike, BytesLike]
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPerpetualParam"
  ): TypedContractMethod<
    [_iPerpetualId: BigNumberish, _varName: string, _value: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPerpetualParamPair"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _name: string,
      _value1: BigNumberish,
      _value2: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPerpetualPoolFactory"
  ): TypedContractMethod<
    [_shareTokenFactory: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPerpetualRiskParams"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _underlyingRiskParams: [
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BigNumberish
      ],
      _defaultFundRiskParams: BigNumberish[]
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setPoolParam"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _name: string, _value: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setTraderTiers"
  ): TypedContractMethod<
    [_tiers: BigNumberish[], _feesTbps: BigNumberish[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setTraderVolumeTiers"
  ): TypedContractMethod<
    [_tiers: BigNumberish[], _feesTbps: BigNumberish[]],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "setTreasury"
  ): TypedContractMethod<[_treasury: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "setUtilityTokenAddr"
  ): TypedContractMethod<[tokenAddr: AddressLike], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "settle"
  ): TypedContractMethod<
    [_perpetualID: BigNumberish, _traderAddr: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "settleNextTraderInPool"
  ): TypedContractMethod<[_id: BigNumberish], [boolean], "nonpayable">;
  getFunction(
    nameOrSignature: "settleTraders"
  ): TypedContractMethod<
    [_perpetualID: BigNumberish, _bulkSize: BigNumberish],
    [bigint],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "splitProtocolFee"
  ): TypedContractMethod<[fee: BigNumberish], [[bigint, bigint]], "view">;
  getFunction(
    nameOrSignature: "togglePerpEmergencyState"
  ): TypedContractMethod<[_perpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "tradeViaOrderBook"
  ): TypedContractMethod<
    [_order: IPerpetualOrder.OrderStruct, _executor: AddressLike],
    [boolean],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "transferBrokerLots"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _transferToAddr: AddressLike, _lots: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "transferBrokerOwnership"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _transferToAddr: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "transferEarningsToTreasury"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "transferValueToTreasury"
  ): TypedContractMethod<[], [boolean], "nonpayable">;
  getFunction(
    nameOrSignature: "updateAMMTargetFundSize"
  ): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "updateDefaultFundTargetSize"
  ): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "updateDefaultFundTargetSizeRandom"
  ): TypedContractMethod<[_iPoolIndex: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "updateFundingAndPricesAfter"
  ): TypedContractMethod<[_iPerpetualId: BigNumberish], [void], "nonpayable">;
  getFunction(
    nameOrSignature: "updateFundingAndPricesBefore"
  ): TypedContractMethod<
    [_iPerpetualId: BigNumberish, _revertIfClosed: boolean],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "updatePriceFeeds"
  ): TypedContractMethod<
    [
      _perpetualId: BigNumberish,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[],
      _maxAcceptableFeedAge: BigNumberish
    ],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "updateVolumeEMAOnNewTrade"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _brokerAddr: AddressLike,
      _tradeAmountBC: BigNumberish
    ],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "validateStopPrice"
  ): TypedContractMethod<
    [_isLong: boolean, _fMarkPrice: BigNumberish, _fTriggerPrice: BigNumberish],
    [void],
    "view"
  >;
  getFunction(
    nameOrSignature: "withdraw"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _fAmount: BigNumberish,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[]
    ],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "withdrawAll"
  ): TypedContractMethod<
    [
      _iPerpetualId: BigNumberish,
      _traderAddr: AddressLike,
      _updateData: BytesLike[],
      _publishTimes: BigNumberish[]
    ],
    [void],
    "payable"
  >;
  getFunction(
    nameOrSignature: "withdrawDepositFromMarginAccount"
  ): TypedContractMethod<
    [_iPerpetualId: BigNumberish, _traderAddr: AddressLike],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "withdrawFromDefaultFund"
  ): TypedContractMethod<
    [_poolId: BigNumberish, _fAmount: BigNumberish],
    [void],
    "nonpayable"
  >;
  getFunction(
    nameOrSignature: "withdrawLiquidity"
  ): TypedContractMethod<
    [_iPoolIndex: BigNumberish, _shareAmount: BigNumberish],
    [void],
    "nonpayable"
  >;

  getEvent(
    key: "BrokerLotsTransferred"
  ): TypedContractEvent<
    BrokerLotsTransferredEvent.InputTuple,
    BrokerLotsTransferredEvent.OutputTuple,
    BrokerLotsTransferredEvent.OutputObject
  >;
  getEvent(
    key: "BrokerVolumeTransferred"
  ): TypedContractEvent<
    BrokerVolumeTransferredEvent.InputTuple,
    BrokerVolumeTransferredEvent.OutputTuple,
    BrokerVolumeTransferredEvent.OutputObject
  >;
  getEvent(
    key: "Clear"
  ): TypedContractEvent<
    ClearEvent.InputTuple,
    ClearEvent.OutputTuple,
    ClearEvent.OutputObject
  >;
  getEvent(
    key: "DistributeFees"
  ): TypedContractEvent<
    DistributeFeesEvent.InputTuple,
    DistributeFeesEvent.OutputTuple,
    DistributeFeesEvent.OutputObject
  >;
  getEvent(
    key: "Liquidate"
  ): TypedContractEvent<
    LiquidateEvent.InputTuple,
    LiquidateEvent.OutputTuple,
    LiquidateEvent.OutputObject
  >;
  getEvent(
    key: "LiquidityAdded"
  ): TypedContractEvent<
    LiquidityAddedEvent.InputTuple,
    LiquidityAddedEvent.OutputTuple,
    LiquidityAddedEvent.OutputObject
  >;
  getEvent(
    key: "LiquidityPoolCreated"
  ): TypedContractEvent<
    LiquidityPoolCreatedEvent.InputTuple,
    LiquidityPoolCreatedEvent.OutputTuple,
    LiquidityPoolCreatedEvent.OutputObject
  >;
  getEvent(
    key: "LiquidityProvisionPaused"
  ): TypedContractEvent<
    LiquidityProvisionPausedEvent.InputTuple,
    LiquidityProvisionPausedEvent.OutputTuple,
    LiquidityProvisionPausedEvent.OutputObject
  >;
  getEvent(
    key: "LiquidityRemoved"
  ): TypedContractEvent<
    LiquidityRemovedEvent.InputTuple,
    LiquidityRemovedEvent.OutputTuple,
    LiquidityRemovedEvent.OutputObject
  >;
  getEvent(
    key: "LiquidityWithdrawalInitiated"
  ): TypedContractEvent<
    LiquidityWithdrawalInitiatedEvent.InputTuple,
    LiquidityWithdrawalInitiatedEvent.OutputTuple,
    LiquidityWithdrawalInitiatedEvent.OutputObject
  >;
  getEvent(
    key: "PerpetualCreated"
  ): TypedContractEvent<
    PerpetualCreatedEvent.InputTuple,
    PerpetualCreatedEvent.OutputTuple,
    PerpetualCreatedEvent.OutputObject
  >;
  getEvent(
    key: "PerpetualLimitOrderCancelled"
  ): TypedContractEvent<
    PerpetualLimitOrderCancelledEvent.InputTuple,
    PerpetualLimitOrderCancelledEvent.OutputTuple,
    PerpetualLimitOrderCancelledEvent.OutputObject
  >;
  getEvent(
    key: "RunLiquidityPool"
  ): TypedContractEvent<
    RunLiquidityPoolEvent.InputTuple,
    RunLiquidityPoolEvent.OutputTuple,
    RunLiquidityPoolEvent.OutputObject
  >;
  getEvent(
    key: "SetBlockDelay"
  ): TypedContractEvent<
    SetBlockDelayEvent.InputTuple,
    SetBlockDelayEvent.OutputTuple,
    SetBlockDelayEvent.OutputObject
  >;
  getEvent(
    key: "SetBrokerDesignations"
  ): TypedContractEvent<
    SetBrokerDesignationsEvent.InputTuple,
    SetBrokerDesignationsEvent.OutputTuple,
    SetBrokerDesignationsEvent.OutputObject
  >;
  getEvent(
    key: "SetBrokerTiers"
  ): TypedContractEvent<
    SetBrokerTiersEvent.InputTuple,
    SetBrokerTiersEvent.OutputTuple,
    SetBrokerTiersEvent.OutputObject
  >;
  getEvent(
    key: "SetBrokerVolumeTiers"
  ): TypedContractEvent<
    SetBrokerVolumeTiersEvent.InputTuple,
    SetBrokerVolumeTiersEvent.OutputTuple,
    SetBrokerVolumeTiersEvent.OutputObject
  >;
  getEvent(
    key: "SetClearedState"
  ): TypedContractEvent<
    SetClearedStateEvent.InputTuple,
    SetClearedStateEvent.OutputTuple,
    SetClearedStateEvent.OutputObject
  >;
  getEvent(
    key: "SetDelegate"
  ): TypedContractEvent<
    SetDelegateEvent.InputTuple,
    SetDelegateEvent.OutputTuple,
    SetDelegateEvent.OutputObject
  >;
  getEvent(
    key: "SetEmergencyState"
  ): TypedContractEvent<
    SetEmergencyStateEvent.InputTuple,
    SetEmergencyStateEvent.OutputTuple,
    SetEmergencyStateEvent.OutputObject
  >;
  getEvent(
    key: "SetNormalState"
  ): TypedContractEvent<
    SetNormalStateEvent.InputTuple,
    SetNormalStateEvent.OutputTuple,
    SetNormalStateEvent.OutputObject
  >;
  getEvent(
    key: "SetOracles"
  ): TypedContractEvent<
    SetOraclesEvent.InputTuple,
    SetOraclesEvent.OutputTuple,
    SetOraclesEvent.OutputObject
  >;
  getEvent(
    key: "SetParameter"
  ): TypedContractEvent<
    SetParameterEvent.InputTuple,
    SetParameterEvent.OutputTuple,
    SetParameterEvent.OutputObject
  >;
  getEvent(
    key: "SetParameterPair"
  ): TypedContractEvent<
    SetParameterPairEvent.InputTuple,
    SetParameterPairEvent.OutputTuple,
    SetParameterPairEvent.OutputObject
  >;
  getEvent(
    key: "SetPerpetualBaseParameters"
  ): TypedContractEvent<
    SetPerpetualBaseParametersEvent.InputTuple,
    SetPerpetualBaseParametersEvent.OutputTuple,
    SetPerpetualBaseParametersEvent.OutputObject
  >;
  getEvent(
    key: "SetPerpetualRiskParameters"
  ): TypedContractEvent<
    SetPerpetualRiskParametersEvent.InputTuple,
    SetPerpetualRiskParametersEvent.OutputTuple,
    SetPerpetualRiskParametersEvent.OutputObject
  >;
  getEvent(
    key: "SetPoolParameter"
  ): TypedContractEvent<
    SetPoolParameterEvent.InputTuple,
    SetPoolParameterEvent.OutputTuple,
    SetPoolParameterEvent.OutputObject
  >;
  getEvent(
    key: "SetTraderTiers"
  ): TypedContractEvent<
    SetTraderTiersEvent.InputTuple,
    SetTraderTiersEvent.OutputTuple,
    SetTraderTiersEvent.OutputObject
  >;
  getEvent(
    key: "SetTraderVolumeTiers"
  ): TypedContractEvent<
    SetTraderVolumeTiersEvent.InputTuple,
    SetTraderVolumeTiersEvent.OutputTuple,
    SetTraderVolumeTiersEvent.OutputObject
  >;
  getEvent(
    key: "SetUtilityToken"
  ): TypedContractEvent<
    SetUtilityTokenEvent.InputTuple,
    SetUtilityTokenEvent.OutputTuple,
    SetUtilityTokenEvent.OutputObject
  >;
  getEvent(
    key: "Settle"
  ): TypedContractEvent<
    SettleEvent.InputTuple,
    SettleEvent.OutputTuple,
    SettleEvent.OutputObject
  >;
  getEvent(
    key: "SettleState"
  ): TypedContractEvent<
    SettleStateEvent.InputTuple,
    SettleStateEvent.OutputTuple,
    SettleStateEvent.OutputObject
  >;
  getEvent(
    key: "SettlementComplete"
  ): TypedContractEvent<
    SettlementCompleteEvent.InputTuple,
    SettlementCompleteEvent.OutputTuple,
    SettlementCompleteEvent.OutputObject
  >;
  getEvent(
    key: "TokensDeposited"
  ): TypedContractEvent<
    TokensDepositedEvent.InputTuple,
    TokensDepositedEvent.OutputTuple,
    TokensDepositedEvent.OutputObject
  >;
  getEvent(
    key: "TokensWithdrawn"
  ): TypedContractEvent<
    TokensWithdrawnEvent.InputTuple,
    TokensWithdrawnEvent.OutputTuple,
    TokensWithdrawnEvent.OutputObject
  >;
  getEvent(
    key: "Trade"
  ): TypedContractEvent<
    TradeEvent.InputTuple,
    TradeEvent.OutputTuple,
    TradeEvent.OutputObject
  >;
  getEvent(
    key: "TransferAddressTo"
  ): TypedContractEvent<
    TransferAddressToEvent.InputTuple,
    TransferAddressToEvent.OutputTuple,
    TransferAddressToEvent.OutputObject
  >;
  getEvent(
    key: "UpdateBrokerAddedCash"
  ): TypedContractEvent<
    UpdateBrokerAddedCashEvent.InputTuple,
    UpdateBrokerAddedCashEvent.OutputTuple,
    UpdateBrokerAddedCashEvent.OutputObject
  >;
  getEvent(
    key: "UpdateFundingRate"
  ): TypedContractEvent<
    UpdateFundingRateEvent.InputTuple,
    UpdateFundingRateEvent.OutputTuple,
    UpdateFundingRateEvent.OutputObject
  >;
  getEvent(
    key: "UpdateMarginAccount"
  ): TypedContractEvent<
    UpdateMarginAccountEvent.InputTuple,
    UpdateMarginAccountEvent.OutputTuple,
    UpdateMarginAccountEvent.OutputObject
  >;
  getEvent(
    key: "UpdateMarkPrice"
  ): TypedContractEvent<
    UpdateMarkPriceEvent.InputTuple,
    UpdateMarkPriceEvent.OutputTuple,
    UpdateMarkPriceEvent.OutputObject
  >;

  filters: {
    "BrokerLotsTransferred(uint8,address,address,uint32)": TypedContractEvent<
      BrokerLotsTransferredEvent.InputTuple,
      BrokerLotsTransferredEvent.OutputTuple,
      BrokerLotsTransferredEvent.OutputObject
    >;
    BrokerLotsTransferred: TypedContractEvent<
      BrokerLotsTransferredEvent.InputTuple,
      BrokerLotsTransferredEvent.OutputTuple,
      BrokerLotsTransferredEvent.OutputObject
    >;

    "BrokerVolumeTransferred(uint8,address,address,int128)": TypedContractEvent<
      BrokerVolumeTransferredEvent.InputTuple,
      BrokerVolumeTransferredEvent.OutputTuple,
      BrokerVolumeTransferredEvent.OutputObject
    >;
    BrokerVolumeTransferred: TypedContractEvent<
      BrokerVolumeTransferredEvent.InputTuple,
      BrokerVolumeTransferredEvent.OutputTuple,
      BrokerVolumeTransferredEvent.OutputObject
    >;

    "Clear(uint24,address)": TypedContractEvent<
      ClearEvent.InputTuple,
      ClearEvent.OutputTuple,
      ClearEvent.OutputObject
    >;
    Clear: TypedContractEvent<
      ClearEvent.InputTuple,
      ClearEvent.OutputTuple,
      ClearEvent.OutputObject
    >;

    "DistributeFees(uint8,uint24,address,int128,int128)": TypedContractEvent<
      DistributeFeesEvent.InputTuple,
      DistributeFeesEvent.OutputTuple,
      DistributeFeesEvent.OutputObject
    >;
    DistributeFees: TypedContractEvent<
      DistributeFeesEvent.InputTuple,
      DistributeFeesEvent.OutputTuple,
      DistributeFeesEvent.OutputObject
    >;

    "Liquidate(uint24,address,address,int128,int128,int128,int128,int128)": TypedContractEvent<
      LiquidateEvent.InputTuple,
      LiquidateEvent.OutputTuple,
      LiquidateEvent.OutputObject
    >;
    Liquidate: TypedContractEvent<
      LiquidateEvent.InputTuple,
      LiquidateEvent.OutputTuple,
      LiquidateEvent.OutputObject
    >;

    "LiquidityAdded(uint8,address,uint256,uint256)": TypedContractEvent<
      LiquidityAddedEvent.InputTuple,
      LiquidityAddedEvent.OutputTuple,
      LiquidityAddedEvent.OutputObject
    >;
    LiquidityAdded: TypedContractEvent<
      LiquidityAddedEvent.InputTuple,
      LiquidityAddedEvent.OutputTuple,
      LiquidityAddedEvent.OutputObject
    >;

    "LiquidityPoolCreated(uint8,address,address,uint16,int128)": TypedContractEvent<
      LiquidityPoolCreatedEvent.InputTuple,
      LiquidityPoolCreatedEvent.OutputTuple,
      LiquidityPoolCreatedEvent.OutputObject
    >;
    LiquidityPoolCreated: TypedContractEvent<
      LiquidityPoolCreatedEvent.InputTuple,
      LiquidityPoolCreatedEvent.OutputTuple,
      LiquidityPoolCreatedEvent.OutputObject
    >;

    "LiquidityProvisionPaused(bool,uint8)": TypedContractEvent<
      LiquidityProvisionPausedEvent.InputTuple,
      LiquidityProvisionPausedEvent.OutputTuple,
      LiquidityProvisionPausedEvent.OutputObject
    >;
    LiquidityProvisionPaused: TypedContractEvent<
      LiquidityProvisionPausedEvent.InputTuple,
      LiquidityProvisionPausedEvent.OutputTuple,
      LiquidityProvisionPausedEvent.OutputObject
    >;

    "LiquidityRemoved(uint8,address,uint256,uint256)": TypedContractEvent<
      LiquidityRemovedEvent.InputTuple,
      LiquidityRemovedEvent.OutputTuple,
      LiquidityRemovedEvent.OutputObject
    >;
    LiquidityRemoved: TypedContractEvent<
      LiquidityRemovedEvent.InputTuple,
      LiquidityRemovedEvent.OutputTuple,
      LiquidityRemovedEvent.OutputObject
    >;

    "LiquidityWithdrawalInitiated(uint8,address,uint256)": TypedContractEvent<
      LiquidityWithdrawalInitiatedEvent.InputTuple,
      LiquidityWithdrawalInitiatedEvent.OutputTuple,
      LiquidityWithdrawalInitiatedEvent.OutputObject
    >;
    LiquidityWithdrawalInitiated: TypedContractEvent<
      LiquidityWithdrawalInitiatedEvent.InputTuple,
      LiquidityWithdrawalInitiatedEvent.OutputTuple,
      LiquidityWithdrawalInitiatedEvent.OutputObject
    >;

    "PerpetualCreated(uint8,uint24,int128[7],int128[5],int128[12],uint256)": TypedContractEvent<
      PerpetualCreatedEvent.InputTuple,
      PerpetualCreatedEvent.OutputTuple,
      PerpetualCreatedEvent.OutputObject
    >;
    PerpetualCreated: TypedContractEvent<
      PerpetualCreatedEvent.InputTuple,
      PerpetualCreatedEvent.OutputTuple,
      PerpetualCreatedEvent.OutputObject
    >;

    "PerpetualLimitOrderCancelled(uint24,bytes32)": TypedContractEvent<
      PerpetualLimitOrderCancelledEvent.InputTuple,
      PerpetualLimitOrderCancelledEvent.OutputTuple,
      PerpetualLimitOrderCancelledEvent.OutputObject
    >;
    PerpetualLimitOrderCancelled: TypedContractEvent<
      PerpetualLimitOrderCancelledEvent.InputTuple,
      PerpetualLimitOrderCancelledEvent.OutputTuple,
      PerpetualLimitOrderCancelledEvent.OutputObject
    >;

    "RunLiquidityPool(uint8)": TypedContractEvent<
      RunLiquidityPoolEvent.InputTuple,
      RunLiquidityPoolEvent.OutputTuple,
      RunLiquidityPoolEvent.OutputObject
    >;
    RunLiquidityPool: TypedContractEvent<
      RunLiquidityPoolEvent.InputTuple,
      RunLiquidityPoolEvent.OutputTuple,
      RunLiquidityPoolEvent.OutputObject
    >;

    "SetBlockDelay(uint8)": TypedContractEvent<
      SetBlockDelayEvent.InputTuple,
      SetBlockDelayEvent.OutputTuple,
      SetBlockDelayEvent.OutputObject
    >;
    SetBlockDelay: TypedContractEvent<
      SetBlockDelayEvent.InputTuple,
      SetBlockDelayEvent.OutputTuple,
      SetBlockDelayEvent.OutputObject
    >;

    "SetBrokerDesignations(uint32[],uint16[])": TypedContractEvent<
      SetBrokerDesignationsEvent.InputTuple,
      SetBrokerDesignationsEvent.OutputTuple,
      SetBrokerDesignationsEvent.OutputObject
    >;
    SetBrokerDesignations: TypedContractEvent<
      SetBrokerDesignationsEvent.InputTuple,
      SetBrokerDesignationsEvent.OutputTuple,
      SetBrokerDesignationsEvent.OutputObject
    >;

    "SetBrokerTiers(uint256[],uint16[])": TypedContractEvent<
      SetBrokerTiersEvent.InputTuple,
      SetBrokerTiersEvent.OutputTuple,
      SetBrokerTiersEvent.OutputObject
    >;
    SetBrokerTiers: TypedContractEvent<
      SetBrokerTiersEvent.InputTuple,
      SetBrokerTiersEvent.OutputTuple,
      SetBrokerTiersEvent.OutputObject
    >;

    "SetBrokerVolumeTiers(uint256[],uint16[])": TypedContractEvent<
      SetBrokerVolumeTiersEvent.InputTuple,
      SetBrokerVolumeTiersEvent.OutputTuple,
      SetBrokerVolumeTiersEvent.OutputObject
    >;
    SetBrokerVolumeTiers: TypedContractEvent<
      SetBrokerVolumeTiersEvent.InputTuple,
      SetBrokerVolumeTiersEvent.OutputTuple,
      SetBrokerVolumeTiersEvent.OutputObject
    >;

    "SetClearedState(uint24)": TypedContractEvent<
      SetClearedStateEvent.InputTuple,
      SetClearedStateEvent.OutputTuple,
      SetClearedStateEvent.OutputObject
    >;
    SetClearedState: TypedContractEvent<
      SetClearedStateEvent.InputTuple,
      SetClearedStateEvent.OutputTuple,
      SetClearedStateEvent.OutputObject
    >;

    "SetDelegate(address,address,uint256)": TypedContractEvent<
      SetDelegateEvent.InputTuple,
      SetDelegateEvent.OutputTuple,
      SetDelegateEvent.OutputObject
    >;
    SetDelegate: TypedContractEvent<
      SetDelegateEvent.InputTuple,
      SetDelegateEvent.OutputTuple,
      SetDelegateEvent.OutputObject
    >;

    "SetEmergencyState(uint24,int128,int128,int128)": TypedContractEvent<
      SetEmergencyStateEvent.InputTuple,
      SetEmergencyStateEvent.OutputTuple,
      SetEmergencyStateEvent.OutputObject
    >;
    SetEmergencyState: TypedContractEvent<
      SetEmergencyStateEvent.InputTuple,
      SetEmergencyStateEvent.OutputTuple,
      SetEmergencyStateEvent.OutputObject
    >;

    "SetNormalState(uint24)": TypedContractEvent<
      SetNormalStateEvent.InputTuple,
      SetNormalStateEvent.OutputTuple,
      SetNormalStateEvent.OutputObject
    >;
    SetNormalState: TypedContractEvent<
      SetNormalStateEvent.InputTuple,
      SetNormalStateEvent.OutputTuple,
      SetNormalStateEvent.OutputObject
    >;

    "SetOracles(uint24,bytes4[2],bytes4[2])": TypedContractEvent<
      SetOraclesEvent.InputTuple,
      SetOraclesEvent.OutputTuple,
      SetOraclesEvent.OutputObject
    >;
    SetOracles: TypedContractEvent<
      SetOraclesEvent.InputTuple,
      SetOraclesEvent.OutputTuple,
      SetOraclesEvent.OutputObject
    >;

    "SetParameter(uint24,string,int128)": TypedContractEvent<
      SetParameterEvent.InputTuple,
      SetParameterEvent.OutputTuple,
      SetParameterEvent.OutputObject
    >;
    SetParameter: TypedContractEvent<
      SetParameterEvent.InputTuple,
      SetParameterEvent.OutputTuple,
      SetParameterEvent.OutputObject
    >;

    "SetParameterPair(uint24,string,int128,int128)": TypedContractEvent<
      SetParameterPairEvent.InputTuple,
      SetParameterPairEvent.OutputTuple,
      SetParameterPairEvent.OutputObject
    >;
    SetParameterPair: TypedContractEvent<
      SetParameterPairEvent.InputTuple,
      SetParameterPairEvent.OutputTuple,
      SetParameterPairEvent.OutputObject
    >;

    "SetPerpetualBaseParameters(uint24,int128[7])": TypedContractEvent<
      SetPerpetualBaseParametersEvent.InputTuple,
      SetPerpetualBaseParametersEvent.OutputTuple,
      SetPerpetualBaseParametersEvent.OutputObject
    >;
    SetPerpetualBaseParameters: TypedContractEvent<
      SetPerpetualBaseParametersEvent.InputTuple,
      SetPerpetualBaseParametersEvent.OutputTuple,
      SetPerpetualBaseParametersEvent.OutputObject
    >;

    "SetPerpetualRiskParameters(uint24,int128[5],int128[12])": TypedContractEvent<
      SetPerpetualRiskParametersEvent.InputTuple,
      SetPerpetualRiskParametersEvent.OutputTuple,
      SetPerpetualRiskParametersEvent.OutputObject
    >;
    SetPerpetualRiskParameters: TypedContractEvent<
      SetPerpetualRiskParametersEvent.InputTuple,
      SetPerpetualRiskParametersEvent.OutputTuple,
      SetPerpetualRiskParametersEvent.OutputObject
    >;

    "SetPoolParameter(uint8,string,int128)": TypedContractEvent<
      SetPoolParameterEvent.InputTuple,
      SetPoolParameterEvent.OutputTuple,
      SetPoolParameterEvent.OutputObject
    >;
    SetPoolParameter: TypedContractEvent<
      SetPoolParameterEvent.InputTuple,
      SetPoolParameterEvent.OutputTuple,
      SetPoolParameterEvent.OutputObject
    >;

    "SetTraderTiers(uint256[],uint16[])": TypedContractEvent<
      SetTraderTiersEvent.InputTuple,
      SetTraderTiersEvent.OutputTuple,
      SetTraderTiersEvent.OutputObject
    >;
    SetTraderTiers: TypedContractEvent<
      SetTraderTiersEvent.InputTuple,
      SetTraderTiersEvent.OutputTuple,
      SetTraderTiersEvent.OutputObject
    >;

    "SetTraderVolumeTiers(uint256[],uint16[])": TypedContractEvent<
      SetTraderVolumeTiersEvent.InputTuple,
      SetTraderVolumeTiersEvent.OutputTuple,
      SetTraderVolumeTiersEvent.OutputObject
    >;
    SetTraderVolumeTiers: TypedContractEvent<
      SetTraderVolumeTiersEvent.InputTuple,
      SetTraderVolumeTiersEvent.OutputTuple,
      SetTraderVolumeTiersEvent.OutputObject
    >;

    "SetUtilityToken(address)": TypedContractEvent<
      SetUtilityTokenEvent.InputTuple,
      SetUtilityTokenEvent.OutputTuple,
      SetUtilityTokenEvent.OutputObject
    >;
    SetUtilityToken: TypedContractEvent<
      SetUtilityTokenEvent.InputTuple,
      SetUtilityTokenEvent.OutputTuple,
      SetUtilityTokenEvent.OutputObject
    >;

    "Settle(uint24,address,int256)": TypedContractEvent<
      SettleEvent.InputTuple,
      SettleEvent.OutputTuple,
      SettleEvent.OutputObject
    >;
    Settle: TypedContractEvent<
      SettleEvent.InputTuple,
      SettleEvent.OutputTuple,
      SettleEvent.OutputObject
    >;

    "SettleState(uint24)": TypedContractEvent<
      SettleStateEvent.InputTuple,
      SettleStateEvent.OutputTuple,
      SettleStateEvent.OutputObject
    >;
    SettleState: TypedContractEvent<
      SettleStateEvent.InputTuple,
      SettleStateEvent.OutputTuple,
      SettleStateEvent.OutputObject
    >;

    "SettlementComplete(uint24)": TypedContractEvent<
      SettlementCompleteEvent.InputTuple,
      SettlementCompleteEvent.OutputTuple,
      SettlementCompleteEvent.OutputObject
    >;
    SettlementComplete: TypedContractEvent<
      SettlementCompleteEvent.InputTuple,
      SettlementCompleteEvent.OutputTuple,
      SettlementCompleteEvent.OutputObject
    >;

    "TokensDeposited(uint24,address,int128)": TypedContractEvent<
      TokensDepositedEvent.InputTuple,
      TokensDepositedEvent.OutputTuple,
      TokensDepositedEvent.OutputObject
    >;
    TokensDeposited: TypedContractEvent<
      TokensDepositedEvent.InputTuple,
      TokensDepositedEvent.OutputTuple,
      TokensDepositedEvent.OutputObject
    >;

    "TokensWithdrawn(uint24,address,int128)": TypedContractEvent<
      TokensWithdrawnEvent.InputTuple,
      TokensWithdrawnEvent.OutputTuple,
      TokensWithdrawnEvent.OutputObject
    >;
    TokensWithdrawn: TypedContractEvent<
      TokensWithdrawnEvent.InputTuple,
      TokensWithdrawnEvent.OutputTuple,
      TokensWithdrawnEvent.OutputObject
    >;

    "Trade(uint24,address,tuple,bytes32,int128,int128,int128,int128,int128)": TypedContractEvent<
      TradeEvent.InputTuple,
      TradeEvent.OutputTuple,
      TradeEvent.OutputObject
    >;
    Trade: TypedContractEvent<
      TradeEvent.InputTuple,
      TradeEvent.OutputTuple,
      TradeEvent.OutputObject
    >;

    "TransferAddressTo(string,address,address)": TypedContractEvent<
      TransferAddressToEvent.InputTuple,
      TransferAddressToEvent.OutputTuple,
      TransferAddressToEvent.OutputObject
    >;
    TransferAddressTo: TypedContractEvent<
      TransferAddressToEvent.InputTuple,
      TransferAddressToEvent.OutputTuple,
      TransferAddressToEvent.OutputObject
    >;

    "UpdateBrokerAddedCash(uint8,uint32,uint32)": TypedContractEvent<
      UpdateBrokerAddedCashEvent.InputTuple,
      UpdateBrokerAddedCashEvent.OutputTuple,
      UpdateBrokerAddedCashEvent.OutputObject
    >;
    UpdateBrokerAddedCash: TypedContractEvent<
      UpdateBrokerAddedCashEvent.InputTuple,
      UpdateBrokerAddedCashEvent.OutputTuple,
      UpdateBrokerAddedCashEvent.OutputObject
    >;

    "UpdateFundingRate(uint24,int128)": TypedContractEvent<
      UpdateFundingRateEvent.InputTuple,
      UpdateFundingRateEvent.OutputTuple,
      UpdateFundingRateEvent.OutputObject
    >;
    UpdateFundingRate: TypedContractEvent<
      UpdateFundingRateEvent.InputTuple,
      UpdateFundingRateEvent.OutputTuple,
      UpdateFundingRateEvent.OutputObject
    >;

    "UpdateMarginAccount(uint24,address,int128)": TypedContractEvent<
      UpdateMarginAccountEvent.InputTuple,
      UpdateMarginAccountEvent.OutputTuple,
      UpdateMarginAccountEvent.OutputObject
    >;
    UpdateMarginAccount: TypedContractEvent<
      UpdateMarginAccountEvent.InputTuple,
      UpdateMarginAccountEvent.OutputTuple,
      UpdateMarginAccountEvent.OutputObject
    >;

    "UpdateMarkPrice(uint24,int128,int128,int128)": TypedContractEvent<
      UpdateMarkPriceEvent.InputTuple,
      UpdateMarkPriceEvent.OutputTuple,
      UpdateMarkPriceEvent.OutputObject
    >;
    UpdateMarkPrice: TypedContractEvent<
      UpdateMarkPriceEvent.InputTuple,
      UpdateMarkPriceEvent.OutputTuple,
      UpdateMarkPriceEvent.OutputObject
    >;
  };
}
