@drift-labs/sdk 2.110.0-beta.17 → 2.110.0-beta.19

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.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 2.110.0-beta.17
1
+ 2.110.0-beta.19
@@ -33,9 +33,9 @@ export type MarketNodeLists = {
33
33
  above: NodeList<'trigger'>;
34
34
  below: NodeList<'trigger'>;
35
35
  };
36
- swift: {
37
- ask: NodeList<'swift'>;
38
- bid: NodeList<'swift'>;
36
+ signedMsg: {
37
+ ask: NodeList<'signedMsg'>;
38
+ bid: NodeList<'signedMsg'>;
39
39
  };
40
40
  };
41
41
  type OrderBookCallback = () => void;
@@ -69,7 +69,7 @@ export declare class DLOB {
69
69
  */
70
70
  initFromUserMap(userMap: UserMap, slot: number): Promise<boolean>;
71
71
  insertOrder(order: Order, userAccount: string, slot: number, isUserProtectedMaker: boolean, onInsert?: OrderBookCallback): void;
72
- insertSwiftOrder(order: Order, userAccount: string, isUserProtectedMaker: boolean, onInsert?: OrderBookCallback): void;
72
+ insertSignedMsgOrder(order: Order, userAccount: string, isUserProtectedMaker: boolean, onInsert?: OrderBookCallback): void;
73
73
  addOrderList(marketType: MarketTypeStr, marketIndex: number): void;
74
74
  delete(order: Order, userAccount: PublicKey, slot: number, isUserProtectedMaker: boolean, onDelete?: OrderBookCallback): void;
75
75
  getListForOnChainOrder(order: Order, slot: number, isProtectedMaker: boolean): NodeList<any> | undefined;
@@ -93,7 +93,7 @@ class DLOB {
93
93
  onInsert();
94
94
  }
95
95
  }
