@nadohq/trigger-client 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +2 -0
  2. package/dist/TriggerClient.cjs +217 -0
  3. package/dist/TriggerClient.cjs.map +1 -0
  4. package/dist/TriggerClient.d.cts +45 -0
  5. package/dist/TriggerClient.d.ts +45 -0
  6. package/dist/TriggerClient.js +188 -0
  7. package/dist/TriggerClient.js.map +1 -0
  8. package/dist/dataMappers.cjs +134 -0
  9. package/dist/dataMappers.cjs.map +1 -0
  10. package/dist/dataMappers.d.cts +13 -0
  11. package/dist/dataMappers.d.ts +13 -0
  12. package/dist/dataMappers.js +111 -0
  13. package/dist/dataMappers.js.map +1 -0
  14. package/dist/endpoints.cjs +35 -0
  15. package/dist/endpoints.cjs.map +1 -0
  16. package/dist/endpoints.d.cts +5 -0
  17. package/dist/endpoints.d.ts +5 -0
  18. package/dist/endpoints.js +10 -0
  19. package/dist/endpoints.js.map +1 -0
  20. package/dist/index.cjs +29 -0
  21. package/dist/index.cjs.map +1 -0
  22. package/dist/index.d.cts +10 -0
  23. package/dist/index.d.ts +10 -0
  24. package/dist/index.js +5 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/types/TriggerServerFailureError.cjs +36 -0
  27. package/dist/types/TriggerServerFailureError.cjs.map +1 -0
  28. package/dist/types/TriggerServerFailureError.d.cts +11 -0
  29. package/dist/types/TriggerServerFailureError.d.ts +11 -0
  30. package/dist/types/TriggerServerFailureError.js +11 -0
  31. package/dist/types/TriggerServerFailureError.js.map +1 -0
  32. package/dist/types/clientTypes.cjs +19 -0
  33. package/dist/types/clientTypes.cjs.map +1 -0
  34. package/dist/types/clientTypes.d.cts +75 -0
  35. package/dist/types/clientTypes.d.ts +75 -0
  36. package/dist/types/clientTypes.js +1 -0
  37. package/dist/types/clientTypes.js.map +1 -0
  38. package/dist/types/index.cjs +31 -0
  39. package/dist/types/index.cjs.map +1 -0
  40. package/dist/types/index.d.cts +7 -0
  41. package/dist/types/index.d.ts +7 -0
  42. package/dist/types/index.js +6 -0
  43. package/dist/types/index.js.map +1 -0
  44. package/dist/types/serverExecuteTypes.cjs +19 -0
  45. package/dist/types/serverExecuteTypes.cjs.map +1 -0
  46. package/dist/types/serverExecuteTypes.d.cts +37 -0
  47. package/dist/types/serverExecuteTypes.d.ts +37 -0
  48. package/dist/types/serverExecuteTypes.js +1 -0
  49. package/dist/types/serverExecuteTypes.js.map +1 -0
  50. package/dist/types/serverQueryTypes.cjs +19 -0
  51. package/dist/types/serverQueryTypes.cjs.map +1 -0
  52. package/dist/types/serverQueryTypes.d.cts +54 -0
  53. package/dist/types/serverQueryTypes.d.ts +54 -0
  54. package/dist/types/serverQueryTypes.js +1 -0
  55. package/dist/types/serverQueryTypes.js.map +1 -0
  56. package/package.json +53 -0
  57. package/src/TriggerClient.ts +284 -0
  58. package/src/dataMappers.ts +124 -0
  59. package/src/endpoints.ts +7 -0
  60. package/src/index.ts +3 -0
  61. package/src/types/TriggerServerFailureError.ts +12 -0
  62. package/src/types/clientTypes.ts +109 -0
  63. package/src/types/index.ts +4 -0
  64. package/src/types/serverExecuteTypes.ts +63 -0
  65. package/src/types/serverQueryTypes.ts +83 -0
