@nadohq/engine-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.
Files changed (142) hide show
  1. package/README.md +2 -0
  2. package/dist/EngineBaseClient.cjs +166 -0
  3. package/dist/EngineBaseClient.cjs.map +1 -0
  4. package/dist/EngineBaseClient.d.cts +75 -0
  5. package/dist/EngineBaseClient.d.ts +75 -0
  6. package/dist/EngineBaseClient.js +133 -0
  7. package/dist/EngineBaseClient.js.map +1 -0
  8. package/dist/EngineClient.cjs +40 -0
  9. package/dist/EngineClient.cjs.map +1 -0
  10. package/dist/EngineClient.d.cts +23 -0
  11. package/dist/EngineClient.d.ts +23 -0
  12. package/dist/EngineClient.js +15 -0
  13. package/dist/EngineClient.js.map +1 -0
  14. package/dist/EngineExecuteBuilder.cjs +304 -0
  15. package/dist/EngineExecuteBuilder.cjs.map +1 -0
  16. package/dist/EngineExecuteBuilder.d.cts +118 -0
  17. package/dist/EngineExecuteBuilder.d.ts +118 -0
  18. package/dist/EngineExecuteBuilder.js +282 -0
  19. package/dist/EngineExecuteBuilder.js.map +1 -0
  20. package/dist/EngineExecuteClient.cjs +114 -0
  21. package/dist/EngineExecuteClient.cjs.map +1 -0
  22. package/dist/EngineExecuteClient.d.cts +28 -0
  23. package/dist/EngineExecuteClient.d.ts +28 -0
  24. package/dist/EngineExecuteClient.js +89 -0
  25. package/dist/EngineExecuteClient.js.map +1 -0
  26. package/dist/EngineQueryClient.cjs +431 -0
  27. package/dist/EngineQueryClient.cjs.map +1 -0
  28. package/dist/EngineQueryClient.d.cts +143 -0
  29. package/dist/EngineQueryClient.d.ts +143 -0
  30. package/dist/EngineQueryClient.js +424 -0
  31. package/dist/EngineQueryClient.js.map +1 -0
  32. package/dist/EngineWebClient.cjs +75 -0
  33. package/dist/EngineWebClient.cjs.map +1 -0
  34. package/dist/EngineWebClient.d.cts +31 -0
  35. package/dist/EngineWebClient.d.ts +31 -0
  36. package/dist/EngineWebClient.js +50 -0
  37. package/dist/EngineWebClient.js.map +1 -0
  38. package/dist/endpoints.cjs +49 -0
  39. package/dist/endpoints.cjs.map +1 -0
  40. package/dist/endpoints.d.cts +7 -0
  41. package/dist/endpoints.d.ts +7 -0
  42. package/dist/endpoints.js +22 -0
  43. package/dist/endpoints.js.map +1 -0
  44. package/dist/index.cjs +31 -0
  45. package/dist/index.cjs.map +1 -0
  46. package/dist/index.d.cts +20 -0
  47. package/dist/index.d.ts +20 -0
  48. package/dist/index.js +6 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/types/EngineServerFailureError.cjs +36 -0
  51. package/dist/types/EngineServerFailureError.cjs.map +1 -0
  52. package/dist/types/EngineServerFailureError.d.cts +11 -0
  53. package/dist/types/EngineServerFailureError.d.ts +11 -0
  54. package/dist/types/EngineServerFailureError.js +11 -0
  55. package/dist/types/EngineServerFailureError.js.map +1 -0
  56. package/dist/types/clientExecuteTypes.cjs +19 -0
  57. package/dist/types/clientExecuteTypes.cjs.map +1 -0
  58. package/dist/types/clientExecuteTypes.d.cts +74 -0
  59. package/dist/types/clientExecuteTypes.d.ts +74 -0
  60. package/dist/types/clientExecuteTypes.js +1 -0
  61. package/dist/types/clientExecuteTypes.js.map +1 -0
  62. package/dist/types/clientQueryTypes.cjs +19 -0
  63. package/dist/types/clientQueryTypes.cjs.map +1 -0
  64. package/dist/types/clientQueryTypes.d.cts +189 -0
  65. package/dist/types/clientQueryTypes.d.ts +189 -0
  66. package/dist/types/clientQueryTypes.js +1 -0
  67. package/dist/types/clientQueryTypes.js.map +1 -0
  68. package/dist/types/index.cjs +39 -0
  69. package/dist/types/index.cjs.map +1 -0
  70. package/dist/types/index.d.cts +10 -0
  71. package/dist/types/index.d.ts +10 -0
  72. package/dist/types/index.js +10 -0
  73. package/dist/types/index.js.map +1 -0
  74. package/dist/types/serverExecuteTypes.cjs +19 -0
  75. package/dist/types/serverExecuteTypes.cjs.map +1 -0
  76. package/dist/types/serverExecuteTypes.d.cts +91 -0
  77. package/dist/types/serverExecuteTypes.d.ts +91 -0
  78. package/dist/types/serverExecuteTypes.js +1 -0
  79. package/dist/types/serverExecuteTypes.js.map +1 -0
  80. package/dist/types/serverQueryModelTypes.cjs +19 -0
  81. package/dist/types/serverQueryModelTypes.cjs.map +1 -0
  82. package/dist/types/serverQueryModelTypes.d.cts +73 -0
  83. package/dist/types/serverQueryModelTypes.d.ts +73 -0
  84. package/dist/types/serverQueryModelTypes.js +1 -0
  85. package/dist/types/serverQueryModelTypes.js.map +1 -0
  86. package/dist/types/serverQueryTypes.cjs +19 -0
  87. package/dist/types/serverQueryTypes.cjs.map +1 -0
  88. package/dist/types/serverQueryTypes.d.cts +292 -0
  89. package/dist/types/serverQueryTypes.d.ts +292 -0
  90. package/dist/types/serverQueryTypes.js +1 -0
  91. package/dist/types/serverQueryTypes.js.map +1 -0
  92. package/dist/types/serverSubscriptionEventTypes.cjs +19 -0
  93. package/dist/types/serverSubscriptionEventTypes.cjs.map +1 -0
  94. package/dist/types/serverSubscriptionEventTypes.d.cts +71 -0
  95. package/dist/types/serverSubscriptionEventTypes.d.ts +71 -0
  96. package/dist/types/serverSubscriptionEventTypes.js +1 -0
  97. package/dist/types/serverSubscriptionEventTypes.js.map +1 -0
  98. package/dist/types/serverSubscriptionTypes.cjs +19 -0
  99. package/dist/types/serverSubscriptionTypes.cjs.map +1 -0
  100. package/dist/types/serverSubscriptionTypes.d.cts +63 -0
  101. package/dist/types/serverSubscriptionTypes.d.ts +63 -0
  102. package/dist/types/serverSubscriptionTypes.js +1 -0
  103. package/dist/types/serverSubscriptionTypes.js.map +1 -0
  104. package/dist/utils/index.cjs +25 -0
  105. package/dist/utils/index.cjs.map +1 -0
  106. package/dist/utils/index.d.cts +6 -0
  107. package/dist/utils/index.d.ts +6 -0
  108. package/dist/utils/index.js +3 -0
  109. package/dist/utils/index.js.map +1 -0
  110. package/dist/utils/productEngineTypeMappers.cjs +49 -0
  111. package/dist/utils/productEngineTypeMappers.cjs.map +1 -0
  112. package/dist/utils/productEngineTypeMappers.d.cts +7 -0
  113. package/dist/utils/productEngineTypeMappers.d.ts +7 -0
  114. package/dist/utils/productEngineTypeMappers.js +23 -0
  115. package/dist/utils/productEngineTypeMappers.js.map +1 -0
  116. package/dist/utils/queryDataMappers.cjs +282 -0
  117. package/dist/utils/queryDataMappers.cjs.map +1 -0
  118. package/dist/utils/queryDataMappers.d.cts +18 -0
  119. package/dist/utils/queryDataMappers.d.ts +18 -0
  120. package/dist/utils/queryDataMappers.js +258 -0
  121. package/dist/utils/queryDataMappers.js.map +1 -0
  122. package/package.json +52 -0
  123. package/src/EngineBaseClient.ts +223 -0
  124. package/src/EngineClient.ts +13 -0
  125. package/src/EngineExecuteBuilder.ts +381 -0
  126. package/src/EngineExecuteClient.ts +122 -0
  127. package/src/EngineQueryClient.ts +553 -0
  128. package/src/EngineWebClient.ts +72 -0
  129. package/src/endpoints.ts +21 -0
  130. package/src/index.ts +4 -0
  131. package/src/types/EngineServerFailureError.ts +12 -0
  132. package/src/types/clientExecuteTypes.ts +118 -0
  133. package/src/types/clientQueryTypes.ts +267 -0
  134. package/src/types/index.ts +8 -0
  135. package/src/types/serverExecuteTypes.ts +138 -0
  136. package/src/types/serverQueryModelTypes.ts +83 -0
  137. package/src/types/serverQueryTypes.ts +382 -0
  138. package/src/types/serverSubscriptionEventTypes.ts +74 -0
  139. package/src/types/serverSubscriptionTypes.ts +79 -0
  140. package/src/utils/index.ts +1 -0
  141. package/src/utils/productEngineTypeMappers.ts +24 -0
  142. package/src/utils/queryDataMappers.ts +303 -0
