@drift-labs/sdk 2.17.0-beta.0 → 2.18.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,14 +5,18 @@ import { PublicKey } from '@solana/web3.js';
5
5
  import { DLOBNode, DLOBNodeType, TriggerOrderNode } from '..';
6
6
  import { DLOBOrders } from './DLOBOrders';
7
7
  export declare type MarketNodeLists = {
8
- limit: {
9
- ask: NodeList<'limit'>;
10
- bid: NodeList<'limit'>;
8
+ restingLimit: {
9
+ ask: NodeList<'restingLimit'>;
10
+ bid: NodeList<'restingLimit'>;
11
11
  };
12
12
  floatingLimit: {
13
13
  ask: NodeList<'floatingLimit'>;
14
14
  bid: NodeList<'floatingLimit'>;
15
15
  };
16
+ takingLimit: {
17
+ ask: NodeList<'takingLimit'>;
18
+ bid: NodeList<'takingLimit'>;
19
+ };
16
20
  market: {
17
21
  ask: NodeList<'market'>;
18
22
  bid: NodeList<'market'>;
@@ -33,6 +37,7 @@ export declare type NodeToTrigger = {
33
37
  export declare class DLOB {
34
38
  openOrders: Map<MarketTypeStr, Set<string>>;
35
39
  orderLists: Map<MarketTypeStr, Map<number, MarketNodeLists>>;
40
+ maxSlotForRestingLimitOrders: number;
36
41
  initialized: boolean;
37
42
  constructor();
38
43
  private init;
@@ -42,37 +47,38 @@ export declare class DLOB {
42
47
  *
43
48
  * @returns a promise that resolves when the DLOB is initialized
44
49
  */
45
- initFromUserMap(userMap: UserMap): Promise<boolean>;
46
- initFromOrders(dlobOrders: DLOBOrders): boolean;
47
- handleOrderRecord(record: OrderRecord): void;
48
- handleOrderActionRecord(record: OrderActionRecord): void;
49
- insertOrder(order: Order, userAccount: PublicKey, onInsert?: OrderBookCallback): void;
50
+ initFromUserMap(userMap: UserMap, slot: number): Promise<boolean>;
51
+ initFromOrders(dlobOrders: DLOBOrders, slot: number): boolean;
52
+ handleOrderRecord(record: OrderRecord, slot: number): void;
53
+ handleOrderActionRecord(record: OrderActionRecord, slot: number): void;
54
+ insertOrder(order: Order, userAccount: PublicKey, slot: number, onInsert?: OrderBookCallback): void;
50
55
  addOrderList(marketType: MarketTypeStr, marketIndex: number): void;
51
- updateOrder(order: Order, userAccount: PublicKey, cumulativeBaseAssetAmountFilled: BN, onUpdate?: OrderBookCallback): void;
52
- trigger(order: Order, userAccount: PublicKey, onTrigger?: OrderBookCallback): void;
53
- delete(order: Order, userAccount: PublicKey, onDelete?: OrderBookCallback): void;
54
- getListForOrder(order: Order): NodeList<any> | undefined;
56
+ updateOrder(order: Order, userAccount: PublicKey, slot: number, cumulativeBaseAssetAmountFilled: BN, onUpdate?: OrderBookCallback): void;
57
+ trigger(order: Order, userAccount: PublicKey, slot: number, onTrigger?: OrderBookCallback): void;
58
+ delete(order: Order, userAccount: PublicKey, slot: number, onDelete?: OrderBookCallback): void;
59
+ getListForOrder(order: Order, slot: number): NodeList<any> | undefined;
60
+ updateRestingLimitOrders(slot: number): void;
61
+ updateRestingLimitOrdersForMarketType(slot: number, marketTypeStr: MarketTypeStr): void;
55
62
  getOrder(orderId: number, userAccount: PublicKey): Order | undefined;
56
63
  findNodesToFill(marketIndex: number, fallbackBid: BN | undefined, fallbackAsk: BN | undefined, slot: number, ts: number, marketType: MarketType, oraclePriceData: OraclePriceData, stateAccount: StateAccount, marketAccount: PerpMarketAccount | SpotMarketAccount): NodeToFill[];
57
- findLimitOrderNodesToFill(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, isAmmPaused: boolean, fallbackAsk: BN | undefined, fallbackBid: BN | undefined): NodeToFill[];
58
- findMarketNodesToFill(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, isAmmPaused: boolean, fallbackAsk: BN | undefined, fallbackBid?: BN | undefined): NodeToFill[];
59
- findMarketNodesCrossingLimitNodes(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, takerNodeGenerator: Generator<DLOBNode>, makerNodeGeneratorFn: (marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, fallbackPrice?: BN) => Generator<DLOBNode>, doesCross: (takerPrice: BN | undefined, makerPrice: BN) => boolean, fallbackPrice?: BN): NodeToFill[];
60
- findNodesCrossingFallbackLiquidity(marketType: MarketType, slot: number, oraclePriceData: OraclePriceData, nodeGenerator: Generator<DLOBNode>, fallbackPrice: BN, doesCross: (nodePrice: BN | undefined, fallbackPrice: BN) => boolean): NodeToFill[];
64
+ findRestingLimitOrderNodesToFill(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, isAmmPaused: boolean, minAuctionDuration: number, fallbackAsk: BN | undefined, fallbackBid: BN | undefined): NodeToFill[];
65
+ findTakingNodesToFill(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, isAmmPaused: boolean, minAuctionDuration: number, fallbackAsk: BN | undefined, fallbackBid?: BN | undefined): NodeToFill[];
66
+ findTakingNodesCrossingMakerNodes(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, takerNodeGenerator: Generator<DLOBNode>, makerNodeGeneratorFn: (marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, fallbackPrice?: BN) => Generator<DLOBNode>, doesCross: (takerPrice: BN | undefined, makerPrice: BN) => boolean, fallbackPrice?: BN): NodeToFill[];
67
+ findNodesCrossingFallbackLiquidity(marketType: MarketType, slot: number, oraclePriceData: OraclePriceData, nodeGenerator: Generator<DLOBNode>, fallbackPrice: BN, doesCross: (nodePrice: BN | undefined, fallbackPrice: BN) => boolean, minAuctionDuration: number): NodeToFill[];
61
68
  findExpiredNodesToFill(marketIndex: number, ts: number, marketType: MarketType): NodeToFill[];
62
- findJitAuctionNodesToFill(marketIndex: number, slot: number, marketType: MarketType): NodeToFill[];
63
- getMarketBids(marketIndex: number, marketType: MarketType): Generator<DLOBNode>;
64
- getMarketAsks(marketIndex: number, marketType: MarketType): Generator<DLOBNode>;
69
+ findJitAuctionNodesToFill(marketIndex: number, slot: number, oraclePriceData: OraclePriceData, marketType: MarketType): NodeToFill[];
70
+ getTakingBids(marketIndex: number, marketType: MarketType, slot: number, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
71
+ getTakingAsks(marketIndex: number, marketType: MarketType, slot: number, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
65
72
  private getBestNode;
66
- getLimitAsks(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
73
+ getRestingLimitAsks(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
67
74
  /**
68
- * Filters the limit asks that are post only, have been place for sufficiently long or are above the fallback bid
69
- * Market orders can only fill against orders that meet this criteria
75
+ * Filters the limit asks that are resting and do not cross fallback bid
76
+ * Taking orders can only fill against orders that meet this criteria
70
77
  *
71
78
  * @returns
72
79
  */
73
80
  getMakerLimitAsks(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, fallbackBid?: BN): Generator<DLOBNode>;
74
- isRestingLimitOrder(order: Order, slot: number): boolean;
75
- getLimitBids(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
81
+ getRestingLimitBids(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
76
82
  /**
77
83
  * Filters the limit bids that are post only, have been place for sufficiently long or are below the fallback ask
78
84
  * Market orders can only fill against orders that meet this criteria
@@ -82,7 +88,7 @@ export declare class DLOB {
82
88
  getMakerLimitBids(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, fallbackAsk?: BN): Generator<DLOBNode>;
83
89
  getAsks(marketIndex: number, fallbackAsk: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
84
90
  getBids(marketIndex: number, fallbackBid: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
85
- findCrossingLimitOrders(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, fallbackAsk: BN | undefined, fallbackBid: BN | undefined): NodeToFill[];
91
+ findCrossingRestingLimitOrders(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData, minAuctionDuration: number, fallbackAsk: BN | undefined, fallbackBid: BN | undefined): NodeToFill[];
86
92
  determineMakerAndTaker(askNode: DLOBNode, bidNode: DLOBNode): {
87
93
  takerNode: DLOBNode;
88
94
  makerNode: DLOBNode;