@drift-labs/sdk
Version:
SDK for Drift Protocol
76 lines (75 loc) • 3.15 kB
TypeScript
/// <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];