Skip to main content
Position types represent user holdings in perpetual and spot markets.

PerpPosition

Represents a perpetual futures position.
baseAssetAmount
BN
required
Size of the position in base asset units (positive for long, negative for short)
quoteAssetAmount
BN
required
Quote asset amount for the position (tracks notional value)
quoteEntryAmount
BN
required
Quote entry amount (used for PnL calculation)
quoteBreakEvenAmount
BN
required
Quote break-even amount including fees
marketIndex
number
required
Index of the perpetual market
lastCumulativeFundingRate
BN
required
Last cumulative funding rate applied to this position
openOrders
number
required
Number of open orders for this market
openBids
BN
required
Total bid amount from open orders
openAsks
BN
required
Total ask amount from open orders
settledPnl
BN
required
Settled profit and loss for this position
lpShares
BN
required
Liquidity provider shares for this market
maxMarginRatio
number
required
Maximum margin ratio for this position
positionFlag
number
required
Position flags (isolated, being liquidated, etc.)
export type PerpPosition = {
  baseAssetAmount: BN;
  lastCumulativeFundingRate: BN;
  marketIndex: number;
  quoteAssetAmount: BN;
  quoteEntryAmount: BN;
  quoteBreakEvenAmount: BN;
  openOrders: number;
  openBids: BN;
  openAsks: BN;
  settledPnl: BN;
  lpShares: BN;
  remainderBaseAssetAmount: number;
  maxMarginRatio: number;
  lastQuoteAssetAmountPerLp: BN;
  perLpBase: number;
  positionFlag: number;
  isolatedPositionScaledBalance: BN;
};

SpotPosition

Represents a spot market position (deposit or borrow).
marketIndex
number
required
Index of the spot market
balanceType
SpotBalanceType
required
Whether this is a DEPOSIT or BORROW position
scaledBalance
BN
required
Scaled balance (multiply by cumulative interest to get actual balance)
openOrders
number
required
Number of open orders for this market
openBids
BN
required
Total bid amount from open orders
openAsks
BN
required
Total ask amount from open orders
cumulativeDeposits
BN
required
Cumulative deposits over lifetime
export type SpotPosition = {
  marketIndex: number;
  balanceType: SpotBalanceType;
  scaledBalance: BN;
  openOrders: number;
  openBids: BN;
  openAsks: BN;
  cumulativeDeposits: BN;
};

PoolBalance

Represents a balance in a pool (fee pool, PnL pool, etc.).
scaledBalance
BN
required
Scaled balance amount
marketIndex
number
required
Market index this pool belongs to
export type PoolBalance = {
  scaledBalance: BN;
  marketIndex: number;
};

HealthComponent

Breakdown of health calculation components.
marketIndex
number
required
Market index for this component
size
BN
required
Size of the position or balance
value
BN
required
Value in quote asset
weight
BN
required
Weight applied (asset or liability weight)
weightedValue
BN
required
Final weighted value
export type HealthComponent = {
  marketIndex: number;
  size: BN;
  value: BN;
  weight: BN;
  weightedValue: BN;
};

HealthComponents

Complete breakdown of account health calculation.
deposits
HealthComponent[]
required
Array of deposit components
borrows
HealthComponent[]
required
Array of borrow components
perpPositions
HealthComponent[]
required
Array of perpetual position components
perpPnl
HealthComponent[]
required
Array of perpetual PnL components
export type HealthComponents = {
  deposits: HealthComponent[];
  borrows: HealthComponent[];
  perpPositions: HealthComponent[];
  perpPnl: HealthComponent[];
};

AccountLiquidatableStatus

Indicates whether an account can be liquidated.
canBeLiquidated
boolean
required
Whether the account is eligible for liquidation
marginRequirement
BN
required
Total margin requirement for the account
totalCollateral
BN
required
Total collateral value
export type AccountLiquidatableStatus = {
  canBeLiquidated: boolean;
  marginRequirement: BN;
  totalCollateral: BN;
};

LiquidationRecord

Record of a liquidation event.
ts
BN
required
Timestamp of liquidation
user
PublicKey
required
User being liquidated
liquidator
PublicKey
required
Liquidator account
liquidationType
LiquidationType
required
Type of liquidation
marginRequirement
BN
required
Margin requirement at time of liquidation
totalCollateral
BN
required
Total collateral at time of liquidation
marginFreed
BN
required
Margin freed by liquidation
bankrupt
boolean
required
Whether the account was bankrupt
export type LiquidationRecord = {
  ts: BN;
  user: PublicKey;
  liquidator: PublicKey;
  liquidationType: LiquidationType;
  marginRequirement: BN;
  totalCollateral: BN;
  marginFreed: BN;
  liquidationId: number;
  bankrupt: boolean;
  canceledOrderIds: BN[];
  liquidatePerp: LiquidatePerpRecord;
  liquidateSpot: LiquidateSpotRecord;
  liquidateBorrowForPerpPnl: LiquidateBorrowForPerpPnlRecord;
  liquidatePerpPnlForDeposit: LiquidatePerpPnlForDepositRecord;
  perpBankruptcy: PerpBankruptcyRecord;
  spotBankruptcy: SpotBankruptcyRecord;
};

SettlePnlRecord

Record of a PnL settlement event.
ts
BN
required
Timestamp of settlement
user
PublicKey
required
User account
marketIndex
number
required
Market index
pnl
BN
required
Settled PnL amount
baseAssetAmount
BN
required
Base asset amount of position
quoteAssetAmountAfter
BN
required
Quote asset amount after settlement
settlePrice
BN
required
Price at which settlement occurred
explanation
SettlePnlExplanation
required
Reason for settlement
export type SettlePnlRecord = {
  ts: BN;
  user: PublicKey;
  marketIndex: number;
  pnl: BN;
  baseAssetAmount: BN;
  quoteAssetAmountAfter: BN;
  quoteEntryAmount: BN;
  settlePrice: BN;
  explanation: SettlePnlExplanation;
};

FundingPaymentRecord

Record of a funding payment.
ts
BN
required
Timestamp of funding payment
userAuthority
PublicKey
required
User authority
user
PublicKey
required
User account
marketIndex
number
required
Market index
fundingPayment
BN
required
Funding payment amount (positive = paid, negative = received)
baseAssetAmount
BN
required
Position size at time of payment
export type FundingPaymentRecord = {
  ts: BN;
  userAuthority: PublicKey;
  user: PublicKey;
  marketIndex: number;
  fundingPayment: BN;
  baseAssetAmount: BN;
  userLastCumulativeFunding: BN;
  ammCumulativeFundingLong: BN;
  ammCumulativeFundingShort: BN;
};

Build docs developers (and LLMs) love