@nadohq/trigger-client 0.1.0-alpha.4 → 0.1.0-alpha.41

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 +57 -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 +62 -25
  6. package/dist/TriggerClient.js.map +1 -1
  7. package/dist/dataMappers.cjs +64 -18
  8. package/dist/dataMappers.cjs.map +1 -1
  9. package/dist/dataMappers.d.cts +4 -3
  10. package/dist/dataMappers.d.ts +4 -3
  11. package/dist/dataMappers.js +57 -11
  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 +6 -6
  20. package/dist/index.d.ts +6 -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 +14 -2
  25. package/dist/types/clientModelTypes.d.ts +14 -2
  26. package/dist/types/clientTypes.cjs.map +1 -1
  27. package/dist/types/clientTypes.d.cts +39 -5
  28. package/dist/types/clientTypes.d.ts +39 -5
  29. package/dist/types/index.cjs +2 -2
  30. package/dist/types/index.cjs.map +1 -1
  31. package/dist/types/index.d.cts +3 -3
  32. package/dist/types/index.d.ts +3 -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 +45 -8
  43. package/dist/types/serverQueryTypes.d.ts +45 -8
  44. package/package.json +8 -4
  45. package/src/TriggerClient.ts +79 -26
  46. package/src/dataMappers.ts +58 -8
  47. package/src/endpoints.ts +2 -2
  48. package/src/index.ts +2 -2
  49. package/src/types/clientModelTypes.ts +19 -3
  50. package/src/types/clientTypes.ts +53 -6
  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 +72 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export * from './clientModelTypes';\nexport * from './clientTypes';\nexport * from './serverModelTypes';\nexport * from './serverExecuteTypes';\nexport * from './serverQueryTypes';\nexport * from './TriggerServerFailureError';\n"],"mappings":";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export * from './clientModelTypes';\nexport * from './clientTypes';\nexport * from './serverExecuteTypes';\nexport * from './serverModelTypes';\nexport * from './serverQueryTypes';\nexport * from './TriggerServerFailureError';\n"],"mappings":";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/serverExecuteTypes.ts"],"sourcesContent":["import { EIP712OrderValues } from '@nadohq/shared';\nimport {\n EngineServerExecuteFailureResult,\n EngineServerExecuteRequestByType,\n EngineServerExecuteSuccessResult,\n} from '@nadohq/engine-client';\nimport { TriggerServerTriggerCriteria } from './serverModelTypes';\n\nexport interface TriggerServerPlaceOrderParams {\n id: number | null;\n product_id: number;\n order: EIP712OrderValues;\n trigger: TriggerServerTriggerCriteria;\n signature: string;\n digest: string | null;\n // Trigger service defaults this to true\n spot_leverage: boolean | null;\n borrow_margin: boolean | null;\n}\n\nexport type TriggerServerCancelOrdersParams =\n EngineServerExecuteRequestByType['cancel_orders'];\n\nexport type TriggerServerCancelProductOrdersParams =\n EngineServerExecuteRequestByType['cancel_product_orders'];\n\nexport interface TriggerServerExecuteRequestByType {\n place_order: TriggerServerPlaceOrderParams;\n cancel_orders: TriggerServerCancelOrdersParams;\n cancel_product_orders: TriggerServerCancelProductOrdersParams;\n}\n\nexport type TriggerServerExecuteRequestType =\n keyof TriggerServerExecuteRequestByType;\n\nexport type TriggerServerExecuteSuccessResult<\n T extends TriggerServerExecuteRequestType = TriggerServerExecuteRequestType,\n> = EngineServerExecuteSuccessResult<T>;\n\nexport type TriggerServerExecuteResult<\n T extends TriggerServerExecuteRequestType = TriggerServerExecuteRequestType,\n> = TriggerServerExecuteSuccessResult<T> | EngineServerExecuteFailureResult;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types/serverExecuteTypes.ts"],"sourcesContent":["import {\n EngineServerExecuteFailureResult,\n EngineServerExecuteRequestByType,\n EngineServerExecuteSuccessResult,\n} from '@nadohq/engine-client';\nimport { EIP712OrderValues } from '@nadohq/shared';\nimport { TriggerServerTriggerCriteria } from './serverModelTypes';\n\nexport interface TriggerServerPlaceOrderParams {\n id: number | null;\n product_id: number;\n order: EIP712OrderValues;\n trigger: TriggerServerTriggerCriteria;\n signature: string;\n digest: string | null;\n // Trigger service defaults this to true\n spot_leverage: boolean | null;\n borrow_margin: boolean | null;\n}\n\nexport type TriggerServerCancelOrdersParams =\n EngineServerExecuteRequestByType['cancel_orders'];\n\nexport type TriggerServerCancelProductOrdersParams =\n EngineServerExecuteRequestByType['cancel_product_orders'];\n\nexport interface TriggerServerPlaceOrdersParams {\n orders: TriggerServerPlaceOrderParams[];\n stop_on_failure: boolean | null;\n}\n\nexport interface TriggerServerExecuteRequestByType {\n place_order: TriggerServerPlaceOrderParams;\n place_orders: TriggerServerPlaceOrdersParams;\n cancel_orders: TriggerServerCancelOrdersParams;\n cancel_product_orders: TriggerServerCancelProductOrdersParams;\n}\n\nexport type TriggerServerExecuteRequestType =\n keyof TriggerServerExecuteRequestByType;\n\nexport type TriggerServerExecuteSuccessResult<\n T extends TriggerServerExecuteRequestType = TriggerServerExecuteRequestType,\n> = EngineServerExecuteSuccessResult<T>;\n\nexport type TriggerServerExecuteResult<\n T extends TriggerServerExecuteRequestType = TriggerServerExecuteRequestType,\n> = TriggerServerExecuteSuccessResult<T> | EngineServerExecuteFailureResult;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,5 +1,5 @@
1
- import { EIP712OrderValues } from '@nadohq/shared';
2
1
  import { EngineServerExecuteRequestByType, EngineServerExecuteSuccessResult, EngineServerExecuteFailureResult } from '@nadohq/engine-client';
2
+ import { EIP712OrderValues } from '@nadohq/shared';
3
3
  import { TriggerServerTriggerCriteria } from './serverModelTypes.cjs';
4
4
 
5
5
  interface TriggerServerPlaceOrderParams {
@@ -14,8 +14,13 @@ interface TriggerServerPlaceOrderParams {
14
14
  }
15
15
  type TriggerServerCancelOrdersParams = EngineServerExecuteRequestByType['cancel_orders'];
16
16
  type TriggerServerCancelProductOrdersParams = EngineServerExecuteRequestByType['cancel_product_orders'];
17
+ interface TriggerServerPlaceOrdersParams {
18
+ orders: TriggerServerPlaceOrderParams[];
19
+ stop_on_failure: boolean | null;
20
+ }
17
21
  interface TriggerServerExecuteRequestByType {
18
22
  place_order: TriggerServerPlaceOrderParams;
23
+ place_orders: TriggerServerPlaceOrdersParams;
19
24
  cancel_orders: TriggerServerCancelOrdersParams;
20
25
  cancel_product_orders: TriggerServerCancelProductOrdersParams;
21
26
  }
@@ -23,4 +28,4 @@ type TriggerServerExecuteRequestType = keyof TriggerServerExecuteRequestByType;
23
28
  type TriggerServerExecuteSuccessResult<T extends TriggerServerExecuteRequestType = TriggerServerExecuteRequestType> = EngineServerExecuteSuccessResult<T>;
24
29
  type TriggerServerExecuteResult<T extends TriggerServerExecuteRequestType = TriggerServerExecuteRequestType> = TriggerServerExecuteSuccessResult<T> | EngineServerExecuteFailureResult;
25
30
 
26
- export type { TriggerServerCancelOrdersParams, TriggerServerCancelProductOrdersParams, TriggerServerExecuteRequestByType, TriggerServerExecuteRequestType, TriggerServerExecuteResult, TriggerServerExecuteSuccessResult, TriggerServerPlaceOrderParams };
31
+ export type { TriggerServerCancelOrdersParams, TriggerServerCancelProductOrdersParams, TriggerServerExecuteRequestByType, TriggerServerExecuteRequestType, TriggerServerExecuteResult, TriggerServerExecuteSuccessResult, TriggerServerPlaceOrderParams, TriggerServerPlaceOrdersParams };
@@ -1,5 +1,5 @@
1
- import { EIP712OrderValues } from '@nadohq/shared';
2
1
  import { EngineServerExecuteRequestByType, EngineServerExecuteSuccessResult, EngineServerExecuteFailureResult } from '@nadohq/engine-client';
2
+ import { EIP712OrderValues } from '@nadohq/shared';
3
3
  import { TriggerServerTriggerCriteria } from './serverModelTypes.js';
4
4
 
5
5
  interface TriggerServerPlaceOrderParams {
@@ -14,8 +14,13 @@ interface TriggerServerPlaceOrderParams {
14
14
  }
15
15
  type TriggerServerCancelOrdersParams = EngineServerExecuteRequestByType['cancel_orders'];
16
16
  type TriggerServerCancelProductOrdersParams = EngineServerExecuteRequestByType['cancel_product_orders'];
17
+ interface TriggerServerPlaceOrdersParams {
18
+ orders: TriggerServerPlaceOrderParams[];
19
+ stop_on_failure: boolean | null;
20
+ }
17
21
  interface TriggerServerExecuteRequestByType {
18
22
  place_order: TriggerServerPlaceOrderParams;
23
+ place_orders: TriggerServerPlaceOrdersParams;
19
24
  cancel_orders: TriggerServerCancelOrdersParams;
20
25
  cancel_product_orders: TriggerServerCancelProductOrdersParams;
21
26
  }
@@ -23,4 +28,4 @@ type TriggerServerExecuteRequestType = keyof TriggerServerExecuteRequestByType;
23
28
  type TriggerServerExecuteSuccessResult<T extends TriggerServerExecuteRequestType = TriggerServerExecuteRequestType> = EngineServerExecuteSuccessResult<T>;
24
29
  type TriggerServerExecuteResult<T extends TriggerServerExecuteRequestType = TriggerServerExecuteRequestType> = TriggerServerExecuteSuccessResult<T> | EngineServerExecuteFailureResult;
25
30
 
26
- export type { TriggerServerCancelOrdersParams, TriggerServerCancelProductOrdersParams, TriggerServerExecuteRequestByType, TriggerServerExecuteRequestType, TriggerServerExecuteResult, TriggerServerExecuteSuccessResult, TriggerServerPlaceOrderParams };
31
+ export type { TriggerServerCancelOrdersParams, TriggerServerCancelProductOrdersParams, TriggerServerExecuteRequestByType, TriggerServerExecuteRequestType, TriggerServerExecuteResult, TriggerServerExecuteSuccessResult, TriggerServerPlaceOrderParams, TriggerServerPlaceOrdersParams };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/serverModelTypes.ts"],"sourcesContent":["export interface TriggerServerDependency {\n digest: string;\n /**\n * Whether to trigger on partial fills.\n */\n on_partial_fill: boolean;\n}\n\nexport type TriggerServerPriceRequirement =\n // These trigger on fast oracle price\n | {\n oracle_price_above: string;\n }\n | {\n oracle_price_below: string;\n }\n // These trigger on last trade price\n | {\n last_price_above: string;\n }\n | {\n last_price_below: string;\n }\n // These trigger on mid-book price\n | {\n mid_price_above: string;\n }\n | {\n mid_price_below: string;\n };\n\nexport interface TriggerServerPriceTriggerCriteria {\n price_requirement: TriggerServerPriceRequirement;\n dependency?: TriggerServerDependency;\n}\n\nexport interface TriggerServerTimeTriggerCriteria {\n /**\n * Trigger interval in seconds\n */\n interval: string;\n /**\n * By default, trigger service will split up orders as per total amount / interval\n * If you want to specify the amounts for each interval, you can provide them here.\n */\n amounts?: string[];\n}\n\nexport type TriggerServerTriggerCriteria =\n | {\n price_trigger: TriggerServerPriceTriggerCriteria;\n }\n | {\n time_trigger: TriggerServerTimeTriggerCriteria;\n };\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types/serverModelTypes.ts"],"sourcesContent":["export interface TriggerServerDependency {\n digest: string;\n /**\n * Whether to trigger on partial fills.\n */\n on_partial_fill: boolean;\n}\n\nexport type TriggerServerPriceRequirement =\n // These trigger on fast oracle price\n | {\n oracle_price_above: string;\n }\n | {\n oracle_price_below: string;\n }\n // These trigger on last trade price\n | {\n last_price_above: string;\n }\n | {\n last_price_below: string;\n }\n // These trigger on mid-book price\n | {\n mid_price_above: string;\n }\n | {\n mid_price_below: string;\n };\n\nexport interface TriggerServerPriceTriggerCriteria {\n price_requirement: TriggerServerPriceRequirement;\n dependency?: TriggerServerDependency;\n}\n\nexport interface TriggerServerTimeTriggerCriteria {\n /**\n * Trigger interval in seconds\n */\n interval: number;\n /**\n * By default, trigger service will split up orders as per total amount / interval\n * If you want to specify the amounts for each interval, you can provide them here.\n */\n amounts?: string[];\n}\n\nexport type TriggerServerTriggerCriteria =\n | {\n price_trigger: TriggerServerPriceTriggerCriteria;\n }\n | {\n time_trigger: TriggerServerTimeTriggerCriteria;\n };\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -26,7 +26,7 @@ interface TriggerServerTimeTriggerCriteria {
26
26
  /**
27
27
  * Trigger interval in seconds
28
28
  */
29
- interval: string;
29
+ interval: number;
30
30
  /**
31
31
  * By default, trigger service will split up orders as per total amount / interval
32
32
  * If you want to specify the amounts for each interval, you can provide them here.
@@ -26,7 +26,7 @@ interface TriggerServerTimeTriggerCriteria {
26
26
  /**
27
27
  * Trigger interval in seconds
28
28
  */
29
- interval: string;
29
+ interval: number;
30
30
  /**
31
31
  * By default, trigger service will split up orders as per total amount / interval
32
32
  * If you want to specify the amounts for each interval, you can provide them here.
@@ -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 | 'pending'\n | {\n // Result from sending to engine\n triggered: EngineServerExecuteResult;\n }\n | {\n // Reason string\n cancelled: string;\n }\n | {\n // Error message\n internal_error: string;\n };\n\n/**\n * Request types\n */\n\nexport type TriggerServerTriggerTypeFilter = 'price_trigger' | 'twap';\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 TriggerServerQueryRequestByType {\n list_trigger_orders: TriggerServerListTriggerOrdersParams;\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 interface TriggerServerQueryResponseByType {\n list_trigger_orders: TriggerServerListTriggerOrdersResponse;\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\n 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\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,30 +1,45 @@
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
 
6
- type TriggerServerOrderStatus = 'pending' | {
7
- triggered: EngineServerExecuteResult;
6
+ type TriggerServerOrderStatus = {
7
+ cancelled: TriggerServerCancelReason;
8
8
  } | {
9
- cancelled: string;
9
+ triggered: EngineServerExecuteResult;
10
10
  } | {
11
11
  internal_error: string;
12
+ } | 'triggering' | 'waiting_price' | 'waiting_dependency' | {
13
+ twap_executing: {
14
+ current_execution: number;
15
+ total_executions: number;
16
+ };
17
+ } | {
18
+ twap_completed: {
19
+ executed: number;
20
+ total: number;
21
+ };
12
22
  };
13
23
  /**
14
24
  * Request types
15
25
  */
16
- type TriggerServerTriggerTypeFilter = 'price_trigger' | 'twap';
26
+ type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
27
+ type TriggerServerStatusTypeFilter = 'cancelled' | 'triggered' | 'internal_error' | 'triggering' | 'waiting_price' | 'waiting_dependency' | 'twap_executing' | 'twap_completed';
17
28
  interface TriggerServerListTriggerOrdersParams extends SignedTx<EIP712ListTriggerOrdersValues> {
18
- pending: boolean;
19
- product_id?: number;
29
+ product_ids?: number[];
20
30
  max_update_time?: number;
21
31
  digests?: string[];
22
32
  limit?: number;
23
33
  trigger_types?: TriggerServerTriggerTypeFilter[];
34
+ status_types?: TriggerServerStatusTypeFilter[];
24
35
  reduce_only?: boolean;
25
36
  }
37
+ interface TriggerServerListTwapExecutionsParams {
38
+ digest: string;
39
+ }
26
40
  interface TriggerServerQueryRequestByType {
27
41
  list_trigger_orders: TriggerServerListTriggerOrdersParams;
42
+ list_twap_executions: TriggerServerListTwapExecutionsParams;
28
43
  }
29
44
  type TriggerServerQueryRequestType = keyof TriggerServerQueryRequestByType;
30
45
  /**
@@ -37,12 +52,34 @@ interface TriggerServerOrderInfo {
37
52
  order: TriggerServerOrder;
38
53
  status: TriggerServerOrderStatus;
39
54
  updated_at: number;
55
+ placed_at: number;
40
56
  }
41
57
  interface TriggerServerListTriggerOrdersResponse {
42
58
  orders: TriggerServerOrderInfo[];
43
59
  }
60
+ type TriggerServerCancelReason = 'user_requested' | 'linked_signer_changed' | 'expired' | 'account_health' | 'isolated_subaccount_closed' | 'dependent_order_cancelled';
61
+ type TriggerServerTwapExecutionStatus = 'pending' | {
62
+ executed: {
63
+ executed_time: number;
64
+ execute_response: EngineServerExecuteResult;
65
+ };
66
+ } | {
67
+ failed: string;
68
+ } | {
69
+ cancelled: TriggerServerCancelReason;
70
+ };
71
+ interface TriggerServerTwapExecutionInfo {
72
+ execution_id: number;
73
+ scheduled_time: number;
74
+ status: TriggerServerTwapExecutionStatus;
75
+ updated_at: number;
76
+ }
77
+ interface TriggerServerTwapExecutionsResponse {
78
+ executions: TriggerServerTwapExecutionInfo[];
79
+ }
44
80
  interface TriggerServerQueryResponseByType {
45
81
  list_trigger_orders: TriggerServerListTriggerOrdersResponse;
82
+ list_twap_executions: TriggerServerTwapExecutionsResponse;
46
83
  }
47
84
  interface TriggerServerQuerySuccessResponse<TQueryType extends keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType> {
48
85
  status: 'success';
@@ -55,4 +92,4 @@ interface TriggerServerQueryFailureResponse {
55
92
  }
56
93
  type TriggerServerQueryResponse<TQueryType extends keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType> = TriggerServerQuerySuccessResponse<TQueryType> | TriggerServerQueryFailureResponse;
57
94
 
58
- export type { TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter };
95
+ export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
@@ -1,30 +1,45 @@
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
 
6
- type TriggerServerOrderStatus = 'pending' | {
7
- triggered: EngineServerExecuteResult;
6
+ type TriggerServerOrderStatus = {
7
+ cancelled: TriggerServerCancelReason;
8
8
  } | {
9
- cancelled: string;
9
+ triggered: EngineServerExecuteResult;
10
10
  } | {
11
11
  internal_error: string;
12
+ } | 'triggering' | 'waiting_price' | 'waiting_dependency' | {
13
+ twap_executing: {
14
+ current_execution: number;
15
+ total_executions: number;
16
+ };
17
+ } | {
18
+ twap_completed: {
19
+ executed: number;
20
+ total: number;
21
+ };
12
22
  };
13
23
  /**
14
24
  * Request types
15
25
  */
16
- type TriggerServerTriggerTypeFilter = 'price_trigger' | 'twap';
26
+ type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
27
+ type TriggerServerStatusTypeFilter = 'cancelled' | 'triggered' | 'internal_error' | 'triggering' | 'waiting_price' | 'waiting_dependency' | 'twap_executing' | 'twap_completed';
17
28
  interface TriggerServerListTriggerOrdersParams extends SignedTx<EIP712ListTriggerOrdersValues> {
18
- pending: boolean;
19
- product_id?: number;
29
+ product_ids?: number[];
20
30
  max_update_time?: number;
21
31
  digests?: string[];
22
32
  limit?: number;
23
33
  trigger_types?: TriggerServerTriggerTypeFilter[];
34
+ status_types?: TriggerServerStatusTypeFilter[];
24
35
  reduce_only?: boolean;
25
36
  }
37
+ interface TriggerServerListTwapExecutionsParams {
38
+ digest: string;
39
+ }
26
40
  interface TriggerServerQueryRequestByType {
27
41
  list_trigger_orders: TriggerServerListTriggerOrdersParams;
42
+ list_twap_executions: TriggerServerListTwapExecutionsParams;
28
43
  }
29
44
  type TriggerServerQueryRequestType = keyof TriggerServerQueryRequestByType;
30
45
  /**
@@ -37,12 +52,34 @@ interface TriggerServerOrderInfo {
37
52
  order: TriggerServerOrder;
38
53
  status: TriggerServerOrderStatus;
39
54
  updated_at: number;
55
+ placed_at: number;
40
56
  }
41
57
  interface TriggerServerListTriggerOrdersResponse {
42
58
  orders: TriggerServerOrderInfo[];
43
59
  }
60
+ type TriggerServerCancelReason = 'user_requested' | 'linked_signer_changed' | 'expired' | 'account_health' | 'isolated_subaccount_closed' | 'dependent_order_cancelled';
61
+ type TriggerServerTwapExecutionStatus = 'pending' | {
62
+ executed: {
63
+ executed_time: number;
64
+ execute_response: EngineServerExecuteResult;
65
+ };
66
+ } | {
67
+ failed: string;
68
+ } | {
69
+ cancelled: TriggerServerCancelReason;
70
+ };
71
+ interface TriggerServerTwapExecutionInfo {
72
+ execution_id: number;
73
+ scheduled_time: number;
74
+ status: TriggerServerTwapExecutionStatus;
75
+ updated_at: number;
76
+ }
77
+ interface TriggerServerTwapExecutionsResponse {
78
+ executions: TriggerServerTwapExecutionInfo[];
79
+ }
44
80
  interface TriggerServerQueryResponseByType {
45
81
  list_trigger_orders: TriggerServerListTriggerOrdersResponse;
82
+ list_twap_executions: TriggerServerTwapExecutionsResponse;
46
83
  }
47
84
  interface TriggerServerQuerySuccessResponse<TQueryType extends keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType> {
48
85
  status: 'success';
@@ -55,4 +92,4 @@ interface TriggerServerQueryFailureResponse {
55
92
  }
56
93
  type TriggerServerQueryResponse<TQueryType extends keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType> = TriggerServerQuerySuccessResponse<TQueryType> | TriggerServerQueryFailureResponse;
57
94
 
58
- export type { TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter };
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.4",
3
+ "version": "0.1.0-alpha.41",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "> TODO: description",
@@ -36,9 +36,13 @@
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.4",
41
- "@nadohq/shared": "^0.1.0-alpha.4",
44
+ "@nadohq/engine-client": "^0.1.0-alpha.41",
45
+ "@nadohq/shared": "^0.1.0-alpha.41",
42
46
  "axios": "*",
43
47
  "ts-mixer": "*"
44
48
  },
@@ -48,5 +52,5 @@
48
52
  "devDependencies": {
49
53
  "viem": "*"
50
54
  },
51
- "gitHead": "b852ce36b851303225d3f4b81739ac667c64cf8c"
55
+ "gitHead": "dbfcd352246b8914985af6b333cc49e2b8624473"
52
56
  }
@@ -14,14 +14,21 @@ import {
14
14
  WalletNotProvidedError,
15
15
  } from '@nadohq/shared';
16
16
  import axios, { AxiosInstance, AxiosResponse } from 'axios';
17
- import { mapServerOrderInfo, mapTriggerCriteria } from './dataMappers';
17
+ import {
18
+ mapServerOrderInfo,
19
+ mapTriggerCriteria,
20
+ mapTwapExecutionStatus,
21
+ } from './dataMappers';
18
22
  import {
19
23
  TriggerCancelOrdersParams,
20
24
  TriggerCancelProductOrdersParams,
21
25
  TriggerListOrdersParams,
22
26
  TriggerListOrdersResponse,
27
+ TriggerListTwapExecutionsParams,
28
+ TriggerListTwapExecutionsResponse,
23
29
  TriggerOrderInfo,
24
30
  TriggerPlaceOrderParams,
31
+ TriggerPlaceOrdersParams,
25
32
  TriggerServerExecuteRequestByType,
26
33
  TriggerServerExecuteRequestType,
27
34
  TriggerServerExecuteResult,
@@ -31,6 +38,7 @@ import {
31
38
  TriggerServerQueryResponse,
32
39
  TriggerServerQueryResponseByType,
33
40
  TriggerServerQuerySuccessResponse,
41
+ TwapExecutionInfo,
34
42
  } from './types';
35
43
  import { TriggerServerFailureError } from './types/TriggerServerFailureError';
36
44
 
@@ -75,34 +83,23 @@ export class TriggerClient {
75
83
  */
76
84
 
77
85
  async placeTriggerOrder(params: TriggerPlaceOrderParams) {
78
- const orderParams: EIP712OrderParams = {
79
- amount: params.order.amount,
80
- expiration: params.order.expiration,
81
- price: params.order.price,
82
- subaccountName: params.order.subaccountName,
83
- subaccountOwner: params.order.subaccountOwner,
84
- nonce: params.nonce ?? getOrderNonce(),
85
- appendix: params.order.appendix,
86
- };
87
- const signature = await this.sign(
86
+ return this.execute(
88
87
  'place_order',
89
- params.verifyingAddr,
90
- params.chainId,
91
- orderParams,
88
+ await this.buildPlaceOrderExecuteParams(params),
92
89
  );
90
+ }
93
91
 
94
- const executeParams: TriggerServerExecuteRequestByType['place_order'] = {
95
- id: params.id ?? null,
96
- order: getNadoEIP712Values('place_order', orderParams),
97
- trigger: mapTriggerCriteria(params.triggerCriteria),
98
- signature,
99
- product_id: params.productId,
100
- spot_leverage: params.spotLeverage ?? null,
101
- digest: params.digest ?? null,
102
- 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,
103
100
  };
104
101
 
105
- return this.execute('place_order', executeParams);
102
+ return this.execute('place_orders', executeParams);
106
103
  }
107
104
 
108
105
  async cancelTriggerOrders(params: TriggerCancelOrdersParams) {
@@ -179,8 +176,8 @@ export class TriggerClient {
179
176
  {
180
177
  limit: params.limit,
181
178
  max_update_time: params.maxUpdateTimeInclusive,
182
- pending: params.pending,
183
- product_id: params.productId,
179
+ status_types: params.statusTypes,
180
+ product_ids: params.productIds,
184
181
  digests: params.digests,
185
182
  trigger_types: params.triggerTypes,
186
183
  reduce_only: params.reduceOnly,
@@ -198,9 +195,65 @@ export class TriggerClient {
198
195
  };
199
196
  }
200
197
 
198
+ async listTwapExecutions(
199
+ params: TriggerListTwapExecutionsParams,
200
+ ): Promise<TriggerListTwapExecutionsResponse> {
201
+ const queryParams: TriggerServerQueryRequestByType['list_twap_executions'] =
202
+ {
203
+ digest: params.digest,
204
+ };
205
+
206
+ const baseResponse = await this.query('list_twap_executions', queryParams);
207
+
208
+ const executions: TwapExecutionInfo[] = baseResponse.executions.map(
209
+ (execution) => ({
210
+ executionId: execution.execution_id,
211
+ scheduledTime: execution.scheduled_time,
212
+ status: mapTwapExecutionStatus(execution.status),
213
+ updatedAt: execution.updated_at,
214
+ }),
215
+ );
216
+
217
+ return {
218
+ executions,
219
+ };
220
+ }
221
+
201
222
  /*
202
223
  Base Fns
203
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
+
204
257
  protected async sign<T extends SignableRequestType>(
205
258
  requestType: T,
206
259
  verifyingContract: string,
@@ -1,9 +1,9 @@
1
- import { unpackOrderAppendix } from '@nadohq/shared';
2
1
  import {
3
2
  addDecimals,
4
3
  removeDecimals,
5
4
  toBigDecimal,
6
5
  toIntegerString,
6
+ unpackOrderAppendix,
7
7
  } from '@nadohq/shared';
8
8
  import {
9
9
  PriceTriggerCriteria,
@@ -19,6 +19,8 @@ import {
19
19
  TriggerServerPriceTriggerCriteria,
20
20
  TriggerServerTimeTriggerCriteria,
21
21
  TriggerServerTriggerCriteria,
22
+ TriggerServerTwapExecutionStatus,
23
+ TwapExecutionStatus,
22
24
  } from './types';
23
25
 
24
26
  /**
@@ -81,7 +83,7 @@ function mapTimeTriggerCriteria(
81
83
  criteria: TimeTriggerCriteria,
82
84
  ): TriggerServerTimeTriggerCriteria {
83
85
  return {
84
- interval: toIntegerString(criteria.interval),
86
+ interval: Number(criteria.interval),
85
87
  amounts: criteria.amounts?.map((amount) => toIntegerString(amount)),
86
88
  };
87
89
  }
@@ -95,7 +97,7 @@ function mapTimeTriggerCriteria(
95
97
  export function mapServerOrderInfo(
96
98
  info: TriggerServerOrderInfo,
97
99
  ): TriggerOrderInfo {
98
- const { order: serverOrder, status, updated_at } = info;
100
+ const { order: serverOrder, status, updated_at, placed_at } = info;
99
101
  const order: TriggerOrder = {
100
102
  amount: toBigDecimal(serverOrder.order.amount),
101
103
  expiration: Number(serverOrder.order.expiration),
@@ -111,30 +113,51 @@ export function mapServerOrderInfo(
111
113
  order,
112
114
  status: mapTriggerServerOrderStatus(status),
113
115
  updatedAt: updated_at,
116
+ placementTime: placed_at,
114
117
  };
115
118
  }
116
119
 
117
120
  function mapTriggerServerOrderStatus(
118
121
  status: TriggerServerOrderStatus,
119
122
  ): TriggerOrderStatus {
120
- if (status === 'pending') {
123
+ if (status === 'triggering') {
121
124
  return {
122
- type: 'pending',
125
+ type: 'triggering',
126
+ };
127
+ } else if (status === 'waiting_price') {
128
+ return {
129
+ type: 'waiting_price',
130
+ };
131
+ } else if (status === 'waiting_dependency') {
132
+ return {
133
+ type: 'waiting_dependency',
123
134
  };
124
135
  } else if ('cancelled' in status) {
125
136
  return {
126
137
  type: 'cancelled',
127
138
  reason: status.cancelled,
128
139
  };
140
+ } else if ('triggered' in status) {
141
+ return {
142
+ type: 'triggered',
143
+ result: status.triggered,
144
+ };
129
145
  } else if ('internal_error' in status) {
130
146
  return {
131
147
  type: 'internal_error',
132
148
  error: status.internal_error,
133
149
  };
134
- } else if ('triggered' in status) {
150
+ } else if ('twap_executing' in status) {
135
151
  return {
136
- type: 'triggered',
137
- result: status.triggered,
152
+ type: 'twap_executing',
153
+ currentExecution: status.twap_executing.current_execution,
154
+ totalExecutions: status.twap_executing.total_executions,
155
+ };
156
+ } else if ('twap_completed' in status) {
157
+ return {
158
+ type: 'twap_completed',
159
+ executed: status.twap_completed.executed,
160
+ total: status.twap_completed.total,
138
161
  };
139
162
  }
140
163
  throw Error(`Unknown trigger order status: ${JSON.stringify(status)}`);
@@ -226,3 +249,30 @@ function mapServerTimeTriggerCriteria(
226
249
  ),
227
250
  };
228
251
  }
252
+
253
+ export function mapTwapExecutionStatus(
254
+ status: TriggerServerTwapExecutionStatus,
255
+ ): TwapExecutionStatus {
256
+ if (status === 'pending') {
257
+ return {
258
+ type: 'pending',
259
+ };
260
+ } else if ('executed' in status) {
261
+ return {
262
+ type: 'executed',
263
+ executedTime: status.executed.executed_time,
264
+ executeResponse: status.executed.execute_response,
265
+ };
266
+ } else if ('failed' in status) {
267
+ return {
268
+ type: 'failed',
269
+ error: status.failed,
270
+ };
271
+ } else if ('cancelled' in status) {
272
+ return {
273
+ type: 'cancelled',
274
+ reason: status.cancelled,
275
+ };
276
+ }
277
+ throw Error(`Unknown TWAP execution status: ${JSON.stringify(status)}`);
278
+ }
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';