@drift-labs/sdk
Version:
SDK for Drift Protocol
71 lines • 3.16 kB
TypeScript
/// <reference types="bn.js" />
import { BN } from '@coral-xyz/anchor';
import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
import { PerpMarketAccount, PositionDirection, PerpPosition, SpotMarketAccount } from '../types';
/**
* calculateBaseAssetValue
* = market value of closing entire position
* @param market
* @param userPosition
* @param oraclePriceData
* @returns Base Asset Value. : Precision QUOTE_PRECISION
*/
export declare function calculateBaseAssetValue(market: PerpMarketAccount, userPosition: PerpPosition, mmOraclePriceData: MMOraclePriceData, useSpread?: boolean, skipUpdate?: boolean, latestSlot?: BN): BN;
/**
* calculatePositionPNL
* = BaseAssetAmount * (Avg Exit Price - Avg Entry Price)
* @param market
* @param PerpPosition
* @param withFunding (adds unrealized funding payment pnl to result)
* @param oraclePriceData
* @returns BaseAssetAmount : Precision QUOTE_PRECISION
*/
export declare function calculatePositionPNL(market: PerpMarketAccount, perpPosition: PerpPosition, withFunding: boolean, oraclePriceData: Pick<OraclePriceData, 'price'>): BN;
export declare function calculateClaimablePnl(market: PerpMarketAccount, spotMarket: SpotMarketAccount, perpPosition: PerpPosition, oraclePriceData: Pick<OraclePriceData, 'price'>): BN;
/**
* Returns total fees and funding pnl for a position
*
* @param market
* @param PerpPosition
* @param includeUnsettled include unsettled funding in return value (default: true)
* @returns — // QUOTE_PRECISION
*/
export declare function calculateFeesAndFundingPnl(market: PerpMarketAccount, perpPosition: PerpPosition, includeUnsettled?: boolean): BN;
/**
* Returns unsettled funding pnl for the position
*
* To calculate all fees and funding pnl including settled, use calculateFeesAndFundingPnl
*
* @param market
* @param PerpPosition
* @returns // QUOTE_PRECISION
*/
export declare function calculateUnsettledFundingPnl(market: PerpMarketAccount, perpPosition: PerpPosition): BN;
/**
* @deprecated use calculateUnsettledFundingPnl or calculateFeesAndFundingPnl instead
*/
export declare function calculatePositionFundingPNL(market: PerpMarketAccount, perpPosition: PerpPosition): BN;
export declare function positionIsAvailable(position: PerpPosition): boolean;
/**
*
* @param userPosition
* @returns Precision: PRICE_PRECISION (10^6)
*/
export declare function calculateBreakEvenPrice(userPosition: PerpPosition): BN;
/**
*
* @param userPosition
* @returns Precision: PRICE_PRECISION (10^6)
*/
export declare function calculateEntryPrice(userPosition: PerpPosition): BN;
/**
*
* @param userPosition
* @returns Precision: PRICE_PRECISION (10^10)
*/
export declare function calculateCostBasis(userPosition: PerpPosition, includeSettledPnl?: boolean): BN;
export declare function findDirectionToClose(userPosition: PerpPosition): PositionDirection;
export declare function positionCurrentDirection(userPosition: PerpPosition): PositionDirection;
export declare function isEmptyPosition(userPosition: PerpPosition): boolean;
export declare function hasOpenOrders(position: PerpPosition): boolean;
//# sourceMappingURL=position.d.ts.map