99 ZERO ,
1010} from '../constants/numericConstants' ;
1111import { decodeName } from '../userName' ;
12- import { DLOBNode , DLOBNodeType , TriggerOrderNode } from './DLOBNode' ;
12+ import { DLOBNode , DLOBNodeType } from './DLOBNode' ;
1313import { DriftClient } from '../driftClient' ;
1414import {
1515 getLimitPrice ,
@@ -33,9 +33,18 @@ import {
3333} from '../types' ;
3434import { isUserProtectedMaker } from '../math/userStatus' ;
3535import { OraclePriceData } from '../oracles/types' ;
36- import { ProtectMakerParamsMap } from './types' ;
36+ import {
37+ DLOBFilterFcn ,
38+ DLOBOrders ,
39+ IDLOB ,
40+ MarketNodeLists ,
41+ NodeToFill ,
42+ NodeToTrigger ,
43+ OrderBookCallback ,
44+ ProtectMakerParamsMap ,
45+ } from './types' ;
3746import { SlotSubscriber } from '../slot/SlotSubscriber' ;
38- import { UserMap } from '../userMap/userMap ' ;
47+ import { IUserMap } from '../userMap/types ' ;
3948import { PublicKey } from '@solana/web3.js' ;
4049import { ammPaused , exchangePaused , fillPaused } from '../math/exchangeStatus' ;
4150import {
@@ -50,59 +59,6 @@ import {
5059import { isFallbackAvailableLiquiditySource } from '../math/auction' ;
5160import { convertToNumber } from '../math/conversion' ;
5261
53- export type DLOBOrder = { user : PublicKey ; order : Order } ;
54- export type DLOBOrders = DLOBOrder [ ] ;
55-
56- export type MarketNodeLists = {
57- restingLimit : {
58- ask : NodeList < 'restingLimit' > ;
59- bid : NodeList < 'restingLimit' > ;
60- } ;
61- floatingLimit : {
62- ask : NodeList < 'floatingLimit' > ;
63- bid : NodeList < 'floatingLimit' > ;
64- } ;
65- protectedFloatingLimit : {
66- ask : NodeList < 'protectedFloatingLimit' > ;
67- bid : NodeList < 'protectedFloatingLimit' > ;
68- } ;
69- takingLimit : {
70- ask : NodeList < 'takingLimit' > ;
71- bid : NodeList < 'takingLimit' > ;
72- } ;
73- market : {
74- ask : NodeList < 'market' > ;
75- bid : NodeList < 'market' > ;
76- } ;
77- trigger : {
78- above : NodeList < 'trigger' > ;
79- below : NodeList < 'trigger' > ;
80- } ;
81- signedMsg : {
82- ask : NodeList < 'signedMsg' > ;
83- bid : NodeList < 'signedMsg' > ;
84- } ;
85- } ;
86-
87- type OrderBookCallback = ( ) => void ;
88-
89- /**
90- * Receives a DLOBNode and is expected to return true if the node should
91- * be taken into account when generating, or false otherwise.
92- *
93- * Currently used in functions that rely on getBestNode
94- */
95- export type DLOBFilterFcn = ( node : DLOBNode ) => boolean ;
96-
97- export type NodeToFill = {
98- node : DLOBNode ;
99- makerNodes : DLOBNode [ ] ;
100- } ;
101-
102- export type NodeToTrigger = {
103- node : TriggerOrderNode ;
104- } ;
105-
10662const SUPPORTED_ORDER_TYPES = [
10763 'market' ,
10864 'limit' ,
@@ -111,7 +67,7 @@ const SUPPORTED_ORDER_TYPES = [
11167 'oracle' ,
11268] ;
11369
114- export class DLOB {
70+ export class DLOB implements IDLOB {
11571 openOrders = new Map < MarketTypeStr , Set < string > > ( ) ;
11672 orderLists = new Map < MarketTypeStr , Map < number , MarketNodeLists > > ( ) ;
11773 maxSlotForRestingLimitOrders = 0 ;
@@ -166,7 +122,7 @@ export class DLOB {
166122 * @returns a promise that resolves when the DLOB is initialized
167123 */
168124 public async initFromUserMap (
169- userMap : UserMap ,
125+ userMap : IUserMap ,
170126 slot : number
171127 ) : Promise < boolean > {
172128 if ( this . initialized ) {
0 commit comments