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