/// /// /// import { BeetStruct } from '@metaplex-foundation/beet'; import { PublicKey } from '@solana/web3.js'; import BigNumber from 'bignumber.js'; import BN from 'bn.js'; export declare enum OrderTriggerCondition { Above = 0, Below = 1, TriggeredAbove = 2, TriggeredBelow = 3 } export declare enum PositionDirection { Long = 0, Short = 1 } export declare enum MarketType { Spot = 0, Perp = 1 } export declare enum OrderType { Market = 0, Limit = 1, TriggerMarket = 2, TriggerLimit = 3, Oracle = 4 } export declare enum OrderStatus { Init = 0, Open = 1, Filled = 2, Canceled = 3 } export declare enum SpotBalanceType { Deposit = 0, Borrow = 1 } export declare enum UserStatus { Active = 0, BeingLiquidated = 1, Bankrupt = 2 } export declare enum AssetTier { Collateral = 0, Protected = 1, Cross = 2, Isolated = 3, Unlisted = 4 } export declare enum MarketStatus { Initialized = 0, Active = 1, FundingPaused = 2, AmmPaused = 3, FillPaused = 4, WithdrawPaused = 5, ReduceOnly = 6, Settlement = 7, Delisted = 8 } export declare enum OracleSource { Pyth = 0, Switchboard = 1, QuoteAsset = 2, Pyth1K = 3, Pyth1M = 4, PythStableCoin = 5, Prelaunch = 6, PythPull = 7, Pyth1KPull = 8, Pyth1MPull = 9, PythStableCoinPull = 10, SWITCHBOARD_ON_DEMAND = 11, pythLazer = 12, pythLazer1K = 13, pythLazer1M = 14, pythLazerStableCoin = 15 } export declare enum ContractType { Perpetual = 0, Future = 1 } export declare enum ContractTier { A = 0, B = 1, C = 2, Speculative = 3, Isolated = 4 } export type Order = { slot: BigNumber; price: BigNumber; baseAssetAmount: BigNumber; baseAssetAmountFilled: BigNumber; quoteAssetAmountFilled: BigNumber; triggerPrice: BigNumber; auctionStartPrice: BigNumber; auctionEndPrice: BigNumber; maxTs: BigNumber; oraclePriceOffset: BigNumber; orderId: BigNumber; marketIndex: number; status: OrderStatus; orderType: OrderType; marketType: MarketType; userOrderId: number; existingPositionDirection: PositionDirection; direction: PositionDirection; reduceOnly: boolean; postOnly: boolean; immediateOrCancel: boolean; triggerCondition: OrderTriggerCondition; auctionDuration: number; padding: number; }; export declare const orderStruct: BeetStruct>; export type PerpPosition = { lastCumulativeFundingRate: BN; baseAssetAmount: BN; quoteAssetAmount: BN; quoteBreakEvenAmount: BN; quoteEntryAmount: BN; openBids: BN; openAsks: BN; settledPnl: BN; lpShares: BN; lastBaseAssetAmountPerLp: BN; lastQuoteAssetAmountPerLp: BN; remainderBaseAssetAmount: BN; marketIndex: number; openOrders: number; padding: number[]; }; export declare const perpPositionStruct: BeetStruct>; export type PoolBalance = { scaledBalance: BigNumber; marketIndex: number; padding: number[]; }; export declare const poolBalanceStruct: BeetStruct>; export type HistoricalIndexData = { lastIndexBidPrice: BigNumber; lastIndexAskPrice: BigNumber; lastIndexPriceTwap: BigNumber; lastIndexPriceTwap5min: BigNumber; lastIndexPriceTwapTs: BigNumber; }; export declare const historicalIndexDataStruct: BeetStruct>; export type HistoricalOracleData = { lastOraclePrice: BigNumber; lastOracleConf: BigNumber; lastOracleDelay: BigNumber; lastOraclePriceTwap: BigNumber; lastOraclePriceTwap5Min: BigNumber; lastOraclePriceTwapTs: BigNumber; }; export declare const historicalOracleDataStruct: BeetStruct>; export type InsuranceFund = { vault: PublicKey; totalShares: BigNumber; userShares: BigNumber; sharesBase: BigNumber; unstakingPeriod: BigNumber; lastRevenueSettleTs: BigNumber; revenueSettlePeriod: BigNumber; totalFactor: number; userFactor: number; }; export declare const insuranceFundStruct: BeetStruct>; export type SpotMarket = { buffer: Buffer; pubkey: PublicKey; oracle: PublicKey; mint: PublicKey; vault: PublicKey; name: number[]; historicalOracleData: HistoricalOracleData; historicalIndexData: HistoricalIndexData; revenuePool: PoolBalance; spotFeePool: PoolBalance; insuranceFund: InsuranceFund; totalSpotFee: BigNumber; depositBalance: BigNumber; borrowBalance: BigNumber; cumulativeDepositInterest: BigNumber; cumulativeBorrowInterest: BigNumber; totalSocialLoss: BigNumber; totalQuoteSocialLoss: BigNumber; withdrawGuardThreshold: BigNumber; maxTokenDeposits: BigNumber; depositTokenTwap: BigNumber; borrowTokenTwap: BigNumber; utilizationTwap: BigNumber; lastInterestTs: BigNumber; lastTwapTs: BigNumber; expiryTs: BigNumber; orderStepSize: BigNumber; orderTickSize: BigNumber; minOrderSize: BigNumber; maxPositionSize: BigNumber; nextFillRecordId: BigNumber; nextDepositRecordId: BigNumber; initialAssetWeight: number; maintenanceAssetWeight: number; initialLiabilityWeight: number; maintenanceLiabilityWeight: number; imfFactor: number; liquidatorFee: number; ifLiquidationFee: number; optimalUtilization: number; optimalBorrowRate: number; maxBorrowRate: number; decimals: number; marketIndex: number; ordersEnabled: boolean; oracleSource: OracleSource; status: MarketStatus; assetTier: AssetTier; padding1: number[]; flashLoanAmount: BigNumber; flashLoanInitialTokenAmount: BigNumber; totalSwapFee: BigNumber; scaleInitialAssetWeightStart: BigNumber; minBorrowRate: number; fuelBoostDeposits: number; fuelBoostBorrows: number; fuelBoostTaker: number; fuelBoostMaker: number; fuelBoostInsurance: number; tokenProgram: number; poolId: number; padding: Buffer[]; }; export declare const spotMarketStruct: BeetStruct>; export type SpotPosition = { scaledBalance: BigNumber; openBids: BigNumber; openAsks: BigNumber; cumulativeDeposits: BigNumber; marketIndex: number; balanceType: SpotBalanceType; openOrders: number; padding: number[]; }; export declare const spotPositionStruct: BeetStruct>; export type UserAccount = { buffer: Buffer; authority: PublicKey; delegate: PublicKey; name: number[]; spotPositions: SpotPosition[]; perpPositions: PerpPosition[]; orders: Order[]; lastAddPerpLpSharesTs: BigNumber; totalDeposits: BigNumber; totalWithdraws: BigNumber; totalSocialLoss: BigNumber; settledPerpPnl: BigNumber; cumulativeSpotFees: BigNumber; cumulativePerpFunding: BigNumber; liquidationMarginFreed: BigNumber; lastActiveSlot: BigNumber; nextOrderId: number; maxMarginRatio: number; nextLiquidationId: number; subAccountId: number; status: UserStatus; isMarginTradingEnabled: boolean; idle: boolean; openOrders: number; hasOpenOrder: boolean; openAuctions: number; hasOpenAuction: boolean; padding: number[]; }; export declare const userAccountStruct: BeetStruct>; export type InsuranceFundStake = { buffer: Buffer; authority: PublicKey; ifShares: BigNumber; lastWithdrawRequestShares: BigNumber; ifBase: BigNumber; lastValidTs: BigNumber; lastWithdrawRequestValue: BigNumber; lastWithdrawRequestTs: BigNumber; costBasis: BigNumber; marketIndex: number; padding: number[]; }; export declare const insuranceFundStakeStruct: BeetStruct>; export type AMM = { oracle: PublicKey; historicalOracleData: HistoricalOracleData; baseAssetAmountPerLp: BN; quoteAssetAmountPerLp: BN; feePool: PoolBalance; baseAssetReserve: BN; quoteAssetReserve: BN; concentrationCoef: BN; minBaseAssetReserve: BN; maxBaseAssetReserve: BN; sqrtK: BN; pegMultiplier: BN; terminalQuoteAssetReserve: BN; baseAssetAmountLong: BN; baseAssetAmountShort: BN; baseAssetAmountWithAmm: BN; baseAssetAmountWithUnsettledLp: BN; maxOpenInterest: BN; quoteAssetAmount: BN; quoteEntryAmountLong: BN; quoteEntryAmountShort: BN; quoteBreakEvenAmountLong: BN; quoteBreakEvenAmountShort: BN; userLpShares: BN; lastFundingRate: BN; lastFundingRateLong: BN; lastFundingRateShort: BN; last24HAvgFundingRate: BN; totalFee: BN; totalMmFee: BN; totalExchangeFee: BN; totalFeeMinusDistributions: BN; totalFeeWithdrawn: BN; totalLiquidationFee: BN; cumulativeFundingRateLong: BN; cumulativeFundingRateShort: BN; totalSocialLoss: BN; askBaseAssetReserve: BN; askQuoteAssetReserve: BN; bidBaseAssetReserve: BN; bidQuoteAssetReserve: BN; lastOracleNormalisedPrice: BN; lastOracleReservePriceSpreadPct: BN; lastBidPriceTwap: BN; lastAskPriceTwap: BN; lastMarkPriceTwap: BN; lastMarkPriceTwap5Min: BN; lastUpdateSlot: BN; lastOracleConfPct: BN; netRevenueSinceLastFunding: BN; lastFundingRateTs: BN; fundingPeriod: BN; orderStepSize: BN; orderTickSize: BN; minOrderSize: BN; maxPositionSize: BN; volume24H: BN; longIntensityVolume: BN; shortIntensityVolume: BN; lastTradeTs: BN; markStd: BN; oracleStd: BN; lastMarkPriceTwapTs: BN; baseSpread: number; maxSpread: number; longSpread: number; shortSpread: number; longIntensityCount: number; shortIntensityCount: number; maxFillReserveFraction: number; maxSlippageRatio: number; curveUpdateIntensity: number; ammJitIntensity: number; oracleSource: OracleSource; lastOracleValid: boolean; targetBaseAssetAmountPerLp: number; perLpBase: number; padding1: number; padding2: number; totalFeeEarnedPerLp: BN; netUnsettledFundingPnl: BN; quoteAssetAmountWithUnsettledLp: BN; referencePriceOffset: number; padding: number[]; }; export declare const ammStruct: BeetStruct>; export type InsuranceClaim = { revenueWithdrawSinceLastSettle: BigNumber; maxRevenueWithdrawPerPeriod: BigNumber; quoteMaxInsurance: BigNumber; quoteSettledInsurance: BigNumber; lastRevenueWithdrawTs: BigNumber; }; export declare const insuranceClaimStruct: BeetStruct>; export type PerpMarket = { buffer: Buffer; pubkey: PublicKey; amm: AMM; pnlPool: PoolBalance; name: number[]; insuranceClaim: InsuranceClaim; unrealizedPnlMaxImbalance: BigNumber; expiryTs: BigNumber; expiryPrice: BigNumber; nextFillRecordId: BigNumber; nextFundingRateRecordId: BigNumber; nextCurveRecordId: BigNumber; imfFactor: number; unrealizedPnlImfFactor: number; liquidatorFee: number; ifLiquidationFee: number; marginRatioInitial: number; marginRatioMaintenance: number; unrealizedPnlInitialAssetWeight: number; unrealizedPnlMaintenanceAssetWeight: number; numberOfUsersWithBase: number; numberOfUsers: number; marketIndex: number; status: MarketStatus; contractType: ContractType; contractTier: ContractTier; pausedOperations: number; quoteSpotMarketIndex: number; feeAdjustment: number; padding: number[]; }; export declare const perpMarketStruct: BeetStruct>; export type PreLaunchOracle = { buffer: Buffer; price: BigNumber; maxPrice: BigNumber; confidence: BigNumber; lastUpdateSlot: BigNumber; ammLastUpdateSlot: BigNumber; perpMarketIndex: number; padding: number[]; }; export declare const preLaunchOracleStruct: BeetStruct>; export type PythLazerOracle = { buffer: Buffer; price: BigNumber; publishTime: BigNumber; postedSlot: BigNumber; exponent: number; padding: number[]; conf: BigNumber; }; export declare const pythLazerOracleStruct: BeetStruct>;