import { iAMMFactoryAbi, iMarketAbi, iMarketFactoryAbi, iMarketHubAbi, iRouterAbi } from '../contracts/abis/viemAbis'; import { Abi, AbiStateMutability, Address, BlockTag, ContractFunctionName, GetContractReturnType, GetEventArgs, Hex, PublicClient } from 'viem'; export interface Options { blockTag?: BlockTag; } export interface MulticallAndClient { multicall: Address | undefined; client: PublicClient; } export type Contract = GetContractReturnType; export type ExtractAbiFunctions = Extract; export type ExtractAbiFunction, abiStateMutability extends AbiStateMutability = AbiStateMutability> = Extract, { name: functionName; }>; export declare enum OrderStatus { NOT_EXIST = 0, OPEN = 1, FILLED = 2 } export declare enum MarketStatus { PAUSED = 0, CLO = 1, GOOD = 2 } export type ContractOrder = { status: OrderStatus; id: bigint; maker: Address; size: bigint; rate: bigint; }; export type Order = ContractOrder & { initialMarginWithLeverage: bigint; }; export type ContractSwapPosition = { s: bigint; sf: bigint; }; export type ContractUserMarketPosition = { marketId: number; signedSize: bigint; positionValue: bigint; liquidationApr: bigint; initialMargin: bigint; maintMargin: bigint; orders: ContractOrder[]; }; export type UserMarketPosition = Omit & { leverage: number; initialMarginWithLeverage: bigint; orders: Order[]; }; export type ContractUserInfo = { totalCash: bigint; positions: ContractUserMarketPosition[]; availableInitialMargin: bigint; availableMaintMargin: bigint; }; export type UserInfo = Omit & { positions: UserMarketPosition[]; netBalance: bigint; initialMargin: bigint; initialMarginWithLeverage: bigint; availableInitialMarginWithLeverage: bigint; }; export type ExtractAbiEvents = Extract; export type ExtractAbiEventNames = ExtractAbiEvents['name']; export type ExtractAbiEvent> = Extract, { name: eventName; }>; export type EventArgs, strict extends boolean = true> = GetEventArgs; export type SwapPosition = { s: bigint; sf: bigint; }; export type ExecData = { subaccountId: bigint; data: Hex; }; export type FIndex = Hex; export type CLOThreshold = { lowerThres: bigint; upperThres: bigint; }; export type PersonalMarginConfigUpdatedEventArgs = EventArgs; export type PersonalDiscRatesUpdatedEventArgs = EventArgs; export type PersonalExemptCLOCheckUpdatedEventArgs = EventArgs; export type ImpliedRateObservationWindowUpdatedEventArgs = EventArgs; export type MaxOpenOrdersUpdatedEventArgs = EventArgs; export type OracleAddressesUpdatedEventArgs = EventArgs; export type OICapUpdatedEventArgs = EventArgs; export type FeeRatesUpdatedEventArgs = EventArgs; export type LiquidationSettingsUpdatedEventArgs = EventArgs; export type MarginConfigUpdatedEventArgs = EventArgs; export type LimitOrderConfigUpdatedEventArgs = EventArgs; export type StatusUpdatedEventArgs = EventArgs; export type FIndexUpdatedEventArgs = EventArgs; export type FTagUpdatedOnPurgeEventArgs = EventArgs; export type PaymentFromSettlementEventArgs = EventArgs; export type LimitOrderFilledEventArgs = EventArgs; export type LimitOrderPlacedEventArgs = EventArgs; export type LimitOrderPartiallyFilledEventArgs = EventArgs; export type LimitOrderCancelledEventArgs = EventArgs; export type LimitOrderForcedCancelledEventArgs = EventArgs; export type OobOrdersPurgedEventArgs = EventArgs; export type MarketOrdersFilledEventArgs = EventArgs; export type OtcSwapEventArgs = EventArgs; export type LiquidateEventArgs = EventArgs; export type ForceDeleverageEventArgs = EventArgs; export type EnterMarketEventArgs = EventArgs; export type ExitMarketEventArgs = EventArgs; export type VaultDepositEventArgs = EventArgs; export type VaultWithdrawalRequestedEventArgs = EventArgs; export type VaultWithdrawalCanceledEventArgs = EventArgs; export type VaultWithdrawalFinalizedEventArgs = EventArgs; export type PersonalCooldownSetEventArgs = EventArgs; export type CashTransferEventArgs = EventArgs; export type PayTreasuryEventArgs = EventArgs; export type TokenAddedEventArgs = EventArgs; export type MarketAddedEventArgs = EventArgs; export type GlobalCooldownSetEventArgs = EventArgs; export type CollectFeeEventArgs = EventArgs; export type CritHRUpdatedEventArgs = EventArgs; export type RiskyThresHRUpdatedEventArgs = EventArgs; export type StrictHealthCheckUpdatedEventArgs = EventArgs; export type MinCashCrossAccountsUpdatedEventArgs = EventArgs; export type MinCashIsolatedAccountsUpdatedEventArgs = EventArgs; export type MarketEntranceFeesUpdatedEventArgs = EventArgs; export type MarketCreatedEventArgs = EventArgs; export type AmmCreatedEventArgs = EventArgs; export type NewAccManagerSetEventArgs = EventArgs; export type AgentApprovedEventArgs = EventArgs; export type AgentRevokedEventArgs = EventArgs; export type SingleOrderExecutedEventArgs = EventArgs; export type BulkOrdersExecutedEventArgs = EventArgs; export type SwapWithAmmEventArgs = EventArgs; export type AddLiquidityDualToAmmEventArgs = EventArgs; export type AddLiquiditySingleCashToAmmEventArgs = EventArgs; export type RemoveLiquidityDualFromAmmEventArgs = EventArgs; export type RemoveLiquiditySingleCashFromAmmEventArgs = EventArgs; export type TradeEventArgs = LimitOrderFilledEventArgs | LimitOrderPlacedEventArgs | LimitOrderPartiallyFilledEventArgs | LimitOrderCancelledEventArgs | OobOrdersPurgedEventArgs | ForceDeleverageEventArgs | LiquidateEventArgs | MarketOrdersFilledEventArgs | OtcSwapEventArgs | FIndexUpdatedEventArgs; export type AmmEventArgs = AddLiquidityDualToAmmEventArgs | AddLiquiditySingleCashToAmmEventArgs | RemoveLiquidityDualFromAmmEventArgs | RemoveLiquiditySingleCashFromAmmEventArgs; export type OrderExecutedEventArgs = SingleOrderExecutedEventArgs | BulkOrdersExecutedEventArgs; export type MarketId = number; export type TokenId = number; export type AccountId = number;