@drift-labs/sdk-browser
Version:
SDK for Drift Protocol
80 lines • 3.33 kB
TypeScript
/// <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