@dainprotocol/drift-sdk
Version:
SDK for Drift Protocol
72 lines • 2.83 kB
TypeScript
/// <reference types="bn.js" />
import { BN, OraclePriceData, Order, ProtectedMakerParams } from '..';
export interface DLOBNode {
getPrice(oraclePriceData: OraclePriceData, slot: number): BN;
isVammNode(): boolean;
order: Order | undefined;
isBaseFilled(): boolean;
haveFilled: boolean;
userAccount: string | undefined;
isProtectedMaker: boolean;
protectedMakerParams?: ProtectedMakerParams;
isSignedMsg: boolean | undefined;
}
export declare abstract class OrderNode implements DLOBNode {
order: Order;
userAccount: string;
sortValue: BN;
haveFilled: boolean;
haveTrigger: boolean;
isProtectedMaker: boolean;
protectedMakerParams?: ProtectedMakerParams;
isSignedMsg: boolean;
constructor(order: Order, userAccount: string, isProtectedMaker: boolean, protectedMakerParams?: ProtectedMakerParams, isSignedMsg?: boolean);
abstract getSortValue(order: Order): BN;
getLabel(): string;
getPrice(oraclePriceData: OraclePriceData, 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);
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): DLOBNodeMap[T];
//# sourceMappingURL=DLOBNode.d.ts.map