@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.
Files changed (54) hide show
  1. package/dist/TriggerClient.cjs +40 -24
  2. package/dist/TriggerClient.cjs.map +1 -1
  3. package/dist/TriggerClient.d.cts +5 -2
  4. package/dist/TriggerClient.d.ts +5 -2
  5. package/dist/TriggerClient.js +40 -24
  6. package/dist/TriggerClient.js.map +1 -1
  7. package/dist/dataMappers.cjs +11 -11
  8. package/dist/dataMappers.cjs.map +1 -1
  9. package/dist/dataMappers.d.cts +1 -0
  10. package/dist/dataMappers.d.ts +1 -0
  11. package/dist/dataMappers.js +11 -10
  12. package/dist/dataMappers.js.map +1 -1
  13. package/dist/endpoints.cjs +2 -2
  14. package/dist/endpoints.cjs.map +1 -1
  15. package/dist/endpoints.js +2 -2
  16. package/dist/endpoints.js.map +1 -1
  17. package/dist/index.cjs +4 -4
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +7 -6
  20. package/dist/index.d.ts +7 -6
  21. package/dist/index.js +2 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/types/clientModelTypes.cjs.map +1 -1
  24. package/dist/types/clientModelTypes.d.cts +4 -4
  25. package/dist/types/clientModelTypes.d.ts +4 -4
  26. package/dist/types/clientTypes.cjs.map +1 -1
  27. package/dist/types/clientTypes.d.cts +18 -8
  28. package/dist/types/clientTypes.d.ts +18 -8
  29. package/dist/types/index.cjs +2 -2
  30. package/dist/types/index.cjs.map +1 -1
  31. package/dist/types/index.d.cts +4 -3
  32. package/dist/types/index.d.ts +4 -3
  33. package/dist/types/index.js +1 -1
  34. package/dist/types/index.js.map +1 -1
  35. package/dist/types/serverExecuteTypes.cjs.map +1 -1
  36. package/dist/types/serverExecuteTypes.d.cts +7 -2
  37. package/dist/types/serverExecuteTypes.d.ts +7 -2
  38. package/dist/types/serverModelTypes.cjs.map +1 -1
  39. package/dist/types/serverModelTypes.d.cts +1 -1
  40. package/dist/types/serverModelTypes.d.ts +1 -1
  41. package/dist/types/serverQueryTypes.cjs.map +1 -1
  42. package/dist/types/serverQueryTypes.d.cts +6 -4
  43. package/dist/types/serverQueryTypes.d.ts +6 -4
  44. package/package.json +14 -8
  45. package/src/TriggerClient.ts +47 -25
  46. package/src/dataMappers.ts +9 -8
  47. package/src/endpoints.ts +2 -2
  48. package/src/index.ts +2 -2
  49. package/src/types/clientModelTypes.ts +4 -4
  50. package/src/types/clientTypes.ts +23 -12
  51. package/src/types/index.ts +1 -1
  52. package/src/types/serverExecuteTypes.ts +7 -1
  53. package/src/types/serverModelTypes.ts +1 -1
  54. package/src/types/serverQueryTypes.ts +19 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/serverQueryTypes.ts"],"sourcesContent":["import { EIP712ListTriggerOrdersValues, SignedTx } from '@nadohq/shared';\nimport { EngineServerExecuteResult } from '@nadohq/engine-client';\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 interface TriggerServerListTriggerOrdersParams\n extends SignedTx<EIP712ListTriggerOrdersValues> {\n pending: boolean;\n // If not given, defaults to all products\n product_id?: number;\n max_update_time?: number;\n digests?: string[];\n limit?: number;\n trigger_types?: TriggerServerTriggerTypeFilter[];\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}\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\n keyof TriggerServerQueryResponseByType = 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\n keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType,\n> =\n | TriggerServerQuerySuccessResponse<TQueryType>\n | TriggerServerQueryFailureResponse;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
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
- pending: boolean;
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
- pending: boolean;
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-alpha.8",
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": "^0.1.0-alpha.8",
41
- "@nadohq/shared": "^0.1.0-alpha.8",
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
- "viem": "*"
50
+ "bignumber.js": "catalog:",
51
+ "viem": "catalog:"
47
52
  },
