/// /// /// import { BeetStruct, FixableBeetStruct } from '@metaplex-foundation/beet'; import { PublicKey } from '@solana/web3.js'; import BigNumber from 'bignumber.js'; export type StablePriceModel = { stablePrice: BigNumber; lastUpdateTimestamp: BigNumber; delayPrices: BigNumber[]; delayAccumulatorPrice: BigNumber; delayAccumulatorTime: BigNumber; delayIntervalSeconds: BigNumber; delayGrowthLimit: BigNumber; stableGrowthLimit: BigNumber; lastDelayIntervalIndex: number; padding: number[]; reserved: number[]; }; export declare const stablePriceModelStruct: FixableBeetStruct>; export type OracleConfig = { confFilter: BigNumber; maxStalenessSlots: BigNumber; reserved: number[]; }; export declare const oracleConfigStruct: BeetStruct>; export type Bank = { buffer: Buffer; group: PublicKey; name: number[]; mint: PublicKey; vault: PublicKey; oracle: PublicKey; oracleConfig: OracleConfig; stablePriceModel: StablePriceModel; depositIndex: BigNumber; borrowIndex: BigNumber; indexedDeposits: BigNumber; indexedBorrows: BigNumber; indexLastUpdated: BigNumber; bankRateLastUpdated: BigNumber; avgUtilization: BigNumber; adjustmentFactor: BigNumber; util0: BigNumber; rate0: BigNumber; util1: BigNumber; rate1: BigNumber; maxRate: BigNumber; collectedFeesNative: BigNumber; loanOriginationFeeRate: BigNumber; loanFeeRate: BigNumber; maintAssetWeight: BigNumber; initAssetWeight: BigNumber; maintLiabWeight: BigNumber; initLiabWeight: BigNumber; liquidationFee: BigNumber; dust: BigNumber; flashLoanTokenAccountInitial: BigNumber; flashLoanApprovedAmount: BigNumber; tokenIndex: number; bump: number; mintDecimals: number; bankNum: number; minVaultToDepositsRatio: BigNumber; netBorrowLimitWindowSizeTs: BigNumber; lastNetBorrowsWindowStartTs: BigNumber; netBorrowLimitPerWindowQuote: BigNumber; netBorrowsInWindow: BigNumber; borrowWeightScaleStartQuote: BigNumber; depositWeightScaleStartQuote: BigNumber; reduceOnly: number; forceClose: number; reserved: number[]; }; export declare const bankStruct: FixableBeetStruct>; export type TokenPosition = { indexedPosition: BigNumber; tokenIndex: number; inUseCount: number; padding: number[]; previousIndex: BigNumber; cumulativeDepositInterest: BigNumber; cumulativeBorrowInterest: BigNumber; reserved: number[]; }; export declare const tokenPositionStruct: BeetStruct>; export type Serum3Orders = { openOrders: PublicKey; baseBorrowsWithoutFee: BigNumber; quoteBorrowsWithoutFee: BigNumber; marketIndex: number; baseTokenIndex: number; quoteTokenIndex: number; padding: number[]; reserved: number[]; }; export declare const serum3OrdersStruct: BeetStruct>; export type PerpPosition = { marketIndex: number; padding: number[]; settlePnlLimitWindow: number; settlePnlLimitSettledInCurrentWindowNative: BigNumber; basePositionLots: BigNumber; quotePositionNative: BigNumber; quoteRunningNative: BigNumber; longSettledFunding: BigNumber; shortSettledFunding: BigNumber; bidsBaseLots: BigNumber; asksBaseLots: BigNumber; takerBaseLots: BigNumber; takerQuoteLots: BigNumber; cumulativeLongFunding: BigNumber; cumulativeShortFunding: BigNumber; makerVolume: BigNumber; takerVolume: BigNumber; perpSpotTransfers: BigNumber; avgEntryPricePerBaseLot: BigNumber; realizedTradePnlNative: BigNumber; realizedOtherPnlNative: BigNumber; settlePnlLimitRealizedTrade: BigNumber; realizedPnlForPositionNative: BigNumber; reserved: number[]; }; export declare const perpPositionStruct: BeetStruct>; export type PerpOpenOrder = { sideAndTree: number; padding1: number[]; market: number; padding2: number[]; clientId: BigNumber; id: BigNumber; reserved: number[]; }; export declare const perpOpenOrderStruct: BeetStruct>; export type MangoAccount = { buffer: Buffer; group: PublicKey; owner: PublicKey; name: number[]; delegate: PublicKey; accountNum: BigNumber; beingLiquidated: number; inHealthRegion: number; bump: number; padding: number[]; netDeposits: BigNumber; perpSpotTransfers: BigNumber; healthRegionBeginInitHealth: BigNumber; frozenUntil: BigNumber; buybackFeesAccruedCurrent: BigNumber; buybackFeesAccruedPrevious: BigNumber; buybackFeesExpiryTimestamp: BigNumber; reserved: number[]; headerVersion: number; padding3: number[]; padding4: BigNumber; tokens: TokenPosition[]; padding5: BigNumber; serum3: Serum3Orders[]; padding6: BigNumber; perps: PerpPosition[]; padding7: BigNumber; perpOpenOrders: PerpOpenOrder[]; }; export declare const mangoAccountStruct: FixableBeetStruct>; export type TokenConditionalSwap = { id: BigNumber; maxBuy: BigNumber; maxSell: BigNumber; bought: BigNumber; sold: BigNumber; expiryTimestamp: BigNumber; priceLowerLimit: BigNumber; priceUpperLimit: BigNumber; pricePremiumRate: BigNumber; takerFeeRate: BigNumber; makerFeeRate: BigNumber; buyTokenIndex: number; sellTokenIndex: number; isConfigured: number; allowCreatingDeposits: number; allowCreatingBorrows: number; displayPriceStyle: number; intention: number; tcsType: number; padding: number[]; startTimestamp: BigNumber; durationSeconds: BigNumber; reserved: number[]; }; export declare const tokenConditionalSwap: FixableBeetStruct>; export type BoostAccount = MangoAccount & { padding8: number; tokenConditionalSwaps: TokenConditionalSwap[]; reservedDynamic: number[]; }; export declare const boostAccountStruct: FixableBeetStruct>; export type PerpAccount = { basePosition: BigNumber; quotePosition: BigNumber; longSettledFunding: BigNumber; shortSettledFunding: BigNumber; bidsQuantity: BigNumber; asksQuantity: BigNumber; takerBase: BigNumber; takerQuote: BigNumber; mngoAccrued: BigNumber; }; export declare const perpAccountStruct: BeetStruct>; export type MetaData = { dataType: number; version: number; isInitialized: number; extraInfo: number[]; }; export declare const metaDataStruct: BeetStruct>; export declare enum Side { buy = 0, sell = 1 } export type MangoAccountV3 = { metaData: MetaData; mangoGroup: PublicKey; owner: PublicKey; inMarginBasket: boolean[]; numInMarginBasket: number; deposits: BigNumber[]; borrows: BigNumber[]; spotOpenOrders: PublicKey[]; perpAccounts: PerpAccount[]; orderMarket: number[]; orderSide: Side[]; orders: BigNumber[]; clientOrderIds: BigNumber[]; msrmAmount: BigNumber; beingLiquidated: boolean; isBankrupt: boolean; info: number[]; advancedOrdersKey: PublicKey; notUpgradable: boolean; delegate: PublicKey; }; export declare const mangoAccountV3Struct: BeetStruct>; export type SpotMarketInfo = { spotMarket: PublicKey; maintAssetWeight: BigNumber; initAssetWeight: BigNumber; maintLiabWeight: BigNumber; initLiabWeight: BigNumber; liquidationFee: BigNumber; }; export declare const spotMarketInfoStruct: BeetStruct>; export type PerpMarketInfo = { perpMarket: PublicKey; maintAssetWeight: BigNumber; initAssetWeight: BigNumber; maintLiabWeight: BigNumber; initLiabWeight: BigNumber; liquidationFee: BigNumber; makerFee: BigNumber; takerFee: BigNumber; baseLotSize: BigNumber; quoteLotSize: BigNumber; }; export declare const perpMarketInfoStruct: BeetStruct>; export type TokenInfo = { mint: PublicKey; rootBank: PublicKey; decimals: number; spotMarketMode: number; perpMarketMode: number; oracleInactive: boolean; padding: number[]; }; export declare const tokenInfoStruct: BeetStruct>; export type MangoGroupV3 = { metaData: MetaData; numOracles: BigNumber; tokens: TokenInfo[]; spotMarkets: SpotMarketInfo[]; perpMarkets: PerpMarketInfo[]; oracles: PublicKey[]; signerNonce: BigNumber; signerKey: PublicKey; admin: PublicKey; dexProgramId: PublicKey; mangoCache: PublicKey; validInterval: BigNumber; insuranceVault: PublicKey; srmVault: PublicKey; msrmVault: PublicKey; feesVault: PublicKey; maxMangoAccounts: BigNumber; numMangoAccounts: BigNumber; refSurchargeCentibpsTier1: BigNumber; refShareCentibpsTier1: BigNumber; refMngoRequired: BigNumber; refSurchargeCentibpsTier2: number; refShareCentibpsTier2: number; refMngoTier2Factor: number; padding: number[]; }; export declare const mangoGroupV3Struct: BeetStruct>; export type RootBank = { metaData: MetaData; optimalUtil: BigNumber; optimalRate: BigNumber; maxRate: BigNumber; numNodeBanks: BigNumber; nodeBanks: PublicKey[]; depositIndex: BigNumber; borrowIndex: BigNumber; lastUpdated: BigNumber; padding: number[]; }; export declare const rootBankStruct: FixableBeetStruct>;