@nadohq/indexer-client 0.1.0-alpha.1
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/README.md +2 -0
- package/dist/IndexerBaseClient.cjs +608 -0
- package/dist/IndexerBaseClient.cjs.map +1 -0
- package/dist/IndexerBaseClient.d.cts +183 -0
- package/dist/IndexerBaseClient.d.ts +183 -0
- package/dist/IndexerBaseClient.js +605 -0
- package/dist/IndexerBaseClient.js.map +1 -0
- package/dist/IndexerClient.cjs +368 -0
- package/dist/IndexerClient.cjs.map +1 -0
- package/dist/IndexerClient.d.cts +50 -0
- package/dist/IndexerClient.d.ts +50 -0
- package/dist/IndexerClient.js +348 -0
- package/dist/IndexerClient.js.map +1 -0
- package/dist/dataMappers.cjs +324 -0
- package/dist/dataMappers.cjs.map +1 -0
- package/dist/dataMappers.d.cts +31 -0
- package/dist/dataMappers.d.ts +31 -0
- package/dist/dataMappers.js +296 -0
- package/dist/dataMappers.js.map +1 -0
- package/dist/endpoints.cjs +35 -0
- package/dist/endpoints.cjs.map +1 -0
- package/dist/endpoints.d.cts +5 -0
- package/dist/endpoints.d.ts +5 -0
- package/dist/endpoints.js +10 -0
- package/dist/endpoints.js.map +1 -0
- package/dist/index.cjs +31 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +18 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/types/CandlestickPeriod.cjs +42 -0
- package/dist/types/CandlestickPeriod.cjs.map +1 -0
- package/dist/types/CandlestickPeriod.d.cts +13 -0
- package/dist/types/CandlestickPeriod.d.ts +13 -0
- package/dist/types/CandlestickPeriod.js +17 -0
- package/dist/types/CandlestickPeriod.js.map +1 -0
- package/dist/types/IndexerEventType.cjs +19 -0
- package/dist/types/IndexerEventType.cjs.map +1 -0
- package/dist/types/IndexerEventType.d.cts +3 -0
- package/dist/types/IndexerEventType.d.ts +3 -0
- package/dist/types/IndexerEventType.js +1 -0
- package/dist/types/IndexerEventType.js.map +1 -0
- package/dist/types/IndexerLeaderboardType.cjs +19 -0
- package/dist/types/IndexerLeaderboardType.cjs.map +1 -0
- package/dist/types/IndexerLeaderboardType.d.cts +3 -0
- package/dist/types/IndexerLeaderboardType.d.ts +3 -0
- package/dist/types/IndexerLeaderboardType.js +1 -0
- package/dist/types/IndexerLeaderboardType.js.map +1 -0
- package/dist/types/NadoTx.cjs +19 -0
- package/dist/types/NadoTx.cjs.map +1 -0
- package/dist/types/NadoTx.d.cts +49 -0
- package/dist/types/NadoTx.d.ts +49 -0
- package/dist/types/NadoTx.js +1 -0
- package/dist/types/NadoTx.js.map +1 -0
- package/dist/types/clientTypes.cjs +19 -0
- package/dist/types/clientTypes.cjs.map +1 -0
- package/dist/types/clientTypes.d.cts +467 -0
- package/dist/types/clientTypes.d.ts +467 -0
- package/dist/types/clientTypes.js +1 -0
- package/dist/types/clientTypes.js.map +1 -0
- package/dist/types/collateralEventType.cjs +19 -0
- package/dist/types/collateralEventType.cjs.map +1 -0
- package/dist/types/collateralEventType.d.cts +3 -0
- package/dist/types/collateralEventType.d.ts +3 -0
- package/dist/types/collateralEventType.js +1 -0
- package/dist/types/collateralEventType.js.map +1 -0
- package/dist/types/index.cjs +41 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +13 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/paginatedEventsTypes.cjs +19 -0
- package/dist/types/paginatedEventsTypes.cjs.map +1 -0
- package/dist/types/paginatedEventsTypes.d.cts +115 -0
- package/dist/types/paginatedEventsTypes.d.ts +115 -0
- package/dist/types/paginatedEventsTypes.js +1 -0
- package/dist/types/paginatedEventsTypes.js.map +1 -0
- package/dist/types/serverModelTypes.cjs +19 -0
- package/dist/types/serverModelTypes.cjs.map +1 -0
- package/dist/types/serverModelTypes.d.cts +224 -0
- package/dist/types/serverModelTypes.d.ts +224 -0
- package/dist/types/serverModelTypes.js +1 -0
- package/dist/types/serverModelTypes.js.map +1 -0
- package/dist/types/serverTypes.cjs +19 -0
- package/dist/types/serverTypes.cjs.map +1 -0
- package/dist/types/serverTypes.d.cts +304 -0
- package/dist/types/serverTypes.d.ts +304 -0
- package/dist/types/serverTypes.js +1 -0
- package/dist/types/serverTypes.js.map +1 -0
- package/dist/utils/index.cjs +25 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +12 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/indexerBalanceValue.cjs +43 -0
- package/dist/utils/indexerBalanceValue.cjs.map +1 -0
- package/dist/utils/indexerBalanceValue.d.cts +39 -0
- package/dist/utils/indexerBalanceValue.d.ts +39 -0
- package/dist/utils/indexerBalanceValue.js +16 -0
- package/dist/utils/indexerBalanceValue.js.map +1 -0
- package/package.json +53 -0
- package/src/IndexerBaseClient.ts +851 -0
- package/src/IndexerClient.ts +468 -0
- package/src/dataMappers.ts +362 -0
- package/src/endpoints.ts +7 -0
- package/src/index.ts +4 -0
- package/src/types/CandlestickPeriod.ts +11 -0
- package/src/types/IndexerEventType.ts +9 -0
- package/src/types/IndexerLeaderboardType.ts +2 -0
- package/src/types/NadoTx.ts +63 -0
- package/src/types/clientTypes.ts +679 -0
- package/src/types/collateralEventType.ts +4 -0
- package/src/types/index.ts +9 -0
- package/src/types/paginatedEventsTypes.ts +194 -0
- package/src/types/serverModelTypes.ts +271 -0
- package/src/types/serverTypes.ts +427 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/indexerBalanceValue.ts +46 -0
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EIP712LeaderboardAuthenticationValues,
|
|
3
|
+
SignedTx,
|
|
4
|
+
} from '@nadohq/contracts';
|
|
5
|
+
import { IndexerEventType } from './IndexerEventType';
|
|
6
|
+
import { IndexerLeaderboardRankType } from './IndexerLeaderboardType';
|
|
7
|
+
import { NadoWithdrawCollateralTx } from './NadoTx';
|
|
8
|
+
import {
|
|
9
|
+
IndexerServerCandlestick,
|
|
10
|
+
IndexerServerEvent,
|
|
11
|
+
IndexerServerLeaderboardContest,
|
|
12
|
+
IndexerServerLeaderboardPosition,
|
|
13
|
+
IndexerServerLeaderboardRegistration,
|
|
14
|
+
IndexerServerMaker,
|
|
15
|
+
IndexerServerMarketSnapshot,
|
|
16
|
+
IndexerServerMarketSnapshotInterval,
|
|
17
|
+
IndexerServerMatchEvent,
|
|
18
|
+
IndexerServerOraclePrice,
|
|
19
|
+
IndexerServerOrder,
|
|
20
|
+
IndexerServerProductPayment,
|
|
21
|
+
IndexerServerProductSnapshot,
|
|
22
|
+
IndexerServerSnapshotsInterval,
|
|
23
|
+
IndexerServerTx,
|
|
24
|
+
IndexerServerVlpSnapshot,
|
|
25
|
+
} from './serverModelTypes';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Params
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
export interface IndexerServerListSubaccountsParams {
|
|
32
|
+
// Inclusive, defaults to 0
|
|
33
|
+
start?: number;
|
|
34
|
+
// Defaults to 100
|
|
35
|
+
limit?: number;
|
|
36
|
+
address?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface IndexerServerMultiSubaccountSnapshotsParams {
|
|
40
|
+
// Subaccount hex identifiers
|
|
41
|
+
subaccounts: string[];
|
|
42
|
+
timestamps: number[];
|
|
43
|
+
// If not given, will return both isolated & non-iso balances
|
|
44
|
+
isolated?: boolean;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface IndexerServerReferralCodeParams {
|
|
48
|
+
subaccount: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface IndexerServerFundingRateParams {
|
|
52
|
+
product_id: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface IndexerServerFundingRatesParams {
|
|
56
|
+
product_ids: number[];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface IndexerServerPriceParams {
|
|
60
|
+
product_id: number;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface IndexerServerPerpPricesParams {
|
|
64
|
+
product_ids: number[];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface IndexerServerOraclePricesParams {
|
|
68
|
+
product_ids: number[];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface IndexerServerCandlesticksParams {
|
|
72
|
+
product_id: number;
|
|
73
|
+
granularity: number;
|
|
74
|
+
// Seconds
|
|
75
|
+
max_time?: number;
|
|
76
|
+
limit: number;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export type IndexerEdgeServerCandlesticksParams =
|
|
80
|
+
IndexerServerCandlesticksParams;
|
|
81
|
+
|
|
82
|
+
export interface IndexerServerProductsParams {
|
|
83
|
+
product_id: number;
|
|
84
|
+
max_time?: number;
|
|
85
|
+
limit: number;
|
|
86
|
+
// submission_idx for pagination, inclusive
|
|
87
|
+
idx?: string;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface IndexerServerMultiProductsParams {
|
|
91
|
+
product_ids: number[];
|
|
92
|
+
max_time: number[];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface IndexerServerEventsParams {
|
|
96
|
+
subaccount?: string;
|
|
97
|
+
product_ids?: number[];
|
|
98
|
+
// If not given, will return both isolated & non-iso events
|
|
99
|
+
isolated?: boolean;
|
|
100
|
+
event_types?: IndexerEventType[];
|
|
101
|
+
// Descending order for idx (time), defaults to true
|
|
102
|
+
desc?: boolean;
|
|
103
|
+
// submission_idx for pagination, inclusive
|
|
104
|
+
idx?: string;
|
|
105
|
+
max_time?: number;
|
|
106
|
+
limit?:
|
|
107
|
+
| {
|
|
108
|
+
raw: number;
|
|
109
|
+
}
|
|
110
|
+
| {
|
|
111
|
+
txs: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export interface IndexerServerOrdersParams {
|
|
116
|
+
subaccount?: string;
|
|
117
|
+
product_ids?: number[];
|
|
118
|
+
digests?: string[];
|
|
119
|
+
max_time?: number;
|
|
120
|
+
limit?: number;
|
|
121
|
+
// If not given, will return both isolated & non-iso orders
|
|
122
|
+
isolated?: boolean;
|
|
123
|
+
// submission_idx for pagination, inclusive
|
|
124
|
+
idx?: string;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export interface IndexerServerMatchEventsParams {
|
|
128
|
+
subaccount?: string;
|
|
129
|
+
product_ids?: number[];
|
|
130
|
+
// If not given, will return both isolated & non-iso events
|
|
131
|
+
isolated?: boolean;
|
|
132
|
+
max_time?: number;
|
|
133
|
+
limit: number;
|
|
134
|
+
// submission_idx for pagination, inclusive
|
|
135
|
+
idx?: string;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface IndexerServerLinkedSignerParams {
|
|
139
|
+
subaccount: string;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export interface IndexerServerMarketSnapshotsParams {
|
|
143
|
+
interval: IndexerServerMarketSnapshotInterval;
|
|
144
|
+
// Defaults to all
|
|
145
|
+
product_ids?: number[];
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface IndexerEdgeServerMarketSnapshotsParams {
|
|
149
|
+
interval: IndexerServerMarketSnapshotInterval;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface IndexerServerInterestFundingParams {
|
|
153
|
+
subaccount: string;
|
|
154
|
+
product_ids: number[];
|
|
155
|
+
// If not given, defaults to latest
|
|
156
|
+
max_idx?: string;
|
|
157
|
+
max_time?: number;
|
|
158
|
+
limit: number;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export interface IndexerServerMakerStatisticsParams {
|
|
162
|
+
product_id: number;
|
|
163
|
+
epoch: number;
|
|
164
|
+
interval: number;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface IndexerServerLeaderboardParams {
|
|
168
|
+
contest_id: number;
|
|
169
|
+
rank_type: IndexerLeaderboardRankType;
|
|
170
|
+
start?: number | string;
|
|
171
|
+
limit?: number | string;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export interface IndexerServerLeaderboardRankParams {
|
|
175
|
+
subaccount: string;
|
|
176
|
+
contest_ids: number[];
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export interface IndexerServerLeaderboardContestsParams {
|
|
180
|
+
contest_ids: number[];
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export interface IndexerServerLeaderboardRegistrationParams {
|
|
184
|
+
subaccount: string;
|
|
185
|
+
contest_id: number;
|
|
186
|
+
update_registration: SignedTx<EIP712LeaderboardAuthenticationValues> | null;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export interface IndexerServerFastWithdrawalSignatureParams {
|
|
190
|
+
/**
|
|
191
|
+
* The submission index of the WithdrawCollateral tx to be used for fast withdraw.
|
|
192
|
+
*/
|
|
193
|
+
idx: number | string;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export interface IndexerServerVlpSnapshotsParams {
|
|
197
|
+
interval: IndexerServerSnapshotsInterval;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Request
|
|
201
|
+
export interface IndexerServerQueryRequestByType {
|
|
202
|
+
account_snapshots: IndexerServerMultiSubaccountSnapshotsParams;
|
|
203
|
+
backlog: Record<string, never>;
|
|
204
|
+
candlesticks: IndexerServerCandlesticksParams;
|
|
205
|
+
edge_candlesticks: IndexerEdgeServerCandlesticksParams;
|
|
206
|
+
edge_market_snapshots: IndexerEdgeServerMarketSnapshotsParams;
|
|
207
|
+
events: IndexerServerEventsParams;
|
|
208
|
+
fast_withdrawal_signature: IndexerServerFastWithdrawalSignatureParams;
|
|
209
|
+
funding_rate: IndexerServerFundingRateParams;
|
|
210
|
+
funding_rates: IndexerServerFundingRatesParams;
|
|
211
|
+
interest_and_funding: IndexerServerInterestFundingParams;
|
|
212
|
+
leaderboard: IndexerServerLeaderboardParams;
|
|
213
|
+
leaderboard_contests: IndexerServerLeaderboardContestsParams;
|
|
214
|
+
leaderboard_rank: IndexerServerLeaderboardRankParams;
|
|
215
|
+
leaderboard_registration: IndexerServerLeaderboardRegistrationParams;
|
|
216
|
+
linked_signer_rate_limit: IndexerServerLinkedSignerParams;
|
|
217
|
+
maker_statistics: IndexerServerMakerStatisticsParams;
|
|
218
|
+
market_snapshots: IndexerServerMarketSnapshotsParams;
|
|
219
|
+
matches: IndexerServerMatchEventsParams;
|
|
220
|
+
oracle_price: IndexerServerOraclePricesParams;
|
|
221
|
+
orders: IndexerServerOrdersParams;
|
|
222
|
+
perp_prices: IndexerServerPerpPricesParams;
|
|
223
|
+
price: IndexerServerPriceParams;
|
|
224
|
+
product_snapshots: IndexerServerMultiProductsParams;
|
|
225
|
+
products: IndexerServerProductsParams;
|
|
226
|
+
referral_code: IndexerServerReferralCodeParams;
|
|
227
|
+
subaccounts: IndexerServerListSubaccountsParams;
|
|
228
|
+
usdc_price: Record<string, never>;
|
|
229
|
+
vlp_snapshots: IndexerServerVlpSnapshotsParams;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export type IndexerServerQueryRequestType =
|
|
233
|
+
keyof IndexerServerQueryRequestByType;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Responses
|
|
237
|
+
*/
|
|
238
|
+
|
|
239
|
+
export interface IndexerServerListSubaccountsResponse {
|
|
240
|
+
subaccounts: {
|
|
241
|
+
id: string;
|
|
242
|
+
// Hex of subaccount bytes
|
|
243
|
+
subaccount: string;
|
|
244
|
+
}[];
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export interface IndexerServerMultiSubaccountSnapshotsResponse {
|
|
248
|
+
// Map of subaccount hex -> timestamp requested -> latest events corresponding to each product
|
|
249
|
+
snapshots: Record<string, Record<string, IndexerServerEvent[]>>;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export interface IndexerServerReferralCodeResponse {
|
|
253
|
+
referral_code: string | null;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export interface IndexerServerFundingRate {
|
|
257
|
+
product_id: number;
|
|
258
|
+
funding_rate_x18: string;
|
|
259
|
+
update_time: number;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export type IndexerServerFundingRateResponse = IndexerServerFundingRate;
|
|
263
|
+
|
|
264
|
+
// Map of productId -> IndexerServerFundingRate
|
|
265
|
+
export type IndexerServerFundingRatesResponse = Record<
|
|
266
|
+
string,
|
|
267
|
+
IndexerServerFundingRate
|
|
268
|
+
>;
|
|
269
|
+
|
|
270
|
+
export interface IndexerServerPerpPrices {
|
|
271
|
+
product_id: number;
|
|
272
|
+
index_price_x18: string;
|
|
273
|
+
mark_price_x18: string;
|
|
274
|
+
update_time: number;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
export type IndexerServerPriceResponse = IndexerServerPerpPrices;
|
|
278
|
+
|
|
279
|
+
// Map of productId -> IndexerServerPerpPrices
|
|
280
|
+
export type IndexerServerPerpPricesResponse = Record<
|
|
281
|
+
string,
|
|
282
|
+
IndexerServerPerpPrices
|
|
283
|
+
>;
|
|
284
|
+
|
|
285
|
+
export interface IndexerServerOraclePricesResponse {
|
|
286
|
+
prices: IndexerServerOraclePrice[];
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
export interface IndexerServerCandlesticksResponse {
|
|
290
|
+
candlesticks: IndexerServerCandlestick[];
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export type IndexerEdgeServerCandlesticksResponse =
|
|
294
|
+
IndexerServerCandlesticksResponse;
|
|
295
|
+
|
|
296
|
+
export interface IndexerServerProductsResponse {
|
|
297
|
+
products: IndexerServerProductSnapshot[];
|
|
298
|
+
txs: IndexerServerTx[];
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Map of timestamp -> (productID -> IndexerServerProductSnapshot)
|
|
302
|
+
export type IndexerServerMultiProductsResponse = Record<
|
|
303
|
+
string,
|
|
304
|
+
Record<string, IndexerServerProductSnapshot>
|
|
305
|
+
>;
|
|
306
|
+
|
|
307
|
+
export interface IndexerServerEventsResponse {
|
|
308
|
+
events: IndexerServerEvent[];
|
|
309
|
+
txs: IndexerServerTx[];
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export interface IndexerServerOrdersResponse {
|
|
313
|
+
orders: IndexerServerOrder[];
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export interface IndexerServerMatchEventsResponse {
|
|
317
|
+
matches: IndexerServerMatchEvent[];
|
|
318
|
+
txs: IndexerServerTx[];
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
export interface IndexerServerUsdcPriceResponse {
|
|
322
|
+
price_x18: string;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
export interface IndexerServerLinkedSignerResponse {
|
|
326
|
+
total_tx_limit: string;
|
|
327
|
+
remaining_tx: string;
|
|
328
|
+
wait_time: string;
|
|
329
|
+
signer: string;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export interface IndexerServerMarketSnapshotsResponse {
|
|
333
|
+
snapshots: IndexerServerMarketSnapshot[];
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export interface IndexerEdgeServerMarketSnapshotsResponse {
|
|
337
|
+
snapshots: Record<number, IndexerServerMarketSnapshot[]>;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export interface IndexerServerInterestFundingResponse {
|
|
341
|
+
interest_payments: IndexerServerProductPayment[];
|
|
342
|
+
funding_payments: IndexerServerProductPayment[];
|
|
343
|
+
next_idx: string;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
export interface IndexerServerMakerStatisticsResponse {
|
|
347
|
+
reward_coefficient: string;
|
|
348
|
+
makers: IndexerServerMaker[];
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export interface IndexerServerLeaderboardResponse {
|
|
352
|
+
positions: IndexerServerLeaderboardPosition[];
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
export interface IndexerServerLeaderboardRegistrationResponse {
|
|
356
|
+
// For non-tiered contests, null if the user is not registered for the provided contestId.
|
|
357
|
+
// For tiered contests (i.e., related contests), null if the user is not registered for any of the contests in the tier group.
|
|
358
|
+
registration: IndexerServerLeaderboardRegistration | null;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
export interface IndexerServerLeaderboardRankResponse {
|
|
362
|
+
// If the subaccount is not eligible for a given contest, it would not be included in the response.
|
|
363
|
+
// contestId -> IndexerServerLeaderboardPosition
|
|
364
|
+
positions: Record<string, IndexerServerLeaderboardPosition>;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
export interface IndexerServerLeaderboardContestsResponse {
|
|
368
|
+
contests: IndexerServerLeaderboardContest[];
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
export interface IndexerServerFastWithdrawalSignatureResponse {
|
|
372
|
+
idx: string;
|
|
373
|
+
tx: NadoWithdrawCollateralTx['withdraw_collateral'];
|
|
374
|
+
tx_bytes: string;
|
|
375
|
+
signatures: string[];
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
export interface IndexerServerVlpSnapshotsResponse {
|
|
379
|
+
snapshots: IndexerServerVlpSnapshot[];
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
export interface IndexerServerBacklogResponse {
|
|
383
|
+
// Total number of transactions stored in the indexer DB
|
|
384
|
+
total_txs: string;
|
|
385
|
+
// Current nSubmissions value from the chain (i.e., number of processed txs)
|
|
386
|
+
total_submissions: string;
|
|
387
|
+
// Number of unprocessed transactions (total_txs - total_submissions)
|
|
388
|
+
backlog_size: string;
|
|
389
|
+
// UNIX timestamp (in seconds) of when the data was last updated
|
|
390
|
+
updated_at: string;
|
|
391
|
+
// Estimated time in seconds (float) to clear the entire backlog (null if unavailable)
|
|
392
|
+
backlog_eta_in_seconds: string | null;
|
|
393
|
+
// Current submission rate in transactions per second (float) (null if unavailable)
|
|
394
|
+
txs_per_second: string | null;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// Response
|
|
398
|
+
export interface IndexerServerQueryResponseByType {
|
|
399
|
+
account_snapshots: IndexerServerMultiSubaccountSnapshotsResponse;
|
|
400
|
+
backlog: IndexerServerBacklogResponse;
|
|
401
|
+
candlesticks: IndexerServerCandlesticksResponse;
|
|
402
|
+
edge_candlesticks: IndexerEdgeServerCandlesticksResponse;
|
|
403
|
+
edge_market_snapshots: IndexerEdgeServerMarketSnapshotsResponse;
|
|
404
|
+
events: IndexerServerEventsResponse;
|
|
405
|
+
fast_withdrawal_signature: IndexerServerFastWithdrawalSignatureResponse;
|
|
406
|
+
funding_rate: IndexerServerFundingRateResponse;
|
|
407
|
+
funding_rates: IndexerServerFundingRatesResponse;
|
|
408
|
+
interest_and_funding: IndexerServerInterestFundingResponse;
|
|
409
|
+
leaderboard: IndexerServerLeaderboardResponse;
|
|
410
|
+
leaderboard_contests: IndexerServerLeaderboardContestsResponse;
|
|
411
|
+
leaderboard_rank: IndexerServerLeaderboardRankResponse;
|
|
412
|
+
leaderboard_registration: IndexerServerLeaderboardRegistrationResponse;
|
|
413
|
+
linked_signer_rate_limit: IndexerServerLinkedSignerResponse;
|
|
414
|
+
maker_statistics: IndexerServerMakerStatisticsResponse;
|
|
415
|
+
market_snapshots: IndexerServerMarketSnapshotsResponse;
|
|
416
|
+
matches: IndexerServerMatchEventsResponse;
|
|
417
|
+
oracle_price: IndexerServerOraclePricesResponse;
|
|
418
|
+
orders: IndexerServerOrdersResponse;
|
|
419
|
+
perp_prices: IndexerServerPerpPricesResponse;
|
|
420
|
+
price: IndexerServerPriceResponse;
|
|
421
|
+
product_snapshots: IndexerServerMultiProductsResponse;
|
|
422
|
+
products: IndexerServerProductsResponse;
|
|
423
|
+
referral_code: IndexerServerReferralCodeResponse;
|
|
424
|
+
subaccounts: IndexerServerListSubaccountsResponse;
|
|
425
|
+
usdc_price: IndexerServerUsdcPriceResponse;
|
|
426
|
+
vlp_snapshots: IndexerServerVlpSnapshotsResponse;
|
|
427
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './indexerBalanceValue';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BigDecimal } from '@nadohq/utils';
|
|
2
|
+
import { IndexerPerpBalance, IndexerSpotBalance } from '../types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Most of these calculations take oraclePrice as a separate parameter. This allows us to not rely on the Snapshot
|
|
6
|
+
* interfaces to give clients the optionality to pass either the pre or post balance
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Calculates the quote value of an indexer spot balance
|
|
11
|
+
*
|
|
12
|
+
* @param balance
|
|
13
|
+
* @param oraclePrice
|
|
14
|
+
*/
|
|
15
|
+
export function calcIndexerSpotBalanceValue(
|
|
16
|
+
balance: IndexerSpotBalance,
|
|
17
|
+
oraclePrice: BigDecimal,
|
|
18
|
+
): BigDecimal {
|
|
19
|
+
return balance.amount.multipliedBy(oraclePrice);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Calculates the notional value of an indexer perp balance
|
|
24
|
+
*
|
|
25
|
+
* @param balance
|
|
26
|
+
* @param oraclePrice
|
|
27
|
+
*/
|
|
28
|
+
export function calcIndexerPerpBalanceNotionalValue(
|
|
29
|
+
balance: IndexerPerpBalance,
|
|
30
|
+
oraclePrice: BigDecimal,
|
|
31
|
+
): BigDecimal {
|
|
32
|
+
return balance.amount.multipliedBy(oraclePrice).abs();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Calculates the true quote value of a indexer perp balance, which is the same as its unrealized pnl / unsettled quote
|
|
37
|
+
*
|
|
38
|
+
* @param balance
|
|
39
|
+
* @param oraclePrice
|
|
40
|
+
*/
|
|
41
|
+
export function calcIndexerPerpBalanceValue(
|
|
42
|
+
balance: IndexerPerpBalance,
|
|
43
|
+
oraclePrice: BigDecimal,
|
|
44
|
+
): BigDecimal {
|
|
45
|
+
return balance.amount.multipliedBy(oraclePrice).plus(balance.vQuoteBalance);
|
|
46
|
+
}
|