@nadohq/trigger-client 0.1.0-alpha.2 → 0.1.0-alpha.21

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 (69) hide show
  1. package/dist/TriggerClient.cjs +41 -17
  2. package/dist/TriggerClient.cjs.map +1 -1
  3. package/dist/TriggerClient.d.cts +5 -3
  4. package/dist/TriggerClient.d.ts +5 -3
  5. package/dist/TriggerClient.js +39 -10
  6. package/dist/TriggerClient.js.map +1 -1
  7. package/dist/dataMappers.cjs +170 -67
  8. package/dist/dataMappers.cjs.map +1 -1
  9. package/dist/dataMappers.d.cts +22 -8
  10. package/dist/dataMappers.d.ts +22 -8
  11. package/dist/dataMappers.js +171 -66
  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.d.cts +1 -1
  16. package/dist/endpoints.d.ts +1 -1
  17. package/dist/endpoints.js +2 -2
  18. package/dist/endpoints.js.map +1 -1
  19. package/dist/index.cjs +4 -4
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +9 -8
  22. package/dist/index.d.ts +9 -8
  23. package/dist/index.js +2 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/types/TriggerServerFailureError.cjs +1 -1
  26. package/dist/types/TriggerServerFailureError.cjs.map +1 -1
  27. package/dist/types/TriggerServerFailureError.d.cts +3 -2
  28. package/dist/types/TriggerServerFailureError.d.ts +3 -2
  29. package/dist/types/TriggerServerFailureError.js +1 -1
  30. package/dist/types/TriggerServerFailureError.js.map +1 -1
  31. package/dist/types/clientModelTypes.cjs +19 -0
  32. package/dist/types/clientModelTypes.cjs.map +1 -0
  33. package/dist/types/clientModelTypes.d.cts +67 -0
  34. package/dist/types/clientModelTypes.d.ts +67 -0
  35. package/dist/types/clientModelTypes.js +1 -0
  36. package/dist/types/clientModelTypes.js.map +1 -0
  37. package/dist/types/clientTypes.cjs.map +1 -1
  38. package/dist/types/clientTypes.d.cts +42 -24
  39. package/dist/types/clientTypes.d.ts +42 -24
  40. package/dist/types/index.cjs +4 -0
  41. package/dist/types/index.cjs.map +1 -1
  42. package/dist/types/index.d.cts +6 -5
  43. package/dist/types/index.d.ts +6 -5
  44. package/dist/types/index.js +2 -0
  45. package/dist/types/index.js.map +1 -1
  46. package/dist/types/serverExecuteTypes.cjs.map +1 -1
  47. package/dist/types/serverExecuteTypes.d.cts +4 -15
  48. package/dist/types/serverExecuteTypes.d.ts +4 -15
  49. package/dist/types/serverModelTypes.cjs +19 -0
  50. package/dist/types/serverModelTypes.cjs.map +1 -0
  51. package/dist/types/serverModelTypes.d.cts +42 -0
  52. package/dist/types/serverModelTypes.d.ts +42 -0
  53. package/dist/types/serverModelTypes.js +1 -0
  54. package/dist/types/serverModelTypes.js.map +1 -0
  55. package/dist/types/serverQueryTypes.cjs.map +1 -1
  56. package/dist/types/serverQueryTypes.d.cts +48 -7
  57. package/dist/types/serverQueryTypes.d.ts +48 -7
  58. package/package.json +4 -5
  59. package/src/TriggerClient.ts +48 -9
  60. package/src/dataMappers.ts +225 -71
  61. package/src/endpoints.ts +2 -2
  62. package/src/index.ts +2 -2
  63. package/src/types/TriggerServerFailureError.ts +2 -2
  64. package/src/types/clientModelTypes.ts +95 -0
  65. package/src/types/clientTypes.ts +61 -41
  66. package/src/types/index.ts +2 -0
  67. package/src/types/serverExecuteTypes.ts +3 -24
  68. package/src/types/serverModelTypes.ts +55 -0
  69. package/src/types/serverQueryTypes.ts +75 -9
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
- import { TriggerServerQueryFailureResponse } from './serverQueryTypes';
2
1
  import { EngineServerExecuteFailureResult } from '@nadohq/engine-client';
