UNPKG

@drift-labs/sdk-browser

Version:
80 lines 3.33 kB
/// <reference types="bn.js" /> import { BN } from '@coral-xyz/anchor'; import { MarketType } from './types'; export type MarginCategory = 'Initial' | 'Maintenance' | 'Fill'; export type MarginCalculationMode = { type: 'Standard'; } | { type: 'Liquidation'; }; export declare class MarketIdentifier { marketType: MarketType; marketIndex: number; private constructor(); static spot(marketIndex: number): MarketIdentifier; static perp(marketIndex: number): MarketIdentifier; equals(other: MarketIdentifier | undefined): boolean; } export declare class MarginContext { marginType: MarginCategory; mode: MarginCalculationMode; strict: boolean; ignoreInvalidDepositOracles: boolean; isolatedMarginBuffers: Map<number, BN>; crossMarginBuffer: BN; private constructor(); static standard(marginType: MarginCategory): MarginContext; static liquidation(crossMarginBuffer: BN, isolatedMarginBuffers: Map<number, BN>): MarginContext; strictMode(strict: boolean): this; ignoreInvalidDeposits(ignore: boolean): this; setCrossMarginBuffer(crossMarginBuffer: BN): this; setIsolatedMarginBuffers(isolatedMarginBuffers: Map<number, BN>): this; setIsolatedMarginBuffer(marketIndex: number, isolatedMarginBuffer: BN): this; } export declare class IsolatedMarginCalculation { marginRequirement: BN; totalCollateral: BN; totalCollateralBuffer: BN; marginRequirementPlusBuffer: BN; constructor(); getTotalCollateralPlusBuffer(): BN; meetsMarginRequirement(): boolean; meetsMarginRequirementWithBuffer(): boolean; marginShortage(): BN; } export declare class MarginCalculation { context: MarginContext; totalCollateral: BN; totalCollateralBuffer: BN; marginRequirement: BN; marginRequirementPlusBuffer: BN; isolatedMarginCalculations: Map<number, IsolatedMarginCalculation>; allDepositOraclesValid: boolean; allLiabilityOraclesValid: boolean; withPerpIsolatedLiability: boolean; withSpotIsolatedLiability: boolean; totalPerpLiabilityValue: BN; trackedMarketMarginRequirement: BN; fuelDeposits: number; fuelBorrows: number; fuelPositions: number; constructor(context: MarginContext); addCrossMarginTotalCollateral(delta: BN): void; addCrossMarginRequirement(marginRequirement: BN, liabilityValue: BN): void; addIsolatedMarginCalculation(marketIndex: number, depositValue: BN, pnl: BN, liabilityValue: BN, marginRequirement: BN): void; addPerpLiabilityValue(perpLiabilityValue: BN): void; updateAllDepositOraclesValid(valid: boolean): void; updateAllLiabilityOraclesValid(valid: boolean): void; updateWithSpotIsolatedLiability(isolated: boolean): void; updateWithPerpIsolatedLiability(isolated: boolean): void; getCrossTotalCollateralPlusBuffer(): BN; meetsCrossMarginRequirement(): boolean; meetsCrossMarginRequirementWithBuffer(): boolean; meetsMarginRequirement(): boolean; meetsMarginRequirementWithBuffer(): boolean; getCrossFreeCollateral(): BN; getIsolatedFreeCollateral(marketIndex: number): BN; getIsolatedMarginCalculation(marketIndex: number): IsolatedMarginCalculation | undefined; hasIsolatedMarginCalculation(marketIndex: number): boolean; } //# sourceMappingURL=marginCalculation.d.ts.map