@drift-labs/jit-proxy 0.13.46 → 0.13.47

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.
@@ -18,6 +18,7 @@ export declare abstract class BaseJitter {
18
18
  slotSubscriber: SlotSubscriber;
19
19
  driftClient: DriftClient;
20
20
  jitProxyClient: JitProxyClient;
21
+ auctionSubscriberIgnoresFastlaneOrders?: boolean;
21
22
  userStatsMap: UserStatsMap;
22
23
  perpParams: Map<number, JitParams>;
23
24
  spotParams: Map<number, JitParams>;
@@ -26,13 +27,14 @@ export declare abstract class BaseJitter {
26
27
  userFilter: UserFilter;
27
28
  computeUnits: number;
28
29
  computeUnitsPrice: number;
29
- constructor({ auctionSubscriber, jitProxyClient, driftClient, userStatsMap, fastlaneOrderSubscriber, slotSubscriber, }: {
30
+ constructor({ auctionSubscriber, jitProxyClient, driftClient, userStatsMap, fastlaneOrderSubscriber, slotSubscriber, auctionSubscriberIgnoresFastlaneOrders, }: {
30
31
  driftClient: DriftClient;
31
32
  auctionSubscriber: AuctionSubscriber;
32
33
  jitProxyClient: JitProxyClient;
33
34
  userStatsMap: UserStatsMap;
34
35
  fastlaneOrderSubscriber?: FastlaneOrderSubscriber;
35
36
  slotSubscriber?: SlotSubscriber;
37
+ auctionSubscriberIgnoresFastlaneOrders?: boolean;
36
38
  });
37
39
  subscribe(): Promise<void>;
38
40
  createTryFill(taker: UserAccount, takerKey: PublicKey, takerStatsKey: PublicKey, order: Order, orderSignature: string): () => Promise<void>;
@@ -5,7 +5,7 @@ const web3_js_1 = require("@solana/web3.js");
5
5
  const sdk_1 = require("@drift-labs/sdk");
6
6
  const tweetnacl_util_1 = require("tweetnacl-util");
7
7
  class BaseJitter {
8
- constructor({ auctionSubscriber, jitProxyClient, driftClient, userStatsMap, fastlaneOrderSubscriber, slotSubscriber, }) {
8
+ constructor({ auctionSubscriber, jitProxyClient, driftClient, userStatsMap, fastlaneOrderSubscriber, slotSubscriber, auctionSubscriberIgnoresFastlaneOrders, }) {
9
9
  this.perpParams = new Map();
10
10
  this.spotParams = new Map();
11
11
  this.seenOrders = new Set();
@@ -18,6 +18,8 @@ class BaseJitter {
18
18
  new sdk_1.UserStatsMap(this.driftClient, new sdk_1.BulkAccountLoader(this.driftClient.connection, 'confirmed', 0));
19
19
  this.slotSubscriber = slotSubscriber;
20
20
  this.fastlaneOrderSubscriber = fastlaneOrderSubscriber;
21
+ this.auctionSubscriberIgnoresFastlaneOrders =
22
+ auctionSubscriberIgnoresFastlaneOrders;
21
23
  if (this.fastlaneOrderSubscriber && !this.slotSubscriber) {
22
24
  throw new Error('Slot subscriber is required for signedMsg order subscriber');
23
25
  }
@@ -36,6 +38,10 @@ class BaseJitter {
36
38
  if (!(0, sdk_1.hasAuctionPrice)(order, slot)) {
37
39
  continue;
38
40
  }
41
+ if (this.auctionSubscriberIgnoresFastlaneOrders &&
42
+ (0, sdk_1.isSignedMsgOrder)(order)) {
43
+ continue;
44
+ }
39
45
  if (this.userFilter) {
40
46
  if (this.userFilter(taker, takerKeyString, order)) {
41
47
  return;
@@ -79,7 +85,7 @@ class BaseJitter {
79
85
  });
80
86
  await ((_a = this.slotSubscriber) === null || _a === void 0 ? void 0 : _a.subscribe());
81
87
  await ((_b = this.fastlaneOrderSubscriber) === null || _b === void 0 ? void 0 : _b.subscribe(async (orderMessageRaw, signedMsgOrderParamsMessage) => {
82
- var _a, _b, _c;
88
+ var _a, _b;
83
89
  const signedMsgOrderParamsBufHex = Buffer.from(orderMessageRaw['order_message']);
84
90
  const signedMsgOrderParams = signedMsgOrderParamsMessage.signedMsgOrderParams;
85
91
  const takerSubaccountId = signedMsgOrderParamsMessage.subAccountId;
@@ -107,17 +113,17 @@ class BaseJitter {
107
113
  maxTs: (_b = signedMsgOrderParams.maxTs) !== null && _b !== void 0 ? _b : sdk_1.ZERO,
108
114
  reduceOnly: signedMsgOrderParams.reduceOnly,
109
115
  triggerCondition: signedMsgOrderParams.triggerCondition,
116
+ price: signedMsgOrderParams.price,
117
+ userOrderId: signedMsgOrderParams.userOrderId,
110
118
  // Rest are not necessary and set for type conforming
111
- price: sdk_1.ZERO,
112
119
  existingPositionDirection: sdk_1.PositionDirection.LONG,
113
120
  triggerPrice: sdk_1.ZERO,
114
121
  baseAssetAmountFilled: sdk_1.ZERO,
115
122
  quoteAssetAmountFilled: sdk_1.ZERO,
116
123
  quoteAssetAmount: sdk_1.ZERO,
117
- userOrderId: 0,
124
+ bitFlags: 0,
118
125
  postedSlotTail: 0,
119
126
  };
120
- signedMsgOrder.price = (0, sdk_1.getAuctionPrice)(signedMsgOrder, (_c = this.slotSubscriber) === null || _c === void 0 ? void 0 : _c.getSlot(), this.driftClient.getOracleDataForPerpMarket(signedMsgOrder.marketIndex).price);
121
127
  if (this.userFilter) {
122
128
  if (this.userFilter(takerUserAccount, takerUserPubkeyString, signedMsgOrder)) {
123
129
  return;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@drift-labs/jit-proxy",
3
- "version": "0.13.46",
3
+ "version": "0.13.47",
4
4
  "scripts": {
5
5
  "clean": "rm -rf lib",
6
6
  "build": "yarn clean && tsc"
7
7
  },
8
8
  "dependencies": {
9
9
  "@coral-xyz/anchor": "0.26.0",
10
- "@drift-labs/sdk": "2.112.0-beta.5",
10
+ "@drift-labs/sdk": "2.112.0-beta.6",
11
11
  "@solana/web3.js": "1.91.7",
12
12
  "tweetnacl-util": "^0.15.1"
13
13
  },
@@ -23,6 +23,7 @@ import {
23
23
  UserStatsMap,
24
24
  ZERO,
25
25
  SignedMsgOrderParamsMessage,
26
+ isSignedMsgOrder,
26
27
  } from '@drift-labs/sdk';
27
28
  import { decodeUTF8 } from 'tweetnacl-util';
28
29
 
@@ -48,6 +49,7 @@ export abstract class BaseJitter {
48
49
  slotSubscriber: SlotSubscriber;
49
50
  driftClient: DriftClient;
50
51
  jitProxyClient: JitProxyClient;
52
+ auctionSubscriberIgnoresFastlaneOrders?: boolean;
51
53
  userStatsMap: UserStatsMap;
52
54
 
53
55
  perpParams = new Map<number, JitParams>();
@@ -68,6 +70,7 @@ export abstract class BaseJitter {
68
70
  userStatsMap,
69
71
  fastlaneOrderSubscriber,
70
72
  slotSubscriber,
73
+ auctionSubscriberIgnoresFastlaneOrders,
71
74
  }: {
72
75
  driftClient: DriftClient;
73
76
  auctionSubscriber: AuctionSubscriber;
@@ -75,6 +78,7 @@ export abstract class BaseJitter {
75
78
  userStatsMap: UserStatsMap;
76
79
  fastlaneOrderSubscriber?: FastlaneOrderSubscriber;
77
80
  slotSubscriber?: SlotSubscriber;
81
+ auctionSubscriberIgnoresFastlaneOrders?: boolean;
78
82
  }) {
79
83
  this.auctionSubscriber = auctionSubscriber;
80
84
  this.driftClient = driftClient;
@@ -87,6 +91,8 @@ export abstract class BaseJitter {
87
91
  );
88
92
  this.slotSubscriber = slotSubscriber;
89
93
  this.fastlaneOrderSubscriber = fastlaneOrderSubscriber;
94
+ this.auctionSubscriberIgnoresFastlaneOrders =
95
+ auctionSubscriberIgnoresFastlaneOrders;
90
96
 
91
97
  if (this.fastlaneOrderSubscriber && !this.slotSubscriber) {
92
98
  throw new Error(
@@ -117,6 +123,13 @@ export abstract class BaseJitter {
117
123
  continue;
118
124
  }
119
125
 
126
+ if (
127
+ this.auctionSubscriberIgnoresFastlaneOrders &&
128
+ isSignedMsgOrder(order)
129
+ ) {
130
+ continue;
131
+ }
132
+
120
133
  if (this.userFilter) {
121
134
  if (this.userFilter(taker, takerKeyString, order)) {
122
135
  return;
@@ -239,23 +252,17 @@ export abstract class BaseJitter {
239
252
  maxTs: signedMsgOrderParams.maxTs ?? ZERO,
240
253
  reduceOnly: signedMsgOrderParams.reduceOnly,
241
254
  triggerCondition: signedMsgOrderParams.triggerCondition,
255
+ price: signedMsgOrderParams.price,
256
+ userOrderId: signedMsgOrderParams.userOrderId,
242
257
  // Rest are not necessary and set for type conforming
243
- price: ZERO,
244
258
  existingPositionDirection: PositionDirection.LONG,
245
259
  triggerPrice: ZERO,
246
260
  baseAssetAmountFilled: ZERO,
247
261
  quoteAssetAmountFilled: ZERO,
248
262
  quoteAssetAmount: ZERO,
249
- userOrderId: 0,
263
+ bitFlags: 0,
250
264
  postedSlotTail: 0,
251
265
  };
252
- signedMsgOrder.price = getAuctionPrice(
253
- signedMsgOrder,
254
- this.slotSubscriber?.getSlot(),
255
- this.driftClient.getOracleDataForPerpMarket(
256
- signedMsgOrder.marketIndex
257
- ).price
258
- );
259
266
 
260
267
  if (this.userFilter) {
261
268
  if (