2
+ import { TriggerServerQueryFailureResponse } from './serverQueryTypes';
3
3
 
4
4
  export class TriggerServerFailureError extends Error {
5
5
  constructor(
@@ -7,6 +7,6 @@ export class TriggerServerFailureError extends Error {
7
7
  | TriggerServerQueryFailureResponse
8
8
  | EngineServerExecuteFailureResult,
9
9
  ) {
10
- super();
10
+ super(`${responseData.error_code}: ${responseData.error}`);
11
11
  }
12
12
  }
@@ -0,0 +1,95 @@
1
+ import { EngineServerExecuteResult } from '@nadohq/engine-client';
2
+ import { BigDecimalish } from '@nadohq/shared';
3
+
4
+ /*
5
+ Price trigger
6
+ */
7
+
8
+ export type PriceTriggerRequirementType =
9
+ | 'oracle_price_above'
10
+ | 'oracle_price_below'
11
+ | 'last_price_above'
12
+ | 'last_price_below'
13
+ | 'mid_price_above'
14
+ | 'mid_price_below';
15
+
16
+ export interface PriceTriggerDependency {
17
+ /**
18
+ * Digest of the order that this trigger depends on.
19
+ */
20
+ digest: string;
21
+ /**
22
+ * Whether to trigger on partial fills.
23
+ */
24
+ onPartialFill: boolean;
25
+ }
26
+
27
+ export interface PriceTriggerCriteria {
28
+ type: PriceTriggerRequirementType;
29
+ triggerPrice: BigDecimalish;
30
+ dependency?: PriceTriggerDependency;
31
+ }
32
+
33
+ /*
34
+ Time trigger (for TWAP)
35
+ */
36
+
37
+ export interface TimeTriggerCriteria {
38
+ /**
39
+ * For TWAP: Trigger interval in seconds
40
+ */
41
+ interval: BigDecimalish;
42
+ /**
43
+ * For TWAP: By default, trigger service will split up orders as per total amount / interval
44
+ * If you want to specify the amounts for each interval, you can provide them here.
45
+ */
46
+ amounts?: BigDecimalish[];
47
+ }
48
+
49
+ /**
50
+ * All possible trigger conditions that can be used to place a trigger order.
51
+ */
52
+ export type TriggerCriteria =
53
+ | {
54
+ type: 'price';
55
+ criteria: PriceTriggerCriteria;
56
+ }
57
+ | {
58
+ type: 'time';
59
+ criteria: TimeTriggerCriteria;
60
+ };
61
+
62
+ export type TriggerCriteriaType = TriggerCriteria['type'];
63
+
64
+ export type TriggerOrderStatus =
65
+ | {
66
+ type: 'cancelled';
67
+ reason: string;
68
+ }
69
+ | {
70
+ type: 'triggered';
71
+ result: EngineServerExecuteResult;
72
+ }
73
+ | {
74
+ type: 'internal_error';
75
+ error: string;
76
+ }
77
+ | {
78
+ type: 'triggering';
79
+ }
80
+ | {
81
+ type: 'waiting_price';
82
+ }
83
+ | {
84
+ type: 'waiting_dependency';
85
+ }
86
+ | {
87
+ type: 'twap_executing';
88
+ currentExecution: number;
89
+ totalExecutions: number;
90
+ }
91
+ | {
92
+ type: 'twap_completed';
93
+ executed: number;
94
+ total: number;
95
+ };
@@ -1,49 +1,28 @@
1
1
  import {
2
+ EngineOrderParams,
3
+ EngineServerExecuteResult,
4
+ } from '@nadohq/engine-client';
5
+ import {
6
+ BigDecimal,
2
7
  EIP712CancelOrdersParams,
3
8
  EIP712CancelProductOrdersParams,
9
+ OrderAppendix,
4
10
  Subaccount,
5
- } from '@nadohq/contracts';
11
+ } from '@nadohq/shared';
12
+ import { TriggerCriteria, TriggerOrderStatus } from './clientModelTypes';
6
13
  import {
7
- EngineOrderParams,
8
- EngineServerExecuteResult,
9
- } from '@nadohq/engine-client';
10
- import { BigDecimal, BigDecimalish } from '@nadohq/utils';
11
- import { TriggerServerOrder } from './serverQueryTypes';
14
+ TriggerServerOrder,
15
+ TriggerServerStatusTypeFilter,
16
+ TriggerServerTriggerTypeFilter,
17
+ } from './serverQueryTypes';
12
18
 