package/README.md ADDED
@@ -0,0 +1,2 @@
1
+ # `@nadohq/trigger-client`
2
+
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/TriggerClient.ts
31
+ var TriggerClient_exports = {};
32
+ __export(TriggerClient_exports, {
33
+ TriggerClient: () => TriggerClient
34
+ });
35
+ module.exports = __toCommonJS(TriggerClient_exports);
36
+ var import_contracts = require("@nadohq/contracts");
37
+ var import_utils = require("@nadohq/utils");
38
+ var import_axios = __toESM(require("axios"), 1);
39
+ var import_dataMappers = require("./dataMappers.cjs");
40
+ var import_TriggerServerFailureError = require("./types/TriggerServerFailureError.cjs");
41
+ var TriggerClient = class {
42
+ constructor(opts) {
43
+ this.opts = opts;
44
+ this.axiosInstance = import_axios.default.create({ withCredentials: true });
45
+ }
46
+ /**
47
+ * Sets the linked signer for requests
48
+ *
49
+ * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer
50
+ */
51
+ setLinkedSigner(linkedSignerWalletClient) {
52
+ this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? void 0;
53
+ }
54
+ /*
55
+ Executes
56
+ */
57
+ async placeTriggerOrder(params) {
58
+ const orderParams = {
59
+ amount: params.order.amount,
60
+ expiration: params.order.expiration,
61
+ price: params.order.price,
62
+ subaccountName: params.order.subaccountName,
63
+ subaccountOwner: params.order.subaccountOwner,
64
+ nonce: params.nonce ?? (0, import_contracts.getTriggerOrderNonce)()
65
+ };
66
+ const signature = await this.sign(
67
+ "place_order",
68
+ params.verifyingAddr,
69
+ params.chainId,
70
+ orderParams
71
+ );
72
+ const executeParams = {
73
+ id: params.id ?? null,
74
+ order: (0, import_contracts.getNadoEIP712Values)("place_order", orderParams),
75
+ trigger: (0, import_dataMappers.mapTriggerCriteria)(params.triggerCriteria),
76
+ signature,
77
+ product_id: params.productId,
78
+ spot_leverage: params.spotLeverage ?? null,
79
+ digest: params.digest ?? null
80
+ };
81
+ return this.execute("place_order", executeParams);
82
+ }
83
+ async cancelTriggerOrders(params) {
84
+ const cancelOrdersParams = {
85
+ digests: params.digests,
86
+ nonce: params.nonce ?? (0, import_contracts.getOrderNonce)(),
87
+ productIds: params.productIds,
88
+ subaccountName: params.subaccountName,
89
+ subaccountOwner: params.subaccountOwner
90
+ };
91
+ const tx = (0, import_contracts.getNadoEIP712Values)("cancel_orders", cancelOrdersParams);
92
+ const executeParams = {
93
+ signature: await this.sign(
94
+ "cancel_orders",
95
+ params.verifyingAddr,
96
+ params.chainId,
97
+ cancelOrdersParams
98
+ ),
99
+ tx
100
+ };
101
+ return this.execute("cancel_orders", executeParams);
102
+ }
103
+ async cancelProductOrders(params) {
104
+ const cancelProductOrdersParams = {
105
+ nonce: params.nonce ?? (0, import_contracts.getOrderNonce)(),
106
+ productIds: params.productIds,
107
+ subaccountName: params.subaccountName,
108
+ subaccountOwner: params.subaccountOwner
109
+ };
110
+ const tx = (0, import_contracts.getNadoEIP712Values)(
111
+ "cancel_product_orders",
112
+ cancelProductOrdersParams
113
+ );
114
+ const executeParams = {
115
+ signature: await this.sign(
116
+ "cancel_product_orders",
117
+ params.verifyingAddr,
118
+ params.chainId,
119
+ cancelProductOrdersParams
120
+ ),
121
+ tx
122
+ };
123
+ return this.execute("cancel_product_orders", executeParams);
124
+ }
125
+ /*
126
+ Queries
127
+ */
128
+ async listOrders(params) {
129
+ const signatureParams = {
130
+ // Default to 90 seconds from now if no recvTime is provided
131
+ recvTime: (0, import_utils.toIntegerString)(params.recvTime ?? (0, import_contracts.getDefaultRecvTime)()),
132
+ subaccountName: params.subaccountName,
133
+ subaccountOwner: params.subaccountOwner
134
+ };
135
+ const tx = (0, import_contracts.getNadoEIP712Values)("list_trigger_orders", signatureParams);
136
+ const signature = await this.sign(
137
+ "list_trigger_orders",
138
+ params.verifyingAddr,
139
+ params.chainId,
140
+ signatureParams
141
+ );
142
+ const queryParams = {
143
+ limit: params.limit,
144
+ max_update_time: params.maxUpdateTimeInclusive,
145
+ pending: params.pending,
146
+ product_id: params.productId,
147
+ digests: params.digests,
148
+ signature,
149
+ tx
150
+ };
151
+ const baseResponse = await this.query("list_trigger_orders", queryParams);
152
+ const orders = baseResponse.orders.map(import_dataMappers.mapServerOrderInfo);
153
+ return {
154
+ orders
155
+ };
156
+ }
157
+ /*
158
+ Base Fns
159
+ */
160
+ async sign(requestType, verifyingContract, chainId, params) {
161
+ const walletClient = this.opts.linkedSignerWalletClient ?? this.opts.walletClient;
162
+ if (walletClient == null) {
163
+ throw new import_utils.WalletNotProvidedError();
164
+ }
165
+ return (0, import_contracts.getSignedTransactionRequest)({
166
+ chainId,
167
+ requestParams: params,
168
+ requestType,
169
+ walletClient,
170
+ verifyingContract
171
+ });
172
+ }
173
+ /**
174
+ * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped
175
+ * in an TriggerServerFailureError on failure.
176
+ *
177
+ * @param requestType
178
+ * @param params
179
+ */
180
+ async execute(requestType, params) {
181
+ const reqBody = {
182
+ [requestType]: params
183
+ };
184
+ const response = await this.axiosInstance.post(`${this.opts.url}/execute`, reqBody);
185
+ this.checkResponseStatus(response);
186
+ this.checkServerStatus(response);
187
+ return response.data;
188
+ }
189
+ async query(requestType, params) {
190
+ const reqBody = {
191
+ type: requestType,
192
+ ...params
193
+ };
194
+ const response = await this.axiosInstance.post(`${this.opts.url}/query`, reqBody);
195
+ this.checkResponseStatus(response);
196
+ this.checkServerStatus(response);
197
+ const successResponse = response;
198
+ return successResponse.data.data;
199
+ }
200
+ checkResponseStatus(response) {
201
+ if (response.status !== 200 || !response.data) {
202
+ throw Error(
203
+ `Unexpected response from server: ${response.status} ${response.statusText}`
204
+ );
205
+ }
206
+ }
207
+ checkServerStatus(response) {
208
+ if (response.data.status !== "success") {
209
+ throw new import_TriggerServerFailureError.TriggerServerFailureError(response.data);
210
+ }
211
+ }
212
+ };
213
+ // Annotate the CommonJS export names for ESM import in node:
214
+ 0 && (module.exports = {
215
+ TriggerClient
216
+ });
217
+ //# sourceMappingURL=TriggerClient.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/TriggerClient.ts"],"sourcesContent":["import {\n EIP712CancelOrdersParams,\n EIP712CancelProductOrdersParams,\n EIP712ListTriggerOrdersParams,\n EIP712OrderParams,\n getDefaultRecvTime,\n getNadoEIP712Values,\n getOrderNonce,\n getSignedTransactionRequest,\n getTriggerOrderNonce,\n SignableRequestType,\n SignableRequestTypeToParams,\n WalletClientWithAccount,\n} from '@nadohq/contracts';\nimport { toIntegerString, WalletNotProvidedError } from '@nadohq/utils';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport { mapServerOrderInfo, mapTriggerCriteria } from './dataMappers';\nimport {\n TriggerCancelOrdersParams,\n TriggerCancelProductOrdersParams,\n TriggerListOrdersParams,\n TriggerListOrdersResponse,\n TriggerOrderInfo,\n TriggerPlaceOrderParams,\n TriggerServerExecuteRequestByType,\n TriggerServerExecuteRequestType,\n TriggerServerExecuteResult,\n TriggerServerExecuteSuccessResult,\n TriggerServerQueryRequestByType,\n TriggerServerQueryRequestType,\n TriggerServerQueryResponse,\n TriggerServerQueryResponseByType,\n TriggerServerQuerySuccessResponse,\n} from './types';\nimport { TriggerServerFailureError } from './types/TriggerServerFailureError';\n\nexport interface TriggerClientOpts {\n // Server URL\n url: string;\n // Wallet client for EIP712 signing\n walletClient?: WalletClientWithAccount;\n // Linked signer registered through the engine, if provided, execute requests will use this signer\n linkedSignerWalletClient?: WalletClientWithAccount;\n}\n\n/**\n * Client for all trigger service requests\n */\nexport class TriggerClient {\n readonly opts: TriggerClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: TriggerClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({ withCredentials: true });\n }\n\n /**\n * Sets the linked signer for requests\n *\n * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer\n */\n public setLinkedSigner(\n linkedSignerWalletClient: WalletClientWithAccount | null,\n ) {\n this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? undefined;\n }\n\n /*\n Executes\n */\n\n async placeTriggerOrder(params: TriggerPlaceOrderParams) {\n const orderParams: EIP712OrderParams = {\n amount: params.order.amount,\n expiration: params.order.expiration,\n price: params.order.price,\n subaccountName: params.order.subaccountName,\n subaccountOwner: params.order.subaccountOwner,\n nonce: params.nonce ?? getTriggerOrderNonce(),\n };\n const signature = await this.sign(\n 'place_order',\n params.verifyingAddr,\n params.chainId,\n orderParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['place_order'] = {\n id: params.id ?? null,\n order: getNadoEIP712Values('place_order', orderParams),\n trigger: mapTriggerCriteria(params.triggerCriteria),\n signature,\n product_id: params.productId,\n spot_leverage: params.spotLeverage ?? null,\n digest: params.digest ?? null,\n };\n\n return this.execute('place_order', executeParams);\n }\n\n async cancelTriggerOrders(params: TriggerCancelOrdersParams) {\n const cancelOrdersParams: EIP712CancelOrdersParams = {\n digests: params.digests,\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values('cancel_orders', cancelOrdersParams);\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_orders'] = {\n signature: await this.sign(\n 'cancel_orders',\n params.verifyingAddr,\n params.chainId,\n cancelOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_orders', executeParams);\n }\n\n async cancelProductOrders(params: TriggerCancelProductOrdersParams) {\n const cancelProductOrdersParams: EIP712CancelProductOrdersParams = {\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values(\n 'cancel_product_orders',\n cancelProductOrdersParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_product_orders'] =\n {\n signature: await this.sign(\n 'cancel_product_orders',\n params.verifyingAddr,\n params.chainId,\n cancelProductOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_product_orders', executeParams);\n }\n\n /*\n Queries\n */\n async listOrders(\n params: TriggerListOrdersParams,\n ): Promise<TriggerListOrdersResponse> {\n const signatureParams: EIP712ListTriggerOrdersParams = {\n // Default to 90 seconds from now if no recvTime is provided\n recvTime: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n\n const tx = getNadoEIP712Values('list_trigger_orders', signatureParams);\n const signature = await this.sign(\n 'list_trigger_orders',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const queryParams: TriggerServerQueryRequestByType['list_trigger_orders'] =\n {\n limit: params.limit,\n max_update_time: params.maxUpdateTimeInclusive,\n pending: params.pending,\n product_id: params.productId,\n digests: params.digests,\n signature,\n tx,\n };\n\n const baseResponse = await this.query('list_trigger_orders', queryParams);\n\n const orders: TriggerOrderInfo[] =\n baseResponse.orders.map(mapServerOrderInfo);\n\n return {\n orders,\n };\n }\n\n /*\n Base Fns\n */\n protected async sign<T extends SignableRequestType>(\n requestType: T,\n verifyingContract: string,\n chainId: number,\n params: SignableRequestTypeToParams[T],\n ) {\n // Use the linked signer if provided, otherwise use the default signer provided to the engine\n const walletClient =\n this.opts.linkedSignerWalletClient ?? this.opts.walletClient;\n\n if (walletClient == null) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\n }\n\n /**\n * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped\n * in an TriggerServerFailureError on failure.\n *\n * @param requestType\n * @param params\n */\n protected async execute<TRequestType extends TriggerServerExecuteRequestType>(\n requestType: TRequestType,\n params: TriggerServerExecuteRequestByType[TRequestType],\n ): Promise<TriggerServerExecuteSuccessResult<TRequestType>> {\n const reqBody = {\n [requestType]: params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerExecuteResult<TRequestType>\n >(`${this.opts.url}/execute`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus catches the failure result and throws the error, so the cast to the success response is acceptable here\n return response.data as TriggerServerExecuteSuccessResult<TRequestType>;\n }\n\n protected async query<TRequestType extends TriggerServerQueryRequestType>(\n requestType: TRequestType,\n params: TriggerServerQueryRequestByType[TRequestType],\n ): Promise<TriggerServerQueryResponseByType[TRequestType]> {\n const reqBody = {\n type: requestType,\n ...params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerQueryResponse<TRequestType>\n >(`${this.opts.url}/query`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus throws on failure responses so the cast to the success response is acceptable here\n const successResponse = response as AxiosResponse<\n TriggerServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n private checkResponseStatus(response: AxiosResponse) {\n if (response.status !== 200 || !response.data) {\n throw Error(\n `Unexpected response from server: ${response.status} ${response.statusText}`,\n );\n }\n }\n\n private checkServerStatus(\n response: AxiosResponse<\n TriggerServerExecuteResult | TriggerServerQueryResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new TriggerServerFailureError(response.data);\n }\n }\n}\n"],"mappings":"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","names":["axios"]}
@@ -0,0 +1,45 @@
1
+ import { WalletClientWithAccount, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/contracts';
2
+ import { AxiosInstance } from 'axios';
3
+ import { TriggerPlaceOrderParams, TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse } from './types/clientTypes.cjs';
4
+ import { TriggerServerExecuteSuccessResult, TriggerServerExecuteRequestType, TriggerServerExecuteRequestByType } from './types/serverExecuteTypes.cjs';
5
+ import { TriggerServerQueryRequestType, TriggerServerQueryRequestByType, TriggerServerQueryResponseByType } from './types/serverQueryTypes.cjs';
6
+ import '@nadohq/engine-client';
7
+ import '@nadohq/utils';
8
+
9
+ interface TriggerClientOpts {
10
+ url: string;
11
+ walletClient?: WalletClientWithAccount;
12
+ linkedSignerWalletClient?: WalletClientWithAccount;
13
+ }
14
+ /**
15
+ * Client for all trigger service requests
16
+ */
17
+ declare class TriggerClient {
18
+ readonly opts: TriggerClientOpts;
19
+ readonly axiosInstance: AxiosInstance;
20
+ constructor(opts: TriggerClientOpts);
21
+ /**
22
+ * Sets the linked signer for requests
23
+ *
24
+ * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer
25
+ */
26
+ setLinkedSigner(linkedSignerWalletClient: WalletClientWithAccount | null): void;
27
+ placeTriggerOrder(params: TriggerPlaceOrderParams): Promise<TriggerServerExecuteSuccessResult<"place_order">>;
28
+ cancelTriggerOrders(params: TriggerCancelOrdersParams): Promise<TriggerServerExecuteSuccessResult<"cancel_orders">>;
29
+ cancelProductOrders(params: TriggerCancelProductOrdersParams): Promise<TriggerServerExecuteSuccessResult<"cancel_product_orders">>;
30
+ listOrders(params: TriggerListOrdersParams): Promise<TriggerListOrdersResponse>;
31
+ protected sign<T extends SignableRequestType>(requestType: T, verifyingContract: string, chainId: number, params: SignableRequestTypeToParams[T]): Promise<`0x${string}`>;
32
+ /**
33
+ * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped
34
+ * in an TriggerServerFailureError on failure.
35
+ *
36
+ * @param requestType
37
+ * @param params
38
+ */
39
+ protected execute<TRequestType extends TriggerServerExecuteRequestType>(requestType: TRequestType, params: TriggerServerExecuteRequestByType[TRequestType]): Promise<TriggerServerExecuteSuccessResult<TRequestType>>;
40
+ protected query<TRequestType extends TriggerServerQueryRequestType>(requestType: TRequestType, params: TriggerServerQueryRequestByType[TRequestType]): Promise<TriggerServerQueryResponseByType[TRequestType]>;
41
+ private checkResponseStatus;
42
+ private checkServerStatus;
43
+ }
44
+
45
+ export { TriggerClient, type TriggerClientOpts };
@@ -0,0 +1,45 @@
1
+ import { WalletClientWithAccount, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/contracts';
2
+ import { AxiosInstance } from 'axios';
3
+ import { TriggerPlaceOrderParams, TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse } from './types/clientTypes.js';
4
+ import { TriggerServerExecuteSuccessResult, TriggerServerExecuteRequestType, TriggerServerExecuteRequestByType } from './types/serverExecuteTypes.js';
5
+ import { TriggerServerQueryRequestType, TriggerServerQueryRequestByType, TriggerServerQueryResponseByType } from './types/serverQueryTypes.js';
6
+ import '@nadohq/engine-client';
7
+ import '@nadohq/utils';
8
+
9
+ interface TriggerClientOpts {
10
+ url: string;
11
+ walletClient?: WalletClientWithAccount;
12
+ linkedSignerWalletClient?: WalletClientWithAccount;
13
+ }
14
+ /**
15
+ * Client for all trigger service requests
16
+ */
17
+ declare class TriggerClient {
18
+ readonly opts: TriggerClientOpts;
19
+ readonly axiosInstance: AxiosInstance;
20
+ constructor(opts: TriggerClientOpts);
21
+ /**
22
+ * Sets the linked signer for requests
23
+ *
24
+ * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer
25
+ */
26
+ setLinkedSigner(linkedSignerWalletClient: WalletClientWithAccount | null): void;
27
+ placeTriggerOrder(params: TriggerPlaceOrderParams): Promise<TriggerServerExecuteSuccessResult<"place_order">>;
28
+ cancelTriggerOrders(params: TriggerCancelOrdersParams): Promise<TriggerServerExecuteSuccessResult<"cancel_orders">>;
29
+ cancelProductOrders(params: TriggerCancelProductOrdersParams): Promise<TriggerServerExecuteSuccessResult<"cancel_product_orders">>;
30
+ listOrders(params: TriggerListOrdersParams): Promise<TriggerListOrdersResponse>;
31
+ protected sign<T extends SignableRequestType>(requestType: T, verifyingContract: string, chainId: number, params: SignableRequestTypeToParams[T]): Promise<`0x${string}`>;
32
+ /**
33
+ * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped
34
+ * in an TriggerServerFailureError on failure.
35
+ *
36
+ * @param requestType
37
+ * @param params
38
+ */
39
+ protected execute<TRequestType extends TriggerServerExecuteRequestType>(requestType: TRequestType, params: TriggerServerExecuteRequestByType[TRequestType]): Promise<TriggerServerExecuteSuccessResult<TRequestType>>;
40
+ protected query<TRequestType extends TriggerServerQueryRequestType>(requestType: TRequestType, params: TriggerServerQueryRequestByType[TRequestType]): Promise<TriggerServerQueryResponseByType[TRequestType]>;
41
+ private checkResponseStatus;
42
+ private checkServerStatus;
43
+ }
44
+
45
+ export { TriggerClient, type TriggerClientOpts };
@@ -0,0 +1,188 @@
1
+ // src/TriggerClient.ts
2
+ import {
3
+ getDefaultRecvTime,
4
+ getNadoEIP712Values,
5
+ getOrderNonce,
6
+ getSignedTransactionRequest,
7
+ getTriggerOrderNonce
8
+ } from "@nadohq/contracts";
9
+ import { toIntegerString, WalletNotProvidedError } from "@nadohq/utils";
10
+ import axios from "axios";
11
+ import { mapServerOrderInfo, mapTriggerCriteria } from "./dataMappers.js";
12
+ import { TriggerServerFailureError } from "./types/TriggerServerFailureError.js";
13
+ var TriggerClient = class {
14
+ constructor(opts) {
15
+ this.opts = opts;
16
+ this.axiosInstance = axios.create({ withCredentials: true });
17
+ }
18
+ /**
19
+ * Sets the linked signer for requests
20
+ *
21
+ * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer
22
+ */
23
+ setLinkedSigner(linkedSignerWalletClient) {
24
+ this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? void 0;
25
+ }
26
+ /*
27
+ Executes
28
+ */
29
+ async placeTriggerOrder(params) {
30
+ const orderParams = {
31
+ amount: params.order.amount,
32
+ expiration: params.order.expiration,
33
+ price: params.order.price,
34
+ subaccountName: params.order.subaccountName,
35
+ subaccountOwner: params.order.subaccountOwner,
36
+ nonce: params.nonce ?? getTriggerOrderNonce()
37
+ };
38
+ const signature = await this.sign(
39
+ "place_order",
40
+ params.verifyingAddr,
41
+ params.chainId,
42
+ orderParams
43
+ );
44
+ const executeParams = {
45
+ id: params.id ?? null,
46
+ order: getNadoEIP712Values("place_order", orderParams),
47
+ trigger: mapTriggerCriteria(params.triggerCriteria),
48
+ signature,
49
+ product_id: params.productId,
50
+ spot_leverage: params.spotLeverage ?? null,
51
+ digest: params.digest ?? null
52
+ };
53
+ return this.execute("place_order", executeParams);
54
+ }
55
+ async cancelTriggerOrders(params) {
56
+ const cancelOrdersParams = {
57
+ digests: params.digests,
58
+ nonce: params.nonce ?? getOrderNonce(),
59
+ productIds: params.productIds,
60
+ subaccountName: params.subaccountName,
61
+ subaccountOwner: params.subaccountOwner
62
+ };
63
+ const tx = getNadoEIP712Values("cancel_orders", cancelOrdersParams);
64
+ const executeParams = {
65
+ signature: await this.sign(
66
+ "cancel_orders",
67
+ params.verifyingAddr,
68
+ params.chainId,
69
+ cancelOrdersParams
70
+ ),
71
+ tx
72
+ };
73
+ return this.execute("cancel_orders", executeParams);
74
+ }
75
+ async cancelProductOrders(params) {
76
+ const cancelProductOrdersParams = {
77
+ nonce: params.nonce ?? getOrderNonce(),
78
+ productIds: params.productIds,
79
+ subaccountName: params.subaccountName,
80
+ subaccountOwner: params.subaccountOwner
81
+ };
82
+ const tx = getNadoEIP712Values(
83
+ "cancel_product_orders",
84
+ cancelProductOrdersParams
85
+ );
86
+ const executeParams = {
87
+ signature: await this.sign(
88
+ "cancel_product_orders",
89
+ params.verifyingAddr,
90
+ params.chainId,
91
+ cancelProductOrdersParams
92
+ ),
93
+ tx
94
+ };
95
+ return this.execute("cancel_product_orders", executeParams);
96
+ }
97
+ /*
98
+ Queries
99
+ */
100
+ async listOrders(params) {
101
+ const signatureParams = {
102
+ // Default to 90 seconds from now if no recvTime is provided
103
+ recvTime: toIntegerString(params.recvTime ?? getDefaultRecvTime()),
104
+ subaccountName: params.subaccountName,
105
+ subaccountOwner: params.subaccountOwner
106
+ };
107
+ const tx = getNadoEIP712Values("list_trigger_orders", signatureParams);
108
+ const signature = await this.sign(
109
+ "list_trigger_orders",
110
+ params.verifyingAddr,
111
+ params.chainId,
112
+ signatureParams
113
+ );
114
+ const queryParams = {
115
+ limit: params.limit,
116
+ max_update_time: params.maxUpdateTimeInclusive,
117
+ pending: params.pending,
118
+ product_id: params.productId,
119
+ digests: params.digests,
120
+ signature,
121
+ tx
122
+ };
123
+ const baseResponse = await this.query("list_trigger_orders", queryParams);
124
+ const orders = baseResponse.orders.map(mapServerOrderInfo);
125
+ return {
126
+ orders
127
+ };
128
+ }
129
+ /*
130
+ Base Fns
131
+ */
132
+ async sign(requestType, verifyingContract, chainId, params) {
133
+ const walletClient = this.opts.linkedSignerWalletClient ?? this.opts.walletClient;
134
+ if (walletClient == null) {
135
+ throw new WalletNotProvidedError();
136
+ }
137
+ return getSignedTransactionRequest({
138
+ chainId,
139
+ requestParams: params,
140
+ requestType,
141
+ walletClient,
142
+ verifyingContract
143
+ });
144
+ }
145
+ /**
146
+ * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped
147
+ * in an TriggerServerFailureError on failure.
148
+ *
149
+ * @param requestType
150
+ * @param params
151
+ */
152
+ async execute(requestType, params) {
153
+ const reqBody = {
154
+ [requestType]: params
155
+ };
156
+ const response = await this.axiosInstance.post(`${this.opts.url}/execute`, reqBody);
157
+ this.checkResponseStatus(response);
158
+ this.checkServerStatus(response);
159
+ return response.data;
160
+ }
161
+ async query(requestType, params) {
162
+ const reqBody = {
163
+ type: requestType,
164
+ ...params
165
+ };
166
+ const response = await this.axiosInstance.post(`${this.opts.url}/query`, reqBody);
167
+ this.checkResponseStatus(response);
168
+ this.checkServerStatus(response);
169
+ const successResponse = response;
170
+ return successResponse.data.data;
171
+ }
172
+ checkResponseStatus(response) {
173
+ if (response.status !== 200 || !response.data) {
174
+ throw Error(
175
+ `Unexpected response from server: ${response.status} ${response.statusText}`
176
+ );
177
+ }
178
+ }
179
+ checkServerStatus(response) {
180
+ if (response.data.status !== "success") {
181
+ throw new TriggerServerFailureError(response.data);
182
+ }
183
+ }
184
+ };
185
+ export {
186
+ TriggerClient
187
+ };
188
+ //# sourceMappingURL=TriggerClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/TriggerClient.ts"],"sourcesContent":["import {\n EIP712CancelOrdersParams,\n EIP712CancelProductOrdersParams,\n EIP712ListTriggerOrdersParams,\n EIP712OrderParams,\n getDefaultRecvTime,\n getNadoEIP712Values,\n getOrderNonce,\n getSignedTransactionRequest,\n getTriggerOrderNonce,\n SignableRequestType,\n SignableRequestTypeToParams,\n WalletClientWithAccount,\n} from '@nadohq/contracts';\nimport { toIntegerString, WalletNotProvidedError } from '@nadohq/utils';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport { mapServerOrderInfo, mapTriggerCriteria } from './dataMappers';\nimport {\n TriggerCancelOrdersParams,\n TriggerCancelProductOrdersParams,\n TriggerListOrdersParams,\n TriggerListOrdersResponse,\n TriggerOrderInfo,\n TriggerPlaceOrderParams,\n TriggerServerExecuteRequestByType,\n TriggerServerExecuteRequestType,\n TriggerServerExecuteResult,\n TriggerServerExecuteSuccessResult,\n TriggerServerQueryRequestByType,\n TriggerServerQueryRequestType,\n TriggerServerQueryResponse,\n TriggerServerQueryResponseByType,\n TriggerServerQuerySuccessResponse,\n} from './types';\nimport { TriggerServerFailureError } from './types/TriggerServerFailureError';\n\nexport interface TriggerClientOpts {\n // Server URL\n url: string;\n // Wallet client for EIP712 signing\n walletClient?: WalletClientWithAccount;\n // Linked signer registered through the engine, if provided, execute requests will use this signer\n linkedSignerWalletClient?: WalletClientWithAccount;\n}\n\n/**\n * Client for all trigger service requests\n */\nexport class TriggerClient {\n readonly opts: TriggerClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: TriggerClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({ withCredentials: true });\n }\n\n /**\n * Sets the linked signer for requests\n *\n * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer\n */\n public setLinkedSigner(\n linkedSignerWalletClient: WalletClientWithAccount | null,\n ) {\n this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? undefined;\n }\n\n /*\n Executes\n */\n\n async placeTriggerOrder(params: TriggerPlaceOrderParams) {\n const orderParams: EIP712OrderParams = {\n amount: params.order.amount,\n expiration: params.order.expiration,\n price: params.order.price,\n subaccountName: params.order.subaccountName,\n subaccountOwner: params.order.subaccountOwner,\n nonce: params.nonce ?? getTriggerOrderNonce(),\n };\n const signature = await this.sign(\n 'place_order',\n params.verifyingAddr,\n params.chainId,\n orderParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['place_order'] = {\n id: params.id ?? null,\n order: getNadoEIP712Values('place_order', orderParams),\n trigger: mapTriggerCriteria(params.triggerCriteria),\n signature,\n product_id: params.productId,\n spot_leverage: params.spotLeverage ?? null,\n digest: params.digest ?? null,\n };\n\n return this.execute('place_order', executeParams);\n }\n\n async cancelTriggerOrders(params: TriggerCancelOrdersParams) {\n const cancelOrdersParams: EIP712CancelOrdersParams = {\n digests: params.digests,\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values('cancel_orders', cancelOrdersParams);\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_orders'] = {\n signature: await this.sign(\n 'cancel_orders',\n params.verifyingAddr,\n params.chainId,\n cancelOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_orders', executeParams);\n }\n\n async cancelProductOrders(params: TriggerCancelProductOrdersParams) {\n const cancelProductOrdersParams: EIP712CancelProductOrdersParams = {\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values(\n 'cancel_product_orders',\n cancelProductOrdersParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_product_orders'] =\n {\n signature: await this.sign(\n 'cancel_product_orders',\n params.verifyingAddr,\n params.chainId,\n cancelProductOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_product_orders', executeParams);\n }\n\n /*\n Queries\n */\n async listOrders(\n params: TriggerListOrdersParams,\n ): Promise<TriggerListOrdersResponse> {\n const signatureParams: EIP712ListTriggerOrdersParams = {\n // Default to 90 seconds from now if no recvTime is provided\n recvTime: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n\n const tx = getNadoEIP712Values('list_trigger_orders', signatureParams);\n const signature = await this.sign(\n 'list_trigger_orders',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const queryParams: TriggerServerQueryRequestByType['list_trigger_orders'] =\n {\n limit: params.limit,\n max_update_time: params.maxUpdateTimeInclusive,\n pending: params.pending,\n product_id: params.productId,\n digests: params.digests,\n signature,\n tx,\n };\n\n const baseResponse = await this.query('list_trigger_orders', queryParams);\n\n const orders: TriggerOrderInfo[] =\n baseResponse.orders.map(mapServerOrderInfo);\n\n return {\n orders,\n };\n }\n\n /*\n Base Fns\n */\n protected async sign<T extends SignableRequestType>(\n requestType: T,\n verifyingContract: string,\n chainId: number,\n params: SignableRequestTypeToParams[T],\n ) {\n // Use the linked signer if provided, otherwise use the default signer provided to the engine\n const walletClient =\n this.opts.linkedSignerWalletClient ?? this.opts.walletClient;\n\n if (walletClient == null) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\n }\n\n /**\n * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped\n * in an TriggerServerFailureError on failure.\n *\n * @param requestType\n * @param params\n */\n protected async execute<TRequestType extends TriggerServerExecuteRequestType>(\n requestType: TRequestType,\n params: TriggerServerExecuteRequestByType[TRequestType],\n ): Promise<TriggerServerExecuteSuccessResult<TRequestType>> {\n const reqBody = {\n [requestType]: params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerExecuteResult<TRequestType>\n >(`${this.opts.url}/execute`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus catches the failure result and throws the error, so the cast to the success response is acceptable here\n return response.data as TriggerServerExecuteSuccessResult<TRequestType>;\n }\n\n protected async query<TRequestType extends TriggerServerQueryRequestType>(\n requestType: TRequestType,\n params: TriggerServerQueryRequestByType[TRequestType],\n ): Promise<TriggerServerQueryResponseByType[TRequestType]> {\n const reqBody = {\n type: requestType,\n ...params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerQueryResponse<TRequestType>\n >(`${this.opts.url}/query`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus throws on failure responses so the cast to the success response is acceptable here\n const successResponse = response as AxiosResponse<\n TriggerServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n private checkResponseStatus(response: AxiosResponse) {\n if (response.status !== 200 || !response.data) {\n throw Error(\n `Unexpected response from server: ${response.status} ${response.statusText}`,\n );\n }\n }\n\n private checkServerStatus(\n response: AxiosResponse<\n TriggerServerExecuteResult | TriggerServerQueryResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new TriggerServerFailureError(response.data);\n }\n }\n}\n"],"mappings":"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","names":[]}