///
///
///
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>;