13
19
  type WithOptionalNonce<T> = Omit<T, 'nonce'> & { nonce?: string };
14
20
 
15
- export type TriggerCriteriaType =
16
- | 'oracle_price_above'
17
- | 'oracle_price_below'
18
- | 'last_price_above'
19
- | 'last_price_below'
20
- | 'mid_price_above'
21
- | 'mid_price_below';
22
-
23
- export type TriggerCriteria = {
24
- type: TriggerCriteriaType;
25
- triggerPrice: BigDecimalish;
26
- };
27
-
28
- export type TriggerOrderStatus =
29
- | {
30
- type: 'pending';
31
- }
32
- | {
33
- type: 'cancelled';
34
- reason: string;
35
- }
36
- | {
37
- type: 'triggered';
38
- result: EngineServerExecuteResult;
39
- }
40
- | {
41
- type: 'internal_error';
42
- error: string;
43
- };
44
-
45
21
  interface SignatureParams {
46
- // Orderbook address for placement, endpoint address for cancellation & listing
22
+ /**
23
+ * Address derived from productId for placement (see getOrderVerifyingAddr)
24
+ * endpoint address for cancellation & listing
25
+ */
47
26
  verifyingAddr: string;
48
27
  chainId: number;
49
28
  }
@@ -59,6 +38,8 @@ export interface TriggerPlaceOrderParams extends SignatureParams {
59
38
  triggerCriteria: TriggerCriteria;
60
39
  // If not given, engine defaults to true (leverage/borrow enabled)
61
40
  spotLeverage?: boolean;
41
+ // For isolated orders, this specifies whether margin can be borrowed (i.e. whether the cross account can have a negative USDT balance)
42
+ borrowMargin?: boolean;
62
43
  digest?: string;
63
44
  nonce?: string;
64
45
  }
@@ -77,14 +58,18 @@ export interface TriggerListOrdersParams extends Subaccount, SignatureParams {
77
58
  // In millis, defaults to 90s in the future
78
59
  recvTime?: BigDecimal;
79
60
  // If not given, defaults to all products
80
- productId?: number;
81
- // Pending trigger orders only, ignores cancelled & triggered orders
82
- pending: boolean;
61
+ productIds?: number[];
83
62
  // In seconds
84
63
  maxUpdateTimeInclusive?: number;
85
64
  // When provided, the associated trigger orders are returned regardless of other filters
86
65
  digests?: string[];
87
66
  limit?: number;
67
+ // Filter by status types
68
+ statusTypes?: TriggerServerStatusTypeFilter[];
69
+ // Filter by trigger types
70
+ triggerTypes?: TriggerServerTriggerTypeFilter[];
71
+ // Filter by reduce-only orders
72
+ reduceOnly?: boolean;
88
73
  }
89
74
 
