UNPKG

@drift-labs/sdk

Version:
76 lines (75 loc) 3.15 kB
/// <reference types="bn.js" /> import { BN } from '@coral-xyz/anchor'; import { MarketTypeStr, Order, ProtectedMakerParams } from '../types'; import { MMOraclePriceData, OraclePriceData } from '../oracles/types'; export interface DLOBNode { getPrice<T extends MarketTypeStr>(oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData, slot: number): BN; isVammNode(): boolean; order: Order | undefined; isBaseFilled(): boolean; haveFilled: boolean; userAccount: string | undefined; isProtectedMaker: boolean; protectedMakerParams?: ProtectedMakerParams; isSignedMsg: boolean | undefined; baseAssetAmount: BN; } export declare abstract class OrderNode implements DLOBNode { order: Order; userAccount: string; sortValue: BN; haveFilled: boolean; haveTrigger: boolean; isProtectedMaker: boolean; protectedMakerParams?: ProtectedMakerParams; baseAssetAmount: BN; isSignedMsg: boolean; constructor(order: Order, userAccount: string, isProtectedMaker: boolean, protectedMakerParams?: ProtectedMakerParams, baseAssetAmount?: BN, isSignedMsg?: boolean); abstract getSortValue(order: Order): BN; getLabel(): string; getPrice<T extends MarketTypeStr>(oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData, slot: number): BN; isBaseFilled(): boolean; isVammNode(): boolean; } export declare class TakingLimitOrderNode extends OrderNode { next?: TakingLimitOrderNode; previous?: TakingLimitOrderNode; getSortValue(order: Order): BN; } export declare class RestingLimitOrderNode extends OrderNode { next?: RestingLimitOrderNode; previous?: RestingLimitOrderNode; getSortValue(order: Order): BN; } export declare class FloatingLimitOrderNode extends OrderNode { next?: FloatingLimitOrderNode; previous?: FloatingLimitOrderNode; getSortValue(order: Order): BN; } export declare class MarketOrderNode extends OrderNode { next?: MarketOrderNode; previous?: MarketOrderNode; getSortValue(order: Order): BN; } export declare class TriggerOrderNode extends OrderNode { next?: TriggerOrderNode; previous?: TriggerOrderNode; getSortValue(order: Order): BN; } export declare class SignedMsgOrderNode extends OrderNode { next?: SignedMsgOrderNode; previous?: SignedMsgOrderNode; constructor(order: Order, userAccount: string, baseAssetAmount?: BN); getSortValue(order: Order): BN; } export type DLOBNodeMap = { restingLimit: RestingLimitOrderNode; takingLimit: TakingLimitOrderNode; floatingLimit: FloatingLimitOrderNode; protectedFloatingLimit: FloatingLimitOrderNode; market: MarketOrderNode; trigger: TriggerOrderNode; signedMsg: SignedMsgOrderNode; }; export type DLOBNodeType = 'signedMsg' | 'restingLimit' | 'takingLimit' | 'floatingLimit' | 'protectedFloatingLimit' | 'market' | ('trigger' & keyof DLOBNodeMap); export declare function createNode<T extends DLOBNodeType>(nodeType: T, order: Order, userAccount: string, isProtectedMaker: boolean, protectedMakerParams?: ProtectedMakerParams, baseAssetAmount?: BN): DLOBNodeMap[T];