@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.
- package/README.md +2 -0
- package/dist/EngineBaseClient.cjs +166 -0
- package/dist/EngineBaseClient.cjs.map +1 -0
- package/dist/EngineBaseClient.d.cts +75 -0
- package/dist/EngineBaseClient.d.ts +75 -0
- package/dist/EngineBaseClient.js +133 -0
- package/dist/EngineBaseClient.js.map +1 -0
- package/dist/EngineClient.cjs +40 -0
- package/dist/EngineClient.cjs.map +1 -0
- package/dist/EngineClient.d.cts +23 -0
- package/dist/EngineClient.d.ts +23 -0
- package/dist/EngineClient.js +15 -0
- package/dist/EngineClient.js.map +1 -0
- package/dist/EngineExecuteBuilder.cjs +304 -0
- package/dist/EngineExecuteBuilder.cjs.map +1 -0
- package/dist/EngineExecuteBuilder.d.cts +118 -0
- package/dist/EngineExecuteBuilder.d.ts +118 -0
- package/dist/EngineExecuteBuilder.js +282 -0
- package/dist/EngineExecuteBuilder.js.map +1 -0
- package/dist/EngineExecuteClient.cjs +114 -0
- package/dist/EngineExecuteClient.cjs.map +1 -0
- package/dist/EngineExecuteClient.d.cts +28 -0
- package/dist/EngineExecuteClient.d.ts +28 -0
- package/dist/EngineExecuteClient.js +89 -0
- package/dist/EngineExecuteClient.js.map +1 -0
- package/dist/EngineQueryClient.cjs +431 -0
- package/dist/EngineQueryClient.cjs.map +1 -0
- package/dist/EngineQueryClient.d.cts +143 -0
- package/dist/EngineQueryClient.d.ts +143 -0
- package/dist/EngineQueryClient.js +424 -0
- package/dist/EngineQueryClient.js.map +1 -0
- package/dist/EngineWebClient.cjs +75 -0
- package/dist/EngineWebClient.cjs.map +1 -0
- package/dist/EngineWebClient.d.cts +31 -0
- package/dist/EngineWebClient.d.ts +31 -0
- package/dist/EngineWebClient.js +50 -0
- package/dist/EngineWebClient.js.map +1 -0
- package/dist/endpoints.cjs +49 -0
- package/dist/endpoints.cjs.map +1 -0
- package/dist/endpoints.d.cts +7 -0
- package/dist/endpoints.d.ts +7 -0
- package/dist/endpoints.js +22 -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 +20 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/types/EngineServerFailureError.cjs +36 -0
- package/dist/types/EngineServerFailureError.cjs.map +1 -0
- package/dist/types/EngineServerFailureError.d.cts +11 -0
- package/dist/types/EngineServerFailureError.d.ts +11 -0
- package/dist/types/EngineServerFailureError.js +11 -0
- package/dist/types/EngineServerFailureError.js.map +1 -0
- package/dist/types/clientExecuteTypes.cjs +19 -0
- package/dist/types/clientExecuteTypes.cjs.map +1 -0
- package/dist/types/clientExecuteTypes.d.cts +74 -0
- package/dist/types/clientExecuteTypes.d.ts +74 -0
- package/dist/types/clientExecuteTypes.js +1 -0
- package/dist/types/clientExecuteTypes.js.map +1 -0
- package/dist/types/clientQueryTypes.cjs +19 -0
- package/dist/types/clientQueryTypes.cjs.map +1 -0
- package/dist/types/clientQueryTypes.d.cts +189 -0
- package/dist/types/clientQueryTypes.d.ts +189 -0
- package/dist/types/clientQueryTypes.js +1 -0
- package/dist/types/clientQueryTypes.js.map +1 -0
- package/dist/types/index.cjs +39 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +10 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/serverExecuteTypes.cjs +19 -0
- package/dist/types/serverExecuteTypes.cjs.map +1 -0
- package/dist/types/serverExecuteTypes.d.cts +91 -0
- package/dist/types/serverExecuteTypes.d.ts +91 -0
- package/dist/types/serverExecuteTypes.js +1 -0
- package/dist/types/serverExecuteTypes.js.map +1 -0
- package/dist/types/serverQueryModelTypes.cjs +19 -0
- package/dist/types/serverQueryModelTypes.cjs.map +1 -0
- package/dist/types/serverQueryModelTypes.d.cts +73 -0
- package/dist/types/serverQueryModelTypes.d.ts +73 -0
- package/dist/types/serverQueryModelTypes.js +1 -0
- package/dist/types/serverQueryModelTypes.js.map +1 -0
- package/dist/types/serverQueryTypes.cjs +19 -0
- package/dist/types/serverQueryTypes.cjs.map +1 -0
- package/dist/types/serverQueryTypes.d.cts +292 -0
- package/dist/types/serverQueryTypes.d.ts +292 -0
- package/dist/types/serverQueryTypes.js +1 -0
- package/dist/types/serverQueryTypes.js.map +1 -0
- package/dist/types/serverSubscriptionEventTypes.cjs +19 -0
- package/dist/types/serverSubscriptionEventTypes.cjs.map +1 -0
- package/dist/types/serverSubscriptionEventTypes.d.cts +71 -0
- package/dist/types/serverSubscriptionEventTypes.d.ts +71 -0
- package/dist/types/serverSubscriptionEventTypes.js +1 -0
- package/dist/types/serverSubscriptionEventTypes.js.map +1 -0
- package/dist/types/serverSubscriptionTypes.cjs +19 -0
- package/dist/types/serverSubscriptionTypes.cjs.map +1 -0
- package/dist/types/serverSubscriptionTypes.d.cts +63 -0
- package/dist/types/serverSubscriptionTypes.d.ts +63 -0
- package/dist/types/serverSubscriptionTypes.js +1 -0
- package/dist/types/serverSubscriptionTypes.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 +6 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/productEngineTypeMappers.cjs +49 -0
- package/dist/utils/productEngineTypeMappers.cjs.map +1 -0
- package/dist/utils/productEngineTypeMappers.d.cts +7 -0
- package/dist/utils/productEngineTypeMappers.d.ts +7 -0
- package/dist/utils/productEngineTypeMappers.js +23 -0
- package/dist/utils/productEngineTypeMappers.js.map +1 -0
- package/dist/utils/queryDataMappers.cjs +282 -0
- package/dist/utils/queryDataMappers.cjs.map +1 -0
- package/dist/utils/queryDataMappers.d.cts +18 -0
- package/dist/utils/queryDataMappers.d.ts +18 -0
- package/dist/utils/queryDataMappers.js +258 -0
- package/dist/utils/queryDataMappers.js.map +1 -0
- package/package.json +52 -0
- package/src/EngineBaseClient.ts +223 -0
- package/src/EngineClient.ts +13 -0
- package/src/EngineExecuteBuilder.ts +381 -0
- package/src/EngineExecuteClient.ts +122 -0
- package/src/EngineQueryClient.ts +553 -0
- package/src/EngineWebClient.ts +72 -0
- package/src/endpoints.ts +21 -0
- package/src/index.ts +4 -0
- package/src/types/EngineServerFailureError.ts +12 -0
- package/src/types/clientExecuteTypes.ts +118 -0
- package/src/types/clientQueryTypes.ts +267 -0
- package/src/types/index.ts +8 -0
- package/src/types/serverExecuteTypes.ts +138 -0
- package/src/types/serverQueryModelTypes.ts +83 -0
- package/src/types/serverQueryTypes.ts +382 -0
- package/src/types/serverSubscriptionEventTypes.ts +74 -0
- package/src/types/serverSubscriptionTypes.ts +79 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/productEngineTypeMappers.ts +24 -0
- 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
|
+
}
|