48
53
  "devDependencies": {
49
- "viem": "*"
54
+ "bignumber.js": "catalog:",
55
+ "viem": "catalog:"
50
56
  },
51
- "gitHead": "3488a83313ef5c199b2fc9a3cd70f477e80e74db"
57
+ "gitHead": "be24947f588c4fcc294607e985e572c81760f45a"
52
58
  }
@@ -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
- const orderParams: EIP712OrderParams = {
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.verifyingAddr,
97
- params.chainId,
98
- orderParams,
88
+ await this.buildPlaceOrderExecuteParams(params),
99
89
  );
90
+ }
100
91
 
101
- const executeParams: TriggerServerExecuteRequestByType['place_order'] = {
102
- id: params.id ?? null,
103
- order: getNadoEIP712Values('place_order', orderParams),
104
- trigger: mapTriggerCriteria(params.triggerCriteria),
105
- signature,
106
- product_id: params.productId,
107
- spot_leverage: params.spotLeverage ?? null,
108
- digest: params.digest ?? null,
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('place_order', executeParams);
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
- pending: params.pending,
190
- product_id: params.productId,
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,
@@ -1,9 +1,9 @@
1
- import { unpackOrderAppendix } from '@nadohq/shared';
2
1
  import {
3
2
  addDecimals,
4
3
  removeDecimals,
5
- toBigDecimal,
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: toIntegerString(criteria.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: toBigDecimal(serverOrder.order.amount),
102
+ amount: toBigNumber(serverOrder.order.amount),
103
103
  expiration: Number(serverOrder.order.expiration),
104
104
  nonce: serverOrder.order.nonce,
105
- price: removeDecimals(toBigDecimal(serverOrder.order.priceX18)),
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: toBigDecimal(serverCriteria.interval),
246
+ interval: toBigNumber(serverCriteria.interval),
246
247
  amounts: serverCriteria.amounts?.map((amount: string) =>
247
- toBigDecimal(amount),
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
- arbitrum: 'https://trigger.prod.vertexprotocol.com/v1',
6
- inkTestnet: 'https://trigger.test.nado-backend.xyz/v1',
5
+ inkTestnet: 'https://trigger.test.nado.xyz/v1',
6
+ inkMainnet: 'https://trigger.prod.nado.xyz/v1',
7
7
  };
package/src/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './types';
2
- export * from './TriggerClient';
3
1
  export * from './endpoints';
2
+ export * from './TriggerClient';
3
+ export * from './types';
@@ -1,5 +1,5 @@
1
1
  import { EngineServerExecuteResult } from '@nadohq/engine-client';
2
- import { BigDecimalish } from '@nadohq/shared';
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: BigDecimalish;
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: BigDecimalish;
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?: BigDecimalish[];
46
+ amounts?: BigNumberish[];
47
47
  }
48
48
 
49
49
  /**
@@ -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 USDC balance)
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?: BigDecimal;
68
+ recvTime?: BigNumber;
59
69
  // If not given, defaults to all products
60
- productId?: number;
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: BigDecimal;
78
- amount: BigDecimal;
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 {
@@ -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: string;
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 interface TriggerServerListTriggerOrdersParams
38
- extends SignedTx<EIP712ListTriggerOrdersValues> {
39
- pending: boolean;
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
- product_id?: number;
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
- keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType,
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
- keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType,
144
+ TQueryType extends keyof TriggerServerQueryResponseByType =
145
+ TriggerServerQueryRequestType,
136
146
  > =
137
147
  | TriggerServerQuerySuccessResponse<TQueryType>
138
148
  | TriggerServerQueryFailureResponse;