@nadohq/indexer-client 0.15.0 → 0.18.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.
- package/dist/CandlestickPeriod-1DtcEiOb.d.ts +15 -0
- package/dist/CandlestickPeriod-1DtcEiOb.d.ts.map +1 -0
- package/dist/CandlestickPeriod-D3_IoSev.d.cts +15 -0
- package/dist/CandlestickPeriod-D3_IoSev.d.cts.map +1 -0
- package/dist/IndexerBaseClient-3KfzA2ph.cjs +639 -0
- package/dist/IndexerBaseClient-3KfzA2ph.cjs.map +1 -0
- package/dist/IndexerBaseClient.cjs +3 -788
- package/dist/IndexerBaseClient.d.cts +223 -229
- package/dist/IndexerBaseClient.d.cts.map +1 -0
- package/dist/IndexerBaseClient.d.ts +223 -229
- package/dist/IndexerBaseClient.d.ts.map +1 -0
- package/dist/IndexerBaseClient.js +601 -783
- package/dist/IndexerBaseClient.js.map +1 -1
- package/dist/IndexerClient.cjs +275 -381
- package/dist/IndexerClient.cjs.map +1 -1
- package/dist/IndexerClient.d.cts +32 -43
- package/dist/IndexerClient.d.cts.map +1 -0
- package/dist/IndexerClient.d.ts +32 -43
- package/dist/IndexerClient.d.ts.map +1 -0
- package/dist/IndexerClient.js +273 -362
- package/dist/IndexerClient.js.map +1 -1
- package/dist/IndexerEventType-B-uXsf-a.d.cts +5 -0
- package/dist/IndexerEventType-B-uXsf-a.d.cts.map +1 -0
- package/dist/IndexerEventType-DCLkSlgR.d.ts +5 -0
- package/dist/IndexerEventType-DCLkSlgR.d.ts.map +1 -0
- package/dist/IndexerLeaderboardType-Ck12QVWR.d.cts +13 -0
- package/dist/IndexerLeaderboardType-Ck12QVWR.d.cts.map +1 -0
- package/dist/IndexerLeaderboardType-DAKw2tfI.d.ts +13 -0
- package/dist/IndexerLeaderboardType-DAKw2tfI.d.ts.map +1 -0
- package/dist/NadoTx-CWCklgY4.d.ts +50 -0
- package/dist/NadoTx-CWCklgY4.d.ts.map +1 -0
- package/dist/NadoTx-MYNIlXyq.d.cts +50 -0
- package/dist/NadoTx-MYNIlXyq.d.cts.map +1 -0
- package/dist/clientTypes-BpxOUu1q.d.ts +709 -0
- package/dist/clientTypes-BpxOUu1q.d.ts.map +1 -0
- package/dist/clientTypes-BsJ2yIC4.d.cts +709 -0
- package/dist/clientTypes-BsJ2yIC4.d.cts.map +1 -0
- package/dist/collateralEventType-CzH_2iTV.d.ts +5 -0
- package/dist/collateralEventType-CzH_2iTV.d.ts.map +1 -0
- package/dist/collateralEventType-DIm6Te7F.d.cts +5 -0
- package/dist/collateralEventType-DIm6Te7F.d.cts.map +1 -0
- package/dist/dataMappers.cjs +269 -346
- package/dist/dataMappers.cjs.map +1 -1
- package/dist/dataMappers.d.cts +7 -12
- package/dist/dataMappers.d.cts.map +1 -0
- package/dist/dataMappers.d.ts +7 -12
- package/dist/dataMappers.d.ts.map +1 -0
- package/dist/dataMappers.js +248 -314
- package/dist/dataMappers.js.map +1 -1
- package/dist/endpoints.cjs +8 -32
- package/dist/endpoints.cjs.map +1 -1
- package/dist/endpoints.d.cts +4 -2
- package/dist/endpoints.d.cts.map +1 -0
- package/dist/endpoints.d.ts +4 -2
- package/dist/endpoints.d.ts.map +1 -0
- package/dist/endpoints.js +8 -8
- package/dist/endpoints.js.map +1 -1
- package/dist/index-D6CnpA_r.d.cts +1 -0
- package/dist/index-DhI2LvVQ.d.ts +1 -0
- package/dist/index.cjs +15 -33
- package/dist/index.d.cts +14 -18
- package/dist/index.d.ts +14 -18
- package/dist/index.js +8 -7
- package/dist/indexerBalanceValue-4AuNuTAc.d.cts +32 -0
- package/dist/indexerBalanceValue-4AuNuTAc.d.cts.map +1 -0
- package/dist/indexerBalanceValue-B0OggI67.d.ts +32 -0
- package/dist/indexerBalanceValue-B0OggI67.d.ts.map +1 -0
- package/dist/paginatedEventsTypes-DtGDU-kI.d.cts +110 -0
- package/dist/paginatedEventsTypes-DtGDU-kI.d.cts.map +1 -0
- package/dist/paginatedEventsTypes-RwXoQrEa.d.ts +110 -0
- package/dist/paginatedEventsTypes-RwXoQrEa.d.ts.map +1 -0
- package/dist/serverModelTypes-CM2g040o.d.cts +262 -0
- package/dist/serverModelTypes-CM2g040o.d.cts.map +1 -0
- package/dist/serverModelTypes-DPHMUSZe.d.ts +262 -0
- package/dist/serverModelTypes-DPHMUSZe.d.ts.map +1 -0
- package/dist/serverTypes-BMSNh2GK.d.cts +452 -0
- package/dist/serverTypes-BMSNh2GK.d.cts.map +1 -0
- package/dist/serverTypes-c8IABU73.d.ts +452 -0
- package/dist/serverTypes-c8IABU73.d.ts.map +1 -0
- package/dist/types/CandlestickPeriod.cjs +16 -40
- package/dist/types/CandlestickPeriod.cjs.map +1 -1
- package/dist/types/CandlestickPeriod.d.cts +2 -13
- package/dist/types/CandlestickPeriod.d.ts +2 -13
- package/dist/types/CandlestickPeriod.js +16 -16
- package/dist/types/CandlestickPeriod.js.map +1 -1
- package/dist/types/IndexerEventType.cjs +0 -19
- package/dist/types/IndexerEventType.d.cts +2 -3
- package/dist/types/IndexerEventType.d.ts +2 -3
- package/dist/types/IndexerEventType.js +1 -1
- package/dist/types/IndexerLeaderboardType.cjs +0 -19
- package/dist/types/IndexerLeaderboardType.d.cts +2 -11
- package/dist/types/IndexerLeaderboardType.d.ts +2 -11
- package/dist/types/IndexerLeaderboardType.js +1 -1
- package/dist/types/NadoTx.cjs +0 -19
- package/dist/types/NadoTx.d.cts +2 -48
- package/dist/types/NadoTx.d.ts +2 -48
- package/dist/types/NadoTx.js +1 -1
- package/dist/types/clientTypes.cjs +0 -19
- package/dist/types/clientTypes.d.cts +2 -709
- package/dist/types/clientTypes.d.ts +2 -709
- package/dist/types/clientTypes.js +1 -1
- package/dist/types/collateralEventType.cjs +0 -19
- package/dist/types/collateralEventType.d.cts +2 -3
- package/dist/types/collateralEventType.d.ts +2 -3
- package/dist/types/collateralEventType.js +1 -1
- package/dist/types/index.cjs +3 -41
- package/dist/types/index.d.cts +10 -13
- package/dist/types/index.d.ts +10 -13
- package/dist/types/index.js +2 -11
- package/dist/types/paginatedEventsTypes.cjs +0 -19
- package/dist/types/paginatedEventsTypes.d.cts +2 -115
- package/dist/types/paginatedEventsTypes.d.ts +2 -115
- package/dist/types/paginatedEventsTypes.js +1 -1
- package/dist/types/serverModelTypes.cjs +0 -19
- package/dist/types/serverModelTypes.d.cts +2 -260
- package/dist/types/serverModelTypes.d.ts +2 -260
- package/dist/types/serverModelTypes.js +1 -1
- package/dist/types/serverTypes.cjs +0 -19
- package/dist/types/serverTypes.d.cts +2 -451
- package/dist/types/serverTypes.d.ts +2 -451
- package/dist/types/serverTypes.js +1 -1
- package/dist/utils/index.cjs +5 -25
- package/dist/utils/index.d.cts +2 -12
- package/dist/utils/index.d.ts +2 -12
- package/dist/utils/index.js +2 -3
- package/dist/utils/indexerBalanceValue.cjs +32 -36
- package/dist/utils/indexerBalanceValue.cjs.map +1 -1
- package/dist/utils/indexerBalanceValue.d.cts +2 -39
- package/dist/utils/indexerBalanceValue.d.ts +2 -39
- package/dist/utils/indexerBalanceValue.js +29 -9
- package/dist/utils/indexerBalanceValue.js.map +1 -1
- package/package.json +10 -10
- package/dist/IndexerBaseClient.cjs.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types/IndexerEventType.cjs.map +0 -1
- package/dist/types/IndexerEventType.js.map +0 -1
- package/dist/types/IndexerLeaderboardType.cjs.map +0 -1
- package/dist/types/IndexerLeaderboardType.js.map +0 -1
- package/dist/types/NadoTx.cjs.map +0 -1
- package/dist/types/NadoTx.js.map +0 -1
- package/dist/types/clientTypes.cjs.map +0 -1
- package/dist/types/clientTypes.js.map +0 -1
- package/dist/types/collateralEventType.cjs.map +0 -1
- package/dist/types/collateralEventType.js.map +0 -1
- package/dist/types/index.cjs.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/paginatedEventsTypes.cjs.map +0 -1
- package/dist/types/paginatedEventsTypes.js.map +0 -1
- package/dist/types/serverModelTypes.cjs.map +0 -1
- package/dist/types/serverModelTypes.js.map +0 -1
- package/dist/types/serverTypes.cjs.map +0 -1
- package/dist/types/serverTypes.js.map +0 -1
- package/dist/utils/index.cjs.map +0 -1
- package/dist/utils/index.js.map +0 -1
package/dist/IndexerClient.js
CHANGED
|
@@ -1,366 +1,277 @@
|
|
|
1
|
-
// src/IndexerClient.ts
|
|
2
|
-
import {
|
|
3
|
-
NLP_PRODUCT_ID,
|
|
4
|
-
ProductEngineType,
|
|
5
|
-
QUOTE_PRODUCT_ID,
|
|
6
|
-
subaccountFromHex,
|
|
7
|
-
toBigNumber,
|
|
8
|
-
toIntegerString
|
|
9
|
-
} from "@nadohq/shared";
|
|
10
1
|
import { IndexerBaseClient } from "./IndexerBaseClient.js";
|
|
2
|
+
import { NLP_PRODUCT_ID, ProductEngineType, QUOTE_PRODUCT_ID, subaccountFromHex, toBigNumber, toIntegerString } from "@nadohq/shared";
|
|
3
|
+
//#region src/IndexerClient.ts
|
|
4
|
+
/**
|
|
5
|
+
* Indexer client providing paginated queries for historical data from the Nado indexer service
|
|
6
|
+
*/
|
|
11
7
|
var IndexerClient = class extends IndexerBaseClient {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Get all interest funding payments for a given subaccount with the standard pagination response
|
|
280
|
-
* This is a simple wrapper over the underlying `getInterestFundingPayments` function. Very little
|
|
281
|
-
* additional processing is needed because the endpoint is well structured for pagination
|
|
282
|
-
*
|
|
283
|
-
* @param params
|
|
284
|
-
*/
|
|
285
|
-
async getPaginatedSubaccountInterestFundingPayments(params) {
|
|
286
|
-
const {
|
|
287
|
-
limit,
|
|
288
|
-
productIds,
|
|
289
|
-
startCursor,
|
|
290
|
-
maxTimestampInclusive,
|
|
291
|
-
subaccountName,
|
|
292
|
-
subaccountOwner
|
|
293
|
-
} = params;
|
|
294
|
-
const baseResponse = await this.getInterestFundingPayments({
|
|
295
|
-
limit,
|
|
296
|
-
productIds,
|
|
297
|
-
startCursor,
|
|
298
|
-
maxTimestampInclusive,
|
|
299
|
-
subaccount: {
|
|
300
|
-
subaccountName,
|
|
301
|
-
subaccountOwner
|
|
302
|
-
}
|
|
303
|
-
});
|
|
304
|
-
return {
|
|
305
|
-
...baseResponse,
|
|
306
|
-
meta: {
|
|
307
|
-
hasMore: baseResponse.nextCursor != null,
|
|
308
|
-
nextCursor: baseResponse.nextCursor ?? void 0
|
|
309
|
-
}
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Paginated leaderboard query that paginates on rank number.
|
|
314
|
-
*
|
|
315
|
-
* @param params
|
|
316
|
-
*/
|
|
317
|
-
async getPaginatedLeaderboard(params) {
|
|
318
|
-
const requestedLimit = params.limit;
|
|
319
|
-
const baseResponse = await this.getLeaderboard({
|
|
320
|
-
contestId: params.contestId,
|
|
321
|
-
rankType: params.rankType,
|
|
322
|
-
// Query for 1 more result for proper pagination
|
|
323
|
-
limit: requestedLimit + 1,
|
|
324
|
-
// Start cursor is the next rank number
|
|
325
|
-
startCursor: params.startCursor
|
|
326
|
-
});
|
|
327
|
-
const overflowParticipant = baseResponse.participants[requestedLimit];
|
|
328
|
-
let nextCursor;
|
|
329
|
-
if (overflowParticipant) {
|
|
330
|
-
const trackData = params.rankType ? overflowParticipant.tracks[params.rankType] : Object.values(overflowParticipant.tracks)[0];
|
|
331
|
-
nextCursor = trackData.rank;
|
|
332
|
-
}
|
|
333
|
-
return {
|
|
334
|
-
...baseResponse,
|
|
335
|
-
// Truncate the response to the requested limit
|
|
336
|
-
participants: baseResponse.participants.slice(0, requestedLimit),
|
|
337
|
-
meta: {
|
|
338
|
-
hasMore: baseResponse.participants.length > requestedLimit,
|
|
339
|
-
nextCursor: nextCursor !== void 0 ? toIntegerString(nextCursor) : void 0
|
|
340
|
-
}
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* A util function to generate the standard pagination response for events
|
|
345
|
-
* @param events
|
|
346
|
-
* @param requestedLimit given by consumers of the SDK
|
|
347
|
-
* @private
|
|
348
|
-
*/
|
|
349
|
-
getPaginationEventsResponse(events, requestedLimit) {
|
|
350
|
-
const truncatedEvents = events.slice(0, requestedLimit);
|
|
351
|
-
const hasMore = events.length > truncatedEvents.length;
|
|
352
|
-
return {
|
|
353
|
-
events: truncatedEvents,
|
|
354
|
-
meta: {
|
|
355
|
-
hasMore,
|
|
356
|
-
// We want the NEXT available cursor, so we use the first event after the truncation cutoff
|
|
357
|
-
// If len(events) === len(truncatedEvents), there are no more entries and this is undefined
|
|
358
|
-
nextCursor: events[truncatedEvents.length]?.submissionIndex
|
|
359
|
-
}
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
export {
|
|
364
|
-
IndexerClient
|
|
8
|
+
async getPaginatedSubaccountMatchEvents(params) {
|
|
9
|
+
const { startCursor, maxTimestampInclusive, limit: requestedLimit, subaccountName, subaccountOwner, isolated, productIds } = params;
|
|
10
|
+
const limit = requestedLimit + 1;
|
|
11
|
+
const events = await this.getMatchEvents({
|
|
12
|
+
startCursor,
|
|
13
|
+
maxTimestampInclusive,
|
|
14
|
+
limit,
|
|
15
|
+
subaccounts: [{
|
|
16
|
+
subaccountName,
|
|
17
|
+
subaccountOwner
|
|
18
|
+
}],
|
|
19
|
+
productIds,
|
|
20
|
+
isolated
|
|
21
|
+
});
|
|
22
|
+
return this.getPaginationEventsResponse(events, requestedLimit);
|
|
23
|
+
}
|
|
24
|
+
async getPaginatedSubaccountNlpEvents(params) {
|
|
25
|
+
const { startCursor, maxTimestampInclusive, limit: requestedLimit, subaccountName, subaccountOwner } = params;
|
|
26
|
+
const limit = requestedLimit + 1;
|
|
27
|
+
const baseResponse = await this.getEvents({
|
|
28
|
+
startCursor,
|
|
29
|
+
maxTimestampInclusive,
|
|
30
|
+
eventTypes: ["mint_nlp", "burn_nlp"],
|
|
31
|
+
limit: {
|
|
32
|
+
type: "txs",
|
|
33
|
+
value: limit
|
|
34
|
+
},
|
|
35
|
+
subaccounts: [{
|
|
36
|
+
subaccountName,
|
|
37
|
+
subaccountOwner
|
|
38
|
+
}]
|
|
39
|
+
});
|
|
40
|
+
const eventsBySubmissionIdx = /* @__PURE__ */ new Map();
|
|
41
|
+
baseResponse.forEach((event) => {
|
|
42
|
+
const mappedEvent = (() => {
|
|
43
|
+
const existingEvent = eventsBySubmissionIdx.get(event.submissionIndex);
|
|
44
|
+
if (existingEvent) return existingEvent;
|
|
45
|
+
const newEvent = {
|
|
46
|
+
nlpDelta: toBigNumber(0),
|
|
47
|
+
primaryQuoteDelta: toBigNumber(0),
|
|
48
|
+
timestamp: event.timestamp,
|
|
49
|
+
submissionIndex: event.submissionIndex,
|
|
50
|
+
tx: event.tx,
|
|
51
|
+
...subaccountFromHex(event.subaccount)
|
|
52
|
+
};
|
|
53
|
+
eventsBySubmissionIdx.set(event.submissionIndex, newEvent);
|
|
54
|
+
return newEvent;
|
|
55
|
+
})();
|
|
56
|
+
const balanceDelta = event.state.postBalance.amount.minus(event.state.preBalance.amount);
|
|
57
|
+
const productId = event.state.market.productId;
|
|
58
|
+
if (productId === QUOTE_PRODUCT_ID) mappedEvent.primaryQuoteDelta = balanceDelta;
|
|
59
|
+
else if (productId === NLP_PRODUCT_ID) mappedEvent.nlpDelta = balanceDelta;
|
|
60
|
+
else throw Error(`Invalid product ID for NLP event ${productId}`);
|
|
61
|
+
});
|
|
62
|
+
const events = Array.from(eventsBySubmissionIdx.values());
|
|
63
|
+
return this.getPaginationEventsResponse(events, requestedLimit);
|
|
64
|
+
}
|
|
65
|
+
async getPaginatedSubaccountCollateralEvents(params) {
|
|
66
|
+
const { startCursor, maxTimestampInclusive, limit: requestedLimit, subaccountName, subaccountOwner, eventTypes, isolated } = params;
|
|
67
|
+
const limit = requestedLimit + 1;
|
|
68
|
+
const events = (await this.getEvents({
|
|
69
|
+
startCursor,
|
|
70
|
+
maxTimestampInclusive,
|
|
71
|
+
eventTypes: eventTypes ?? [
|
|
72
|
+
"deposit_collateral",
|
|
73
|
+
"withdraw_collateral",
|
|
74
|
+
"transfer_quote"
|
|
75
|
+
],
|
|
76
|
+
limit: {
|
|
77
|
+
type: "txs",
|
|
78
|
+
value: limit
|
|
79
|
+
},
|
|
80
|
+
subaccounts: [{
|
|
81
|
+
subaccountName,
|
|
82
|
+
subaccountOwner
|
|
83
|
+
}],
|
|
84
|
+
isolated
|
|
85
|
+
})).map((event) => {
|
|
86
|
+
if (event.state.type !== ProductEngineType.SPOT) throw Error("Incorrect event state for collateral event");
|
|
87
|
+
return {
|
|
88
|
+
timestamp: event.timestamp,
|
|
89
|
+
eventType: event.eventType,
|
|
90
|
+
submissionIndex: event.submissionIndex,
|
|
91
|
+
snapshot: event.state,
|
|
92
|
+
amount: event.state.postBalance.amount.minus(event.state.preBalance.amount),
|
|
93
|
+
newAmount: event.state.postBalance.amount,
|
|
94
|
+
tx: event.tx,
|
|
95
|
+
...subaccountFromHex(event.subaccount)
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
return this.getPaginationEventsResponse(events, requestedLimit);
|
|
99
|
+
}
|
|
100
|
+
async getPaginatedSubaccountOrders(params) {
|
|
101
|
+
const { startCursor, maxTimestampInclusive, limit: requestedLimit, subaccountName, subaccountOwner, productIds, triggerTypes, isolated } = params;
|
|
102
|
+
const limit = requestedLimit + 1;
|
|
103
|
+
const baseResponse = await this.getOrders({
|
|
104
|
+
startCursor,
|
|
105
|
+
maxTimestampInclusive,
|
|
106
|
+
subaccounts: [{
|
|
107
|
+
subaccountName,
|
|
108
|
+
subaccountOwner
|
|
109
|
+
}],
|
|
110
|
+
limit,
|
|
111
|
+
productIds,
|
|
112
|
+
triggerTypes,
|
|
113
|
+
isolated
|
|
114
|
+
});
|
|
115
|
+
const truncatedOrders = baseResponse.slice(0, requestedLimit);
|
|
116
|
+
return {
|
|
117
|
+
meta: {
|
|
118
|
+
hasMore: baseResponse.length > truncatedOrders.length,
|
|
119
|
+
nextCursor: baseResponse[truncatedOrders.length]?.submissionIndex
|
|
120
|
+
},
|
|
121
|
+
orders: truncatedOrders
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
async getPaginatedSubaccountSettlementEvents(params) {
|
|
125
|
+
const { startCursor, maxTimestampInclusive, limit: requestedLimit, subaccountName, subaccountOwner } = params;
|
|
126
|
+
const limit = requestedLimit + 1;
|
|
127
|
+
const events = (await this.getEvents({
|
|
128
|
+
startCursor,
|
|
129
|
+
maxTimestampInclusive,
|
|
130
|
+
eventTypes: ["settle_pnl"],
|
|
131
|
+
limit: {
|
|
132
|
+
type: "txs",
|
|
133
|
+
value: limit
|
|
134
|
+
},
|
|
135
|
+
subaccounts: [{
|
|
136
|
+
subaccountName,
|
|
137
|
+
subaccountOwner
|
|
138
|
+
}]
|
|
139
|
+
})).map((event) => {
|
|
140
|
+
if (event.state.market.productId === QUOTE_PRODUCT_ID) return;
|
|
141
|
+
if (event.state.type !== ProductEngineType.PERP) throw Error("Incorrect event state for settlement event");
|
|
142
|
+
return {
|
|
143
|
+
timestamp: event.timestamp,
|
|
144
|
+
submissionIndex: event.submissionIndex,
|
|
145
|
+
snapshot: event.state,
|
|
146
|
+
quoteDelta: event.state.preBalance.vQuoteBalance.minus(event.state.postBalance.vQuoteBalance),
|
|
147
|
+
isolated: event.isolated,
|
|
148
|
+
tx: event.tx,
|
|
149
|
+
...subaccountFromHex(event.subaccount)
|
|
150
|
+
};
|
|
151
|
+
}).filter((event) => !!event);
|
|
152
|
+
return this.getPaginationEventsResponse(events, requestedLimit);
|
|
153
|
+
}
|
|
154
|
+
async getPaginatedSubaccountLiquidationEvents(params) {
|
|
155
|
+
const { startCursor, maxTimestampInclusive, limit: requestedLimit, subaccountName, subaccountOwner, productIds } = params;
|
|
156
|
+
const limit = requestedLimit + 1;
|
|
157
|
+
const baseResponse = await this.getEvents({
|
|
158
|
+
startCursor,
|
|
159
|
+
maxTimestampInclusive,
|
|
160
|
+
eventTypes: ["liquidate_subaccount"],
|
|
161
|
+
limit: {
|
|
162
|
+
type: "txs",
|
|
163
|
+
value: limit
|
|
164
|
+
},
|
|
165
|
+
subaccounts: [{
|
|
166
|
+
subaccountName,
|
|
167
|
+
subaccountOwner
|
|
168
|
+
}],
|
|
169
|
+
productIds
|
|
170
|
+
});
|
|
171
|
+
const eventsBySubmissionIdx = /* @__PURE__ */ new Map();
|
|
172
|
+
const productIdsSet = productIds ? new Set(productIds) : void 0;
|
|
173
|
+
baseResponse.forEach((event) => {
|
|
174
|
+
if (productIdsSet && !productIdsSet.has(event.tx.liquidate_subaccount.product_id)) return;
|
|
175
|
+
const mappedEvent = (() => {
|
|
176
|
+
const existingEvent = eventsBySubmissionIdx.get(event.submissionIndex);
|
|
177
|
+
if (existingEvent) return existingEvent;
|
|
178
|
+
return {
|
|
179
|
+
perp: void 0,
|
|
180
|
+
spot: void 0,
|
|
181
|
+
quote: void 0,
|
|
182
|
+
timestamp: event.timestamp,
|
|
183
|
+
submissionIndex: event.submissionIndex
|
|
184
|
+
};
|
|
185
|
+
})();
|
|
186
|
+
const balanceDelta = event.state.postBalance.amount.minus(event.state.preBalance.amount);
|
|
187
|
+
if (balanceDelta.isZero() && event.state.market.productId !== QUOTE_PRODUCT_ID) return;
|
|
188
|
+
if (event.state.type === ProductEngineType.PERP) mappedEvent.perp = {
|
|
189
|
+
amountLiquidated: balanceDelta.negated(),
|
|
190
|
+
indexerEvent: event
|
|
191
|
+
};
|
|
192
|
+
else if (event.state.market.productId === QUOTE_PRODUCT_ID) mappedEvent.quote = {
|
|
193
|
+
balanceDelta,
|
|
194
|
+
indexerEvent: event
|
|
195
|
+
};
|
|
196
|
+
else mappedEvent.spot = {
|
|
197
|
+
amountLiquidated: balanceDelta.negated(),
|
|
198
|
+
indexerEvent: event
|
|
199
|
+
};
|
|
200
|
+
eventsBySubmissionIdx.set(event.submissionIndex, mappedEvent);
|
|
201
|
+
});
|
|
202
|
+
const events = Array.from(eventsBySubmissionIdx.values());
|
|
203
|
+
return this.getPaginationEventsResponse(events, requestedLimit);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get all interest funding payments for a given subaccount with the standard pagination response
|
|
207
|
+
* This is a simple wrapper over the underlying `getInterestFundingPayments` function. Very little
|
|
208
|
+
* additional processing is needed because the endpoint is well structured for pagination
|
|
209
|
+
*
|
|
210
|
+
* @param params
|
|
211
|
+
*/
|
|
212
|
+
async getPaginatedSubaccountInterestFundingPayments(params) {
|
|
213
|
+
const { limit, productIds, startCursor, maxTimestampInclusive, subaccountName, subaccountOwner } = params;
|
|
214
|
+
const baseResponse = await this.getInterestFundingPayments({
|
|
215
|
+
limit,
|
|
216
|
+
productIds,
|
|
217
|
+
startCursor,
|
|
218
|
+
maxTimestampInclusive,
|
|
219
|
+
subaccount: {
|
|
220
|
+
subaccountName,
|
|
221
|
+
subaccountOwner
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
return {
|
|
225
|
+
...baseResponse,
|
|
226
|
+
meta: {
|
|
227
|
+
hasMore: baseResponse.nextCursor != null,
|
|
228
|
+
nextCursor: baseResponse.nextCursor ?? void 0
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Paginated leaderboard query that paginates on rank number.
|
|
234
|
+
*
|
|
235
|
+
* @param params
|
|
236
|
+
*/
|
|
237
|
+
async getPaginatedLeaderboard(params) {
|
|
238
|
+
const requestedLimit = params.limit;
|
|
239
|
+
const baseResponse = await this.getLeaderboard({
|
|
240
|
+
contestId: params.contestId,
|
|
241
|
+
rankType: params.rankType,
|
|
242
|
+
limit: requestedLimit + 1,
|
|
243
|
+
startCursor: params.startCursor
|
|
244
|
+
});
|
|
245
|
+
const overflowParticipant = baseResponse.participants[requestedLimit];
|
|
246
|
+
let nextCursor;
|
|
247
|
+
if (overflowParticipant) nextCursor = (params.rankType ? overflowParticipant.tracks[params.rankType] : Object.values(overflowParticipant.tracks)[0]).rank;
|
|
248
|
+
return {
|
|
249
|
+
...baseResponse,
|
|
250
|
+
participants: baseResponse.participants.slice(0, requestedLimit),
|
|
251
|
+
meta: {
|
|
252
|
+
hasMore: baseResponse.participants.length > requestedLimit,
|
|
253
|
+
nextCursor: nextCursor !== void 0 ? toIntegerString(nextCursor) : void 0
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* A util function to generate the standard pagination response for events
|
|
259
|
+
* @param events
|
|
260
|
+
* @param requestedLimit given by consumers of the SDK
|
|
261
|
+
* @private
|
|
262
|
+
*/
|
|
263
|
+
getPaginationEventsResponse(events, requestedLimit) {
|
|
264
|
+
const truncatedEvents = events.slice(0, requestedLimit);
|
|
265
|
+
return {
|
|
266
|
+
events: truncatedEvents,
|
|
267
|
+
meta: {
|
|
268
|
+
hasMore: events.length > truncatedEvents.length,
|
|
269
|
+
nextCursor: events[truncatedEvents.length]?.submissionIndex
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
}
|
|
365
273
|
};
|
|
274
|
+
//#endregion
|
|
275
|
+
export { IndexerClient };
|
|
276
|
+
|
|
366
277
|
//# sourceMappingURL=IndexerClient.js.map
|