@drift-labs/sdk 2.20.0-beta.0 → 2.20.0-beta.2
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/lib/accounts/bulkAccountLoader.d.ts +2 -1
- package/lib/accounts/bulkAccountLoader.js +7 -7
- package/lib/accounts/fetch.d.ts +1 -0
- package/lib/accounts/fetch.js +8 -4
- package/lib/accounts/pollingDriftClientAccountSubscriber.js +7 -7
- package/lib/accounts/pollingTokenAccountSubscriber.js +2 -2
- package/lib/accounts/pollingUserAccountSubscriber.js +2 -2
- package/lib/accounts/pollingUserStatsAccountSubscriber.js +2 -2
- package/lib/accounts/types.d.ts +5 -4
- package/lib/accounts/webSocketAccountSubscriber.js +1 -1
- package/lib/accounts/webSocketDriftClientAccountSubscriber.js +3 -3
- package/lib/addresses/marketAddresses.js +1 -1
- package/lib/addresses/pda.d.ts +1 -0
- package/lib/addresses/pda.js +13 -2
- package/lib/adminClient.js +61 -57
- package/lib/config.d.ts +2 -2
- package/lib/constants/perpMarkets.d.ts +1 -1
- package/lib/constants/spotMarkets.d.ts +1 -1
- package/lib/dlob/DLOB.d.ts +6 -5
- package/lib/dlob/DLOB.js +105 -75
- package/lib/dlob/DLOBNode.d.ts +2 -2
- package/lib/dlob/DLOBNode.js +7 -7
- package/lib/dlob/DLOBOrders.d.ts +2 -2
- package/lib/dlob/NodeList.d.ts +1 -1
- package/lib/dlob/NodeList.js +2 -2
- package/lib/driftClient.d.ts +5 -2
- package/lib/driftClient.js +137 -95
- package/lib/driftClientConfig.d.ts +3 -3
- package/lib/events/eventSubscriber.js +2 -2
- package/lib/events/fetchLogs.d.ts +2 -2
- package/lib/events/pollingLogProvider.js +1 -1
- package/lib/events/types.d.ts +14 -14
- package/lib/examples/loadDlob.js +2 -2
- package/lib/examples/makeTradeExample.js +9 -9
- package/lib/factory/bigNum.js +13 -13
- package/lib/factory/oracleClient.js +4 -4
- package/lib/idl/drift.json +82 -4
- package/lib/index.js +5 -1
- package/lib/math/amm.d.ts +1 -1
- package/lib/math/amm.js +23 -23
- package/lib/math/auction.js +6 -6
- package/lib/math/exchangeStatus.js +2 -2
- package/lib/math/funding.js +2 -2
- package/lib/math/margin.js +4 -4
- package/lib/math/market.js +15 -15
- package/lib/math/oracles.js +1 -1
- package/lib/math/orders.js +27 -24
- package/lib/math/position.js +5 -5
- package/lib/math/repeg.js +1 -1
- package/lib/math/spotBalance.js +9 -9
- package/lib/math/spotMarket.js +3 -3
- package/lib/math/spotPosition.js +3 -3
- package/lib/math/trade.d.ts +1 -1
- package/lib/math/trade.js +42 -42
- package/lib/math/utils.js +1 -1
- package/lib/oracles/oracleClientCache.js +1 -1
- package/lib/oracles/pythClient.js +1 -1
- package/lib/oracles/types.d.ts +2 -2
- package/lib/serum/types.d.ts +1 -1
- package/lib/slot/SlotSubscriber.d.ts +1 -1
- package/lib/tokenFaucet.js +5 -1
- package/lib/tx/retryTxSender.d.ts +1 -1
- package/lib/tx/retryTxSender.js +1 -1
- package/lib/tx/types.d.ts +1 -1
- package/lib/types.d.ts +71 -44
- package/lib/user.js +63 -63
- package/lib/userConfig.d.ts +2 -2
- package/lib/userMap/userMap.js +1 -1
- package/lib/userMap/userStatsMap.js +3 -3
- package/lib/userStats.js +2 -2
- package/lib/userStatsConfig.d.ts +2 -2
- package/package.json +1 -1
- package/src/accounts/bulkAccountLoader.ts +5 -5
- package/src/accounts/fetch.ts +8 -0
- package/src/addresses/pda.ts +13 -0
- package/src/dlob/DLOB.ts +55 -8
- package/src/driftClient.ts +77 -0
- package/src/idl/drift.json +82 -4
- package/src/math/orders.ts +5 -1
- package/src/types.ts +29 -0
- package/src/userMap/userStatsMap.ts +1 -4
- package/tests/amm/test.ts +24 -28
- package/tests/dlob/test.ts +67 -73
package/lib/dlob/DLOB.js
CHANGED
|
@@ -80,10 +80,10 @@ class DLOB {
|
|
|
80
80
|
this.insertOrder(record.order, record.user, slot);
|
|
81
81
|
}
|
|
82
82
|
handleOrderActionRecord(record, slot) {
|
|
83
|
-
if (__1.isOneOfVariant(record.action, ['place', 'expire'])) {
|
|
83
|
+
if ((0, __1.isOneOfVariant)(record.action, ['place', 'expire'])) {
|
|
84
84
|
return;
|
|
85
85
|
}
|
|
86
|
-
if (__1.isVariant(record.action, 'trigger')) {
|
|
86
|
+
if ((0, __1.isVariant)(record.action, 'trigger')) {
|
|
87
87
|
if (record.taker !== null) {
|
|
88
88
|
const takerOrder = this.getOrder(record.takerOrderId, record.taker);
|
|
89
89
|
if (takerOrder) {
|
|
@@ -97,7 +97,7 @@ class DLOB {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
-
else if (__1.isVariant(record.action, 'fill')) {
|
|
100
|
+
else if ((0, __1.isVariant)(record.action, 'fill')) {
|
|
101
101
|
if (record.taker !== null) {
|
|
102
102
|
const takerOrder = this.getOrder(record.takerOrderId, record.taker);
|
|
103
103
|
if (takerOrder) {
|
|
@@ -111,7 +111,7 @@ class DLOB {
|
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
else if (__1.isVariant(record.action, 'cancel')) {
|
|
114
|
+
else if ((0, __1.isVariant)(record.action, 'cancel')) {
|
|
115
115
|
if (record.taker !== null) {
|
|
116
116
|
const takerOrder = this.getOrder(record.takerOrderId, record.taker);
|
|
117
117
|
if (takerOrder) {
|
|
@@ -128,20 +128,20 @@ class DLOB {
|
|
|
128
128
|
}
|
|
129
129
|
insertOrder(order, userAccount, slot, onInsert) {
|
|
130
130
|
var _a;
|
|
131
|
-
if (__1.isVariant(order.status, 'init')) {
|
|
131
|
+
if ((0, __1.isVariant)(order.status, 'init')) {
|
|
132
132
|
return;
|
|
133
133
|
}
|
|
134
|
-
if (!__1.isOneOfVariant(order.orderType, SUPPORTED_ORDER_TYPES)) {
|
|
134
|
+
if (!(0, __1.isOneOfVariant)(order.orderType, SUPPORTED_ORDER_TYPES)) {
|
|
135
135
|
return;
|
|
136
136
|
}
|
|
137
|
-
const marketType = __1.getVariant(order.marketType);
|
|
137
|
+
const marketType = (0, __1.getVariant)(order.marketType);
|
|
138
138
|
if (!this.orderLists.get(marketType).has(order.marketIndex)) {
|
|
139
139
|
this.addOrderList(marketType, order.marketIndex);
|
|
140
140
|
}
|
|
141
|
-
if (__1.isVariant(order.status, 'open')) {
|
|
141
|
+
if ((0, __1.isVariant)(order.status, 'open')) {
|
|
142
142
|
this.openOrders
|
|
143
143
|
.get(marketType)
|
|
144
|
-
.add(NodeList_1.getOrderSignature(order.orderId, userAccount));
|
|
144
|
+
.add((0, NodeList_1.getOrderSignature)(order.orderId, userAccount));
|
|
145
145
|
}
|
|
146
146
|
(_a = this.getListForOrder(order, slot)) === null || _a === void 0 ? void 0 : _a.insert(order, marketType, userAccount);
|
|
147
147
|
if (onInsert) {
|
|
@@ -193,16 +193,16 @@ class DLOB {
|
|
|
193
193
|
}
|
|
194
194
|
trigger(order, userAccount, slot, onTrigger) {
|
|
195
195
|
var _a;
|
|
196
|
-
if (__1.isVariant(order.status, 'init')) {
|
|
196
|
+
if ((0, __1.isVariant)(order.status, 'init')) {
|
|
197
197
|
return;
|
|
198
198
|
}
|
|
199
199
|
this.updateRestingLimitOrders(slot);
|
|
200
|
-
if (__1.isTriggered(order)) {
|
|
200
|
+
if ((0, __1.isTriggered)(order)) {
|
|
201
201
|
return;
|
|
202
202
|
}
|
|
203
|
-
const marketType = __1.getVariant(order.marketType);
|
|
203
|
+
const marketType = (0, __1.getVariant)(order.marketType);
|
|
204
204
|
const triggerList = this.orderLists.get(marketType).get(order.marketIndex)
|
|
205
|
-
.trigger[__1.isVariant(order.triggerCondition, 'above') ? 'above' : 'below'];
|
|
205
|
+
.trigger[(0, __1.isVariant)(order.triggerCondition, 'above') ? 'above' : 'below'];
|
|
206
206
|
triggerList.remove(order, userAccount);
|
|
207
207
|
(_a = this.getListForOrder(order, slot)) === null || _a === void 0 ? void 0 : _a.insert(order, marketType, userAccount);
|
|
208
208
|
if (onTrigger) {
|
|
@@ -211,7 +211,7 @@ class DLOB {
|
|
|
211
211
|
}
|
|
212
212
|
delete(order, userAccount, slot, onDelete) {
|
|
213
213
|
var _a;
|
|
214
|
-
if (__1.isVariant(order.status, 'init')) {
|
|
214
|
+
if ((0, __1.isVariant)(order.status, 'init')) {
|
|
215
215
|
return;
|
|
216
216
|
}
|
|
217
217
|
this.updateRestingLimitOrders(slot);
|
|
@@ -221,29 +221,29 @@ class DLOB {
|
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
getListForOrder(order, slot) {
|
|
224
|
-
const isInactiveTriggerOrder = __1.mustBeTriggered(order) && !__1.isTriggered(order);
|
|
224
|
+
const isInactiveTriggerOrder = (0, __1.mustBeTriggered)(order) && !(0, __1.isTriggered)(order);
|
|
225
225
|
let type;
|
|
226
226
|
if (isInactiveTriggerOrder) {
|
|
227
227
|
type = 'trigger';
|
|
228
228
|
}
|
|
229
|
-
else if (__1.isOneOfVariant(order.orderType, ['market', 'triggerMarket', 'oracle'])) {
|
|
229
|
+
else if ((0, __1.isOneOfVariant)(order.orderType, ['market', 'triggerMarket', 'oracle'])) {
|
|
230
230
|
type = 'market';
|
|
231
231
|
}
|
|
232
232
|
else if (order.oraclePriceOffset !== 0) {
|
|
233
233
|
type = 'floatingLimit';
|
|
234
234
|
}
|
|
235
235
|
else {
|
|
236
|
-
const isResting = __1.isRestingLimitOrder(order, slot);
|
|
236
|
+
const isResting = (0, __1.isRestingLimitOrder)(order, slot);
|
|
237
237
|
type = isResting ? 'restingLimit' : 'takingLimit';
|
|
238
238
|
}
|
|
239
239
|
let subType;
|
|
240
240
|
if (isInactiveTriggerOrder) {
|
|
241
|
-
subType = __1.isVariant(order.triggerCondition, 'above') ? 'above' : 'below';
|
|
241
|
+
subType = (0, __1.isVariant)(order.triggerCondition, 'above') ? 'above' : 'below';
|
|
242
242
|
}
|
|
243
243
|
else {
|
|
244
|
-
subType = __1.isVariant(order.direction, 'long') ? 'bid' : 'ask';
|
|
244
|
+
subType = (0, __1.isVariant)(order.direction, 'long') ? 'bid' : 'ask';
|
|
245
245
|
}
|
|
246
|
-
const marketType = __1.getVariant(order.marketType);
|
|
246
|
+
const marketType = (0, __1.getVariant)(order.marketType);
|
|
247
247
|
if (!this.orderLists.has(marketType)) {
|
|
248
248
|
return undefined;
|
|
249
249
|
}
|
|
@@ -261,7 +261,7 @@ class DLOB {
|
|
|
261
261
|
for (const [_, nodeLists] of this.orderLists.get(marketTypeStr)) {
|
|
262
262
|
const nodesToUpdate = [];
|
|
263
263
|
for (const node of nodeLists.takingLimit.ask.getGenerator()) {
|
|
264
|
-
if (!__1.isRestingLimitOrder(node.order, slot)) {
|
|
264
|
+
if (!(0, __1.isRestingLimitOrder)(node.order, slot)) {
|
|
265
265
|
continue;
|
|
266
266
|
}
|
|
267
267
|
nodesToUpdate.push({
|
|
@@ -270,7 +270,7 @@ class DLOB {
|
|
|
270
270
|
});
|
|
271
271
|
}
|
|
272
272
|
for (const node of nodeLists.takingLimit.bid.getGenerator()) {
|
|
273
|
-
if (!__1.isRestingLimitOrder(node.order, slot)) {
|
|
273
|
+
if (!(0, __1.isRestingLimitOrder)(node.order, slot)) {
|
|
274
274
|
continue;
|
|
275
275
|
}
|
|
276
276
|
nodesToUpdate.push({
|
|
@@ -286,7 +286,7 @@ class DLOB {
|
|
|
286
286
|
}
|
|
287
287
|
}
|
|
288
288
|
getOrder(orderId, userAccount) {
|
|
289
|
-
const orderSignature = NodeList_1.getOrderSignature(orderId, userAccount);
|
|
289
|
+
const orderSignature = (0, NodeList_1.getOrderSignature)(orderId, userAccount);
|
|
290
290
|
for (const nodeList of this.getNodeLists()) {
|
|
291
291
|
const node = nodeList.get(orderSignature);
|
|
292
292
|
if (node) {
|
|
@@ -296,18 +296,44 @@ class DLOB {
|
|
|
296
296
|
return undefined;
|
|
297
297
|
}
|
|
298
298
|
findNodesToFill(marketIndex, fallbackBid, fallbackAsk, slot, ts, marketType, oraclePriceData, stateAccount, marketAccount) {
|
|
299
|
-
if (exchangeStatus_1.fillPaused(stateAccount, marketAccount)) {
|
|
299
|
+
if ((0, exchangeStatus_1.fillPaused)(stateAccount, marketAccount)) {
|
|
300
300
|
return [];
|
|
301
301
|
}
|
|
302
|
-
const isAmmPaused = exchangeStatus_1.ammPaused(stateAccount, marketAccount);
|
|
303
|
-
const minAuctionDuration = __1.isVariant(marketType, 'perp')
|
|
302
|
+
const isAmmPaused = (0, exchangeStatus_1.ammPaused)(stateAccount, marketAccount);
|
|
303
|
+
const minAuctionDuration = (0, __1.isVariant)(marketType, 'perp')
|
|
304
304
|
? stateAccount.minPerpAuctionDuration
|
|
305
305
|
: 0;
|
|
306
306
|
const restingLimitOrderNodesToFill = this.findRestingLimitOrderNodesToFill(marketIndex, slot, marketType, oraclePriceData, isAmmPaused, minAuctionDuration, fallbackAsk, fallbackBid);
|
|
307
307
|
const takingOrderNodesToFill = this.findTakingNodesToFill(marketIndex, slot, marketType, oraclePriceData, isAmmPaused, minAuctionDuration, fallbackAsk, fallbackBid);
|
|
308
308
|
// get expired market nodes
|
|
309
309
|
const expiredNodesToFill = this.findExpiredNodesToFill(marketIndex, ts, marketType);
|
|
310
|
-
|
|
310
|
+
// for spot, multiple makers isn't supported, so don't merge
|
|
311
|
+
if ((0, __1.isVariant)(marketType, 'spot')) {
|
|
312
|
+
return restingLimitOrderNodesToFill.concat(takingOrderNodesToFill, expiredNodesToFill);
|
|
313
|
+
}
|
|
314
|
+
return this.mergeNodesToFill(restingLimitOrderNodesToFill, takingOrderNodesToFill).concat(expiredNodesToFill);
|
|
315
|
+
}
|
|
316
|
+
mergeNodesToFill(restingLimitOrderNodesToFill, takingOrderNodesToFill) {
|
|
317
|
+
const mergedNodesToFill = new Map();
|
|
318
|
+
const mergeNodesToFillHelper = (nodesToFillArray) => {
|
|
319
|
+
nodesToFillArray.forEach((nodeToFill) => {
|
|
320
|
+
const nodeSignature = (0, NodeList_1.getOrderSignature)(nodeToFill.node.order.orderId, nodeToFill.node.userAccount);
|
|
321
|
+
if (!mergedNodesToFill.has(nodeSignature)) {
|
|
322
|
+
mergedNodesToFill.set(nodeSignature, {
|
|
323
|
+
node: nodeToFill.node,
|
|
324
|
+
makerNodes: [],
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
if (nodeToFill.makerNodes) {
|
|
328
|
+
mergedNodesToFill
|
|
329
|
+
.get(nodeSignature)
|
|
330
|
+
.makerNodes.push(...nodeToFill.makerNodes);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
};
|
|
334
|
+
mergeNodesToFillHelper(restingLimitOrderNodesToFill);
|
|
335
|
+
mergeNodesToFillHelper(takingOrderNodesToFill);
|
|
336
|
+
return Array.from(mergedNodesToFill.values());
|
|
311
337
|
}
|
|
312
338
|
findRestingLimitOrderNodesToFill(marketIndex, slot, marketType, oraclePriceData, isAmmPaused, minAuctionDuration, fallbackAsk, fallbackBid) {
|
|
313
339
|
const nodesToFill = new Array();
|
|
@@ -339,7 +365,7 @@ class DLOB {
|
|
|
339
365
|
const nodesToFill = new Array();
|
|
340
366
|
let takingOrderGenerator = this.getTakingAsks(marketIndex, marketType, slot, oraclePriceData);
|
|
341
367
|
const takingAsksCrossingBids = this.findTakingNodesCrossingMakerNodes(marketIndex, slot, marketType, oraclePriceData, takingOrderGenerator, this.getMakerLimitBids.bind(this), (takerPrice, makerPrice) => {
|
|
342
|
-
if (__1.isVariant(marketType, 'spot')) {
|
|
368
|
+
if ((0, __1.isVariant)(marketType, 'spot')) {
|
|
343
369
|
if (takerPrice === undefined) {
|
|
344
370
|
return false;
|
|
345
371
|
}
|
|
@@ -363,7 +389,7 @@ class DLOB {
|
|
|
363
389
|
}
|
|
364
390
|
takingOrderGenerator = this.getTakingBids(marketIndex, marketType, slot, oraclePriceData);
|
|
365
391
|
const takingBidsToFill = this.findTakingNodesCrossingMakerNodes(marketIndex, slot, marketType, oraclePriceData, takingOrderGenerator, this.getMakerLimitAsks.bind(this), (takerPrice, makerPrice) => {
|
|
366
|
-
if (__1.isVariant(marketType, 'spot')) {
|
|
392
|
+
if ((0, __1.isVariant)(marketType, 'spot')) {
|
|
367
393
|
if (takerPrice === undefined) {
|
|
368
394
|
return false;
|
|
369
395
|
}
|
|
@@ -407,7 +433,7 @@ class DLOB {
|
|
|
407
433
|
}
|
|
408
434
|
nodesToFill.push({
|
|
409
435
|
node: takerNode,
|
|
410
|
-
|
|
436
|
+
makerNodes: [makerNode],
|
|
411
437
|
});
|
|
412
438
|
const makerOrder = makerNode.order;
|
|
413
439
|
const takerOrder = takerNode.order;
|
|
@@ -435,20 +461,20 @@ class DLOB {
|
|
|
435
461
|
let nextNode = nodeGenerator.next();
|
|
436
462
|
while (!nextNode.done) {
|
|
437
463
|
const node = nextNode.value;
|
|
438
|
-
if (__1.isVariant(marketType, 'spot') && ((_a = node.order) === null || _a === void 0 ? void 0 : _a.postOnly)) {
|
|
464
|
+
if ((0, __1.isVariant)(marketType, 'spot') && ((_a = node.order) === null || _a === void 0 ? void 0 : _a.postOnly)) {
|
|
439
465
|
nextNode = nodeGenerator.next();
|
|
440
466
|
continue;
|
|
441
467
|
}
|
|
442
|
-
const nodePrice = __1.getLimitPrice(node.order, oraclePriceData, slot);
|
|
468
|
+
const nodePrice = (0, __1.getLimitPrice)(node.order, oraclePriceData, slot);
|
|
443
469
|
// order crosses if there is no limit price or it crosses fallback price
|
|
444
470
|
const crosses = doesCross(nodePrice, fallbackPrice);
|
|
445
471
|
// fallback is available if auction is complete or it's a spot order
|
|
446
|
-
const fallbackAvailable = __1.isVariant(marketType, 'spot') ||
|
|
447
|
-
__1.isFallbackAvailableLiquiditySource(node.order, minAuctionDuration, slot);
|
|
472
|
+
const fallbackAvailable = (0, __1.isVariant)(marketType, 'spot') ||
|
|
473
|
+
(0, __1.isFallbackAvailableLiquiditySource)(node.order, minAuctionDuration, slot);
|
|
448
474
|
if (crosses && fallbackAvailable) {
|
|
449
475
|
nodesToFill.push({
|
|
450
476
|
node: node,
|
|
451
|
-
|
|
477
|
+
makerNodes: [], // filled by fallback
|
|
452
478
|
});
|
|
453
479
|
}
|
|
454
480
|
nextNode = nodeGenerator.next();
|
|
@@ -457,7 +483,7 @@ class DLOB {
|
|
|
457
483
|
}
|
|
458
484
|
findExpiredNodesToFill(marketIndex, ts, marketType) {
|
|
459
485
|
const nodesToFill = new Array();
|
|
460
|
-
const marketTypeStr = __1.getVariant(marketType);
|
|
486
|
+
const marketTypeStr = (0, __1.getVariant)(marketType);
|
|
461
487
|
const nodeLists = this.orderLists.get(marketTypeStr).get(marketIndex);
|
|
462
488
|
if (!nodeLists) {
|
|
463
489
|
return nodesToFill;
|
|
@@ -477,18 +503,20 @@ class DLOB {
|
|
|
477
503
|
];
|
|
478
504
|
for (const bidGenerator of bidGenerators) {
|
|
479
505
|
for (const bid of bidGenerator) {
|
|
480
|
-
if (__1.isOrderExpired(bid.order, ts)) {
|
|
506
|
+
if ((0, __1.isOrderExpired)(bid.order, ts)) {
|
|
481
507
|
nodesToFill.push({
|
|
482
508
|
node: bid,
|
|
509
|
+
makerNodes: [],
|
|
483
510
|
});
|
|
484
511
|
}
|
|
485
512
|
}
|
|
486
513
|
}
|
|
487
514
|
for (const askGenerator of askGenerators) {
|
|
488
515
|
for (const ask of askGenerator) {
|
|
489
|
-
if (__1.isOrderExpired(ask.order, ts)) {
|
|
516
|
+
if ((0, __1.isOrderExpired)(ask.order, ts)) {
|
|
490
517
|
nodesToFill.push({
|
|
491
518
|
node: ask,
|
|
519
|
+
makerNodes: [],
|
|
492
520
|
});
|
|
493
521
|
}
|
|
494
522
|
}
|
|
@@ -501,17 +529,19 @@ class DLOB {
|
|
|
501
529
|
for (const marketBid of this.getTakingBids(marketIndex, marketType, slot, oraclePriceData)) {
|
|
502
530
|
nodesToFill.push({
|
|
503
531
|
node: marketBid,
|
|
532
|
+
makerNodes: [],
|
|
504
533
|
});
|
|
505
534
|
}
|
|
506
535
|
for (const marketAsk of this.getTakingAsks(marketIndex, marketType, slot, oraclePriceData)) {
|
|
507
536
|
nodesToFill.push({
|
|
508
537
|
node: marketAsk,
|
|
538
|
+
makerNodes: [],
|
|
509
539
|
});
|
|
510
540
|
}
|
|
511
541
|
return nodesToFill;
|
|
512
542
|
}
|
|
513
543
|
*getTakingBids(marketIndex, marketType, slot, oraclePriceData) {
|
|
514
|
-
const marketTypeStr = __1.getVariant(marketType);
|
|
544
|
+
const marketTypeStr = (0, __1.getVariant)(marketType);
|
|
515
545
|
const orderLists = this.orderLists.get(marketTypeStr).get(marketIndex);
|
|
516
546
|
if (!orderLists) {
|
|
517
547
|
return;
|
|
@@ -526,7 +556,7 @@ class DLOB {
|
|
|
526
556
|
});
|
|
527
557
|
}
|
|
528
558
|
*getTakingAsks(marketIndex, marketType, slot, oraclePriceData) {
|
|
529
|
-
const marketTypeStr = __1.getVariant(marketType);
|
|
559
|
+
const marketTypeStr = (0, __1.getVariant)(marketType);
|
|
530
560
|
const orderLists = this.orderLists.get(marketTypeStr).get(marketIndex);
|
|
531
561
|
if (!orderLists) {
|
|
532
562
|
return;
|
|
@@ -577,11 +607,11 @@ class DLOB {
|
|
|
577
607
|
}
|
|
578
608
|
}
|
|
579
609
|
*getRestingLimitAsks(marketIndex, slot, marketType, oraclePriceData) {
|
|
580
|
-
if (__1.isVariant(marketType, 'spot') && !oraclePriceData) {
|
|
610
|
+
if ((0, __1.isVariant)(marketType, 'spot') && !oraclePriceData) {
|
|
581
611
|
throw new Error('Must provide OraclePriceData to get spot asks');
|
|
582
612
|
}
|
|
583
613
|
this.updateRestingLimitOrders(slot);
|
|
584
|
-
const marketTypeStr = __1.getVariant(marketType);
|
|
614
|
+
const marketTypeStr = (0, __1.getVariant)(marketType);
|
|
585
615
|
const nodeLists = this.orderLists.get(marketTypeStr).get(marketIndex);
|
|
586
616
|
if (!nodeLists) {
|
|
587
617
|
return;
|
|
@@ -612,11 +642,11 @@ class DLOB {
|
|
|
612
642
|
}
|
|
613
643
|
}
|
|
614
644
|
*getRestingLimitBids(marketIndex, slot, marketType, oraclePriceData) {
|
|
615
|
-
if (__1.isVariant(marketType, 'spot') && !oraclePriceData) {
|
|
645
|
+
if ((0, __1.isVariant)(marketType, 'spot') && !oraclePriceData) {
|
|
616
646
|
throw new Error('Must provide OraclePriceData to get spot bids');
|
|
617
647
|
}
|
|
618
648
|
this.updateRestingLimitOrders(slot);
|
|
619
|
-
const marketTypeStr = __1.getVariant(marketType);
|
|
649
|
+
const marketTypeStr = (0, __1.getVariant)(marketType);
|
|
620
650
|
const nodeLists = this.orderLists.get(marketTypeStr).get(marketIndex);
|
|
621
651
|
if (!nodeLists) {
|
|
622
652
|
return;
|
|
@@ -647,23 +677,23 @@ class DLOB {
|
|
|
647
677
|
}
|
|
648
678
|
}
|
|
649
679
|
*getAsks(marketIndex, fallbackAsk, slot, marketType, oraclePriceData) {
|
|
650
|
-
if (__1.isVariant(marketType, 'spot') && !oraclePriceData) {
|
|
680
|
+
if ((0, __1.isVariant)(marketType, 'spot') && !oraclePriceData) {
|
|
651
681
|
throw new Error('Must provide OraclePriceData to get spot asks');
|
|
652
682
|
}
|
|
653
683
|
const generatorList = [
|
|
654
684
|
this.getTakingAsks(marketIndex, marketType, slot, oraclePriceData),
|
|
655
685
|
this.getRestingLimitAsks(marketIndex, slot, marketType, oraclePriceData),
|
|
656
686
|
];
|
|
657
|
-
const marketTypeStr = __1.getVariant(marketType);
|
|
687
|
+
const marketTypeStr = (0, __1.getVariant)(marketType);
|
|
658
688
|
if (marketTypeStr === 'perp' && fallbackAsk) {
|
|
659
|
-
generatorList.push(NodeList_1.getVammNodeGenerator(fallbackAsk));
|
|
689
|
+
generatorList.push((0, NodeList_1.getVammNodeGenerator)(fallbackAsk));
|
|
660
690
|
}
|
|
661
691
|
yield* this.getBestNode(generatorList, oraclePriceData, slot, (bestNode, currentNode, slot, oraclePriceData) => {
|
|
662
692
|
const bestNodeTaking = bestNode.order
|
|
663
|
-
? __1.isTakingOrder(bestNode.order, slot)
|
|
693
|
+
? (0, __1.isTakingOrder)(bestNode.order, slot)
|
|
664
694
|
: false;
|
|
665
695
|
const currentNodeTaking = currentNode.order
|
|
666
|
-
? __1.isTakingOrder(currentNode.order, slot)
|
|
696
|
+
? (0, __1.isTakingOrder)(currentNode.order, slot)
|
|
667
697
|
: false;
|
|
668
698
|
if (bestNodeTaking && currentNodeTaking) {
|
|
669
699
|
return bestNode.order.slot.lt(currentNode.order.slot);
|
|
@@ -680,23 +710,23 @@ class DLOB {
|
|
|
680
710
|
});
|
|
681
711
|
}
|
|
682
712
|
*getBids(marketIndex, fallbackBid, slot, marketType, oraclePriceData) {
|
|
683
|
-
if (__1.isVariant(marketType, 'spot') && !oraclePriceData) {
|
|
713
|
+
if ((0, __1.isVariant)(marketType, 'spot') && !oraclePriceData) {
|
|
684
714
|
throw new Error('Must provide OraclePriceData to get spot bids');
|
|
685
715
|
}
|
|
686
716
|
const generatorList = [
|
|
687
717
|
this.getTakingBids(marketIndex, marketType, slot, oraclePriceData),
|
|
688
718
|
this.getRestingLimitBids(marketIndex, slot, marketType, oraclePriceData),
|
|
689
719
|
];
|
|
690
|
-
const marketTypeStr = __1.getVariant(marketType);
|
|
720
|
+
const marketTypeStr = (0, __1.getVariant)(marketType);
|
|
691
721
|
if (marketTypeStr === 'perp' && fallbackBid) {
|
|
692
|
-
generatorList.push(NodeList_1.getVammNodeGenerator(fallbackBid));
|
|
722
|
+
generatorList.push((0, NodeList_1.getVammNodeGenerator)(fallbackBid));
|
|
693
723
|
}
|
|
694
724
|
yield* this.getBestNode(generatorList, oraclePriceData, slot, (bestNode, currentNode, slot, oraclePriceData) => {
|
|
695
725
|
const bestNodeTaking = bestNode.order
|
|
696
|
-
? __1.isTakingOrder(bestNode.order, slot)
|
|
726
|
+
? (0, __1.isTakingOrder)(bestNode.order, slot)
|
|
697
727
|
: false;
|
|
698
728
|
const currentNodeTaking = currentNode.order
|
|
699
|
-
? __1.isTakingOrder(currentNode.order, slot)
|
|
729
|
+
? (0, __1.isTakingOrder)(currentNode.order, slot)
|
|
700
730
|
: false;
|
|
701
731
|
if (bestNodeTaking && currentNodeTaking) {
|
|
702
732
|
return bestNode.order.slot.lt(currentNode.order.slot);
|
|
@@ -750,7 +780,7 @@ class DLOB {
|
|
|
750
780
|
this.getListForOrder(newAskOrder, slot).update(newAskOrder, askNode.userAccount);
|
|
751
781
|
nodesToFill.push({
|
|
752
782
|
node: takerNode,
|
|
753
|
-
|
|
783
|
+
makerNodes: [makerNode],
|
|
754
784
|
});
|
|
755
785
|
if (newAskOrder.baseAssetAmount.eq(newAskOrder.baseAssetAmountFilled)) {
|
|
756
786
|
break;
|
|
@@ -801,11 +831,11 @@ class DLOB {
|
|
|
801
831
|
.value.getPrice(oraclePriceData, slot);
|
|
802
832
|
}
|
|
803
833
|
findNodesToTrigger(marketIndex, slot, oraclePrice, marketType, stateAccount) {
|
|
804
|
-
if (exchangeStatus_1.exchangePaused(stateAccount)) {
|
|
834
|
+
if ((0, exchangeStatus_1.exchangePaused)(stateAccount)) {
|
|
805
835
|
return [];
|
|
806
836
|
}
|
|
807
837
|
const nodesToTrigger = [];
|
|
808
|
-
const marketTypeStr = __1.getVariant(marketType);
|
|
838
|
+
const marketTypeStr = (0, __1.getVariant)(marketType);
|
|
809
839
|
const marketNodeLists = this.orderLists.get(marketTypeStr).get(marketIndex);
|
|
810
840
|
const triggerAboveList = marketNodeLists
|
|
811
841
|
? marketNodeLists.trigger.above
|
|
@@ -840,46 +870,46 @@ class DLOB {
|
|
|
840
870
|
return nodesToTrigger;
|
|
841
871
|
}
|
|
842
872
|
printTopOfOrderLists(sdkConfig, driftClient, slotSubscriber, marketIndex, marketType) {
|
|
843
|
-
if (__1.isVariant(marketType, 'perp')) {
|
|
873
|
+
if ((0, __1.isVariant)(marketType, 'perp')) {
|
|
844
874
|
const market = driftClient.getPerpMarketAccount(marketIndex);
|
|
845
875
|
const slot = slotSubscriber.getSlot();
|
|
846
876
|
const oraclePriceData = driftClient.getOracleDataForPerpMarket(marketIndex);
|
|
847
|
-
const fallbackAsk = __1.calculateAskPrice(market, oraclePriceData);
|
|
848
|
-
const fallbackBid = __1.calculateBidPrice(market, oraclePriceData);
|
|
877
|
+
const fallbackAsk = (0, __1.calculateAskPrice)(market, oraclePriceData);
|
|
878
|
+
const fallbackBid = (0, __1.calculateBidPrice)(market, oraclePriceData);
|
|
849
879
|
const bestAsk = this.getBestAsk(marketIndex, fallbackAsk, slot, marketType, oraclePriceData);
|
|
850
880
|
const bestBid = this.getBestBid(marketIndex, fallbackBid, slot, marketType, oraclePriceData);
|
|
851
881
|
const mid = bestAsk.add(bestBid).div(new __1.BN(2));
|
|
852
|
-
const bidSpread = (__1.convertToNumber(bestBid, __1.PRICE_PRECISION) /
|
|
853
|
-
__1.convertToNumber(oraclePriceData.price, __1.PRICE_PRECISION) -
|
|
882
|
+
const bidSpread = ((0, __1.convertToNumber)(bestBid, __1.PRICE_PRECISION) /
|
|
883
|
+
(0, __1.convertToNumber)(oraclePriceData.price, __1.PRICE_PRECISION) -
|
|
854
884
|
1) *
|
|
855
885
|
100.0;
|
|
856
|
-
const askSpread = (__1.convertToNumber(bestAsk, __1.PRICE_PRECISION) /
|
|
857
|
-
__1.convertToNumber(oraclePriceData.price, __1.PRICE_PRECISION) -
|
|
886
|
+
const askSpread = ((0, __1.convertToNumber)(bestAsk, __1.PRICE_PRECISION) /
|
|
887
|
+
(0, __1.convertToNumber)(oraclePriceData.price, __1.PRICE_PRECISION) -
|
|
858
888
|
1) *
|
|
859
889
|
100.0;
|
|
860
890
|
console.log(`Market ${sdkConfig.MARKETS[marketIndex].symbol} Orders`);
|
|
861
|
-
console.log(` Ask`, __1.convertToNumber(bestAsk, __1.PRICE_PRECISION).toFixed(3), `(${askSpread.toFixed(4)}%)`);
|
|
862
|
-
console.log(` Mid`, __1.convertToNumber(mid, __1.PRICE_PRECISION).toFixed(3));
|
|
863
|
-
console.log(` Bid`, __1.convertToNumber(bestBid, __1.PRICE_PRECISION).toFixed(3), `(${bidSpread.toFixed(4)}%)`);
|
|
891
|
+
console.log(` Ask`, (0, __1.convertToNumber)(bestAsk, __1.PRICE_PRECISION).toFixed(3), `(${askSpread.toFixed(4)}%)`);
|
|
892
|
+
console.log(` Mid`, (0, __1.convertToNumber)(mid, __1.PRICE_PRECISION).toFixed(3));
|
|
893
|
+
console.log(` Bid`, (0, __1.convertToNumber)(bestBid, __1.PRICE_PRECISION).toFixed(3), `(${bidSpread.toFixed(4)}%)`);
|
|
864
894
|
}
|
|
865
|
-
else if (__1.isVariant(marketType, 'spot')) {
|
|
895
|
+
else if ((0, __1.isVariant)(marketType, 'spot')) {
|
|
866
896
|
const slot = slotSubscriber.getSlot();
|
|
867
897
|
const oraclePriceData = driftClient.getOracleDataForPerpMarket(marketIndex);
|
|
868
898
|
const bestAsk = this.getBestAsk(marketIndex, undefined, slot, marketType, oraclePriceData);
|
|
869
899
|
const bestBid = this.getBestBid(marketIndex, undefined, slot, marketType, oraclePriceData);
|
|
870
900
|
const mid = bestAsk.add(bestBid).div(new __1.BN(2));
|
|
871
|
-
const bidSpread = (__1.convertToNumber(bestBid, __1.PRICE_PRECISION) /
|
|
872
|
-
__1.convertToNumber(oraclePriceData.price, __1.PRICE_PRECISION) -
|
|
901
|
+
const bidSpread = ((0, __1.convertToNumber)(bestBid, __1.PRICE_PRECISION) /
|
|
902
|
+
(0, __1.convertToNumber)(oraclePriceData.price, __1.PRICE_PRECISION) -
|
|
873
903
|
1) *
|
|
874
904
|
100.0;
|
|
875
|
-
const askSpread = (__1.convertToNumber(bestAsk, __1.PRICE_PRECISION) /
|
|
876
|
-
__1.convertToNumber(oraclePriceData.price, __1.PRICE_PRECISION) -
|
|
905
|
+
const askSpread = ((0, __1.convertToNumber)(bestAsk, __1.PRICE_PRECISION) /
|
|
906
|
+
(0, __1.convertToNumber)(oraclePriceData.price, __1.PRICE_PRECISION) -
|
|
877
907
|
1) *
|
|
878
908
|
100.0;
|
|
879
909
|
console.log(`Market ${sdkConfig.MARKETS[marketIndex].symbol} Orders`);
|
|
880
|
-
console.log(` Ask`, __1.convertToNumber(bestAsk, __1.PRICE_PRECISION).toFixed(3), `(${askSpread.toFixed(4)}%)`);
|
|
881
|
-
console.log(` Mid`, __1.convertToNumber(mid, __1.PRICE_PRECISION).toFixed(3));
|
|
882
|
-
console.log(` Bid`, __1.convertToNumber(bestBid, __1.PRICE_PRECISION).toFixed(3), `(${bidSpread.toFixed(4)}%)`);
|
|
910
|
+
console.log(` Ask`, (0, __1.convertToNumber)(bestAsk, __1.PRICE_PRECISION).toFixed(3), `(${askSpread.toFixed(4)}%)`);
|
|
911
|
+
console.log(` Mid`, (0, __1.convertToNumber)(mid, __1.PRICE_PRECISION).toFixed(3));
|
|
912
|
+
console.log(` Bid`, (0, __1.convertToNumber)(bestBid, __1.PRICE_PRECISION).toFixed(3), `(${bidSpread.toFixed(4)}%)`);
|
|
883
913
|
}
|
|
884
914
|
}
|
|
885
915
|
getDLOBOrders() {
|
package/lib/dlob/DLOBNode.d.ts
CHANGED
|
@@ -47,12 +47,12 @@ export declare class TriggerOrderNode extends OrderNode {
|
|
|
47
47
|
previous?: TriggerOrderNode;
|
|
48
48
|
getSortValue(order: Order): BN;
|
|
49
49
|
}
|
|
50
|
-
export
|
|
50
|
+
export type DLOBNodeMap = {
|
|
51
51
|
restingLimit: RestingLimitOrderNode;
|
|
52
52
|
takingLimit: TakingLimitOrderNode;
|
|
53
53
|
floatingLimit: FloatingLimitOrderNode;
|
|
54
54
|
market: MarketOrderNode;
|
|
55
55
|
trigger: TriggerOrderNode;
|
|
56
56
|
};
|
|
57
|
-
export
|
|
57
|
+
export type DLOBNodeType = 'restingLimit' | 'takingLimit' | 'floatingLimit' | 'market' | ('trigger' & keyof DLOBNodeMap);
|
|
58
58
|
export declare function createNode<T extends DLOBNodeType>(nodeType: T, order: Order, userAccount: PublicKey): DLOBNodeMap[T];
|
package/lib/dlob/DLOBNode.js
CHANGED
|
@@ -13,20 +13,20 @@ class OrderNode {
|
|
|
13
13
|
this.sortValue = this.getSortValue(order);
|
|
14
14
|
}
|
|
15
15
|
getLabel() {
|
|
16
|
-
let msg = `Order ${NodeList_1.getOrderSignature(this.order.orderId, this.userAccount)}`;
|
|
17
|
-
msg += ` ${__1.isVariant(this.order.direction, 'long') ? 'LONG' : 'SHORT'} `;
|
|
18
|
-
msg += `${__1.convertToNumber(this.order.baseAssetAmount, __1.AMM_RESERVE_PRECISION).toFixed(3)}`;
|
|
16
|
+
let msg = `Order ${(0, NodeList_1.getOrderSignature)(this.order.orderId, this.userAccount)}`;
|
|
17
|
+
msg += ` ${(0, __1.isVariant)(this.order.direction, 'long') ? 'LONG' : 'SHORT'} `;
|
|
18
|
+
msg += `${(0, __1.convertToNumber)(this.order.baseAssetAmount, __1.AMM_RESERVE_PRECISION).toFixed(3)}`;
|
|
19
19
|
if (this.order.price.gt(__1.ZERO)) {
|
|
20
|
-
msg += ` @ ${__1.convertToNumber(this.order.price, __1.PRICE_PRECISION).toFixed(3)}`;
|
|
20
|
+
msg += ` @ ${(0, __1.convertToNumber)(this.order.price, __1.PRICE_PRECISION).toFixed(3)}`;
|
|
21
21
|
}
|
|
22
22
|
if (this.order.triggerPrice.gt(__1.ZERO)) {
|
|
23
|
-
msg += ` ${__1.isVariant(this.order.triggerCondition, 'below') ? 'BELOW' : 'ABOVE'}`;
|
|
24
|
-
msg += ` ${__1.convertToNumber(this.order.triggerPrice, __1.PRICE_PRECISION).toFixed(3)}`;
|
|
23
|
+
msg += ` ${(0, __1.isVariant)(this.order.triggerCondition, 'below') ? 'BELOW' : 'ABOVE'}`;
|
|
24
|
+
msg += ` ${(0, __1.convertToNumber)(this.order.triggerPrice, __1.PRICE_PRECISION).toFixed(3)}`;
|
|
25
25
|
}
|
|
26
26
|
return msg;
|
|
27
27
|
}
|
|
28
28
|
getPrice(oraclePriceData, slot) {
|
|
29
|
-
return __1.getLimitPrice(this.order, oraclePriceData, slot);
|
|
29
|
+
return (0, __1.getLimitPrice)(this.order, oraclePriceData, slot);
|
|
30
30
|
}
|
|
31
31
|
isBaseFilled() {
|
|
32
32
|
return this.order.baseAssetAmountFilled.eq(this.order.baseAssetAmount);
|
package/lib/dlob/DLOBOrders.d.ts
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { PublicKey } from '@solana/web3.js';
|
|
3
3
|
import { Idl } from '@project-serum/anchor';
|
|
4
4
|
import { Order } from '../types';
|
|
5
|
-
export
|
|
5
|
+
export type DLOBOrder = {
|
|
6
6
|
user: PublicKey;
|
|
7
7
|
order: Order;
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export type DLOBOrders = DLOBOrder[];
|
|
10
10
|
export declare class DLOBOrdersCoder {
|
|
11
11
|
private idl;
|
|
12
12
|
constructor(idl: Idl);
|
package/lib/dlob/NodeList.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { BN, MarketTypeStr, Order } from '..';
|
|
3
3
|
import { PublicKey } from '@solana/web3.js';
|
|
4
4
|
import { DLOBNode, DLOBNodeMap } from './DLOBNode';
|
|
5
|
-
export
|
|
5
|
+
export type SortDirection = 'asc' | 'desc';
|
|
6
6
|
export declare function getOrderSignature(orderId: number, userAccount: PublicKey): string;
|
|
7
7
|
export interface DLOBNodeGenerator {
|
|
8
8
|
getGenerator(): Generator<DLOBNode>;
|
package/lib/dlob/NodeList.js
CHANGED
|
@@ -20,10 +20,10 @@ class NodeList {
|
|
|
20
20
|
this.nodeMap.clear();
|
|
21
21
|
}
|
|
22
22
|
insert(order, marketType, userAccount) {
|
|
23
|
-
if (__1.isVariant(order.status, 'init')) {
|
|
23
|
+
if ((0, __1.isVariant)(order.status, 'init')) {
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
|
-
const newNode = DLOBNode_1.createNode(this.nodeType, order, userAccount);
|
|
26
|
+
const newNode = (0, DLOBNode_1.createNode)(this.nodeType, order, userAccount);
|
|
27
27
|
const orderSignature = getOrderSignature(order.orderId, userAccount);
|
|
28
28
|
if (this.nodeMap.has(orderSignature)) {
|
|
29
29
|
return;
|
package/lib/driftClient.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="bn.js" />
|
|
3
3
|
import { AnchorProvider, BN, Program } from '@project-serum/anchor';
|
|
4
|
-
import { StateAccount, IWallet, PositionDirection, UserAccount, PerpMarketAccount, OrderParams, Order, SpotMarketAccount, SpotPosition, MakerInfo, TakerInfo, OptionalOrderParams, OrderType, ReferrerInfo, MarketType, TxParams, SerumV3FulfillmentConfigAccount, OrderTriggerCondition } from './types';
|
|
4
|
+
import { StateAccount, IWallet, PositionDirection, UserAccount, PerpMarketAccount, OrderParams, Order, SpotMarketAccount, SpotPosition, MakerInfo, TakerInfo, OptionalOrderParams, OrderType, ReferrerInfo, MarketType, TxParams, SerumV3FulfillmentConfigAccount, ReferrerNameAccount, OrderTriggerCondition, PerpMarketExtendedInfo } from './types';
|
|
5
5
|
import * as anchor from '@project-serum/anchor';
|
|
6
6
|
import { Connection, PublicKey, TransactionSignature, ConfirmOptions, Transaction, TransactionInstruction, AccountMeta, Signer, AddressLookupTableAccount } from '@solana/web3.js';
|
|
7
7
|
import { TokenFaucet } from './tokenFaucet';
|
|
@@ -14,7 +14,7 @@ import { DriftClientConfig } from './driftClientConfig';
|
|
|
14
14
|
import { User } from './user';
|
|
15
15
|
import { UserSubscriptionConfig } from './userConfig';
|
|
16
16
|
import { UserStats } from './userStats';
|
|
17
|
-
|
|
17
|
+
type RemainingAccountParams = {
|
|
18
18
|
userAccounts: UserAccount[];
|
|
19
19
|
writablePerpMarketIndexes?: number[];
|
|
20
20
|
writableSpotMarketIndexes?: number[];
|
|
@@ -96,6 +96,7 @@ export declare class DriftClient {
|
|
|
96
96
|
initializeUserAccount(subAccountId?: number, name?: string, referrerInfo?: ReferrerInfo): Promise<[TransactionSignature, PublicKey]>;
|
|
97
97
|
getInitializeUserInstructions(subAccountId?: number, name?: string, referrerInfo?: ReferrerInfo): Promise<[PublicKey, TransactionInstruction]>;
|
|
98
98
|
getInitializeUserStatsIx(): Promise<TransactionInstruction>;
|
|
99
|
+
initializeReferrerName(name: string): Promise<TransactionSignature>;
|
|
99
100
|
updateUserName(name: string, subAccountId?: number): Promise<TransactionSignature>;
|
|
100
101
|
updateUserCustomMarginRatio(marginRatio: number, subAccountId?: number): Promise<TransactionSignature>;
|
|
101
102
|
updateUserMarginTradingEnabled(marginTradingEnabled: boolean, subAccountId?: number): Promise<TransactionSignature>;
|
|
@@ -106,6 +107,7 @@ export declare class DriftClient {
|
|
|
106
107
|
getUser(subAccountId?: number): User;
|
|
107
108
|
getUsers(): User[];
|
|
108
109
|
getUserStats(): UserStats;
|
|
110
|
+
fetchReferrerNameAccount(name: string): Promise<ReferrerNameAccount | undefined>;
|
|
109
111
|
userStatsAccountPublicKey: PublicKey;
|
|
110
112
|
getUserStatsAccountPublicKey(): PublicKey;
|
|
111
113
|
getUserAccountPublicKey(): Promise<PublicKey>;
|
|
@@ -320,6 +322,7 @@ export declare class DriftClient {
|
|
|
320
322
|
settleRevenueToInsuranceFund(marketIndex: number): Promise<TransactionSignature>;
|
|
321
323
|
resolvePerpPnlDeficit(spotMarketIndex: number, perpMarketIndex: number, txParams?: TxParams): Promise<TransactionSignature>;
|
|
322
324
|
getResolvePerpPnlDeficitIx(spotMarketIndex: number, perpMarketIndex: number): Promise<TransactionInstruction>;
|
|
325
|
+
getPerpMarketExtendedInfo(marketIndex: number): PerpMarketExtendedInfo;
|
|
323
326
|
sendTransaction(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions, preSigned?: boolean): Promise<TxSigAndSlot>;
|
|
324
327
|
}
|
|
325
328
|
export {};
|