@nadohq/trigger-client 0.1.0-alpha.8 → 0.1.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/TriggerClient.cjs +40 -24
- package/dist/TriggerClient.cjs.map +1 -1
- package/dist/TriggerClient.d.cts +5 -2
- package/dist/TriggerClient.d.ts +5 -2
- package/dist/TriggerClient.js +40 -24
- package/dist/TriggerClient.js.map +1 -1
- package/dist/dataMappers.cjs +11 -11
- package/dist/dataMappers.cjs.map +1 -1
- package/dist/dataMappers.d.cts +1 -0
- package/dist/dataMappers.d.ts +1 -0
- package/dist/dataMappers.js +11 -10
- package/dist/dataMappers.js.map +1 -1
- package/dist/endpoints.cjs +2 -2
- package/dist/endpoints.cjs.map +1 -1
- package/dist/endpoints.js +2 -2
- package/dist/endpoints.js.map +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -6
- package/dist/index.d.ts +7 -6
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types/clientModelTypes.cjs.map +1 -1
- package/dist/types/clientModelTypes.d.cts +4 -4
- package/dist/types/clientModelTypes.d.ts +4 -4
- package/dist/types/clientTypes.cjs.map +1 -1
- package/dist/types/clientTypes.d.cts +18 -8
- package/dist/types/clientTypes.d.ts +18 -8
- package/dist/types/index.cjs +2 -2
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +4 -3
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/serverExecuteTypes.cjs.map +1 -1
- package/dist/types/serverExecuteTypes.d.cts +7 -2
- package/dist/types/serverExecuteTypes.d.ts +7 -2
- package/dist/types/serverModelTypes.cjs.map +1 -1
- package/dist/types/serverModelTypes.d.cts +1 -1
- package/dist/types/serverModelTypes.d.ts +1 -1
- package/dist/types/serverQueryTypes.cjs.map +1 -1
- package/dist/types/serverQueryTypes.d.cts +6 -4
- package/dist/types/serverQueryTypes.d.ts +6 -4
- package/package.json +14 -8
- package/src/TriggerClient.ts +47 -25
- package/src/dataMappers.ts +9 -8
- package/src/endpoints.ts +2 -2
- package/src/index.ts +2 -2
- package/src/types/clientModelTypes.ts +4 -4
- package/src/types/clientTypes.ts +23 -12
- package/src/types/index.ts +1 -1
- package/src/types/serverExecuteTypes.ts +7 -1
- package/src/types/serverModelTypes.ts +1 -1
- package/src/types/serverQueryTypes.ts +19 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/serverQueryTypes.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/types/serverQueryTypes.ts"],"sourcesContent":["import { EngineServerExecuteResult } from '@nadohq/engine-client';\nimport { EIP712ListTriggerOrdersValues, SignedTx } from '@nadohq/shared';\nimport { TriggerServerPlaceOrderParams } from './serverExecuteTypes';\n\nexport type TriggerServerOrderStatus =\n | {\n cancelled: TriggerServerCancelReason;\n }\n | {\n triggered: EngineServerExecuteResult;\n }\n | {\n internal_error: string;\n }\n | 'triggering'\n | 'waiting_price'\n | 'waiting_dependency'\n | {\n twap_executing: {\n current_execution: number;\n total_executions: number;\n };\n }\n | {\n twap_completed: {\n executed: number;\n total: number;\n };\n };\n\n/**\n * Request types\n */\n\nexport type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';\n\nexport type TriggerServerStatusTypeFilter =\n | 'cancelled'\n | 'triggered'\n | 'internal_error'\n | 'triggering'\n | 'waiting_price'\n | 'waiting_dependency'\n | 'twap_executing'\n | 'twap_completed';\n\nexport interface TriggerServerListTriggerOrdersParams extends SignedTx<EIP712ListTriggerOrdersValues> {\n // If not given, defaults to all products\n product_ids?: number[];\n max_update_time?: number;\n digests?: string[];\n limit?: number;\n trigger_types?: TriggerServerTriggerTypeFilter[];\n status_types?: TriggerServerStatusTypeFilter[];\n reduce_only?: boolean;\n}\n\nexport interface TriggerServerListTwapExecutionsParams {\n digest: string;\n}\n\nexport interface TriggerServerQueryRequestByType {\n list_trigger_orders: TriggerServerListTriggerOrdersParams;\n list_twap_executions: TriggerServerListTwapExecutionsParams;\n}\n\nexport type TriggerServerQueryRequestType =\n keyof TriggerServerQueryRequestByType;\n\n/**\n * Response types\n */\n\nexport type TriggerServerOrder = TriggerServerPlaceOrderParams & {\n // Digest is always populated here\n digest: string;\n};\n\nexport interface TriggerServerOrderInfo {\n order: TriggerServerOrder;\n status: TriggerServerOrderStatus;\n updated_at: number;\n placed_at: number;\n}\n\nexport interface TriggerServerListTriggerOrdersResponse {\n orders: TriggerServerOrderInfo[];\n}\n\nexport type TriggerServerCancelReason =\n | 'user_requested'\n | 'linked_signer_changed'\n | 'expired'\n | 'account_health'\n | 'isolated_subaccount_closed'\n | 'dependent_order_cancelled';\n\nexport type TriggerServerTwapExecutionStatus =\n | 'pending'\n | {\n executed: {\n executed_time: number;\n execute_response: EngineServerExecuteResult;\n };\n }\n | {\n failed: string;\n }\n | {\n cancelled: TriggerServerCancelReason;\n };\n\nexport interface TriggerServerTwapExecutionInfo {\n execution_id: number;\n scheduled_time: number;\n status: TriggerServerTwapExecutionStatus;\n updated_at: number;\n}\n\nexport interface TriggerServerTwapExecutionsResponse {\n executions: TriggerServerTwapExecutionInfo[];\n}\n\nexport interface TriggerServerQueryResponseByType {\n list_trigger_orders: TriggerServerListTriggerOrdersResponse;\n list_twap_executions: TriggerServerTwapExecutionsResponse;\n}\n\nexport interface TriggerServerQuerySuccessResponse<\n TQueryType extends keyof TriggerServerQueryResponseByType =\n TriggerServerQueryRequestType,\n> {\n status: 'success';\n data: TriggerServerQueryResponseByType[TQueryType];\n}\n\nexport interface TriggerServerQueryFailureResponse {\n status: 'failure';\n error: string;\n error_code: number;\n}\n\nexport type TriggerServerQueryResponse<\n TQueryType extends keyof TriggerServerQueryResponseByType =\n TriggerServerQueryRequestType,\n> =\n | TriggerServerQuerySuccessResponse<TQueryType>\n | TriggerServerQueryFailureResponse;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SignedTx, EIP712ListTriggerOrdersValues } from '@nadohq/shared';
|
|
2
1
|
import { EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
+
import { SignedTx, EIP712ListTriggerOrdersValues } from '@nadohq/shared';
|
|
3
3
|
import { TriggerServerPlaceOrderParams } from './serverExecuteTypes.cjs';
|
|
4
4
|
import './serverModelTypes.cjs';
|
|
5
5
|
|
|
@@ -24,13 +24,14 @@ type TriggerServerOrderStatus = {
|
|
|
24
24
|
* Request types
|
|
25
25
|
*/
|
|
26
26
|
type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
|
|
27
|
+
type TriggerServerStatusTypeFilter = 'cancelled' | 'triggered' | 'internal_error' | 'triggering' | 'waiting_price' | 'waiting_dependency' | 'twap_executing' | 'twap_completed';
|
|
27
28
|
interface TriggerServerListTriggerOrdersParams extends SignedTx<EIP712ListTriggerOrdersValues> {
|
|
28
|
-
|
|
29
|
-
product_id?: number;
|
|
29
|
+
product_ids?: number[];
|
|
30
30
|
max_update_time?: number;
|
|
31
31
|
digests?: string[];
|
|
32
32
|
limit?: number;
|
|
33
33
|
trigger_types?: TriggerServerTriggerTypeFilter[];
|
|
34
|
+
status_types?: TriggerServerStatusTypeFilter[];
|
|
34
35
|
reduce_only?: boolean;
|
|
35
36
|
}
|
|
36
37
|
interface TriggerServerListTwapExecutionsParams {
|
|
@@ -51,6 +52,7 @@ interface TriggerServerOrderInfo {
|
|
|
51
52
|
order: TriggerServerOrder;
|
|
52
53
|
status: TriggerServerOrderStatus;
|
|
53
54
|
updated_at: number;
|
|
55
|
+
placed_at: number;
|
|
54
56
|
}
|
|
55
57
|
interface TriggerServerListTriggerOrdersResponse {
|
|
56
58
|
orders: TriggerServerOrderInfo[];
|
|
@@ -90,4 +92,4 @@ interface TriggerServerQueryFailureResponse {
|
|
|
90
92
|
}
|
|
91
93
|
type TriggerServerQueryResponse<TQueryType extends keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType> = TriggerServerQuerySuccessResponse<TQueryType> | TriggerServerQueryFailureResponse;
|
|
92
94
|
|
|
93
|
-
export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
|
|
95
|
+
export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SignedTx, EIP712ListTriggerOrdersValues } from '@nadohq/shared';
|
|
2
1
|
import { EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
+
import { SignedTx, EIP712ListTriggerOrdersValues } from '@nadohq/shared';
|
|
3
3
|
import { TriggerServerPlaceOrderParams } from './serverExecuteTypes.js';
|
|
4
4
|
import './serverModelTypes.js';
|
|
5
5
|
|
|
@@ -24,13 +24,14 @@ type TriggerServerOrderStatus = {
|
|
|
24
24
|
* Request types
|
|
25
25
|
*/
|
|
26
26
|
type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
|
|
27
|
+
type TriggerServerStatusTypeFilter = 'cancelled' | 'triggered' | 'internal_error' | 'triggering' | 'waiting_price' | 'waiting_dependency' | 'twap_executing' | 'twap_completed';
|
|
27
28
|
interface TriggerServerListTriggerOrdersParams extends SignedTx<EIP712ListTriggerOrdersValues> {
|
|
28
|
-
|
|
29
|
-
product_id?: number;
|
|
29
|
+
product_ids?: number[];
|
|
30
30
|
max_update_time?: number;
|
|
31
31
|
digests?: string[];
|
|
32
32
|
limit?: number;
|
|
33
33
|
trigger_types?: TriggerServerTriggerTypeFilter[];
|
|
34
|
+
status_types?: TriggerServerStatusTypeFilter[];
|
|
34
35
|
reduce_only?: boolean;
|
|
35
36
|
}
|
|
36
37
|
interface TriggerServerListTwapExecutionsParams {
|
|
@@ -51,6 +52,7 @@ interface TriggerServerOrderInfo {
|
|
|
51
52
|
order: TriggerServerOrder;
|
|
52
53
|
status: TriggerServerOrderStatus;
|
|
53
54
|
updated_at: number;
|
|
55
|
+
placed_at: number;
|
|
54
56
|
}
|
|
55
57
|
interface TriggerServerListTriggerOrdersResponse {
|
|
56
58
|
orders: TriggerServerOrderInfo[];
|
|
@@ -90,4 +92,4 @@ interface TriggerServerQueryFailureResponse {
|
|
|
90
92
|
}
|
|
91
93
|
type TriggerServerQueryResponse<TQueryType extends keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType> = TriggerServerQuerySuccessResponse<TQueryType> | TriggerServerQueryFailureResponse;
|
|
92
94
|
|
|
93
|
-
export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
|
|
95
|
+
export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadohq/trigger-client",
|
|
3
|
-
"version": "0.1.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "> TODO: description",
|
|
@@ -36,17 +36,23 @@
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
|
+
"react-native": "./dist/index.js",
|
|
40
|
+
"main": "./dist/index.cjs",
|
|
41
|
+
"module": "./dist/index.js",
|
|
42
|
+
"types": "./dist/index.d.ts",
|
|
39
43
|
"dependencies": {
|
|
40
|
-
"@nadohq/engine-client": "
|
|
41
|
-
"@nadohq/shared": "
|
|
42
|
-
"axios": "
|
|
43
|
-
"ts-mixer": "
|
|
44
|
+
"@nadohq/engine-client": "0.1.0",
|
|
45
|
+
"@nadohq/shared": "0.1.0",
|
|
46
|
+
"axios": "catalog:",
|
|
47
|
+
"ts-mixer": "catalog:"
|
|
44
48
|
},
|
|
45
49
|
"peerDependencies": {
|
|
46
|
-
"
|
|
50
|
+
"bignumber.js": "catalog:",
|
|
51
|
+
"viem": "catalog:"
|
|
47
52
|
},
|
|
48
53
|
"devDependencies": {
|
|
49
|
-
"
|
|
54
|
+
"bignumber.js": "catalog:",
|
|
55
|
+
"viem": "catalog:"
|
|
50
56
|
},
|
|
51
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "be24947f588c4fcc294607e985e572c81760f45a"
|
|
52
58
|
}
|
package/src/TriggerClient.ts
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
TriggerListTwapExecutionsResponse,
|
|
29
29
|
TriggerOrderInfo,
|
|
30
30
|
TriggerPlaceOrderParams,
|
|
31
|
+
TriggerPlaceOrdersParams,
|
|
31
32
|
TriggerServerExecuteRequestByType,
|
|
32
33
|
TriggerServerExecuteRequestType,
|
|
33
34
|
TriggerServerExecuteResult,
|
|
@@ -82,34 +83,23 @@ export class TriggerClient {
|
|
|
82
83
|
*/
|
|
83
84
|
|
|
84
85
|
async placeTriggerOrder(params: TriggerPlaceOrderParams) {
|
|
85
|
-
|
|
86
|
-
amount: params.order.amount,
|
|
87
|
-
expiration: params.order.expiration,
|
|
88
|
-
price: params.order.price,
|
|
89
|
-
subaccountName: params.order.subaccountName,
|
|
90
|
-
subaccountOwner: params.order.subaccountOwner,
|
|
91
|
-
nonce: params.nonce ?? getOrderNonce(),
|
|
92
|
-
appendix: params.order.appendix,
|
|
93
|
-
};
|
|
94
|
-
const signature = await this.sign(
|
|
86
|
+
return this.execute(
|
|
95
87
|
'place_order',
|
|
96
|
-
params
|
|
97
|
-
params.chainId,
|
|
98
|
-
orderParams,
|
|
88
|
+
await this.buildPlaceOrderExecuteParams(params),
|
|
99
89
|
);
|
|
90
|
+
}
|
|
100
91
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
borrow_margin: params.borrowMargin ?? null,
|
|
92
|
+
async placeTriggerOrders(params: TriggerPlaceOrdersParams) {
|
|
93
|
+
const executeParams: TriggerServerExecuteRequestByType['place_orders'] = {
|
|
94
|
+
orders: await Promise.all(
|
|
95
|
+
params.orders.map(async (orderParam) =>
|
|
96
|
+
this.buildPlaceOrderExecuteParams(orderParam),
|
|
97
|
+
),
|
|
98
|
+
),
|
|
99
|
+
stop_on_failure: params.stopOnFailure ?? null,
|
|
110
100
|
};
|
|
111
101
|
|
|
112
|
-
return this.execute('
|
|
102
|
+
return this.execute('place_orders', executeParams);
|
|
113
103
|
}
|
|
114
104
|
|
|
115
105
|
async cancelTriggerOrders(params: TriggerCancelOrdersParams) {
|
|
@@ -186,8 +176,8 @@ export class TriggerClient {
|
|
|
186
176
|
{
|
|
187
177
|
limit: params.limit,
|
|
188
178
|
max_update_time: params.maxUpdateTimeInclusive,
|
|
189
|
-
|
|
190
|
-
|
|
179
|
+
status_types: params.statusTypes,
|
|
180
|
+
product_ids: params.productIds,
|
|
191
181
|
digests: params.digests,
|
|
192
182
|
trigger_types: params.triggerTypes,
|
|
193
183
|
reduce_only: params.reduceOnly,
|
|
@@ -232,6 +222,38 @@ export class TriggerClient {
|
|
|
232
222
|
/*
|
|
233
223
|
Base Fns
|
|
234
224
|
*/
|
|
225
|
+
|
|
226
|
+
async buildPlaceOrderExecuteParams(
|
|
227
|
+
params: TriggerPlaceOrderParams,
|
|
228
|
+
): Promise<TriggerServerExecuteRequestByType['place_order']> {
|
|
229
|
+
const orderParams: EIP712OrderParams = {
|
|
230
|
+
amount: params.order.amount,
|
|
231
|
+
expiration: params.order.expiration,
|
|
232
|
+
price: params.order.price,
|
|
233
|
+
subaccountName: params.order.subaccountName,
|
|
234
|
+
subaccountOwner: params.order.subaccountOwner,
|
|
235
|
+
nonce: params.nonce ?? getOrderNonce(),
|
|
236
|
+
appendix: params.order.appendix,
|
|
237
|
+
};
|
|
238
|
+
const signature = await this.sign(
|
|
239
|
+
'place_order',
|
|
240
|
+
params.verifyingAddr,
|
|
241
|
+
params.chainId,
|
|
242
|
+
orderParams,
|
|
243
|
+
);
|
|
244
|
+
|
|
245
|
+
return {
|
|
246
|
+
id: params.id ?? null,
|
|
247
|
+
order: getNadoEIP712Values('place_order', orderParams),
|
|
248
|
+
trigger: mapTriggerCriteria(params.triggerCriteria),
|
|
249
|
+
signature,
|
|
250
|
+
product_id: params.productId,
|
|
251
|
+
spot_leverage: params.spotLeverage ?? null,
|
|
252
|
+
digest: params.digest ?? null,
|
|
253
|
+
borrow_margin: params.borrowMargin ?? null,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
|
|
235
257
|
protected async sign<T extends SignableRequestType>(
|
|
236
258
|
requestType: T,
|
|
237
259
|
verifyingContract: string,
|
package/src/dataMappers.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { unpackOrderAppendix } from '@nadohq/shared';
|
|
2
1
|
import {
|
|
3
2
|
addDecimals,
|
|
4
3
|
removeDecimals,
|
|
5
|
-
|
|
4
|
+
toBigNumber,
|
|
6
5
|
toIntegerString,
|
|
6
|
+
unpackOrderAppendix,
|
|
7
7
|
} from '@nadohq/shared';
|
|
8
8
|
import {
|
|
9
9
|
PriceTriggerCriteria,
|
|
@@ -83,7 +83,7 @@ function mapTimeTriggerCriteria(
|
|
|
83
83
|
criteria: TimeTriggerCriteria,
|
|
84
84
|
): TriggerServerTimeTriggerCriteria {
|
|
85
85
|
return {
|
|
86
|
-
interval:
|
|
86
|
+
interval: Number(criteria.interval),
|
|
87
87
|
amounts: criteria.amounts?.map((amount) => toIntegerString(amount)),
|
|
88
88
|
};
|
|
89
89
|
}
|
|
@@ -97,12 +97,12 @@ function mapTimeTriggerCriteria(
|
|
|
97
97
|
export function mapServerOrderInfo(
|
|
98
98
|
info: TriggerServerOrderInfo,
|
|
99
99
|
): TriggerOrderInfo {
|
|
100
|
-
const { order: serverOrder, status, updated_at } = info;
|
|
100
|
+
const { order: serverOrder, status, updated_at, placed_at } = info;
|
|
101
101
|
const order: TriggerOrder = {
|
|
102
|
-
amount:
|
|
102
|
+
amount: toBigNumber(serverOrder.order.amount),
|
|
103
103
|
expiration: Number(serverOrder.order.expiration),
|
|
104
104
|
nonce: serverOrder.order.nonce,
|
|
105
|
-
price: removeDecimals(
|
|
105
|
+
price: removeDecimals(toBigNumber(serverOrder.order.priceX18)),
|
|
106
106
|
digest: serverOrder.digest,
|
|
107
107
|
productId: serverOrder.product_id,
|
|
108
108
|
triggerCriteria: mapServerTriggerCriteria(serverOrder.trigger),
|
|
@@ -113,6 +113,7 @@ export function mapServerOrderInfo(
|
|
|
113
113
|
order,
|
|
114
114
|
status: mapTriggerServerOrderStatus(status),
|
|
115
115
|
updatedAt: updated_at,
|
|
116
|
+
placementTime: placed_at,
|
|
116
117
|
};
|
|
117
118
|
}
|
|
118
119
|
|
|
@@ -242,9 +243,9 @@ function mapServerTimeTriggerCriteria(
|
|
|
242
243
|
serverCriteria: TriggerServerTimeTriggerCriteria,
|
|
243
244
|
): TimeTriggerCriteria {
|
|
244
245
|
return {
|
|
245
|
-
interval:
|
|
246
|
+
interval: toBigNumber(serverCriteria.interval),
|
|
246
247
|
amounts: serverCriteria.amounts?.map((amount: string) =>
|
|
247
|
-
|
|
248
|
+
toBigNumber(amount),
|
|
248
249
|
),
|
|
249
250
|
};
|
|
250
251
|
}
|
package/src/endpoints.ts
CHANGED
|
@@ -2,6 +2,6 @@ import { ChainEnv } from '@nadohq/shared';
|
|
|
2
2
|
|
|
3
3
|
export const TRIGGER_CLIENT_ENDPOINTS: Record<ChainEnv, string> = {
|
|
4
4
|
local: 'http://localhost:80/trigger',
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
inkTestnet: 'https://trigger.test.nado.xyz/v1',
|
|
6
|
+
inkMainnet: 'https://trigger.prod.nado.xyz/v1',
|
|
7
7
|
};
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
-
import {
|
|
2
|
+
import { BigNumberish } from '@nadohq/shared';
|
|
3
3
|
|
|
4
4
|
/*
|
|
5
5
|
Price trigger
|
|
@@ -26,7 +26,7 @@ export interface PriceTriggerDependency {
|
|
|
26
26
|
|
|
27
27
|
export interface PriceTriggerCriteria {
|
|
28
28
|
type: PriceTriggerRequirementType;
|
|
29
|
-
triggerPrice:
|
|
29
|
+
triggerPrice: BigNumberish;
|
|
30
30
|
dependency?: PriceTriggerDependency;
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -38,12 +38,12 @@ export interface TimeTriggerCriteria {
|
|
|
38
38
|
/**
|
|
39
39
|
* For TWAP: Trigger interval in seconds
|
|
40
40
|
*/
|
|
41
|
-
interval:
|
|
41
|
+
interval: BigNumberish;
|
|
42
42
|
/**
|
|
43
43
|
* For TWAP: By default, trigger service will split up orders as per total amount / interval
|
|
44
44
|
* If you want to specify the amounts for each interval, you can provide them here.
|
|
45
45
|
*/
|
|
46
|
-
amounts?:
|
|
46
|
+
amounts?: BigNumberish[];
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
/**
|
package/src/types/clientTypes.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EngineOrderParams,
|
|
3
|
+
EngineServerExecuteResult,
|
|
4
|
+
} from '@nadohq/engine-client';
|
|
1
5
|
import {
|
|
2
6
|
EIP712CancelOrdersParams,
|
|
3
7
|
EIP712CancelProductOrdersParams,
|
|
4
8
|
OrderAppendix,
|
|
5
9
|
Subaccount,
|
|
6
10
|
} from '@nadohq/shared';
|
|
7
|
-
import
|
|
8
|
-
EngineOrderParams,
|
|
9
|
-
EngineServerExecuteResult,
|
|
10
|
-
} from '@nadohq/engine-client';
|
|
11
|
-
import { BigDecimal } from '@nadohq/shared';
|
|
11
|
+
import BigNumber from 'bignumber.js';
|
|
12
12
|
import { TriggerCriteria, TriggerOrderStatus } from './clientModelTypes';
|
|
13
13
|
import {
|
|
14
14
|
TriggerServerOrder,
|
|
15
|
+
TriggerServerStatusTypeFilter,
|
|
15
16
|
TriggerServerTriggerTypeFilter,
|
|
16
17
|
} from './serverQueryTypes';
|
|
17
18
|
|
|
@@ -37,12 +38,21 @@ export interface TriggerPlaceOrderParams extends SignatureParams {
|
|
|
37
38
|
triggerCriteria: TriggerCriteria;
|
|
38
39
|
// If not given, engine defaults to true (leverage/borrow enabled)
|
|
39
40
|
spotLeverage?: boolean;
|
|
40
|
-
// For isolated orders, this specifies whether margin can be borrowed (i.e. whether the cross account can have a negative
|
|
41
|
+
// For isolated orders, this specifies whether margin can be borrowed (i.e. whether the cross account can have a negative USDT balance)
|
|
41
42
|
borrowMargin?: boolean;
|
|
42
43
|
digest?: string;
|
|
43
44
|
nonce?: string;
|
|
44
45
|
}
|
|
45
46
|
|
|
47
|
+
export interface TriggerPlaceOrdersParams {
|
|
48
|
+
orders: TriggerPlaceOrderParams[];
|
|
49
|
+
/**
|
|
50
|
+
* If `true`, aborts the batch after the first failed order; if `false`, remaining orders continue to execute.
|
|
51
|
+
* If not provided, the default value is `false`.
|
|
52
|
+
*/
|
|
53
|
+
stopOnFailure?: boolean;
|
|
54
|
+
}
|
|
55
|
+
|
|
46
56
|
export type TriggerCancelOrdersParams = SignatureParams &
|
|
47
57
|
WithOptionalNonce<EIP712CancelOrdersParams>;
|
|
48
58
|
|
|
@@ -55,16 +65,16 @@ export type TriggerCancelProductOrdersParams = SignatureParams &
|
|
|
55
65
|
|
|
56
66
|
export interface TriggerListOrdersParams extends Subaccount, SignatureParams {
|
|
57
67
|
// In millis, defaults to 90s in the future
|
|
58
|
-
recvTime?:
|
|
68
|
+
recvTime?: BigNumber;
|
|
59
69
|
// If not given, defaults to all products
|
|
60
|
-
|
|
61
|
-
// Pending trigger orders only, ignores cancelled & triggered orders
|
|
62
|
-
pending: boolean;
|
|
70
|
+
productIds?: number[];
|
|
63
71
|
// In seconds
|
|
64
72
|
maxUpdateTimeInclusive?: number;
|
|
65
73
|
// When provided, the associated trigger orders are returned regardless of other filters
|
|
66
74
|
digests?: string[];
|
|
67
75
|
limit?: number;
|
|
76
|
+
// Filter by status types
|
|
77
|
+
statusTypes?: TriggerServerStatusTypeFilter[];
|
|
68
78
|
// Filter by trigger types
|
|
69
79
|
triggerTypes?: TriggerServerTriggerTypeFilter[];
|
|
70
80
|
// Filter by reduce-only orders
|
|
@@ -74,8 +84,8 @@ export interface TriggerListOrdersParams extends Subaccount, SignatureParams {
|
|
|
74
84
|
export interface TriggerOrder {
|
|
75
85
|
productId: number;
|
|
76
86
|
triggerCriteria: TriggerCriteria;
|
|
77
|
-
price:
|
|
78
|
-
amount:
|
|
87
|
+
price: BigNumber;
|
|
88
|
+
amount: BigNumber;
|
|
79
89
|
expiration: number;
|
|
80
90
|
nonce: string;
|
|
81
91
|
digest: string;
|
|
@@ -87,6 +97,7 @@ export interface TriggerOrderInfo {
|
|
|
87
97
|
serverOrder: TriggerServerOrder;
|
|
88
98
|
status: TriggerOrderStatus;
|
|
89
99
|
updatedAt: number;
|
|
100
|
+
placementTime: number;
|
|
90
101
|
}
|
|
91
102
|
|
|
92
103
|
export interface TriggerListOrdersResponse {
|
package/src/types/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from './clientModelTypes';
|
|
2
2
|
export * from './clientTypes';
|
|
3
|
-
export * from './serverModelTypes';
|
|
4
3
|
export * from './serverExecuteTypes';
|
|
4
|
+
export * from './serverModelTypes';
|
|
5
5
|
export * from './serverQueryTypes';
|
|
6
6
|
export * from './TriggerServerFailureError';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { EIP712OrderValues } from '@nadohq/shared';
|
|
2
1
|
import {
|
|
3
2
|
EngineServerExecuteFailureResult,
|
|
4
3
|
EngineServerExecuteRequestByType,
|
|
5
4
|
EngineServerExecuteSuccessResult,
|
|
6
5
|
} from '@nadohq/engine-client';
|
|
6
|
+
import { EIP712OrderValues } from '@nadohq/shared';
|
|
7
7
|
import { TriggerServerTriggerCriteria } from './serverModelTypes';
|
|
8
8
|
|
|
9
9
|
export interface TriggerServerPlaceOrderParams {
|
|
@@ -24,8 +24,14 @@ export type TriggerServerCancelOrdersParams =
|
|
|
24
24
|
export type TriggerServerCancelProductOrdersParams =
|
|
25
25
|
EngineServerExecuteRequestByType['cancel_product_orders'];
|
|
26
26
|
|
|
27
|
+
export interface TriggerServerPlaceOrdersParams {
|
|
28
|
+
orders: TriggerServerPlaceOrderParams[];
|
|
29
|
+
stop_on_failure: boolean | null;
|
|
30
|
+
}
|
|
31
|
+
|
|
27
32
|
export interface TriggerServerExecuteRequestByType {
|
|
28
33
|
place_order: TriggerServerPlaceOrderParams;
|
|
34
|
+
place_orders: TriggerServerPlaceOrdersParams;
|
|
29
35
|
cancel_orders: TriggerServerCancelOrdersParams;
|
|
30
36
|
cancel_product_orders: TriggerServerCancelProductOrdersParams;
|
|
31
37
|
}
|
|
@@ -38,7 +38,7 @@ export interface TriggerServerTimeTriggerCriteria {
|
|
|
38
38
|
/**
|
|
39
39
|
* Trigger interval in seconds
|
|
40
40
|
*/
|
|
41
|
-
interval:
|
|
41
|
+
interval: number;
|
|
42
42
|
/**
|
|
43
43
|
* By default, trigger service will split up orders as per total amount / interval
|
|
44
44
|
* If you want to specify the amounts for each interval, you can provide them here.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EIP712ListTriggerOrdersValues, SignedTx } from '@nadohq/shared';
|
|
2
1
|
import { EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
+
import { EIP712ListTriggerOrdersValues, SignedTx } from '@nadohq/shared';
|
|
3
3
|
import { TriggerServerPlaceOrderParams } from './serverExecuteTypes';
|
|
4
4
|
|
|
5
5
|
export type TriggerServerOrderStatus =
|
|
@@ -34,15 +34,24 @@ export type TriggerServerOrderStatus =
|
|
|
34
34
|
|
|
35
35
|
export type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
|
|
36
36
|
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
export type TriggerServerStatusTypeFilter =
|
|
38
|
+
| 'cancelled'
|
|
39
|
+
| 'triggered'
|
|
40
|
+
| 'internal_error'
|
|
41
|
+
| 'triggering'
|
|
42
|
+
| 'waiting_price'
|
|
43
|
+
| 'waiting_dependency'
|
|
44
|
+
| 'twap_executing'
|
|
45
|
+
| 'twap_completed';
|
|
46
|
+
|
|
47
|
+
export interface TriggerServerListTriggerOrdersParams extends SignedTx<EIP712ListTriggerOrdersValues> {
|
|
40
48
|
// If not given, defaults to all products
|
|
41
|
-
|
|
49
|
+
product_ids?: number[];
|
|
42
50
|
max_update_time?: number;
|
|
43
51
|
digests?: string[];
|
|
44
52
|
limit?: number;
|
|
45
53
|
trigger_types?: TriggerServerTriggerTypeFilter[];
|
|
54
|
+
status_types?: TriggerServerStatusTypeFilter[];
|
|
46
55
|
reduce_only?: boolean;
|
|
47
56
|
}
|
|
48
57
|
|
|
@@ -71,6 +80,7 @@ export interface TriggerServerOrderInfo {
|
|
|
71
80
|
order: TriggerServerOrder;
|
|
72
81
|
status: TriggerServerOrderStatus;
|
|
73
82
|
updated_at: number;
|
|
83
|
+
placed_at: number;
|
|
74
84
|
}
|
|
75
85
|
|
|
76
86
|
export interface TriggerServerListTriggerOrdersResponse {
|
|
@@ -117,8 +127,8 @@ export interface TriggerServerQueryResponseByType {
|
|
|
117
127
|
}
|
|
118
128
|
|
|
119
129
|
export interface TriggerServerQuerySuccessResponse<
|
|
120
|
-
TQueryType extends
|
|
121
|
-
|
|
130
|
+
TQueryType extends keyof TriggerServerQueryResponseByType =
|
|
131
|
+
TriggerServerQueryRequestType,
|
|
122
132
|
> {
|
|
123
133
|
status: 'success';
|
|
124
134
|
data: TriggerServerQueryResponseByType[TQueryType];
|
|
@@ -131,8 +141,8 @@ export interface TriggerServerQueryFailureResponse {
|
|
|
131
141
|
}
|
|
132
142
|
|
|
133
143
|
export type TriggerServerQueryResponse<
|
|
134
|
-
TQueryType extends
|
|
135
|
-
|
|
144
|
+
TQueryType extends keyof TriggerServerQueryResponseByType =
|
|
145
|
+
TriggerServerQueryRequestType,
|
|
136
146
|
> =
|
|
137
147
|
| TriggerServerQuerySuccessResponse<TQueryType>
|
|
138
148
|
| TriggerServerQueryFailureResponse;
|