90
75
  export interface TriggerOrder {
@@ -92,9 +77,10 @@ export interface TriggerOrder {
92
77
  triggerCriteria: TriggerCriteria;
93
78
  price: BigDecimal;
94
79
  amount: BigDecimal;
95
- expiration: BigDecimal;
80
+ expiration: number;
96
81
  nonce: string;
97
82
  digest: string;
83
+ appendix: OrderAppendix;
98
84
  }
99
85
 
100
86
  export interface TriggerOrderInfo {
@@ -102,8 +88,42 @@ export interface TriggerOrderInfo {
102
88
  serverOrder: TriggerServerOrder;
103
89
  status: TriggerOrderStatus;
104
90
  updatedAt: number;
91
+ placementTime: number;
105
92
  }
106
93
 
107
94
  export interface TriggerListOrdersResponse {
108
95
  orders: TriggerOrderInfo[];
109
96
  }
97
+
98
+ export interface TriggerListTwapExecutionsParams {
99
+ digest: string;
100
+ }
101
+
102
+ export type TwapExecutionStatus =
103
+ | {
104
+ type: 'pending';
105
+ }
106
+ | {
107
+ type: 'executed';
108
+ executedTime: number;
109
+ executeResponse: EngineServerExecuteResult;
110
+ }
111
+ | {
112
+ type: 'failed';
113
+ error: string;
114
+ }
115
+ | {
116
+ type: 'cancelled';
117
+ reason: string;
118
+ };
119
+
120
+ export interface TwapExecutionInfo {
121
+ executionId: number;
122
+ scheduledTime: number;
123
+ status: TwapExecutionStatus;
124
+ updatedAt: number;
125
+ }
126
+
127
+ export interface TriggerListTwapExecutionsResponse {
128
+ executions: TwapExecutionInfo[];
129
+ }
@@ -1,4 +1,6 @@
1
+ export * from './clientModelTypes';
1
2
  export * from './clientTypes';
2
3
  export * from './serverExecuteTypes';
4
+ export * from './serverModelTypes';
3
5
  export * from './serverQueryTypes';
4
6
  export * from './TriggerServerFailureError';
@@ -1,32 +1,10 @@
1
- import { EIP712OrderValues } from '@nadohq/contracts';
2
1
  import {
3
2
  EngineServerExecuteFailureResult,
4
3
  EngineServerExecuteRequestByType,
5
4
  EngineServerExecuteSuccessResult,
6
5
  } from '@nadohq/engine-client';
7
-
8
- export type TriggerServerTriggerCriteria =
9
- // These trigger on fast oracle price
10
- | {
11
- price_above: string;
12
- }
13
- | {
14
- price_below: string;
15
- }
16
- // These trigger on last trade price
17
- | {
18
- last_price_above: string;
19
- }
20
- | {
21
- last_price_below: string;
22
- }
23
- // These trigger on mid-book price
24
- | {
25
- mid_price_above: string;
26
- }
27
- | {
28
- mid_price_below: string;
29
- };
6
+ import { EIP712OrderValues } from '@nadohq/shared';
7
+ import { TriggerServerTriggerCriteria } from './serverModelTypes';
30
8
 
31
9
  export interface TriggerServerPlaceOrderParams {
32
10
  id: number | null;
@@ -37,6 +15,7 @@ export interface TriggerServerPlaceOrderParams {
37
15
  digest: string | null;
38
16
  // Trigger service defaults this to true
39
17
  spot_leverage: boolean | null;
18
+ borrow_margin: boolean | null;
40
19
  }
41
20
 
42
21
  export type TriggerServerCancelOrdersParams =
@@ -0,0 +1,55 @@
1
+ export interface TriggerServerDependency {
2
+ digest: string;
3
+ /**
4
+ * Whether to trigger on partial fills.
5
+ */
6
+ on_partial_fill: boolean;
7
+ }
8
+
9
+ export type TriggerServerPriceRequirement =
10
+ // These trigger on fast oracle price
11
+ | {
12
+ oracle_price_above: string;
13
+ }
14
+ | {
15
+ oracle_price_below: string;
16
+ }
17
+ // These trigger on last trade price
18
+ | {
19
+ last_price_above: string;
20
+ }
21
+ | {
22
+ last_price_below: string;
23
+ }
24
+ // These trigger on mid-book price
25
+ | {
26
+ mid_price_above: string;
27
+ }
28
+ | {
29
+ mid_price_below: string;
30
+ };
31
+
32
+ export interface TriggerServerPriceTriggerCriteria {
33
+ price_requirement: TriggerServerPriceRequirement;
34
+ dependency?: TriggerServerDependency;
35
+ }
36
+
37
+ export interface TriggerServerTimeTriggerCriteria {
38
+ /**
39
+ * Trigger interval in seconds
40
+ */
41
+ interval: number;
42
+ /**
43
+ * By default, trigger service will split up orders as per total amount / interval
44
+ * If you want to specify the amounts for each interval, you can provide them here.
45
+ */
46
+ amounts?: string[];
47
+ }
48
+
49
+ export type TriggerServerTriggerCriteria =
50
+ | {
51
+ price_trigger: TriggerServerPriceTriggerCriteria;
52
+ }
53
+ | {
54
+ time_trigger: TriggerServerTimeTriggerCriteria;
55
+ };
@@ -1,38 +1,68 @@
1
- import { EIP712ListTriggerOrdersValues, SignedTx } from '@nadohq/contracts';
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 =
6
- | 'pending'
7
6
  | {
8
- // Result from sending to engine
9
- triggered: EngineServerExecuteResult;
7
+ cancelled: TriggerServerCancelReason;
10
8
  }
11
9
  | {
12
- // Reason string
13
- cancelled: string;
10
+ triggered: EngineServerExecuteResult;
14
11
  }
15
12
  | {
16
- // Error message
17
13
  internal_error: string;
14
+ }
15
+ | 'triggering'
16
+ | 'waiting_price'
17
+ | 'waiting_dependency'
18
+ | {
19
+ twap_executing: {
20
+ current_execution: number;
21
+ total_executions: number;
22
+ };
23
+ }
24
+ | {
25
+ twap_completed: {
26
+ executed: number;
27
+ total: number;
28
+ };
18
29
  };
19
30
 
20
31
  /**
21
32
  * Request types
22
33
  */
23
34
 
35
+ export type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
36
+
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
+
24
47
  export interface TriggerServerListTriggerOrdersParams
25
48
  extends SignedTx<EIP712ListTriggerOrdersValues> {
26
- pending: boolean;
27
49
  // If not given, defaults to all products
28
- product_id?: number;
50
+ product_ids?: number[];
29
51
  max_update_time?: number;
30
52
  digests?: string[];
31
53
  limit?: number;
54
+ trigger_types?: TriggerServerTriggerTypeFilter[];
55
+ status_types?: TriggerServerStatusTypeFilter[];
56
+ reduce_only?: boolean;
57
+ }
58
+
59
+ export interface TriggerServerListTwapExecutionsParams {
60
+ digest: string;
32
61
  }
33
62
 
34
63
  export interface TriggerServerQueryRequestByType {
35
64
  list_trigger_orders: TriggerServerListTriggerOrdersParams;
65
+ list_twap_executions: TriggerServerListTwapExecutionsParams;
36
66
  }
37
67
 
38
68
  export type TriggerServerQueryRequestType =
@@ -51,14 +81,50 @@ export interface TriggerServerOrderInfo {
51
81
  order: TriggerServerOrder;
52
82
  status: TriggerServerOrderStatus;
53
83
  updated_at: number;
84
+ placed_at: number;
54
85
  }
55
86
 
56
87
  export interface TriggerServerListTriggerOrdersResponse {
57
88
  orders: TriggerServerOrderInfo[];
58
89
  }
59
90
 
91
+ export type TriggerServerCancelReason =
92
+ | 'user_requested'
93
+ | 'linked_signer_changed'
94
+ | 'expired'
95
+ | 'account_health'
96
+ | 'isolated_subaccount_closed'
97
+ | 'dependent_order_cancelled';
98
+
99
+ export type TriggerServerTwapExecutionStatus =
100
+ | 'pending'
101
+ | {
102
+ executed: {
103
+ executed_time: number;
104
+ execute_response: EngineServerExecuteResult;
105
+ };
106
+ }
107
+ | {
108
+ failed: string;
109
+ }
110
+ | {
111
+ cancelled: TriggerServerCancelReason;
112
+ };
113
+
114
+ export interface TriggerServerTwapExecutionInfo {
115
+ execution_id: number;
116
+ scheduled_time: number;
117
+ status: TriggerServerTwapExecutionStatus;
118
+ updated_at: number;
119
+ }
120
+
121
+ export interface TriggerServerTwapExecutionsResponse {
122
+ executions: TriggerServerTwapExecutionInfo[];
123
+ }
124
+
60
125
  export interface TriggerServerQueryResponseByType {
61
126
  list_trigger_orders: TriggerServerListTriggerOrdersResponse;
127
+ list_twap_executions: TriggerServerTwapExecutionsResponse;
62
128
  }
63
129
 
64
130
  export interface TriggerServerQuerySuccessResponse<