@@ -0,0 +1,83 @@
1
+ export interface EngineServerHealthBreakdown {
2
+ health: string;
3
+ assets: string;
4
+ liabilities: string;
5
+ }
6
+
7
+ export interface EngineServerSpotBalanceData {
8
+ amount: string;
9
+ last_cumulative_multiplier_x18: string;
10
+ }
11
+
12
+ export interface EngineServerPerpBalanceData {
13
+ amount: string;
14
+ v_quote_balance: string;
15
+ last_cumulative_funding_x18: string;
16
+ }
17
+
18
+ export interface EngineServerRisk {
19
+ long_weight_initial_x18: string;
20
+ short_weight_initial_x18: string;
21
+ long_weight_maintenance_x18: string;
22
+ short_weight_maintenance_x18: string;
23
+ large_position_penalty_x18: string;
24
+ }
25
+
26
+ export interface EngineServerBookInfo {
27
+ size_increment: string;
28
+ price_increment_x18: string;
29
+ min_size: string;
30
+ collected_fees: string;
31
+ }
32
+
33
+ export interface EngineServerSpotConfig {
34
+ token: string;
35
+ interest_inflection_util_x18: string;
36
+ interest_floor_x18: string;
37
+ interest_small_cap_x18: string;
38
+ interest_large_cap_x18: string;
39
+ }
40
+
41
+ export interface EngineServerSpotState {
42
+ cumulative_deposits_multiplier_x18: string;
43
+ cumulative_borrows_multiplier_x18: string;
44
+ total_deposits_normalized: string;
45
+ total_borrows_normalized: string;
46
+ }
47
+
48
+ export interface EngineServerPerpState {
49
+ cumulative_funding_long_x18: string;
50
+ cumulative_funding_short_x18: string;
51
+ available_settle: string;
52
+ open_interest: string;
53
+ }
54
+
55
+ export interface EngineServerSpotProduct {
56
+ product_id: number;
57
+ oracle_price_x18: string;
58
+ risk: EngineServerRisk;
59
+ config: EngineServerSpotConfig;
60
+ state: EngineServerSpotState;
61
+ book_info: EngineServerBookInfo;
62
+ }
63
+
64
+ export interface EngineServerSpotBalance {
65
+ product_id: number;
66
+ balance: EngineServerSpotBalanceData;
67
+ }
68
+
69
+ export interface EngineServerPerpProduct {
70
+ product_id: number;
71
+ oracle_price_x18: string;
72
+ index_price_x18: string;
73
+ risk: EngineServerRisk;
74
+ state: EngineServerPerpState;
75
+ book_info: EngineServerBookInfo;
76
+ }
77
+
78
+ export interface EngineServerPerpBalance {
79
+ product_id: number;
80
+ balance: EngineServerPerpBalanceData;
81
+ }
82
+
83
+ export type EngineServerProductType = 'perp' | 'spot';
@@ -0,0 +1,382 @@
1
+ import { HealthStatus } from '@nadohq/contracts';
2
+ import {
3
+ EngineServerHealthBreakdown,
4
+ EngineServerPerpBalance,
5
+ EngineServerPerpProduct,
6
+ EngineServerProductType,
7
+ EngineServerSpotBalance,
8
+ EngineServerSpotProduct,
9
+ } from './serverQueryModelTypes';
10
+
11
+ export interface EngineServerNoncesParams {
12
+ address: string;
13
+ }
14
+
15
+ export interface EngineServerSubaccountInfoQueryParams {
16
+ subaccount: string;
17
+ txns?: Array<{
18
+ apply_delta: {
19
+ product_id: number;
20
+ subaccount: string;
21
+ amount_delta: string;
22
+ v_quote_delta: string;
23
+ };
24
+ }>;
25
+ }
26
+
27
+ export interface EngineServerIsolatedPositionsQueryParams {
28
+ subaccount: string;
29
+ }
30
+
31
+ export interface EngineServerSymbolsQueryParams {
32
+ product_type?: EngineServerProductType;
33
+ product_ids?: number[];
34
+ }
35
+
36
+ export interface EngineServerMarketPriceQueryParams {
37
+ product_id: number;
38
+ }
39
+
40
+ export interface EngineServerMarketPricesQueryParams {
41
+ product_ids: number[];
42
+ }
43
+
44
+ export interface EngineServerGetOrderQueryParams {
45
+ product_id: number;
46
+ digest: string;
47
+ }
48
+
49
+ export interface EngineServerValidateOrderQueryParams {
50
+ product_id: number;
51
+ // Bytes for order, does not need to be signed
52
+ order: string;
53
+ }
54
+
55
+ export interface EngineServerOrdersQueryParams {
56
+ sender: string;
57
+ product_ids: number[];
58
+ }
59
+
60
+ export interface EngineServerSubaccountOrdersQueryParams {
61
+ sender: string;
62
+ product_id: number;
63
+ }
64
+
65
+ export interface EngineServerSubaccountFeeRatesParams {
66
+ sender: string;
67
+ }
68
+
69
+ export interface EngineServerMarketLiquidityQueryParams {
70
+ product_id: number;
71
+ depth: number;
72
+ }
73
+
74
+ export interface EngineServerMaxWithdrawableQueryParams {
75
+ sender: string;
76
+ product_id: number;
77
+ // If not given, engine defaults to true (leverage/borrow enabled)
78
+ spot_leverage: string | null;
79
+ }
80
+
81
+ export interface EngineServerMaxOrderSizeQueryParams {
82
+ sender: string;
83
+ product_id: number;
84
+ price_x18: string;
85
+ // Note: When `reduce_only` is true, `direction` must be opposite of the current position, otherwise it returns 0.
86
+ direction: 'long' | 'short';
87
+ // If not given, engine defaults to true (leverage/borrow enabled)
88
+ spot_leverage: string | null;
89
+ // If not given, engine defaults to false. If true, the max order size will be capped to the subaccount's current position size;
90
+ // If no position exists, it will return 0.
91
+ reduce_only: string | null;
92
+ }
93
+
94
+ export interface EngineServerLinkedSignerParams {
95
+ subaccount: string;
96
+ }
97
+
98
+ export interface EngineServerMaxMintVlpQueryParams {
99
+ sender: string;
100
+ // If not given, engine defaults to true (leverage/borrow enabled)
101
+ spot_leverage: string | null;
102
+ }
103
+
104
+ export interface EngineServerQueryRequestByType {
105
+ all_products: Record<string, never>;
106
+ contracts: Record<string, never>;
107
+ edge_all_products: Record<string, never>;
108
+ fee_rates: EngineServerSubaccountFeeRatesParams;
109
+ health_groups: Record<string, never>;
110
+ insurance: Record<string, never>;
111
+ isolated_positions: EngineServerIsolatedPositionsQueryParams;
112
+ linked_signer: EngineServerLinkedSignerParams;
113
+ market_liquidity: EngineServerMarketLiquidityQueryParams;
114
+ market_price: EngineServerMarketPriceQueryParams;
115
+ market_prices: EngineServerMarketPricesQueryParams;
116
+ max_vlp_mintable: EngineServerMaxMintVlpQueryParams;
117
+ max_order_size: EngineServerMaxOrderSizeQueryParams;
118
+ max_withdrawable: EngineServerMaxWithdrawableQueryParams;
119
+ min_deposit_rates: Record<string, never>;
120
+ nonces: EngineServerNoncesParams;
121
+ order: EngineServerGetOrderQueryParams;
122
+ orders: EngineServerOrdersQueryParams;
123
+ status: Record<string, never>;
124
+ subaccount_info: Omit<EngineServerSubaccountInfoQueryParams, 'txns'> & {
125
+ // JSON serialized txns
126
+ txns?: string;
127
+ };
128
+ subaccount_orders: EngineServerSubaccountOrdersQueryParams;
129
+ symbols: EngineServerSymbolsQueryParams;
130
+ validate_order: EngineServerValidateOrderQueryParams;
131
+ }
132
+
133
+ export type EngineServerQueryRequestType = keyof EngineServerQueryRequestByType;
134
+
135
+ export type EngineServerQueryRequest<
136
+ TRequestType extends EngineServerQueryRequestType,
137
+ > = {
138
+ type: TRequestType;
139
+ } & EngineServerQueryRequestByType[TRequestType];
140
+
141
+ export interface EngineServerContractsResponse {
142
+ chain_id: string;
143
+ endpoint_addr: string;
144
+ // Index is product ID
145
+ book_addrs: string[];
146
+ }
147
+
148
+ // Unless in active state, engine is not fully operational
149
+ export type EngineServerStatusResponse =
150
+ | 'started'
151
+ | 'active'
152
+ | 'stopping'
153
+ | 'syncing'
154
+ | 'live_syncing'
155
+ | 'failed';
156
+
157
+ export interface EngineServerNoncesResponse {
158
+ order_nonce: string;
159
+ tx_nonce: string;
160
+ }
161
+
162
+ export interface EngineServerSubaccountInfoResponse {
163
+ exists: boolean;
164
+ subaccount: string;
165
+ healths: [
166
+ initial: EngineServerHealthBreakdown,
167
+ maintenance: EngineServerHealthBreakdown,
168
+ unweighted: EngineServerHealthBreakdown,
169
+ ];
170
+ // First index is product ID, each subarray is of length 3 [initial, maintenance, unweighted]
171
+ health_contributions: string[][];
172
+ spot_count: number;
173
+ perp_count: number;
174
+ spot_balances: EngineServerSpotBalance[];
175
+ perp_balances: EngineServerPerpBalance[];
176
+ spot_products: EngineServerSpotProduct[];
177
+ perp_products: EngineServerPerpProduct[];
178
+ }
179
+
180
+ export interface EngineServerIsolatedPosition {
181
+ subaccount: string;
182
+ healths: [
183
+ initial: HealthStatus,
184
+ maintenance: HealthStatus,
185
+ unweighted: HealthStatus,
186
+ ];
187
+ quote_healths: [initial: string, maintenance: string, unweighted: string];
188
+ base_healths: [initial: string, maintenance: string, unweighted: string];
189
+ quote_balance: EngineServerSpotBalance;
190
+ base_balance: EngineServerPerpBalance;
191
+ quote_product: EngineServerSpotProduct;
192
+ base_product: EngineServerPerpProduct;
193
+ }
194
+
195
+ export type EngineServerIsolatedPositionsResponse = {
196
+ isolated_positions: EngineServerIsolatedPosition[];
197
+ };
198
+
199
+ export interface EngineServerSymbol {
200
+ type: EngineServerProductType;
201
+ product_id: number;
202
+ symbol: string;
203
+ price_increment_x18: string;
204
+ size_increment: string;
205
+ min_size: string;
206
+ min_depth_x18: string;
207
+ max_spread_rate_x18: string;
208
+ maker_fee_rate_x18: string;
209
+ taker_fee_rate_x18: string;
210
+ long_weight_initial_x18: string;
211
+ long_weight_maintenance_x18: string;
212
+ }
213
+
214
+ export interface EngineServerSymbolsResponse {
215
+ symbols: Record<string, EngineServerSymbol>;
216
+ }
217
+
218
+ export interface EngineServerAllProductsResponse {
219
+ spot_products: EngineServerSpotProduct[];
220
+ perp_products: EngineServerPerpProduct[];
221
+ }
222
+
223
+ export interface EngineServerHealthGroupsResponse {
224
+ health_groups: [spotProductId: number, perpProductId: number][];
225
+ }
226
+
227
+ // Price, liquidity pairs
228
+ export type EngineServerPriceTickLiquidity = [
229
+ priceX18: string,
230
+ liquidity: string,
231
+ ];
232
+
233
+ export interface EngineServerMarketLiquidityResponse {
234
+ bids: EngineServerPriceTickLiquidity[];
235
+ asks: EngineServerPriceTickLiquidity[];
236
+ }
237
+
238
+ export interface EngineServerSubaccountOrders {
239
+ sender: string;
240
+ product_id: number;
241
+ orders: EngineServerOrder[];
242
+ }
243
+
244
+ export type EngineServerSubaccountOrdersResponse = EngineServerSubaccountOrders;
245
+
246
+ export interface EngineServerProductOrdersResponse {
247
+ sender: string;
248
+ product_orders: EngineServerSubaccountOrders[];
249
+ }
250
+
251
+ export interface EngineServerFeeRatesResponse {
252
+ liquidation_sequencer_fee: string;
253
+ health_check_sequencer_fee: string;
254
+ taker_sequencer_fee: string;
255
+ // Product ID is the index
256
+ withdraw_sequencer_fees: string[];
257
+ taker_fee_rates_x18: string[];
258
+ maker_fee_rates_x18: string[];
259
+ }
260
+
261
+ export interface EngineServerMarketPrice {
262
+ product_id: number;
263
+ bid_x18: string;
264
+ ask_x18: string;
265
+ }
266
+
267
+ export type EngineServerMarketPriceResponse = EngineServerMarketPrice;
268
+
269
+ export interface EngineServerMarketPricesResponse {
270
+ market_prices: EngineServerMarketPrice[];
271
+ }
272
+
273
+ export interface EngineServerOrder {
274
+ product_id: number;
275
+ sender: string;
276
+ price_x18: string;
277
+ amount: string;
278
+ expiration: string;
279
+ nonce: string;
280
+ unfilled_amount: string;
281
+ digest: string;
282
+ placed_at: number;
283
+ order_type: string;
284
+ margin: string | null;
285
+ }
286
+
287
+ export type EngineServerOrderResponse = EngineServerOrder;
288
+
289
+ export interface EngineServerValidateOrderResponse {
290
+ product_id: number;
291
+ order: string;
292
+ valid: boolean;
293
+ }
294
+
295
+ export interface EngineServerMaxOrderSizeResponse {
296
+ max_order_size: string;
297
+ }
298
+
299
+ export interface EngineServerMaxWithdrawableResponse {
300
+ max_withdrawable: string;
301
+ }
302
+
303
+ export type EngineServerTimeResponse = number;
304
+
305
+ export interface EngineServerIpBlockResponse {
306
+ blocked: boolean;
307
+ reason: string;
308
+ }
309
+
310
+ export interface EngineServerLinkedSignerResponse {
311
+ linked_signer: string;
312
+ }
313
+
314
+ export interface EngineInsuranceResponse {
315
+ insurance: string;
316
+ }
317
+
318
+ export interface EngineServerMinDepositRate {
319
+ product_id: number;
320
+ min_deposit_rate_x18: string;
321
+ }
322
+
323
+ export interface EngineServerMinDepositRatesResponse {
324
+ // product_id -> EngineServerMinDepositRate
325
+ min_deposit_rates: Record<number, EngineServerMinDepositRate>;
326
+ }
327
+
328
+ export interface EngineServerEdgeAllProductsResponse {
329
+ // chain_id -> EngineServerAllProductsResponse
330
+ edge_all_products: Record<number, EngineServerAllProductsResponse>;
331
+ }
332
+
333
+ export interface EngineServerMaxMintVlpResponse {
334
+ max_quote_amount: string;
335
+ }
336
+
337
+ export interface EngineServerQueryResponseByType {
338
+ all_products: EngineServerAllProductsResponse;
339
+ contracts: EngineServerContractsResponse;
340
+ edge_all_products: EngineServerEdgeAllProductsResponse;
341
+ fee_rates: EngineServerFeeRatesResponse;
342
+ health_groups: EngineServerHealthGroupsResponse;
343
+ insurance: EngineInsuranceResponse;
344
+ isolated_positions: EngineServerIsolatedPositionsResponse;
345
+ linked_signer: EngineServerLinkedSignerResponse;
346
+ market_liquidity: EngineServerMarketLiquidityResponse;
347
+ market_price: EngineServerMarketPriceResponse;
348
+ market_prices: EngineServerMarketPricesResponse;
349
+ max_vlp_mintable: EngineServerMaxMintVlpResponse;
350
+ max_order_size: EngineServerMaxOrderSizeResponse;
351
+ max_withdrawable: EngineServerMaxWithdrawableResponse;
352
+ min_deposit_rates: EngineServerMinDepositRatesResponse;
353
+ nonces: EngineServerNoncesResponse;
354
+ order: EngineServerOrderResponse;
355
+ orders: EngineServerProductOrdersResponse;
356
+ status: EngineServerStatusResponse;
357
+ subaccount_info: EngineServerSubaccountInfoResponse;
358
+ subaccount_orders: EngineServerSubaccountOrdersResponse;
359
+ symbols: EngineServerSymbolsResponse;
360
+ validate_order: EngineServerValidateOrderResponse;
361
+ }
362
+
363
+ export interface EngineServerQuerySuccessResponse<
364
+ TQueryType extends
365
+ keyof EngineServerQueryResponseByType = EngineServerQueryRequestType,
366
+ > {
367
+ status: 'success';
368
+ data: EngineServerQueryResponseByType[TQueryType];
369
+ }
370
+
371
+ export interface EngineServerQueryFailureResponse {
372
+ status: 'failure';
373
+ error: string;
374
+ error_code: number;
375
+ }
376
+
377
+ export type EngineServerQueryResponse<
378
+ TQueryType extends
379
+ keyof EngineServerQueryResponseByType = EngineServerQueryRequestType,
380
+ > =
381
+ | EngineServerQuerySuccessResponse<TQueryType>
382
+ | EngineServerQueryFailureResponse;
@@ -0,0 +1,74 @@
1
+ import { EngineServerPriceTickLiquidity } from './serverQueryTypes';
2
+
3
+ /**
4
+ * Event from subscribing to a `order_update` stream.
5
+ */
6
+ export interface EngineServerSubscriptionOrderUpdateEvent {
7
+ timestamp: string;
8
+ product_id: number;
9
+ digest: string;
10
+ amount: string;
11
+ reason: string;
12
+ }
13
+
14
+ /**
15
+ * Event from subscribing to a `trade` stream.
16
+ */
17
+ export interface EngineServerSubscriptionTradeEvent {
18
+ timestamp: string;
19
+ product_id: number;
20
+ price: string;
21
+ taker_qty: string;
22
+ maker_qty: string;
23
+ is_taker_buyer: boolean;
24
+ }
25
+
26
+ /**
27
+ * Event from subscribing to a `best_bid_offer` stream.
28
+ */
29
+ export interface EngineServerSubscriptionBestBidOfferEvent {
30
+ timestamp: string;
31
+ product_id: number;
32
+ bid_price: string;
33
+ bid_qty: string;
34
+ ask_price: string;
35
+ ask_qty: string;
36
+ }
37
+
38
+ /**
39
+ * Event from subscribing to a `fill` stream.
40
+ */
41
+ export interface EngineServerSubscriptionFillEvent {
42
+ // NOTE: `id` is excluded from the response to avoid parsing issues.
43
+ // type of `id` on the backend is `u64` which can overflow until we introduce proper parsing on the SDK.
44
+ timestamp: string;
45
+ product_id: number;
46
+ subaccount: string;
47
+ order_digest: string;
48
+ filled_qty: string;
49
+ remaining_qty: string;
50
+ price: string;
51
+ is_taker: boolean;
52
+ }
53
+
54
+ /**
55
+ * Event from subscribing to a `position_change` stream.
56
+ */
57
+ export interface EngineServerSubscriptionPositionChangeEvent {
58
+ timestamp: string;
59
+ product_id: number;
60
+ subaccount: string;
61
+ amount: string;
62
+ v_quote_amount: string;
63
+ }
64
+
65
+ /**
66
+ * Event from subscribing to a `book_depth` stream.
67
+ */
68
+ export interface EngineServerSubscriptionBookDepthEvent {
69
+ min_timestamp: string;
70
+ max_timestamp: string;
71
+ product_id: number;
72
+ bids: EngineServerPriceTickLiquidity[];
73
+ asks: EngineServerPriceTickLiquidity[];
74
+ }
@@ -0,0 +1,79 @@
1
+ export interface EngineServerOrderUpdateStreamParams {
2
+ product_id: number;
3
+ subaccount: string;
4
+ }
5
+
6
+ export interface EngineServerTradeStreamParams {
7
+ product_id: number;
8
+ }
9
+
10
+ export interface EngineServerBestBidOfferStreamParams {
11
+ product_id: number;
12
+ }
13
+
14
+ export interface EngineServerFillStreamParams {
15
+ product_id: number;
16
+ subaccount: string;
17
+ }
18
+
19
+ export interface EngineServerPositionChangeStreamParams {
20
+ product_id: number;
21
+ subaccount: string;
22
+ }
23
+
24
+ export interface EngineServerBookDepthStreamParams {
25
+ product_id: number;
26
+ }
27
+
28
+ /**
29
+ * Available subscription streams
30
+ */
31
+ export interface EngineServerSubscriptionStreamParamsByType {
32
+ order_update: EngineServerOrderUpdateStreamParams;
33
+ trade: EngineServerTradeStreamParams;
34
+ best_bid_offer: EngineServerBestBidOfferStreamParams;
35
+ fill: EngineServerFillStreamParams;
36
+ position_change: EngineServerPositionChangeStreamParams;
37
+ book_depth: EngineServerBookDepthStreamParams;
38
+ }
39
+
40
+ export type EngineServerSubscriptionStreamParamsType =
41
+ keyof EngineServerSubscriptionStreamParamsByType;
42
+
43
+ /**
44
+ * Describes a stream that can be subscribed to.
45
+ */
46
+ export type EngineServerSubscriptionStream<
47
+ TStreamType extends EngineServerSubscriptionStreamParamsType,
48
+ > = {
49
+ type: TStreamType;
50
+ } & EngineServerSubscriptionStreamParamsByType[TStreamType];
51
+
52
+ /**
53
+ * Params to provide to a `subscribe` / `unsubscribe` action.
54
+ */
55
+ export interface EngineServerSubscriptionParams {
56
+ stream: EngineServerSubscriptionStream<EngineServerSubscriptionStreamParamsType>;
57
+ }
58
+
59
+ /**
60
+ * Available actions on the subscription API.
61
+ */
62
+ export interface EngineServerSubscriptionRequestByType {
63
+ subscribe: EngineServerSubscriptionParams;
64
+ unsubscribe: EngineServerSubscriptionParams;
65
+ list: Record<string, never>;
66
+ }
67
+
68
+ export type EngineServerSubscriptionRequestType =
69
+ keyof EngineServerSubscriptionRequestByType;
70
+
71
+ /**
72
+ * Top level request to send to the server.
73
+ */
74
+ export type EngineServerSubscriptionRequest<
75
+ TRequestType extends EngineServerSubscriptionRequestType,
76
+ > = {
77
+ id: number;
78
+ method: TRequestType;
79
+ } & EngineServerSubscriptionRequestByType[TRequestType];
@@ -0,0 +1 @@
1
+ export * from './queryDataMappers';
@@ -0,0 +1,24 @@
1
+ import { ProductEngineType } from '@nadohq/contracts';
2
+ import { EngineServerProductType } from '../types';
3
+
4
+ export function mapProductEngineType(
5
+ productEngineType: ProductEngineType,
6
+ ): EngineServerProductType {
7
+ switch (productEngineType) {
8
+ case ProductEngineType.SPOT:
9
+ return 'spot';
10
+ case ProductEngineType.PERP:
11
+ return 'perp';
12
+ }
13
+ }
14
+
15
+ export function mapEngineServerProductType(
16
+ productEngineServerType: EngineServerProductType,
17
+ ): ProductEngineType {
18
+ switch (productEngineServerType) {
19
+ case 'spot':
20
+ return ProductEngineType.SPOT;
21
+ case 'perp':
22
+ return ProductEngineType.PERP;
23
+ }
24
+ }