96
- insertSwiftOrder(order, userAccount, isUserProtectedMaker, onInsert) {
96
+ insertSignedMsgOrder(order, userAccount, isUserProtectedMaker, onInsert) {
97
97
  const marketType = (0, __1.getVariant)(order.marketType);
98
98
  const marketIndex = order.marketIndex;
99
99
  const bidOrAsk = (0, __1.isVariant)(order.direction, 'long') ? 'bid' : 'ask';
@@ -106,7 +106,7 @@ class DLOB {
106
106
  this.orderLists
107
107
  .get(marketType)
108
108
  .get(marketIndex)
109
- .swift[bidOrAsk].insert(order, marketType, userAccount, isUserProtectedMaker, this.protectedMakerView);
109
+ .signedMsg[bidOrAsk].insert(order, marketType, userAccount, isUserProtectedMaker, this.protectedMakerView);
110
110
  if (onInsert) {
111
111
  onInsert();
112
112
  }
@@ -137,9 +137,9 @@ class DLOB {
137
137
  above: new NodeList_1.NodeList('trigger', 'asc'),
138
138
  below: new NodeList_1.NodeList('trigger', 'desc'),
139
139
  },
140
- swift: {
141
- ask: new NodeList_1.NodeList('swift', 'asc'),
142
- bid: new NodeList_1.NodeList('swift', 'asc'),
140
+ signedMsg: {
141
+ ask: new NodeList_1.NodeList('signedMsg', 'asc'),
142
+ bid: new NodeList_1.NodeList('signedMsg', 'asc'),
143
143
  },
144
144
  });
145
145
  }
@@ -450,23 +450,23 @@ class DLOB {
450
450
  nodeLists.restingLimit.bid.getGenerator(),
451
451
  nodeLists.floatingLimit.bid.getGenerator(),
452
452
  nodeLists.market.bid.getGenerator(),
453
- nodeLists.swift.bid.getGenerator(),
453
+ nodeLists.signedMsg.bid.getGenerator(),
454
454
  ];
455
455
  const askGenerators = [
456
456
  nodeLists.takingLimit.ask.getGenerator(),
457
457
  nodeLists.restingLimit.ask.getGenerator(),
458
458
  nodeLists.floatingLimit.ask.getGenerator(),
459
459
  nodeLists.market.ask.getGenerator(),
460
- nodeLists.swift.ask.getGenerator(),
460
+ nodeLists.signedMsg.ask.getGenerator(),
461
461
  ];
462
462
  for (const bidGenerator of bidGenerators) {
463
463
  for (const bid of bidGenerator) {
464
- if (bid.isSwift &&
464
+ if (bid.isSignedMsg &&
465
465
  slot.gt(bid.order.slot.addn(bid.order.auctionDuration))) {
466
466
  this.orderLists
467
467
  .get(marketTypeStr)
468
468
  .get(marketIndex)
469
- .swift.bid.remove(bid.order, bid.userAccount);
469
+ .signedMsg.bid.remove(bid.order, bid.userAccount);
470
470
  }
471
471
  else if ((0, __1.isOrderExpired)(bid.order, ts, true, 25)) {
472
472
  nodesToFill.push({
@@ -498,7 +498,7 @@ class DLOB {
498
498
  const generatorList = [
499
499
  orderLists.market.bid.getGenerator(),
500
500
  orderLists.takingLimit.bid.getGenerator(),
501
- orderLists.swift.bid.getGenerator(),
501
+ orderLists.signedMsg.bid.getGenerator(),
502
502
  ];
503
503
  yield* this.getBestNode(generatorList, oraclePriceData, slot, (bestNode, currentNode) => {
504
504
  return bestNode.order.slot.lt(currentNode.order.slot);
@@ -514,7 +514,7 @@ class DLOB {
514
514
  const generatorList = [
515
515
  orderLists.market.ask.getGenerator(),
516
516
  orderLists.takingLimit.ask.getGenerator(),
517
- orderLists.swift.ask.getGenerator(),
517
+ orderLists.signedMsg.ask.getGenerator(),
518
518
  ];
519
519
  yield* this.getBestNode(generatorList, oraclePriceData, slot, (bestNode, currentNode) => {
520
520
  return bestNode.order.slot.lt(currentNode.order.slot);
@@ -9,7 +9,7 @@ export interface DLOBNode {
9
9
  userAccount: string | undefined;
10
10
  isProtectedMaker: boolean;
11
11
  applyProtectedMakerOffset: boolean;
12
- isSwift: boolean | undefined;
12
+ isSignedMsg: boolean | undefined;
13
13
  }
14
14
  export declare abstract class OrderNode implements DLOBNode {
15
15
  order: Order;
@@ -19,8 +19,8 @@ export declare abstract class OrderNode implements DLOBNode {
19
19
  haveTrigger: boolean;
20
20
  isProtectedMaker: boolean;
21
21
  applyProtectedMakerOffset: boolean;
22
- isSwift: boolean;
23
- constructor(order: Order, userAccount: string, isProtectedMaker: boolean, applyProtectedMakerOffset: boolean, isSwift?: boolean);
22
+ isSignedMsg: boolean;
23
+ constructor(order: Order, userAccount: string, isProtectedMaker: boolean, applyProtectedMakerOffset: boolean, isSignedMsg?: boolean);
24
24
  abstract getSortValue(order: Order): BN;
25
25
  getLabel(): string;
26
26
  getPrice(oraclePriceData: OraclePriceData, slot: number): BN;
@@ -52,9 +52,9 @@ export declare class TriggerOrderNode extends OrderNode {
52
52
  previous?: TriggerOrderNode;
53
53
  getSortValue(order: Order): BN;
54
54
  }
55
- export declare class SwiftOrderNode extends OrderNode {
56
- next?: SwiftOrderNode;
57
- previous?: SwiftOrderNode;
55
+ export declare class SignedMsgOrderNode extends OrderNode {
56
+ next?: SignedMsgOrderNode;
57
+ previous?: SignedMsgOrderNode;
58
58
  constructor(order: Order, userAccount: string);
59
59
  getSortValue(order: Order): BN;
60
60
  }
@@ -65,7 +65,7 @@ export type DLOBNodeMap = {
65
65
  protectedFloatingLimit: FloatingLimitOrderNode;
66
66
  market: MarketOrderNode;
67
67
  trigger: TriggerOrderNode;
68
- swift: SwiftOrderNode;
68
+ signedMsg: SignedMsgOrderNode;
69
69
  };
70
- export type DLOBNodeType = 'swift' | 'restingLimit' | 'takingLimit' | 'floatingLimit' | 'protectedFloatingLimit' | 'market' | ('trigger' & keyof DLOBNodeMap);
70
+ export type DLOBNodeType = 'signedMsg' | 'restingLimit' | 'takingLimit' | 'floatingLimit' | 'protectedFloatingLimit' | 'market' | ('trigger' & keyof DLOBNodeMap);
71
71
  export declare function createNode<T extends DLOBNodeType>(nodeType: T, order: Order, userAccount: string, isProtectedMaker: boolean, applyProtectedMakerOffset: boolean): DLOBNodeMap[T];
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createNode = exports.SwiftOrderNode = exports.TriggerOrderNode = exports.MarketOrderNode = exports.FloatingLimitOrderNode = exports.RestingLimitOrderNode = exports.TakingLimitOrderNode = exports.OrderNode = void 0;
3
+ exports.createNode = exports.SignedMsgOrderNode = exports.TriggerOrderNode = exports.MarketOrderNode = exports.FloatingLimitOrderNode = exports.RestingLimitOrderNode = exports.TakingLimitOrderNode = exports.OrderNode = void 0;
4
4
  const __1 = require("..");
5
5
  // import { PublicKey } from '@solana/web3.js';
6
6
  const NodeList_1 = require("./NodeList");
7
7
  class OrderNode {
8
- constructor(order, userAccount, isProtectedMaker, applyProtectedMakerOffset, isSwift = false) {
8
+ constructor(order, userAccount, isProtectedMaker, applyProtectedMakerOffset, isSignedMsg = false) {
9
9
  this.haveFilled = false;
10
10
  this.haveTrigger = false;
11
11
  // Copy the order over to the node
@@ -14,7 +14,7 @@ class OrderNode {
14
14
  this.sortValue = this.getSortValue(order);
15
15
  this.isProtectedMaker = isProtectedMaker;
16
16
  this.applyProtectedMakerOffset = applyProtectedMakerOffset;
17
- this.isSwift = isSwift;
17
+ this.isSignedMsg = isSignedMsg;
18
18
  }
19
19
  getLabel() {
20
20
  let msg = `Order ${(0, NodeList_1.getOrderSignature)(this.order.orderId, this.userAccount)}`;
@@ -80,8 +80,8 @@ class TriggerOrderNode extends OrderNode {
80
80
  }
81
81
  }
82
82
  exports.TriggerOrderNode = TriggerOrderNode;
83
- // We'll use the swift uuid for the order id since it's not yet on-chain
84
- class SwiftOrderNode extends OrderNode {
83
+ // We'll use the signedMsg uuid for the order id since it's not yet on-chain
84
+ class SignedMsgOrderNode extends OrderNode {
85
85
  constructor(order, userAccount) {
86
86
  super(order, userAccount, false, false, true);
87
87
  }
@@ -89,7 +89,7 @@ class SwiftOrderNode extends OrderNode {
89
89
  return order.slot;
90
90
  }
91
91
  }
92
- exports.SwiftOrderNode = SwiftOrderNode;
92
+ exports.SignedMsgOrderNode = SignedMsgOrderNode;
93
93
  function createNode(nodeType, order, userAccount, isProtectedMaker, applyProtectedMakerOffset) {
94
94
  switch (nodeType) {
95
95
  case 'floatingLimit':
@@ -104,8 +104,8 @@ function createNode(nodeType, order, userAccount, isProtectedMaker, applyProtect
104
104
  return new MarketOrderNode(order, userAccount, isProtectedMaker, false);
105
105
  case 'trigger':
106
106
  return new TriggerOrderNode(order, userAccount, isProtectedMaker, false);
107
- case 'swift':
108
- return new SwiftOrderNode(order, userAccount);
107
+ case 'signedMsg':
108
+ return new SignedMsgOrderNode(order, userAccount);
109
109
  default:
110
110
  throw Error(`Unknown DLOBNode type ${nodeType}`);
111
111
  }
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { Commitment, PublicKey, TransactionSignature } from '@solana/web3.js';
3
- import { DepositRecord, FundingPaymentRecord, FundingRateRecord, LiquidationRecord, NewUserRecord, OrderActionRecord, OrderRecord, SettlePnlRecord, LPRecord, InsuranceFundRecord, SpotInterestRecord, InsuranceFundStakeRecord, CurveRecord, SwapRecord, SpotMarketVaultDepositRecord, SignedMsgOrderRecord, DeleteUserRecord } from '../index';
3
+ import { DepositRecord, FundingPaymentRecord, FundingRateRecord, LiquidationRecord, NewUserRecord, OrderActionRecord, OrderRecord, SettlePnlRecord, LPRecord, InsuranceFundRecord, SpotInterestRecord, InsuranceFundStakeRecord, CurveRecord, SwapRecord, SpotMarketVaultDepositRecord, SignedMsgOrderRecord, DeleteUserRecord, FuelSweepRecord, FuelSeasonRecord } from '../index';
4
4
  import { EventEmitter } from 'events';
5
5
  export type EventSubscriptionOptions = {
6
6
  address?: PublicKey;
@@ -43,9 +43,11 @@ export type EventMap = {
43
43
  SpotMarketVaultDepositRecord: Event<SpotMarketVaultDepositRecord>;
44
44
  SignedMsgOrderRecord: Event<SignedMsgOrderRecord>;
45
45
  DeleteUserRecord: Event<DeleteUserRecord>;
46
+ FuelSweepRecord: Event<FuelSweepRecord>;
47
+ FuelSeasonRecord: Event<FuelSeasonRecord>;
46
48
  };
47
49
  export type EventType = keyof EventMap;
48
- export type DriftEvent = Event<DepositRecord> | Event<FundingPaymentRecord> | Event<LiquidationRecord> | Event<FundingRateRecord> | Event<OrderRecord> | Event<OrderActionRecord> | Event<SettlePnlRecord> | Event<NewUserRecord> | Event<LPRecord> | Event<InsuranceFundRecord> | Event<SpotInterestRecord> | Event<InsuranceFundStakeRecord> | Event<CurveRecord> | Event<SwapRecord> | Event<SpotMarketVaultDepositRecord> | Event<SignedMsgOrderRecord> | Event<DeleteUserRecord>;
50
+ export type DriftEvent = Event<DepositRecord> | Event<FundingPaymentRecord> | Event<LiquidationRecord> | Event<FundingRateRecord> | Event<OrderRecord> | Event<OrderActionRecord> | Event<SettlePnlRecord> | Event<NewUserRecord> | Event<LPRecord> | Event<InsuranceFundRecord> | Event<SpotInterestRecord> | Event<InsuranceFundStakeRecord> | Event<CurveRecord> | Event<SwapRecord> | Event<SpotMarketVaultDepositRecord> | Event<SignedMsgOrderRecord> | Event<DeleteUserRecord> | Event<FuelSweepRecord> | Event<FuelSeasonRecord>;
49
51
  export interface EventSubscriberEvents {
50
52
  newEvent: (event: WrappedEvent<EventType>) => void;
51
53
  }
@@ -20,6 +20,8 @@ exports.DefaultEventSubscriptionOptions = {
20
20
  'SpotMarketVaultDepositRecord',
21
21
  'SignedMsgOrderRecord',
22
22
  'DeleteUserRecord',
23
+ 'FuelSweepRecord',
24
+ 'FuelSeasonRecord',
23
25
  ],
24
26
  maxEventsPerType: 4096,
25
27
  orderBy: 'blockchain',
@@ -747,6 +747,33 @@ export type DeleteUserRecord = {
747
747
  subAccountId: number;
748
748
  keeper: PublicKey | null;
749
749
  };
750
+ export type FuelSeasonRecord = {
751
+ ts: BN;
752
+ authority: PublicKey;
753
+ fuelInsurance: BN;
754
+ fuelDeposits: BN;
755
+ fuelBorrows: BN;
756
+ fuelPositions: BN;
757
+ fuelTaker: BN;
758
+ fuelMaker: BN;
759
+ fuelTotal: BN;
760
+ };
761
+ export type FuelSweepRecord = {
762
+ ts: BN;
763
+ authority: PublicKey;
764
+ userStatsFuelInsurance: BN;
765
+ userStatsFuelDeposits: BN;
766
+ userStatsFuelBorrows: BN;
767
+ userStatsFuelPositions: BN;
768
+ userStatsFuelTaker: BN;
769
+ userStatsFuelMaker: BN;
770
+ fuelOverflowFuelInsurance: BN;
771
+ fuelOverflowFuelDeposits: BN;
772
+ fuelOverflowFuelBorrows: BN;
773
+ fuelOverflowFuelPositions: BN;
774
+ fuelOverflowFuelTaker: BN;
775
+ fuelOverflowFuelMaker: BN;
776
+ };
750
777
  export type StateAccount = {
751
778
  admin: PublicKey;
752
779
  exchangeStatus: number;
@@ -1174,10 +1201,10 @@ export type SignedMsgOrderParamsMessage = {
1174
1201
  subAccountId: number;
1175
1202
  slot: BN;
1176
1203
  uuid: Uint8Array;
1177
- takeProfitOrderParams: SwiftTriggerOrderParams | null;
1178
- stopLossOrderParams: SwiftTriggerOrderParams | null;
1204
+ takeProfitOrderParams: SignedMsgTriggerOrderParams | null;
1205
+ stopLossOrderParams: SignedMsgTriggerOrderParams | null;
1179
1206
  };
1180
- export type SwiftTriggerOrderParams = {
1207
+ export type SignedMsgTriggerOrderParams = {
1181
1208
  triggerPrice: BN;
1182
1209
  baseAssetAmount: BN;
1183
1210
  };
@@ -33,9 +33,9 @@ export type MarketNodeLists = {
33
33
  above: NodeList<'trigger'>;
34
34
  below: NodeList<'trigger'>;
35
35
  };
36
- swift: {
37
- ask: NodeList<'swift'>;
38
- bid: NodeList<'swift'>;
36
+ signedMsg: {
37
+ ask: NodeList<'signedMsg'>;
38
+ bid: NodeList<'signedMsg'>;
39
39
  };
40
40
  };
41
41
  type OrderBookCallback = () => void;
@@ -69,7 +69,7 @@ export declare class DLOB {
69
69
  */
70
70
  initFromUserMap(userMap: UserMap, slot: number): Promise<boolean>;
71
71
  insertOrder(order: Order, userAccount: string, slot: number, isUserProtectedMaker: boolean, onInsert?: OrderBookCallback): void;
72
- insertSwiftOrder(order: Order, userAccount: string, isUserProtectedMaker: boolean, onInsert?: OrderBookCallback): void;
72
+ insertSignedMsgOrder(order: Order, userAccount: string, isUserProtectedMaker: boolean, onInsert?: OrderBookCallback): void;
73
73
  addOrderList(marketType: MarketTypeStr, marketIndex: number): void;
74
74
  delete(order: Order, userAccount: PublicKey, slot: number, isUserProtectedMaker: boolean, onDelete?: OrderBookCallback): void;
75
75
  getListForOnChainOrder(order: Order, slot: number, isProtectedMaker: boolean): NodeList<any> | undefined;
@@ -93,7 +93,7 @@ class DLOB {
93
93
  onInsert();
94
94
  }
95
95
  }
96
- insertSwiftOrder(order, userAccount, isUserProtectedMaker, onInsert) {
96
+ insertSignedMsgOrder(order, userAccount, isUserProtectedMaker, onInsert) {
97
97
  const marketType = (0, __1.getVariant)(order.marketType);
98
98
  const marketIndex = order.marketIndex;
99
99
  const bidOrAsk = (0, __1.isVariant)(order.direction, 'long') ? 'bid' : 'ask';
@@ -106,7 +106,7 @@ class DLOB {
106
106
  this.orderLists
107
107
  .get(marketType)
108
108
  .get(marketIndex)
109
- .swift[bidOrAsk].insert(order, marketType, userAccount, isUserProtectedMaker, this.protectedMakerView);
109
+ .signedMsg[bidOrAsk].insert(order, marketType, userAccount, isUserProtectedMaker, this.protectedMakerView);
110
110
  if (onInsert) {
111
111
  onInsert();
112
112
  }
@@ -137,9 +137,9 @@ class DLOB {
137
137
  above: new NodeList_1.NodeList('trigger', 'asc'),
138
138
  below: new NodeList_1.NodeList('trigger', 'desc'),
139
139
  },
140
- swift: {
141
- ask: new NodeList_1.NodeList('swift', 'asc'),
142
- bid: new NodeList_1.NodeList('swift', 'asc'),
140
+ signedMsg: {
141
+ ask: new NodeList_1.NodeList('signedMsg', 'asc'),
142
+ bid: new NodeList_1.NodeList('signedMsg', 'asc'),
143
143
  },
144
144
  });
145
145
  }
@@ -450,23 +450,23 @@ class DLOB {
450
450
  nodeLists.restingLimit.bid.getGenerator(),
451
451
  nodeLists.floatingLimit.bid.getGenerator(),
452
452
  nodeLists.market.bid.getGenerator(),
453
- nodeLists.swift.bid.getGenerator(),
453
+ nodeLists.signedMsg.bid.getGenerator(),
454
454
  ];
455
455
  const askGenerators = [
456
456
  nodeLists.takingLimit.ask.getGenerator(),
457
457
  nodeLists.restingLimit.ask.getGenerator(),
458
458
  nodeLists.floatingLimit.ask.getGenerator(),
459
459
  nodeLists.market.ask.getGenerator(),
460
- nodeLists.swift.ask.getGenerator(),
460
+ nodeLists.signedMsg.ask.getGenerator(),
461
461
  ];
462
462
  for (const bidGenerator of bidGenerators) {
463
463
  for (const bid of bidGenerator) {
464
- if (bid.isSwift &&
464
+ if (bid.isSignedMsg &&
465
465
  slot.gt(bid.order.slot.addn(bid.order.auctionDuration))) {
466
466
  this.orderLists
467
467
  .get(marketTypeStr)
468
468
  .get(marketIndex)
469
- .swift.bid.remove(bid.order, bid.userAccount);
469
+ .signedMsg.bid.remove(bid.order, bid.userAccount);
470
470
  }
471
471
  else if ((0, __1.isOrderExpired)(bid.order, ts, true, 25)) {
472
472
  nodesToFill.push({
@@ -498,7 +498,7 @@ class DLOB {
498
498
  const generatorList = [
499
499
  orderLists.market.bid.getGenerator(),
500
500
  orderLists.takingLimit.bid.getGenerator(),
501
- orderLists.swift.bid.getGenerator(),
501
+ orderLists.signedMsg.bid.getGenerator(),
502
502
  ];
503
503
  yield* this.getBestNode(generatorList, oraclePriceData, slot, (bestNode, currentNode) => {
504
504
  return bestNode.order.slot.lt(currentNode.order.slot);
@@ -514,7 +514,7 @@ class DLOB {
514
514
  const generatorList = [
515
515
  orderLists.market.ask.getGenerator(),
516
516
  orderLists.takingLimit.ask.getGenerator(),
517
- orderLists.swift.ask.getGenerator(),
517
+ orderLists.signedMsg.ask.getGenerator(),
518
518
  ];
519
519
  yield* this.getBestNode(generatorList, oraclePriceData, slot, (bestNode, currentNode) => {
520
520
  return bestNode.order.slot.lt(currentNode.order.slot);
@@ -9,7 +9,7 @@ export interface DLOBNode {
9
9
  userAccount: string | undefined;
10
10
  isProtectedMaker: boolean;
11
11
  applyProtectedMakerOffset: boolean;
12
- isSwift: boolean | undefined;
12
+ isSignedMsg: boolean | undefined;
13
13
  }
14
14
  export declare abstract class OrderNode implements DLOBNode {
15
15
  order: Order;
@@ -19,8 +19,8 @@ export declare abstract class OrderNode implements DLOBNode {
19
19
  haveTrigger: boolean;
20
20
  isProtectedMaker: boolean;
21
21
  applyProtectedMakerOffset: boolean;
22
- isSwift: boolean;
23
- constructor(order: Order, userAccount: string, isProtectedMaker: boolean, applyProtectedMakerOffset: boolean, isSwift?: boolean);
22
+ isSignedMsg: boolean;
23
+ constructor(order: Order, userAccount: string, isProtectedMaker: boolean, applyProtectedMakerOffset: boolean, isSignedMsg?: boolean);
24
24
  abstract getSortValue(order: Order): BN;
25
25
  getLabel(): string;
26
26
  getPrice(oraclePriceData: OraclePriceData, slot: number): BN;
@@ -52,9 +52,9 @@ export declare class TriggerOrderNode extends OrderNode {
52
52
  previous?: TriggerOrderNode;
53
53
  getSortValue(order: Order): BN;
54
54
  }
55
- export declare class SwiftOrderNode extends OrderNode {
56
- next?: SwiftOrderNode;
57
- previous?: SwiftOrderNode;
55
+ export declare class SignedMsgOrderNode extends OrderNode {
56
+ next?: SignedMsgOrderNode;
57
+ previous?: SignedMsgOrderNode;
58
58
  constructor(order: Order, userAccount: string);
59
59
  getSortValue(order: Order): BN;
60
60
  }
@@ -65,7 +65,7 @@ export type DLOBNodeMap = {
65
65
  protectedFloatingLimit: FloatingLimitOrderNode;
66
66
  market: MarketOrderNode;
67
67
  trigger: TriggerOrderNode;
68
- swift: SwiftOrderNode;
68
+ signedMsg: SignedMsgOrderNode;
69
69
  };
70
- export type DLOBNodeType = 'swift' | 'restingLimit' | 'takingLimit' | 'floatingLimit' | 'protectedFloatingLimit' | 'market' | ('trigger' & keyof DLOBNodeMap);
70
+ export type DLOBNodeType = 'signedMsg' | 'restingLimit' | 'takingLimit' | 'floatingLimit' | 'protectedFloatingLimit' | 'market' | ('trigger' & keyof DLOBNodeMap);
71
71
  export declare function createNode<T extends DLOBNodeType>(nodeType: T, order: Order, userAccount: string, isProtectedMaker: boolean, applyProtectedMakerOffset: boolean): DLOBNodeMap[T];
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createNode = exports.SwiftOrderNode = exports.TriggerOrderNode = exports.MarketOrderNode = exports.FloatingLimitOrderNode = exports.RestingLimitOrderNode = exports.TakingLimitOrderNode = exports.OrderNode = void 0;
3
+ exports.createNode = exports.SignedMsgOrderNode = exports.TriggerOrderNode = exports.MarketOrderNode = exports.FloatingLimitOrderNode = exports.RestingLimitOrderNode = exports.TakingLimitOrderNode = exports.OrderNode = void 0;
4
4
  const __1 = require("..");
5
5
  // import { PublicKey } from '@solana/web3.js';
6
6
  const NodeList_1 = require("./NodeList");
7
7
  class OrderNode {
8
- constructor(order, userAccount, isProtectedMaker, applyProtectedMakerOffset, isSwift = false) {
8
+ constructor(order, userAccount, isProtectedMaker, applyProtectedMakerOffset, isSignedMsg = false) {
9
9
  this.haveFilled = false;
10
10
  this.haveTrigger = false;
11
11
  // Copy the order over to the node
@@ -14,7 +14,7 @@ class OrderNode {
14
14
  this.sortValue = this.getSortValue(order);
15
15
  this.isProtectedMaker = isProtectedMaker;
16
16
  this.applyProtectedMakerOffset = applyProtectedMakerOffset;
17
- this.isSwift = isSwift;
17
+ this.isSignedMsg = isSignedMsg;
18
18
  }
19
19
  getLabel() {
20
20
  let msg = `Order ${(0, NodeList_1.getOrderSignature)(this.order.orderId, this.userAccount)}`;
@@ -80,8 +80,8 @@ class TriggerOrderNode extends OrderNode {
80
80
  }
81
81
  }
82
82
  exports.TriggerOrderNode = TriggerOrderNode;
83
- // We'll use the swift uuid for the order id since it's not yet on-chain
84
- class SwiftOrderNode extends OrderNode {
83
+ // We'll use the signedMsg uuid for the order id since it's not yet on-chain
84
+ class SignedMsgOrderNode extends OrderNode {
85
85
  constructor(order, userAccount) {
86
86
  super(order, userAccount, false, false, true);
87
87
  }
@@ -89,7 +89,7 @@ class SwiftOrderNode extends OrderNode {
89
89
  return order.slot;
90
90
  }
91
91
  }
92
- exports.SwiftOrderNode = SwiftOrderNode;
92
+ exports.SignedMsgOrderNode = SignedMsgOrderNode;
93
93
  function createNode(nodeType, order, userAccount, isProtectedMaker, applyProtectedMakerOffset) {
94
94
  switch (nodeType) {
95
95
  case 'floatingLimit':
@@ -104,8 +104,8 @@ function createNode(nodeType, order, userAccount, isProtectedMaker, applyProtect
104
104
  return new MarketOrderNode(order, userAccount, isProtectedMaker, false);
105
105
  case 'trigger':
106
106
  return new TriggerOrderNode(order, userAccount, isProtectedMaker, false);
107
- case 'swift':
108
- return new SwiftOrderNode(order, userAccount);
107
+ case 'signedMsg':
108
+ return new SignedMsgOrderNode(order, userAccount);
109
109
  default:
110
110
  throw Error(`Unknown DLOBNode type ${nodeType}`);
111
111
  }
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { Commitment, PublicKey, TransactionSignature } from '@solana/web3.js';
3
- import { DepositRecord, FundingPaymentRecord, FundingRateRecord, LiquidationRecord, NewUserRecord, OrderActionRecord, OrderRecord, SettlePnlRecord, LPRecord, InsuranceFundRecord, SpotInterestRecord, InsuranceFundStakeRecord, CurveRecord, SwapRecord, SpotMarketVaultDepositRecord, SignedMsgOrderRecord, DeleteUserRecord } from '../index';
3
+ import { DepositRecord, FundingPaymentRecord, FundingRateRecord, LiquidationRecord, NewUserRecord, OrderActionRecord, OrderRecord, SettlePnlRecord, LPRecord, InsuranceFundRecord, SpotInterestRecord, InsuranceFundStakeRecord, CurveRecord, SwapRecord, SpotMarketVaultDepositRecord, SignedMsgOrderRecord, DeleteUserRecord, FuelSweepRecord, FuelSeasonRecord } from '../index';
4
4
  import { EventEmitter } from 'events';
5
5
  export type EventSubscriptionOptions = {
6
6
  address?: PublicKey;
@@ -43,9 +43,11 @@ export type EventMap = {
43
43
  SpotMarketVaultDepositRecord: Event<SpotMarketVaultDepositRecord>;
44
44
  SignedMsgOrderRecord: Event<SignedMsgOrderRecord>;
45
45
  DeleteUserRecord: Event<DeleteUserRecord>;
46
+ FuelSweepRecord: Event<FuelSweepRecord>;
47
+ FuelSeasonRecord: Event<FuelSeasonRecord>;
46
48
  };
47
49
  export type EventType = keyof EventMap;
48
- export type DriftEvent = Event<DepositRecord> | Event<FundingPaymentRecord> | Event<LiquidationRecord> | Event<FundingRateRecord> | Event<OrderRecord> | Event<OrderActionRecord> | Event<SettlePnlRecord> | Event<NewUserRecord> | Event<LPRecord> | Event<InsuranceFundRecord> | Event<SpotInterestRecord> | Event<InsuranceFundStakeRecord> | Event<CurveRecord> | Event<SwapRecord> | Event<SpotMarketVaultDepositRecord> | Event<SignedMsgOrderRecord> | Event<DeleteUserRecord>;
50
+ export type DriftEvent = Event<DepositRecord> | Event<FundingPaymentRecord> | Event<LiquidationRecord> | Event<FundingRateRecord> | Event<OrderRecord> | Event<OrderActionRecord> | Event<SettlePnlRecord> | Event<NewUserRecord> | Event<LPRecord> | Event<InsuranceFundRecord> | Event<SpotInterestRecord> | Event<InsuranceFundStakeRecord> | Event<CurveRecord> | Event<SwapRecord> | Event<SpotMarketVaultDepositRecord> | Event<SignedMsgOrderRecord> | Event<DeleteUserRecord> | Event<FuelSweepRecord> | Event<FuelSeasonRecord>;
49
51
  export interface EventSubscriberEvents {
50
52
  newEvent: (event: WrappedEvent<EventType>) => void;
51
53
  }
@@ -20,6 +20,8 @@ exports.DefaultEventSubscriptionOptions = {
20
20
  'SpotMarketVaultDepositRecord',
21
21
  'SignedMsgOrderRecord',
22
22
  'DeleteUserRecord',
23
+ 'FuelSweepRecord',
24
+ 'FuelSeasonRecord',
23
25
  ],
24
26
  maxEventsPerType: 4096,
25
27
  orderBy: 'blockchain',
@@ -747,6 +747,33 @@ export type DeleteUserRecord = {
747
747
  subAccountId: number;
748
748
  keeper: PublicKey | null;
749
749
  };
750
+ export type FuelSeasonRecord = {
751
+ ts: BN;
752
+ authority: PublicKey;
753
+ fuelInsurance: BN;
754
+ fuelDeposits: BN;
755
+ fuelBorrows: BN;
756
+ fuelPositions: BN;
757
+ fuelTaker: BN;
758
+ fuelMaker: BN;
759
+ fuelTotal: BN;
760
+ };
761
+ export type FuelSweepRecord = {
762
+ ts: BN;
763
+ authority: PublicKey;
764
+ userStatsFuelInsurance: BN;
765
+ userStatsFuelDeposits: BN;
766
+ userStatsFuelBorrows: BN;
767
+ userStatsFuelPositions: BN;
768
+ userStatsFuelTaker: BN;
769
+ userStatsFuelMaker: BN;
770
+ fuelOverflowFuelInsurance: BN;
771
+ fuelOverflowFuelDeposits: BN;
772
+ fuelOverflowFuelBorrows: BN;
773
+ fuelOverflowFuelPositions: BN;
774
+ fuelOverflowFuelTaker: BN;
775
+ fuelOverflowFuelMaker: BN;
776
+ };
750
777
  export type StateAccount = {
751
778
  admin: PublicKey;
752
779
  exchangeStatus: number;
@@ -1174,10 +1201,10 @@ export type SignedMsgOrderParamsMessage = {
1174
1201
  subAccountId: number;
1175
1202
  slot: BN;
1176
1203
  uuid: Uint8Array;
1177
- takeProfitOrderParams: SwiftTriggerOrderParams | null;
1178
- stopLossOrderParams: SwiftTriggerOrderParams | null;
1204
+ takeProfitOrderParams: SignedMsgTriggerOrderParams | null;
1205
+ stopLossOrderParams: SignedMsgTriggerOrderParams | null;
1179
1206
  };
1180
- export type SwiftTriggerOrderParams = {
1207
+ export type SignedMsgTriggerOrderParams = {
1181
1208
  triggerPrice: BN;
1182
1209
  baseAssetAmount: BN;
1183
1210
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "2.110.0-beta.17",
3
+ "version": "2.110.0-beta.19",
4
4
  "main": "lib/node/index.js",
5
5
  "types": "lib/node/index.d.ts",
6
6
  "browser": "./lib/browser/index.js",
package/src/dlob/DLOB.ts CHANGED
@@ -73,9 +73,9 @@ export type MarketNodeLists = {
73
73
  above: NodeList<'trigger'>;
74
74
  below: NodeList<'trigger'>;
75
75
  };
76
- swift: {
77
- ask: NodeList<'swift'>;
78
- bid: NodeList<'swift'>;
76
+ signedMsg: {
77
+ ask: NodeList<'signedMsg'>;
78
+ bid: NodeList<'signedMsg'>;
79
79
  };
80
80
  };
81
81
 
@@ -220,7 +220,7 @@ export class DLOB {
220
220
  }
221
221
  }
222
222
 
223
- public insertSwiftOrder(
223
+ public insertSignedMsgOrder(
224
224
  order: Order,
225
225
  userAccount: string,
226
226
  isUserProtectedMaker: boolean,
@@ -238,7 +238,7 @@ export class DLOB {
238
238
  this.orderLists
239
239
  .get(marketType)
240
240
  .get(marketIndex)
241
- .swift[bidOrAsk].insert(
241
+ .signedMsg[bidOrAsk].insert(
242
242
  order,
243
243
  marketType,
244
244
  userAccount,
@@ -276,9 +276,9 @@ export class DLOB {
276
276
  above: new NodeList('trigger', 'asc'),
277
277
  below: new NodeList('trigger', 'desc'),
278
278
  },
279
- swift: {
280
- ask: new NodeList('swift', 'asc'),
281
- bid: new NodeList('swift', 'asc'),
279
+ signedMsg: {
280
+ ask: new NodeList('signedMsg', 'asc'),
281
+ bid: new NodeList('signedMsg', 'asc'),
282
282
  },
283
283
  });
284
284
  }
@@ -903,26 +903,26 @@ export class DLOB {
903
903
  nodeLists.restingLimit.bid.getGenerator(),
904
904
  nodeLists.floatingLimit.bid.getGenerator(),
905
905
  nodeLists.market.bid.getGenerator(),
906
- nodeLists.swift.bid.getGenerator(),
906
+ nodeLists.signedMsg.bid.getGenerator(),
907
907
  ];
908
908
  const askGenerators = [
909
909
  nodeLists.takingLimit.ask.getGenerator(),
910
910
  nodeLists.restingLimit.ask.getGenerator(),
911
911
  nodeLists.floatingLimit.ask.getGenerator(),
912
912
  nodeLists.market.ask.getGenerator(),
913
- nodeLists.swift.ask.getGenerator(),
913
+ nodeLists.signedMsg.ask.getGenerator(),
914
914
  ];
915
915
 
916
916
  for (const bidGenerator of bidGenerators) {
917
917
  for (const bid of bidGenerator) {
918
918
  if (
919
- bid.isSwift &&
919
+ bid.isSignedMsg &&
920
920
  slot.gt(bid.order.slot.addn(bid.order.auctionDuration))
921
921
  ) {
922
922
  this.orderLists
923
923
  .get(marketTypeStr)
924
924
  .get(marketIndex)
925
- .swift.bid.remove(bid.order, bid.userAccount);
925
+ .signedMsg.bid.remove(bid.order, bid.userAccount);
926
926
  } else if (isOrderExpired(bid.order, ts, true, 25)) {
927
927
  nodesToFill.push({
928
928
  node: bid,
@@ -964,7 +964,7 @@ export class DLOB {
964
964
  const generatorList = [
965
965
  orderLists.market.bid.getGenerator(),
966
966
  orderLists.takingLimit.bid.getGenerator(),
967
- orderLists.swift.bid.getGenerator(),
967
+ orderLists.signedMsg.bid.getGenerator(),
968
968
  ];
969
969
 
970
970
  yield* this.getBestNode(
@@ -996,7 +996,7 @@ export class DLOB {
996
996
  const generatorList = [
997
997
  orderLists.market.ask.getGenerator(),
998
998
  orderLists.takingLimit.ask.getGenerator(),
999
- orderLists.swift.ask.getGenerator(),
999
+ orderLists.signedMsg.ask.getGenerator(),
1000
1000
  ];
1001
1001
 
1002
1002
  yield* this.getBestNode(
@@ -21,7 +21,7 @@ export interface DLOBNode {
21
21
  userAccount: string | undefined;
22
22
  isProtectedMaker: boolean;
23
23
  applyProtectedMakerOffset: boolean;
24
- isSwift: boolean | undefined;
24
+ isSignedMsg: boolean | undefined;
25
25
  }
26
26
 
27
27
  export abstract class OrderNode implements DLOBNode {
@@ -32,14 +32,14 @@ export abstract class OrderNode implements DLOBNode {
32
32
  haveTrigger = false;
33
33
  isProtectedMaker: boolean;
34
34
  applyProtectedMakerOffset: boolean;
35
- isSwift: boolean;
35
+ isSignedMsg: boolean;
36
36
 
37
37
  constructor(
38
38
  order: Order,
39
39
  userAccount: string,
40
40
  isProtectedMaker: boolean,
41
41
  applyProtectedMakerOffset: boolean,
42
- isSwift = false
42
+ isSignedMsg = false
43
43
  ) {
44
44
  // Copy the order over to the node
45
45
  this.order = { ...order };
@@ -47,7 +47,7 @@ export abstract class OrderNode implements DLOBNode {
47
47
  this.sortValue = this.getSortValue(order);
48
48
  this.isProtectedMaker = isProtectedMaker;
49
49
  this.applyProtectedMakerOffset = applyProtectedMakerOffset;
50
- this.isSwift = isSwift;
50
+ this.isSignedMsg = isSignedMsg;
51
51
  }
52
52
 
53
53
  abstract getSortValue(order: Order): BN;
@@ -153,10 +153,10 @@ export class TriggerOrderNode extends OrderNode {
153
153
  }
154
154
  }
155
155
 
156
- // We'll use the swift uuid for the order id since it's not yet on-chain
157
- export class SwiftOrderNode extends OrderNode {
158
- next?: SwiftOrderNode;
159
- previous?: SwiftOrderNode;
156
+ // We'll use the signedMsg uuid for the order id since it's not yet on-chain
157
+ export class SignedMsgOrderNode extends OrderNode {
158
+ next?: SignedMsgOrderNode;
159
+ previous?: SignedMsgOrderNode;
160
160
 
161
161
  constructor(order: Order, userAccount: string) {
162
162
  super(order, userAccount, false, false, true);
@@ -174,11 +174,11 @@ export type DLOBNodeMap = {
174
174
  protectedFloatingLimit: FloatingLimitOrderNode;
175
175
  market: MarketOrderNode;
176
176
  trigger: TriggerOrderNode;
177
- swift: SwiftOrderNode;
177
+ signedMsg: SignedMsgOrderNode;
178
178
  };
179
179
 
180
180
  export type DLOBNodeType =
181
- | 'swift'
181
+ | 'signedMsg'
182
182
  | 'restingLimit'
183
183
  | 'takingLimit'
184
184
  | 'floatingLimit'
@@ -226,8 +226,8 @@ export function createNode<T extends DLOBNodeType>(
226
226
  return new MarketOrderNode(order, userAccount, isProtectedMaker, false);
227
227
  case 'trigger':
228
228
  return new TriggerOrderNode(order, userAccount, isProtectedMaker, false);
229
- case 'swift':
230
- return new SwiftOrderNode(order, userAccount);
229
+ case 'signedMsg':
230
+ return new SignedMsgOrderNode(order, userAccount);
231
231
  default:
232
232
  throw Error(`Unknown DLOBNode type ${nodeType}`);
233
233
  }
@@ -17,6 +17,8 @@ import {
17
17
  SpotMarketVaultDepositRecord,
18
18
  SignedMsgOrderRecord,
19
19
  DeleteUserRecord,
20
+ FuelSweepRecord,
21
+ FuelSeasonRecord,
20
22
  } from '../index';
21
23
  import { EventEmitter } from 'events';
22
24
 
@@ -53,6 +55,8 @@ export const DefaultEventSubscriptionOptions: EventSubscriptionOptions = {
53
55
  'SpotMarketVaultDepositRecord',
54
56
  'SignedMsgOrderRecord',
55
57
  'DeleteUserRecord',
58
+ 'FuelSweepRecord',
59
+ 'FuelSeasonRecord',
56
60
  ],
57
61
  maxEventsPerType: 4096,
58
62
  orderBy: 'blockchain',
@@ -98,6 +102,8 @@ export type EventMap = {
98
102
  SpotMarketVaultDepositRecord: Event<SpotMarketVaultDepositRecord>;
99
103
  SignedMsgOrderRecord: Event<SignedMsgOrderRecord>;
100
104
  DeleteUserRecord: Event<DeleteUserRecord>;
105
+ FuelSweepRecord: Event<FuelSweepRecord>;
106
+ FuelSeasonRecord: Event<FuelSeasonRecord>;
101
107
  };
102
108
 
103
109
  export type EventType = keyof EventMap;
@@ -119,7 +125,9 @@ export type DriftEvent =
119
125
  | Event<SwapRecord>
120
126
  | Event<SpotMarketVaultDepositRecord>
121
127
  | Event<SignedMsgOrderRecord>
122
- | Event<DeleteUserRecord>;
128
+ | Event<DeleteUserRecord>
129
+ | Event<FuelSweepRecord>
130
+ | Event<FuelSeasonRecord>;
123
131
 
124
132
  export interface EventSubscriberEvents {
125
133
  newEvent: (event: WrappedEvent<EventType>) => void;
package/src/types.ts CHANGED
@@ -643,6 +643,37 @@ export type DeleteUserRecord = {
643
643
  keeper: PublicKey | null;
644
644
  };
645
645
 
646
+ export type FuelSeasonRecord = {
647
+ ts: BN;
648
+ authority: PublicKey;
649
+ fuelInsurance: BN;
650
+ fuelDeposits: BN;
651
+ fuelBorrows: BN;
652
+ fuelPositions: BN;
653
+ fuelTaker: BN;
654
+ fuelMaker: BN;
655
+ fuelTotal: BN;
656
+ };
657
+
658
+ export type FuelSweepRecord = {
659
+ ts: BN;
660
+ authority: PublicKey;
661
+ // fuel values on UserStats before sweep
662
+ userStatsFuelInsurance: BN;
663
+ userStatsFuelDeposits: BN;
664
+ userStatsFuelBorrows: BN;
665
+ userStatsFuelPositions: BN;
666
+ userStatsFuelTaker: BN;
667
+ userStatsFuelMaker: BN;
668
+ // fuel values on FuelOverflow before sweep
669
+ fuelOverflowFuelInsurance: BN;
670
+ fuelOverflowFuelDeposits: BN;
671
+ fuelOverflowFuelBorrows: BN;
672
+ fuelOverflowFuelPositions: BN;
673
+ fuelOverflowFuelTaker: BN;
674
+ fuelOverflowFuelMaker: BN;
675
+ };
676
+
646
677
  export type StateAccount = {
647
678
  admin: PublicKey;
648
679
  exchangeStatus: number;
@@ -1130,11 +1161,11 @@ export type SignedMsgOrderParamsMessage = {
1130
1161
  subAccountId: number;
1131
1162
  slot: BN;
1132
1163
  uuid: Uint8Array;
1133
- takeProfitOrderParams: SwiftTriggerOrderParams | null;
1134
- stopLossOrderParams: SwiftTriggerOrderParams | null;
1164
+ takeProfitOrderParams: SignedMsgTriggerOrderParams | null;
1165
+ stopLossOrderParams: SignedMsgTriggerOrderParams | null;
1135
1166
  };
1136
1167
 
1137
- export type SwiftTriggerOrderParams = {
1168
+ export type SignedMsgTriggerOrderParams = {
1138
1169
  triggerPrice: BN;
1139
1170
  baseAssetAmount: BN;
1140
1171
  };
@@ -1382,8 +1413,8 @@ export type HighLeverageModeConfig = {
1382
1413
  reduceOnly: boolean;
1383
1414
  };
1384
1415
 
1385
- /* Represents proof of a swift taker order
1386
- * It can be provided to drift program to fill a swift order
1416
+ /* Represents proof of a signed msg taker order
1417
+ * It can be provided to drift program to fill a signed msg order
1387
1418
  */
1388
1419
  export interface SignedMsgOrderParams {
1389
1420
  /**