@nadohq/engine-client 0.1.0-alpha.2 → 0.1.0-alpha.20

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 (110) hide show
  1. package/dist/EngineBaseClient.cjs +8 -7
  2. package/dist/EngineBaseClient.cjs.map +1 -1
  3. package/dist/EngineBaseClient.d.cts +2 -3
  4. package/dist/EngineBaseClient.d.ts +2 -3
  5. package/dist/EngineBaseClient.js +7 -5
  6. package/dist/EngineBaseClient.js.map +1 -1
  7. package/dist/EngineClient.d.cts +1 -2
  8. package/dist/EngineClient.d.ts +1 -2
  9. package/dist/EngineExecuteBuilder.cjs +23 -51
  10. package/dist/EngineExecuteBuilder.cjs.map +1 -1
  11. package/dist/EngineExecuteBuilder.d.cts +6 -17
  12. package/dist/EngineExecuteBuilder.d.ts +6 -17
  13. package/dist/EngineExecuteBuilder.js +13 -41
  14. package/dist/EngineExecuteBuilder.js.map +1 -1
  15. package/dist/EngineExecuteClient.cjs +6 -10
  16. package/dist/EngineExecuteClient.cjs.map +1 -1
  17. package/dist/EngineExecuteClient.d.cts +3 -4
  18. package/dist/EngineExecuteClient.d.ts +3 -4
  19. package/dist/EngineExecuteClient.js +6 -10
  20. package/dist/EngineExecuteClient.js.map +1 -1
  21. package/dist/EngineQueryClient.cjs +62 -52
  22. package/dist/EngineQueryClient.cjs.map +1 -1
  23. package/dist/EngineQueryClient.d.cts +12 -11
  24. package/dist/EngineQueryClient.d.ts +12 -11
  25. package/dist/EngineQueryClient.js +41 -30
  26. package/dist/EngineQueryClient.js.map +1 -1
  27. package/dist/EngineWebClient.cjs +0 -2
  28. package/dist/EngineWebClient.cjs.map +1 -1
  29. package/dist/EngineWebClient.d.cts +1 -2
  30. package/dist/EngineWebClient.d.ts +1 -2
  31. package/dist/EngineWebClient.js +0 -2
  32. package/dist/EngineWebClient.js.map +1 -1
  33. package/dist/endpoints.cjs +6 -6
  34. package/dist/endpoints.cjs.map +1 -1
  35. package/dist/endpoints.d.cts +1 -1
  36. package/dist/endpoints.d.ts +1 -1
  37. package/dist/endpoints.js +6 -6
  38. package/dist/endpoints.js.map +1 -1
  39. package/dist/index.cjs +4 -4
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.d.cts +11 -12
  42. package/dist/index.d.ts +11 -12
  43. package/dist/index.js +2 -2
  44. package/dist/index.js.map +1 -1
  45. package/dist/types/EngineServerFailureError.cjs +1 -1
  46. package/dist/types/EngineServerFailureError.cjs.map +1 -1
  47. package/dist/types/EngineServerFailureError.d.cts +2 -2
  48. package/dist/types/EngineServerFailureError.d.ts +2 -2
  49. package/dist/types/EngineServerFailureError.js +1 -1
  50. package/dist/types/EngineServerFailureError.js.map +1 -1
  51. package/dist/types/clientExecuteTypes.cjs.map +1 -1
  52. package/dist/types/clientExecuteTypes.d.cts +4 -12
  53. package/dist/types/clientExecuteTypes.d.ts +4 -12
  54. package/dist/types/clientQueryTypes.cjs.map +1 -1
  55. package/dist/types/clientQueryTypes.d.cts +30 -23
  56. package/dist/types/clientQueryTypes.d.ts +30 -23
  57. package/dist/types/index.cjs +10 -10
  58. package/dist/types/index.cjs.map +1 -1
  59. package/dist/types/index.d.cts +8 -9
  60. package/dist/types/index.d.ts +8 -9
  61. package/dist/types/index.js +5 -5
  62. package/dist/types/index.js.map +1 -1
  63. package/dist/types/serverExecuteTypes.cjs.map +1 -1
  64. package/dist/types/serverExecuteTypes.d.cts +6 -14
  65. package/dist/types/serverExecuteTypes.d.ts +6 -14
  66. package/dist/types/serverQueryModelTypes.cjs.map +1 -1
  67. package/dist/types/serverQueryModelTypes.d.cts +1 -1
  68. package/dist/types/serverQueryModelTypes.d.ts +1 -1
  69. package/dist/types/serverQueryTypes.cjs.map +1 -1
  70. package/dist/types/serverQueryTypes.d.cts +33 -13
  71. package/dist/types/serverQueryTypes.d.ts +33 -13
  72. package/dist/types/serverSubscriptionEventTypes.cjs.map +1 -1
  73. package/dist/types/serverSubscriptionEventTypes.d.cts +87 -23
  74. package/dist/types/serverSubscriptionEventTypes.d.ts +87 -23
  75. package/dist/types/serverSubscriptionTypes.cjs.map +1 -1
  76. package/dist/types/serverSubscriptionTypes.d.cts +21 -4
  77. package/dist/types/serverSubscriptionTypes.d.ts +21 -4
  78. package/dist/utils/index.d.cts +3 -4
  79. package/dist/utils/index.d.ts +3 -4
  80. package/dist/utils/productEngineTypeMappers.cjs +5 -5
  81. package/dist/utils/productEngineTypeMappers.cjs.map +1 -1
  82. package/dist/utils/productEngineTypeMappers.d.cts +1 -1
  83. package/dist/utils/productEngineTypeMappers.d.ts +1 -1
  84. package/dist/utils/productEngineTypeMappers.js +1 -1
  85. package/dist/utils/productEngineTypeMappers.js.map +1 -1
  86. package/dist/utils/queryDataMappers.cjs +99 -90
  87. package/dist/utils/queryDataMappers.cjs.map +1 -1
  88. package/dist/utils/queryDataMappers.d.cts +5 -5
  89. package/dist/utils/queryDataMappers.d.ts +5 -5
  90. package/dist/utils/queryDataMappers.js +26 -19
  91. package/dist/utils/queryDataMappers.js.map +1 -1
  92. package/package.json +3 -4
  93. package/src/EngineBaseClient.ts +5 -3
  94. package/src/EngineExecuteBuilder.ts +14 -54
  95. package/src/EngineExecuteClient.ts +7 -15
  96. package/src/EngineQueryClient.ts +51 -31
  97. package/src/EngineWebClient.ts +0 -2
  98. package/src/endpoints.ts +4 -5
  99. package/src/index.ts +2 -2
  100. package/src/types/EngineServerFailureError.ts +2 -2
  101. package/src/types/clientExecuteTypes.ts +5 -17
  102. package/src/types/clientQueryTypes.ts +44 -32
  103. package/src/types/index.ts +5 -5
  104. package/src/types/serverExecuteTypes.ts +7 -18
  105. package/src/types/serverQueryModelTypes.ts +1 -1
  106. package/src/types/serverQueryTypes.ts +40 -16
  107. package/src/types/serverSubscriptionEventTypes.ts +131 -21
  108. package/src/types/serverSubscriptionTypes.ts +23 -3
  109. package/src/utils/productEngineTypeMappers.ts +1 -1
  110. package/src/utils/queryDataMappers.ts +33 -20
@@ -33,15 +33,16 @@ __export(EngineBaseClient_exports, {
33
33
  EngineBaseClient: () => EngineBaseClient
34
34
  });
35
35
  module.exports = __toCommonJS(EngineBaseClient_exports);
36
- var import_contracts = require("@nadohq/contracts");
37
- var import_utils = require("@nadohq/utils");
36
+ var import_shared = require("@nadohq/shared");
38
37
  var import_axios = __toESM(require("axios"), 1);
39
38
  var import_EngineServerFailureError = require("./types/EngineServerFailureError.cjs");
40
39
  var EngineBaseClient = class {
41
40
  constructor(opts) {
42
41
  this.opts = opts;
43
42
  this.axiosInstance = import_axios.default.create({
44
- withCredentials: true
43
+ withCredentials: true,
44
+ // We have custom logic to validate response status and create an appropriate error
45
+ validateStatus: () => true
45
46
  });
46
47
  }
47
48
  /**
@@ -55,7 +56,7 @@ var EngineBaseClient = class {
55
56
  async getTxNonce(address) {
56
57
  const addr = address ?? this.opts.walletClient?.account.address;
57
58
  if (!addr) {
58
- throw new import_utils.WalletNotProvidedError();
59
+ throw new import_shared.WalletNotProvidedError();
59
60
  }
60
61
  return (await this.getNonces({
61
62
  address: addr
@@ -136,9 +137,9 @@ var EngineBaseClient = class {
136
137
  async sign(requestType, verifyingContract, chainId, params) {
137
138
  const walletClient = this.opts.linkedSignerWalletClient ?? this.opts.walletClient;
138
139
  if (!walletClient) {
139
- throw new import_utils.WalletNotProvidedError();
140
+ throw new import_shared.WalletNotProvidedError();
140
141
  }
141
- return (0, import_contracts.getSignedTransactionRequest)({
142
+ return (0, import_shared.getSignedTransactionRequest)({
142
143
  chainId,
143
144
  requestParams: params,
144
145
  requestType,
@@ -149,7 +150,7 @@ var EngineBaseClient = class {
149
150
  checkResponseStatus(response) {
150
151
  if (response.status !== 200 || !response.data) {
151
152
  throw Error(
152
- `Unexpected response from server: ${response.status} ${response.statusText}`
153
+ `Unexpected response from server: ${response.status} ${response.statusText}. Data: ${response.data}`
153
154
  );
154
155
  }
155
156
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/EngineBaseClient.ts"],"sourcesContent":["import {\n getSignedTransactionRequest,\n SignableRequestType,\n SignableRequestTypeToParams,\n WalletClientWithAccount,\n} from '@nadohq/contracts';\nimport { WalletNotProvidedError } from '@nadohq/utils';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport {\n EngineServerExecuteRequestByType,\n EngineServerExecuteRequestType,\n EngineServerExecuteResult,\n EngineServerExecuteSuccessResult,\n EngineServerQueryRequest,\n EngineServerQueryRequestByType,\n EngineServerQueryRequestType,\n EngineServerQueryResponse,\n EngineServerQueryResponseByType,\n EngineServerQuerySuccessResponse,\n GetEngineNoncesParams,\n GetEngineNoncesResponse,\n} from './types';\nimport { EngineServerFailureError } from './types/EngineServerFailureError';\n\nexport interface EngineClientOpts {\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// Only 1 key can be defined per execute request\ntype EngineExecuteRequestBody = Partial<EngineServerExecuteRequestByType>;\n\ntype EngineQueryRequestResponse<\n T extends EngineServerQueryRequestType = EngineServerQueryRequestType,\n> = EngineServerQueryResponse<T>;\n\n/**\n * Base client for all engine requests\n */\nexport class EngineBaseClient {\n readonly opts: EngineClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: EngineClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\n withCredentials: true,\n });\n }\n\n /**\n * Sets the linked signer for execute 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 public async getTxNonce(address?: string): Promise<string> {\n const addr = address ?? this.opts.walletClient?.account.address;\n\n if (!addr) {\n throw new WalletNotProvidedError();\n }\n\n return (\n await this.getNonces({\n address: addr,\n })\n ).txNonce;\n }\n\n public async getNonces(\n params: GetEngineNoncesParams,\n ): Promise<GetEngineNoncesResponse> {\n const baseResp = await this.query('nonces', params);\n\n return {\n orderNonce: baseResp.order_nonce,\n txNonce: baseResp.tx_nonce,\n };\n }\n\n /**\n * Queries the engine, all query params are stringified into the query string\n *\n * @param requestType\n * @param params\n * @public\n */\n public async query<TRequestType extends EngineServerQueryRequestType>(\n requestType: TRequestType,\n params: EngineServerQueryRequestByType[TRequestType],\n ): Promise<EngineServerQueryResponseByType[TRequestType]> {\n const request = this.getQueryRequest(requestType, params);\n const response = await this.axiosInstance.post<EngineQueryRequestResponse>(\n `${this.opts.url}/query`,\n request,\n );\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 EngineServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n /**\n * A simple, typechecked fn for constructing a query request in the format expected by the server.\n *\n * @param requestType\n * @param params\n */\n public getQueryRequest<TRequestType extends EngineServerQueryRequestType>(\n requestType: TRequestType,\n params: EngineServerQueryRequestByType[TRequestType],\n ): EngineServerQueryRequest<TRequestType> {\n return {\n type: requestType,\n ...params,\n };\n }\n\n /**\n * POSTs an execute message to the engine and returns the successful response. Throws the failure response wrapped\n * in an EngineServerFailureError on failure.\n *\n * @param requestType\n * @param params\n * @public\n */\n public async execute<TRequestType extends EngineServerExecuteRequestType>(\n requestType: TRequestType,\n params: EngineServerExecuteRequestByType[TRequestType],\n ): Promise<EngineServerExecuteSuccessResult<TRequestType>> {\n const reqBody = this.getExecuteRequest(requestType, params);\n const response = await this.axiosInstance.post<\n EngineServerExecuteResult<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 EngineServerExecuteSuccessResult<TRequestType>;\n }\n\n /**\n * A simple, typechecked fn for constructing an execute request in the format expected by the server.\n *\n * @param requestType\n * @param params\n */\n public getExecuteRequest<TRequestType extends EngineServerExecuteRequestType>(\n requestType: TRequestType,\n params: EngineServerExecuteRequestByType[TRequestType],\n ): EngineExecuteRequestBody {\n return {\n [requestType]: params,\n };\n }\n\n /**\n * Signs a given request with the signer provided to the engine\n *\n * @param requestType\n * @param verifyingContract\n * @param chainId\n * @param params\n * @public\n */\n public 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) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\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 EngineServerExecuteResult | EngineQueryRequestResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new EngineServerFailureError(response.data);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKO;AACP,mBAAuC;AACvC,mBAAoD;AAepD,sCAAyC;AAqBlC,IAAM,mBAAN,MAAuB;AAAA,EAI5B,YAAY,MAAwB;AAClC,SAAK,OAAO;AACZ,SAAK,gBAAgB,aAAAA,QAAM,OAAO;AAAA,MAChC,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,gBACL,0BACA;AACA,SAAK,KAAK,2BAA2B,4BAA4B;AAAA,EACnE;AAAA,EAEA,MAAa,WAAW,SAAmC;AACzD,UAAM,OAAO,WAAW,KAAK,KAAK,cAAc,QAAQ;AAExD,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,oCAAuB;AAAA,IACnC;AAEA,YACE,MAAM,KAAK,UAAU;AAAA,MACnB,SAAS;AAAA,IACX,CAAC,GACD;AAAA,EACJ;AAAA,EAEA,MAAa,UACX,QACkC;AAClC,UAAM,WAAW,MAAM,KAAK,MAAM,UAAU,MAAM;AAElD,WAAO;AAAA,MACL,YAAY,SAAS;AAAA,MACrB,SAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,MACX,aACA,QACwD;AACxD,UAAM,UAAU,KAAK,gBAAgB,aAAa,MAAM;AACxD,UAAM,WAAW,MAAM,KAAK,cAAc;AAAA,MACxC,GAAG,KAAK,KAAK,GAAG;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,UAAM,kBAAkB;AAIxB,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,gBACL,aACA,QACwC;AACxC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAG;AAAA,IACL;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,QACX,aACA,QACyD;AACzD,UAAM,UAAU,KAAK,kBAAkB,aAAa,MAAM;AAC1D,UAAM,WAAW,MAAM,KAAK,cAAc,KAExC,GAAG,KAAK,KAAK,GAAG,YAAY,OAAO;AAErC,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,kBACL,aACA,QAC0B;AAC1B,WAAO;AAAA,MACL,CAAC,WAAW,GAAG;AAAA,IACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,KACX,aACA,mBACA,SACA,QACA;AAEA,UAAM,eACJ,KAAK,KAAK,4BAA4B,KAAK,KAAK;AAElD,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,oCAAuB;AAAA,IACnC;AAEA,eAAO,8CAA4B;AAAA,MACjC;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,UAAyB;AACnD,QAAI,SAAS,WAAW,OAAO,CAAC,SAAS,MAAM;AAC7C,YAAM;AAAA,QACJ,oCAAoC,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,kBACN,UAGA;AACA,QAAI,SAAS,KAAK,WAAW,WAAW;AACtC,YAAM,IAAI,yDAAyB,SAAS,IAAI;AAAA,IAClD;AAAA,EACF;AACF;","names":["axios"]}
1
+ {"version":3,"sources":["../src/EngineBaseClient.ts"],"sourcesContent":["import {\n getSignedTransactionRequest,\n SignableRequestType,\n SignableRequestTypeToParams,\n WalletClientWithAccount,\n WalletNotProvidedError,\n} from '@nadohq/shared';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport {\n EngineServerExecuteRequestByType,\n EngineServerExecuteRequestType,\n EngineServerExecuteResult,\n EngineServerExecuteSuccessResult,\n EngineServerQueryRequest,\n EngineServerQueryRequestByType,\n EngineServerQueryRequestType,\n EngineServerQueryResponse,\n EngineServerQueryResponseByType,\n EngineServerQuerySuccessResponse,\n GetEngineNoncesParams,\n GetEngineNoncesResponse,\n} from './types';\nimport { EngineServerFailureError } from './types/EngineServerFailureError';\n\nexport interface EngineClientOpts {\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// Only 1 key can be defined per execute request\ntype EngineExecuteRequestBody = Partial<EngineServerExecuteRequestByType>;\n\ntype EngineQueryRequestResponse<\n T extends EngineServerQueryRequestType = EngineServerQueryRequestType,\n> = EngineServerQueryResponse<T>;\n\n/**\n * Base client for all engine requests\n */\nexport class EngineBaseClient {\n readonly opts: EngineClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: EngineClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\n withCredentials: true,\n // We have custom logic to validate response status and create an appropriate error\n validateStatus: () => true,\n });\n }\n\n /**\n * Sets the linked signer for execute 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 public async getTxNonce(address?: string): Promise<string> {\n const addr = address ?? this.opts.walletClient?.account.address;\n\n if (!addr) {\n throw new WalletNotProvidedError();\n }\n\n return (\n await this.getNonces({\n address: addr,\n })\n ).txNonce;\n }\n\n public async getNonces(\n params: GetEngineNoncesParams,\n ): Promise<GetEngineNoncesResponse> {\n const baseResp = await this.query('nonces', params);\n\n return {\n orderNonce: baseResp.order_nonce,\n txNonce: baseResp.tx_nonce,\n };\n }\n\n /**\n * Queries the engine, all query params are stringified into the query string\n *\n * @param requestType\n * @param params\n * @public\n */\n public async query<TRequestType extends EngineServerQueryRequestType>(\n requestType: TRequestType,\n params: EngineServerQueryRequestByType[TRequestType],\n ): Promise<EngineServerQueryResponseByType[TRequestType]> {\n const request = this.getQueryRequest(requestType, params);\n const response = await this.axiosInstance.post<EngineQueryRequestResponse>(\n `${this.opts.url}/query`,\n request,\n );\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 EngineServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n /**\n * A simple, typechecked fn for constructing a query request in the format expected by the server.\n *\n * @param requestType\n * @param params\n */\n public getQueryRequest<TRequestType extends EngineServerQueryRequestType>(\n requestType: TRequestType,\n params: EngineServerQueryRequestByType[TRequestType],\n ): EngineServerQueryRequest<TRequestType> {\n return {\n type: requestType,\n ...params,\n };\n }\n\n /**\n * POSTs an execute message to the engine and returns the successful response. Throws the failure response wrapped\n * in an EngineServerFailureError on failure.\n *\n * @param requestType\n * @param params\n * @public\n */\n public async execute<TRequestType extends EngineServerExecuteRequestType>(\n requestType: TRequestType,\n params: EngineServerExecuteRequestByType[TRequestType],\n ): Promise<EngineServerExecuteSuccessResult<TRequestType>> {\n const reqBody = this.getExecuteRequest(requestType, params);\n const response = await this.axiosInstance.post<\n EngineServerExecuteResult<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 EngineServerExecuteSuccessResult<TRequestType>;\n }\n\n /**\n * A simple, typechecked fn for constructing an execute request in the format expected by the server.\n *\n * @param requestType\n * @param params\n */\n public getExecuteRequest<TRequestType extends EngineServerExecuteRequestType>(\n requestType: TRequestType,\n params: EngineServerExecuteRequestByType[TRequestType],\n ): EngineExecuteRequestBody {\n return {\n [requestType]: params,\n };\n }\n\n /**\n * Signs a given request with the signer provided to the engine\n *\n * @param requestType\n * @param verifyingContract\n * @param chainId\n * @param params\n * @public\n */\n public 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) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\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}. Data: ${response.data}`,\n );\n }\n }\n\n private checkServerStatus(\n response: AxiosResponse<\n EngineServerExecuteResult | EngineQueryRequestResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new EngineServerFailureError(response.data);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMO;AACP,mBAAoD;AAepD,sCAAyC;AAqBlC,IAAM,mBAAN,MAAuB;AAAA,EAI5B,YAAY,MAAwB;AAClC,SAAK,OAAO;AACZ,SAAK,gBAAgB,aAAAA,QAAM,OAAO;AAAA,MAChC,iBAAiB;AAAA;AAAA,MAEjB,gBAAgB,MAAM;AAAA,IACxB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,gBACL,0BACA;AACA,SAAK,KAAK,2BAA2B,4BAA4B;AAAA,EACnE;AAAA,EAEA,MAAa,WAAW,SAAmC;AACzD,UAAM,OAAO,WAAW,KAAK,KAAK,cAAc,QAAQ;AAExD,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,qCAAuB;AAAA,IACnC;AAEA,YACE,MAAM,KAAK,UAAU;AAAA,MACnB,SAAS;AAAA,IACX,CAAC,GACD;AAAA,EACJ;AAAA,EAEA,MAAa,UACX,QACkC;AAClC,UAAM,WAAW,MAAM,KAAK,MAAM,UAAU,MAAM;AAElD,WAAO;AAAA,MACL,YAAY,SAAS;AAAA,MACrB,SAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,MACX,aACA,QACwD;AACxD,UAAM,UAAU,KAAK,gBAAgB,aAAa,MAAM;AACxD,UAAM,WAAW,MAAM,KAAK,cAAc;AAAA,MACxC,GAAG,KAAK,KAAK,GAAG;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,UAAM,kBAAkB;AAIxB,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,gBACL,aACA,QACwC;AACxC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAG;AAAA,IACL;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,QACX,aACA,QACyD;AACzD,UAAM,UAAU,KAAK,kBAAkB,aAAa,MAAM;AAC1D,UAAM,WAAW,MAAM,KAAK,cAAc,KAExC,GAAG,KAAK,KAAK,GAAG,YAAY,OAAO;AAErC,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,kBACL,aACA,QAC0B;AAC1B,WAAO;AAAA,MACL,CAAC,WAAW,GAAG;AAAA,IACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,KACX,aACA,mBACA,SACA,QACA;AAEA,UAAM,eACJ,KAAK,KAAK,4BAA4B,KAAK,KAAK;AAElD,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,qCAAuB;AAAA,IACnC;AAEA,eAAO,2CAA4B;AAAA,MACjC;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,UAAyB;AACnD,QAAI,SAAS,WAAW,OAAO,CAAC,SAAS,MAAM;AAC7C,YAAM;AAAA,QACJ,oCAAoC,SAAS,MAAM,IAAI,SAAS,UAAU,WAAW,SAAS,IAAI;AAAA,MACpG;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,kBACN,UAGA;AACA,QAAI,SAAS,KAAK,WAAW,WAAW;AACtC,YAAM,IAAI,yDAAyB,SAAS,IAAI;AAAA,IAClD;AAAA,EACF;AACF;","names":["axios"]}
@@ -1,9 +1,8 @@
1
- import { WalletClientWithAccount, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/contracts';
1
+ import { WalletClientWithAccount, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/shared';
2
2
  import { AxiosInstance } from 'axios';
3
- import { GetEngineNoncesParams, GetEngineNoncesResponse } from './types/clientQueryTypes.cjs';
4
3
  import { EngineServerExecuteRequestType, EngineServerExecuteRequestByType, EngineServerExecuteSuccessResult } from './types/serverExecuteTypes.cjs';
4
+ import { GetEngineNoncesParams, GetEngineNoncesResponse } from './types/clientQueryTypes.cjs';
5
5
  import { EngineServerQueryRequestType, EngineServerQueryRequestByType, EngineServerQueryResponseByType, EngineServerQueryRequest } from './types/serverQueryTypes.cjs';
6
- import '@nadohq/utils';
7
6
  import './types/serverQueryModelTypes.cjs';
8
7
 
9
8
  interface EngineClientOpts {
@@ -1,9 +1,8 @@
1
- import { WalletClientWithAccount, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/contracts';
1
+ import { WalletClientWithAccount, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/shared';
2
2
  import { AxiosInstance } from 'axios';
3
- import { GetEngineNoncesParams, GetEngineNoncesResponse } from './types/clientQueryTypes.js';
4
3
  import { EngineServerExecuteRequestType, EngineServerExecuteRequestByType, EngineServerExecuteSuccessResult } from './types/serverExecuteTypes.js';
4
+ import { GetEngineNoncesParams, GetEngineNoncesResponse } from './types/clientQueryTypes.js';
5
5
  import { EngineServerQueryRequestType, EngineServerQueryRequestByType, EngineServerQueryResponseByType, EngineServerQueryRequest } from './types/serverQueryTypes.js';
6
- import '@nadohq/utils';
7
6
  import './types/serverQueryModelTypes.js';
8
7
 
9
8
  interface EngineClientOpts {
@@ -1,15 +1,17 @@
1
1
  // src/EngineBaseClient.ts
2
2
  import {
3
- getSignedTransactionRequest
4
- } from "@nadohq/contracts";
5
- import { WalletNotProvidedError } from "@nadohq/utils";
3
+ getSignedTransactionRequest,
4
+ WalletNotProvidedError
5
+ } from "@nadohq/shared";
6
6
  import axios from "axios";
7
7
  import { EngineServerFailureError } from "./types/EngineServerFailureError.js";
8
8
  var EngineBaseClient = class {
9
9
  constructor(opts) {
10
10
  this.opts = opts;
11
11
  this.axiosInstance = axios.create({
12
- withCredentials: true
12
+ withCredentials: true,
13
+ // We have custom logic to validate response status and create an appropriate error
14
+ validateStatus: () => true
13
15
  });
14
16
  }
15
17
  /**
@@ -117,7 +119,7 @@ var EngineBaseClient = class {
117
119
  checkResponseStatus(response) {
118
120
  if (response.status !== 200 || !response.data) {
119
121
  throw Error(
120
- `Unexpected response from server: ${response.status} ${response.statusText}`
122
+ `Unexpected response from server: ${response.status} ${response.statusText}. Data: ${response.data}`
121
123
  );
122
124
  }
123
125
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/EngineBaseClient.ts"],"sourcesContent":["import {\n getSignedTransactionRequest,\n SignableRequestType,\n SignableRequestTypeToParams,\n WalletClientWithAccount,\n} from '@nadohq/contracts';\nimport { WalletNotProvidedError } from '@nadohq/utils';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport {\n EngineServerExecuteRequestByType,\n EngineServerExecuteRequestType,\n EngineServerExecuteResult,\n EngineServerExecuteSuccessResult,\n EngineServerQueryRequest,\n EngineServerQueryRequestByType,\n EngineServerQueryRequestType,\n EngineServerQueryResponse,\n EngineServerQueryResponseByType,\n EngineServerQuerySuccessResponse,\n GetEngineNoncesParams,\n GetEngineNoncesResponse,\n} from './types';\nimport { EngineServerFailureError } from './types/EngineServerFailureError';\n\nexport interface EngineClientOpts {\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// Only 1 key can be defined per execute request\ntype EngineExecuteRequestBody = Partial<EngineServerExecuteRequestByType>;\n\ntype EngineQueryRequestResponse<\n T extends EngineServerQueryRequestType = EngineServerQueryRequestType,\n> = EngineServerQueryResponse<T>;\n\n/**\n * Base client for all engine requests\n */\nexport class EngineBaseClient {\n readonly opts: EngineClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: EngineClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\n withCredentials: true,\n });\n }\n\n /**\n * Sets the linked signer for execute 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 public async getTxNonce(address?: string): Promise<string> {\n const addr = address ?? this.opts.walletClient?.account.address;\n\n if (!addr) {\n throw new WalletNotProvidedError();\n }\n\n return (\n await this.getNonces({\n address: addr,\n })\n ).txNonce;\n }\n\n public async getNonces(\n params: GetEngineNoncesParams,\n ): Promise<GetEngineNoncesResponse> {\n const baseResp = await this.query('nonces', params);\n\n return {\n orderNonce: baseResp.order_nonce,\n txNonce: baseResp.tx_nonce,\n };\n }\n\n /**\n * Queries the engine, all query params are stringified into the query string\n *\n * @param requestType\n * @param params\n * @public\n */\n public async query<TRequestType extends EngineServerQueryRequestType>(\n requestType: TRequestType,\n params: EngineServerQueryRequestByType[TRequestType],\n ): Promise<EngineServerQueryResponseByType[TRequestType]> {\n const request = this.getQueryRequest(requestType, params);\n const response = await this.axiosInstance.post<EngineQueryRequestResponse>(\n `${this.opts.url}/query`,\n request,\n );\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 EngineServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n /**\n * A simple, typechecked fn for constructing a query request in the format expected by the server.\n *\n * @param requestType\n * @param params\n */\n public getQueryRequest<TRequestType extends EngineServerQueryRequestType>(\n requestType: TRequestType,\n params: EngineServerQueryRequestByType[TRequestType],\n ): EngineServerQueryRequest<TRequestType> {\n return {\n type: requestType,\n ...params,\n };\n }\n\n /**\n * POSTs an execute message to the engine and returns the successful response. Throws the failure response wrapped\n * in an EngineServerFailureError on failure.\n *\n * @param requestType\n * @param params\n * @public\n */\n public async execute<TRequestType extends EngineServerExecuteRequestType>(\n requestType: TRequestType,\n params: EngineServerExecuteRequestByType[TRequestType],\n ): Promise<EngineServerExecuteSuccessResult<TRequestType>> {\n const reqBody = this.getExecuteRequest(requestType, params);\n const response = await this.axiosInstance.post<\n EngineServerExecuteResult<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 EngineServerExecuteSuccessResult<TRequestType>;\n }\n\n /**\n * A simple, typechecked fn for constructing an execute request in the format expected by the server.\n *\n * @param requestType\n * @param params\n */\n public getExecuteRequest<TRequestType extends EngineServerExecuteRequestType>(\n requestType: TRequestType,\n params: EngineServerExecuteRequestByType[TRequestType],\n ): EngineExecuteRequestBody {\n return {\n [requestType]: params,\n };\n }\n\n /**\n * Signs a given request with the signer provided to the engine\n *\n * @param requestType\n * @param verifyingContract\n * @param chainId\n * @param params\n * @public\n */\n public 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) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\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 EngineServerExecuteResult | EngineQueryRequestResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new EngineServerFailureError(response.data);\n }\n }\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,OAIK;AACP,SAAS,8BAA8B;AACvC,OAAO,WAA6C;AAepD,SAAS,gCAAgC;AAqBlC,IAAM,mBAAN,MAAuB;AAAA,EAI5B,YAAY,MAAwB;AAClC,SAAK,OAAO;AACZ,SAAK,gBAAgB,MAAM,OAAO;AAAA,MAChC,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,gBACL,0BACA;AACA,SAAK,KAAK,2BAA2B,4BAA4B;AAAA,EACnE;AAAA,EAEA,MAAa,WAAW,SAAmC;AACzD,UAAM,OAAO,WAAW,KAAK,KAAK,cAAc,QAAQ;AAExD,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,uBAAuB;AAAA,IACnC;AAEA,YACE,MAAM,KAAK,UAAU;AAAA,MACnB,SAAS;AAAA,IACX,CAAC,GACD;AAAA,EACJ;AAAA,EAEA,MAAa,UACX,QACkC;AAClC,UAAM,WAAW,MAAM,KAAK,MAAM,UAAU,MAAM;AAElD,WAAO;AAAA,MACL,YAAY,SAAS;AAAA,MACrB,SAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,MACX,aACA,QACwD;AACxD,UAAM,UAAU,KAAK,gBAAgB,aAAa,MAAM;AACxD,UAAM,WAAW,MAAM,KAAK,cAAc;AAAA,MACxC,GAAG,KAAK,KAAK,GAAG;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,UAAM,kBAAkB;AAIxB,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,gBACL,aACA,QACwC;AACxC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAG;AAAA,IACL;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,QACX,aACA,QACyD;AACzD,UAAM,UAAU,KAAK,kBAAkB,aAAa,MAAM;AAC1D,UAAM,WAAW,MAAM,KAAK,cAAc,KAExC,GAAG,KAAK,KAAK,GAAG,YAAY,OAAO;AAErC,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,kBACL,aACA,QAC0B;AAC1B,WAAO;AAAA,MACL,CAAC,WAAW,GAAG;AAAA,IACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,KACX,aACA,mBACA,SACA,QACA;AAEA,UAAM,eACJ,KAAK,KAAK,4BAA4B,KAAK,KAAK;AAElD,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,uBAAuB;AAAA,IACnC;AAEA,WAAO,4BAA4B;AAAA,MACjC;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,UAAyB;AACnD,QAAI,SAAS,WAAW,OAAO,CAAC,SAAS,MAAM;AAC7C,YAAM;AAAA,QACJ,oCAAoC,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,MAC5E;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,kBACN,UAGA;AACA,QAAI,SAAS,KAAK,WAAW,WAAW;AACtC,YAAM,IAAI,yBAAyB,SAAS,IAAI;AAAA,IAClD;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/EngineBaseClient.ts"],"sourcesContent":["import {\n getSignedTransactionRequest,\n SignableRequestType,\n SignableRequestTypeToParams,\n WalletClientWithAccount,\n WalletNotProvidedError,\n} from '@nadohq/shared';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport {\n EngineServerExecuteRequestByType,\n EngineServerExecuteRequestType,\n EngineServerExecuteResult,\n EngineServerExecuteSuccessResult,\n EngineServerQueryRequest,\n EngineServerQueryRequestByType,\n EngineServerQueryRequestType,\n EngineServerQueryResponse,\n EngineServerQueryResponseByType,\n EngineServerQuerySuccessResponse,\n GetEngineNoncesParams,\n GetEngineNoncesResponse,\n} from './types';\nimport { EngineServerFailureError } from './types/EngineServerFailureError';\n\nexport interface EngineClientOpts {\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// Only 1 key can be defined per execute request\ntype EngineExecuteRequestBody = Partial<EngineServerExecuteRequestByType>;\n\ntype EngineQueryRequestResponse<\n T extends EngineServerQueryRequestType = EngineServerQueryRequestType,\n> = EngineServerQueryResponse<T>;\n\n/**\n * Base client for all engine requests\n */\nexport class EngineBaseClient {\n readonly opts: EngineClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: EngineClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\n withCredentials: true,\n // We have custom logic to validate response status and create an appropriate error\n validateStatus: () => true,\n });\n }\n\n /**\n * Sets the linked signer for execute 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 public async getTxNonce(address?: string): Promise<string> {\n const addr = address ?? this.opts.walletClient?.account.address;\n\n if (!addr) {\n throw new WalletNotProvidedError();\n }\n\n return (\n await this.getNonces({\n address: addr,\n })\n ).txNonce;\n }\n\n public async getNonces(\n params: GetEngineNoncesParams,\n ): Promise<GetEngineNoncesResponse> {\n const baseResp = await this.query('nonces', params);\n\n return {\n orderNonce: baseResp.order_nonce,\n txNonce: baseResp.tx_nonce,\n };\n }\n\n /**\n * Queries the engine, all query params are stringified into the query string\n *\n * @param requestType\n * @param params\n * @public\n */\n public async query<TRequestType extends EngineServerQueryRequestType>(\n requestType: TRequestType,\n params: EngineServerQueryRequestByType[TRequestType],\n ): Promise<EngineServerQueryResponseByType[TRequestType]> {\n const request = this.getQueryRequest(requestType, params);\n const response = await this.axiosInstance.post<EngineQueryRequestResponse>(\n `${this.opts.url}/query`,\n request,\n );\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 EngineServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n /**\n * A simple, typechecked fn for constructing a query request in the format expected by the server.\n *\n * @param requestType\n * @param params\n */\n public getQueryRequest<TRequestType extends EngineServerQueryRequestType>(\n requestType: TRequestType,\n params: EngineServerQueryRequestByType[TRequestType],\n ): EngineServerQueryRequest<TRequestType> {\n return {\n type: requestType,\n ...params,\n };\n }\n\n /**\n * POSTs an execute message to the engine and returns the successful response. Throws the failure response wrapped\n * in an EngineServerFailureError on failure.\n *\n * @param requestType\n * @param params\n * @public\n */\n public async execute<TRequestType extends EngineServerExecuteRequestType>(\n requestType: TRequestType,\n params: EngineServerExecuteRequestByType[TRequestType],\n ): Promise<EngineServerExecuteSuccessResult<TRequestType>> {\n const reqBody = this.getExecuteRequest(requestType, params);\n const response = await this.axiosInstance.post<\n EngineServerExecuteResult<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 EngineServerExecuteSuccessResult<TRequestType>;\n }\n\n /**\n * A simple, typechecked fn for constructing an execute request in the format expected by the server.\n *\n * @param requestType\n * @param params\n */\n public getExecuteRequest<TRequestType extends EngineServerExecuteRequestType>(\n requestType: TRequestType,\n params: EngineServerExecuteRequestByType[TRequestType],\n ): EngineExecuteRequestBody {\n return {\n [requestType]: params,\n };\n }\n\n /**\n * Signs a given request with the signer provided to the engine\n *\n * @param requestType\n * @param verifyingContract\n * @param chainId\n * @param params\n * @public\n */\n public 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) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\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}. Data: ${response.data}`,\n );\n }\n }\n\n private checkServerStatus(\n response: AxiosResponse<\n EngineServerExecuteResult | EngineQueryRequestResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new EngineServerFailureError(response.data);\n }\n }\n}\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EAIA;AAAA,OACK;AACP,OAAO,WAA6C;AAepD,SAAS,gCAAgC;AAqBlC,IAAM,mBAAN,MAAuB;AAAA,EAI5B,YAAY,MAAwB;AAClC,SAAK,OAAO;AACZ,SAAK,gBAAgB,MAAM,OAAO;AAAA,MAChC,iBAAiB;AAAA;AAAA,MAEjB,gBAAgB,MAAM;AAAA,IACxB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOO,gBACL,0BACA;AACA,SAAK,KAAK,2BAA2B,4BAA4B;AAAA,EACnE;AAAA,EAEA,MAAa,WAAW,SAAmC;AACzD,UAAM,OAAO,WAAW,KAAK,KAAK,cAAc,QAAQ;AAExD,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,uBAAuB;AAAA,IACnC;AAEA,YACE,MAAM,KAAK,UAAU;AAAA,MACnB,SAAS;AAAA,IACX,CAAC,GACD;AAAA,EACJ;AAAA,EAEA,MAAa,UACX,QACkC;AAClC,UAAM,WAAW,MAAM,KAAK,MAAM,UAAU,MAAM;AAElD,WAAO;AAAA,MACL,YAAY,SAAS;AAAA,MACrB,SAAS,SAAS;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,MACX,aACA,QACwD;AACxD,UAAM,UAAU,KAAK,gBAAgB,aAAa,MAAM;AACxD,UAAM,WAAW,MAAM,KAAK,cAAc;AAAA,MACxC,GAAG,KAAK,KAAK,GAAG;AAAA,MAChB;AAAA,IACF;AAEA,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,UAAM,kBAAkB;AAIxB,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,gBACL,aACA,QACwC;AACxC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,GAAG;AAAA,IACL;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,QACX,aACA,QACyD;AACzD,UAAM,UAAU,KAAK,kBAAkB,aAAa,MAAM;AAC1D,UAAM,WAAW,MAAM,KAAK,cAAc,KAExC,GAAG,KAAK,KAAK,GAAG,YAAY,OAAO;AAErC,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQO,kBACL,aACA,QAC0B;AAC1B,WAAO;AAAA,MACL,CAAC,WAAW,GAAG;AAAA,IACjB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAa,KACX,aACA,mBACA,SACA,QACA;AAEA,UAAM,eACJ,KAAK,KAAK,4BAA4B,KAAK,KAAK;AAElD,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,uBAAuB;AAAA,IACnC;AAEA,WAAO,4BAA4B;AAAA,MACjC;AAAA,MACA,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,oBAAoB,UAAyB;AACnD,QAAI,SAAS,WAAW,OAAO,CAAC,SAAS,MAAM;AAC7C,YAAM;AAAA,QACJ,oCAAoC,SAAS,MAAM,IAAI,SAAS,UAAU,WAAW,SAAS,IAAI;AAAA,MACpG;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,kBACN,UAGA;AACA,QAAI,SAAS,KAAK,WAAW,WAAW;AACtC,YAAM,IAAI,yBAAyB,SAAS,IAAI;AAAA,IAClD;AAAA,EACF;AACF;","names":[]}
@@ -3,14 +3,13 @@ import { EngineExecuteClient } from './EngineExecuteClient.cjs';
3
3
  import { EngineQueryClient } from './EngineQueryClient.cjs';
4
4
  import { EngineWebClient } from './EngineWebClient.cjs';
5
5
  import './types/clientExecuteTypes.cjs';
6
- import '@nadohq/contracts';
6
+ import '@nadohq/shared';
7
7
  import './types/serverExecuteTypes.cjs';
8
8
  import './types/serverQueryTypes.cjs';
9
9
  import './types/serverQueryModelTypes.cjs';
10
10
  import './EngineBaseClient.cjs';
11
11
  import 'axios';
12
12
  import './types/clientQueryTypes.cjs';
13
- import '@nadohq/utils';
14
13
  import './EngineExecuteBuilder.cjs';
15
14
 
16
15
  declare const EngineClient_base: ts_mixer_dist_types_types.Class<any[], EngineQueryClient & EngineExecuteClient & EngineWebClient, typeof EngineQueryClient & typeof EngineExecuteClient & typeof EngineWebClient>;
@@ -3,14 +3,13 @@ import { EngineExecuteClient } from './EngineExecuteClient.js';
3
3
  import { EngineQueryClient } from './EngineQueryClient.js';
4
4
  import { EngineWebClient } from './EngineWebClient.js';
5
5
  import './types/clientExecuteTypes.js';
6
- import '@nadohq/contracts';
6
+ import '@nadohq/shared';
7
7
  import './types/serverExecuteTypes.js';
8
8
  import './types/serverQueryTypes.js';
9
9
  import './types/serverQueryModelTypes.js';
10
10
  import './EngineBaseClient.js';
11
11
  import 'axios';
12
12
  import './types/clientQueryTypes.js';
13
- import '@nadohq/utils';
14
13
  import './EngineExecuteBuilder.js';
15
14
 
16
15
  declare const EngineClient_base: ts_mixer_dist_types_types.Class<any[], EngineQueryClient & EngineExecuteClient & EngineWebClient, typeof EngineQueryClient & typeof EngineExecuteClient & typeof EngineWebClient>;
@@ -23,7 +23,7 @@ __export(EngineExecuteBuilder_exports, {
23
23
  EngineExecuteBuilder: () => EngineExecuteBuilder
24
24
  });
25
25
  module.exports = __toCommonJS(EngineExecuteBuilder_exports);
26
- var import_contracts = require("@nadohq/contracts");
26
+ var import_shared = require("@nadohq/shared");
27
27
  var EngineExecuteBuilder = class {
28
28
  constructor(engineClient) {
29
29
  this.engineClient = engineClient;
@@ -36,7 +36,7 @@ var EngineExecuteBuilder = class {
36
36
  async buildLiquidateSubaccountPayload(clientParams) {
37
37
  const nonce = await this.getTxNonceIfNeeded(clientParams);
38
38
  const paramsWithNonce = { ...clientParams, nonce };
39
- const tx = (0, import_contracts.getNadoEIP712Values)("liquidate_subaccount", paramsWithNonce);
39
+ const tx = (0, import_shared.getNadoEIP712Values)("liquidate_subaccount", paramsWithNonce);
40
40
  const signature = await this.getSignatureIfNeeded(
41
41
  "liquidate_subaccount",
42
42
  paramsWithNonce
@@ -58,7 +58,7 @@ var EngineExecuteBuilder = class {
58
58
  "withdraw_collateral",
59
59
  paramsWithNonce
60
60
  );
61
- const tx = (0, import_contracts.getNadoEIP712Values)("withdraw_collateral", paramsWithNonce);
61
+ const tx = (0, import_shared.getNadoEIP712Values)("withdraw_collateral", paramsWithNonce);
62
62
  return {
63
63
  signature,
64
64
  tx,
@@ -75,7 +75,7 @@ var EngineExecuteBuilder = class {
75
75
  const nonce = this.getOrderNonceIfNeeded(clientParams);
76
76
  const orderWithNonce = { ...clientParams.order, nonce };
77
77
  const signature = await this.getSignatureIfNeeded("place_order", {
78
- // Gets expected type
78
+ // Gets expected type (signature params from `clientParams` and order params from `orderWithNonce`)
79
79
  ...clientParams,
80
80
  ...orderWithNonce
81
81
  });
@@ -92,7 +92,7 @@ var EngineExecuteBuilder = class {
92
92
  * @returns `place_order` payload
93
93
  */
94
94
  buildPlaceOrderPayloadSync(clientParams) {
95
- const orderEIP712Values = (0, import_contracts.getNadoEIP712Values)(
95
+ const orderEIP712Values = (0, import_shared.getNadoEIP712Values)(
96
96
  "place_order",
97
97
  clientParams.order
98
98
  );
@@ -102,52 +102,24 @@ var EngineExecuteBuilder = class {
102
102
  product_id: clientParams.productId,
103
103
  order: orderEIP712Values,
104
104
  signature: clientParams.signature,
105
- spot_leverage: clientParams.spotLeverage ?? null
105
+ spot_leverage: clientParams.spotLeverage ?? null,
106
+ borrow_margin: clientParams.borrowMargin ?? null
106
107
  },
107
108
  orderParams: clientParams.order
108
109
  };
109
110
  }
110
111
  /**
111
- * Builds server payload for the `place_isolated_order` execute action.
112
- *
113
- * @param clientParams Client PlaceIsolatedOrder params.
114
- * @returns `place_isolated_order` payload
112
+ * Builds server payload for the `place_orders` execute action.
113
+ * @param clientParams Client PlaceOrders params.
114
+ * @returns `place_orders` payload
115
115
  */
116
- async buildIsolatedPlaceOrderPayload(clientParams) {
117
- const nonce = this.getOrderNonceIfNeeded(clientParams);
118
- const orderWithNonce = { ...clientParams.order, nonce };
119
- const signature = await this.getSignatureIfNeeded("place_isolated_order", {
120
- // Gets expected type
121
- ...clientParams,
122
- ...orderWithNonce
123
- });
124
- return this.buildPlaceIsolatedOrderPayloadSync({
125
- ...clientParams,
126
- order: orderWithNonce,
127
- signature
128
- });
129
- }
130
- /**
131
- * Synchronously builds server payload for the `place_isolated_order` execute action.
132
- *
133
- * @param clientParams Client PlaceIsolatedOrder params.
134
- * @returns `place_isolated_order` payload
135
- */
136
- buildPlaceIsolatedOrderPayloadSync(clientParams) {
137
- const isolatedOrderEIP712Values = (0, import_contracts.getNadoEIP712Values)(
138
- "place_isolated_order",
139
- clientParams.order
116
+ async buildPlaceOrdersPayload(clientParams) {
117
+ return Promise.all(
118
+ clientParams.map(async (orderParams) => {
119
+ const payload = await this.buildPlaceOrderPayload(orderParams);
120
+ return payload.payload;
121
+ })
140
122
  );
141
- return {
142
- payload: {
143
- id: clientParams.id ?? null,
144
- product_id: clientParams.productId,
145
- isolated_order: isolatedOrderEIP712Values,
146
- signature: clientParams.signature,
147
- borrow_margin: clientParams.borrowMargin ?? null
148
- },
149
- orderParams: clientParams.order
150
- };
151
123
  }
152
124
  /**
153
125
  * Builds server payload for the `cancel_orders` execute action. As such, requires a signature to be given
@@ -174,7 +146,7 @@ var EngineExecuteBuilder = class {
174
146
  * @returns `cancel_orders` payload
175
147
  */
176
148
  buildCancelOrdersPayloadSync(clientParams) {
177
- const tx = (0, import_contracts.getNadoEIP712Values)("cancel_orders", clientParams);
149
+ const tx = (0, import_shared.getNadoEIP712Values)("cancel_orders", clientParams);
178
150
  return {
179
151
  tx,
180
152
  signature: clientParams.signature
@@ -188,7 +160,7 @@ var EngineExecuteBuilder = class {
188
160
  async buildCancelProductOrdersPayload(clientParams) {
189
161
  const nonce = this.getOrderNonceIfNeeded(clientParams);
190
162
  const paramsWithNonce = { ...clientParams, nonce };
191
- const tx = (0, import_contracts.getNadoEIP712Values)("cancel_product_orders", paramsWithNonce);
163
+ const tx = (0, import_shared.getNadoEIP712Values)("cancel_product_orders", paramsWithNonce);
192
164
  const signature = await this.getSignatureIfNeeded(
193
165
  "cancel_product_orders",
194
166
  paramsWithNonce
@@ -207,7 +179,7 @@ var EngineExecuteBuilder = class {
207
179
  async buildLinkSignerPayload(clientParams) {
208
180
  const nonce = await this.getTxNonceIfNeeded(clientParams);
209
181
  const paramsWithNonce = { ...clientParams, nonce };
210
- const tx = (0, import_contracts.getNadoEIP712Values)("link_signer", paramsWithNonce);
182
+ const tx = (0, import_shared.getNadoEIP712Values)("link_signer", paramsWithNonce);
211
183
  const signature = await this.getSignatureIfNeeded(
212
184
  "link_signer",
213
185
  paramsWithNonce
@@ -226,7 +198,7 @@ var EngineExecuteBuilder = class {
226
198
  async buildTransferQuotePayload(clientParams) {
227
199
  const nonce = await this.getTxNonceIfNeeded(clientParams);
228
200
  const paramsWithNonce = { ...clientParams, nonce };
229
- const tx = (0, import_contracts.getNadoEIP712Values)("transfer_quote", paramsWithNonce);
201
+ const tx = (0, import_shared.getNadoEIP712Values)("transfer_quote", paramsWithNonce);
230
202
  const signature = await this.getSignatureIfNeeded(
231
203
  "transfer_quote",
232
204
  paramsWithNonce
@@ -244,7 +216,7 @@ var EngineExecuteBuilder = class {
244
216
  async buildMintNlpPayload(clientParams) {
245
217
  const nonce = await this.getTxNonceIfNeeded(clientParams);
246
218
  const paramsWithNonce = { ...clientParams, nonce };
247
- const tx = (0, import_contracts.getNadoEIP712Values)("mint_nlp", paramsWithNonce);
219
+ const tx = (0, import_shared.getNadoEIP712Values)("mint_nlp", paramsWithNonce);
248
220
  const signature = await this.getSignatureIfNeeded(
249
221
  "mint_nlp",
250
222
  paramsWithNonce
@@ -263,7 +235,7 @@ var EngineExecuteBuilder = class {
263
235
  async buildBurnNlpPayload(clientParams) {
264
236
  const nonce = await this.getTxNonceIfNeeded(clientParams);
265
237
  const paramsWithNonce = { ...clientParams, nonce };
266
- const tx = (0, import_contracts.getNadoEIP712Values)("burn_nlp", paramsWithNonce);
238
+ const tx = (0, import_shared.getNadoEIP712Values)("burn_nlp", paramsWithNonce);
267
239
  const signature = await this.getSignatureIfNeeded(
268
240
  "burn_nlp",
269
241
  paramsWithNonce
@@ -294,7 +266,7 @@ var EngineExecuteBuilder = class {
294
266
  if (params.nonce) {
295
267
  return params.nonce;
296
268
  }
297
- return (0, import_contracts.getOrderNonce)();
269
+ return (0, import_shared.getOrderNonce)();
298
270
  }
299
271
  };
300
272
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/EngineExecuteBuilder.ts"],"sourcesContent":["import {\n EIP712IsolatedOrderParams,\n EIP712OrderParams,\n getNadoEIP712Values,\n getOrderNonce,\n SignableRequestType,\n SignableRequestTypeToParams,\n} from '@nadohq/contracts';\nimport { EngineBaseClient } from './EngineBaseClient';\nimport {\n EngineExecuteRequestParamsByType,\n EngineServerExecutePlaceIsolatedOrderPayload,\n EngineServerExecutePlaceOrderPayload,\n EngineServerExecuteRequestByType,\n SignatureParams,\n WithBaseEngineExecuteParams,\n WithSignature,\n} from './types';\n\n/**\n * Builds execute payloads as expected by the server.\n * @param nonce A nonce is computed when one is not provided.\n * @param signature A signature is computed when one is not provided.\n */\nexport class EngineExecuteBuilder {\n readonly engineClient: EngineBaseClient;\n\n constructor(engineClient: EngineBaseClient) {\n this.engineClient = engineClient;\n }\n\n /**\n * Builds server payload for the `liquidate_subaccount` execute action.\n * @param clientParams Client LiquidateSubaccount params.\n * @returns `liquidate_subaccount` payload\n */\n async buildLiquidateSubaccountPayload(\n clientParams: EngineExecuteRequestParamsByType['liquidate_subaccount'],\n ): Promise<EngineServerExecuteRequestByType['liquidate_subaccount']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('liquidate_subaccount', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'liquidate_subaccount',\n paramsWithNonce,\n );\n\n return {\n signature,\n tx,\n };\n }\n\n /**\n * Builds server payload for the `withdraw_collateral` execute action.\n * @param clientParams Client WithdrawCollateral params.\n * @returns `liquidate_subaccount` payload\n */\n async buildWithdrawCollateralPayload(\n clientParams: EngineExecuteRequestParamsByType['withdraw_collateral'],\n ): Promise<EngineServerExecuteRequestByType['withdraw_collateral']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const signature = await this.getSignatureIfNeeded(\n 'withdraw_collateral',\n paramsWithNonce,\n );\n\n const tx = getNadoEIP712Values('withdraw_collateral', paramsWithNonce);\n return {\n signature,\n tx,\n spot_leverage: clientParams.spotLeverage ?? null,\n };\n }\n\n /**\n * Builds server payload for the `place_order` execute action.\n *\n * @param clientParams Client PlaceOrder params.\n * @returns `place_order` payload\n */\n async buildPlaceOrderPayload(\n clientParams: EngineExecuteRequestParamsByType['place_order'],\n ): Promise<EngineServerExecutePlaceOrderPayload> {\n const nonce = this.getOrderNonceIfNeeded(clientParams);\n const orderWithNonce = { ...clientParams.order, nonce };\n\n const signature = await this.getSignatureIfNeeded('place_order', {\n // Gets expected type\n ...clientParams,\n ...orderWithNonce,\n });\n\n return this.buildPlaceOrderPayloadSync({\n ...clientParams,\n order: orderWithNonce,\n signature,\n });\n }\n\n /**\n * Synchronously builds server payload for the `place_order` execute action.\n *\n * @param clientParams Client PlaceOrder params.\n * @returns `place_order` payload\n */\n buildPlaceOrderPayloadSync(\n clientParams: WithSignature<\n EngineExecuteRequestParamsByType['place_order'] & {\n order: EIP712OrderParams;\n }\n >,\n ): EngineServerExecutePlaceOrderPayload {\n const orderEIP712Values = getNadoEIP712Values(\n 'place_order',\n clientParams.order,\n );\n\n return {\n payload: {\n id: clientParams.id ?? null,\n product_id: clientParams.productId,\n order: orderEIP712Values,\n signature: clientParams.signature,\n spot_leverage: clientParams.spotLeverage ?? null,\n },\n orderParams: clientParams.order,\n };\n }\n\n /**\n * Builds server payload for the `place_isolated_order` execute action.\n *\n * @param clientParams Client PlaceIsolatedOrder params.\n * @returns `place_isolated_order` payload\n */\n async buildIsolatedPlaceOrderPayload(\n clientParams: EngineExecuteRequestParamsByType['place_isolated_order'],\n ): Promise<EngineServerExecutePlaceIsolatedOrderPayload> {\n const nonce = this.getOrderNonceIfNeeded(clientParams);\n const orderWithNonce = { ...clientParams.order, nonce };\n\n const signature = await this.getSignatureIfNeeded('place_isolated_order', {\n // Gets expected type\n ...clientParams,\n ...orderWithNonce,\n });\n\n return this.buildPlaceIsolatedOrderPayloadSync({\n ...clientParams,\n order: orderWithNonce,\n signature,\n });\n }\n\n /**\n * Synchronously builds server payload for the `place_isolated_order` execute action.\n *\n * @param clientParams Client PlaceIsolatedOrder params.\n * @returns `place_isolated_order` payload\n */\n buildPlaceIsolatedOrderPayloadSync(\n clientParams: WithSignature<\n EngineExecuteRequestParamsByType['place_isolated_order'] & {\n order: EIP712IsolatedOrderParams;\n }\n >,\n ): EngineServerExecutePlaceIsolatedOrderPayload {\n const isolatedOrderEIP712Values = getNadoEIP712Values(\n 'place_isolated_order',\n clientParams.order,\n );\n\n return {\n payload: {\n id: clientParams.id ?? null,\n product_id: clientParams.productId,\n isolated_order: isolatedOrderEIP712Values,\n signature: clientParams.signature,\n borrow_margin: clientParams.borrowMargin ?? null,\n },\n orderParams: clientParams.order,\n };\n }\n\n /**\n * Builds server payload for the `cancel_orders` execute action. As such, requires a signature to be given\n *\n * @param clientParams Client CancelOrders params.\n * @returns `cancel_orders` payload\n */\n async buildCancelOrdersPayload(\n clientParams: EngineExecuteRequestParamsByType['cancel_orders'],\n ): Promise<EngineServerExecuteRequestByType['cancel_orders']> {\n const nonce = this.getOrderNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n const signature = await this.getSignatureIfNeeded(\n 'cancel_orders',\n paramsWithNonce,\n );\n\n return this.buildCancelOrdersPayloadSync({\n ...paramsWithNonce,\n signature,\n });\n }\n\n /**\n * Synchronously builds server payload for the `cancel_orders` execute action.\n *\n * @param clientParams Client CancelOrders params.\n * @returns `cancel_orders` payload\n */\n buildCancelOrdersPayloadSync(\n clientParams: WithSignature<\n EngineExecuteRequestParamsByType['cancel_orders'] & { nonce: string }\n >,\n ): EngineServerExecuteRequestByType['cancel_orders'] {\n const tx = getNadoEIP712Values('cancel_orders', clientParams);\n\n return {\n tx,\n signature: clientParams.signature,\n };\n }\n\n /**\n * Builds server payload for the `cancel_product_orders` execute action.\n * @param clientParams Client CancelProductOrders params.\n * @returns `cancel_product_orders` payload\n */\n async buildCancelProductOrdersPayload(\n clientParams: EngineExecuteRequestParamsByType['cancel_product_orders'],\n ): Promise<EngineServerExecuteRequestByType['cancel_product_orders']> {\n const nonce = this.getOrderNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('cancel_product_orders', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'cancel_product_orders',\n paramsWithNonce,\n );\n\n return {\n tx,\n signature,\n };\n }\n\n /**\n * Builds server payload for the `link_signer` execute action.\n *\n * @param clientParams Client LinkSigner params.\n * @returns `link_signer` payload\n */\n async buildLinkSignerPayload(\n clientParams: EngineExecuteRequestParamsByType['link_signer'],\n ): Promise<EngineServerExecuteRequestByType['link_signer']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('link_signer', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'link_signer',\n paramsWithNonce,\n );\n\n return {\n tx,\n signature,\n };\n }\n\n /**\n * Builds server payload for the `transfer_quote` execute action.\n *\n * @param clientParams Client TransferQuote params.\n * @returns `transfer_quote` payload\n */\n async buildTransferQuotePayload(\n clientParams: EngineExecuteRequestParamsByType['transfer_quote'],\n ): Promise<EngineServerExecuteRequestByType['transfer_quote']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('transfer_quote', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'transfer_quote',\n paramsWithNonce,\n );\n\n return {\n tx,\n signature,\n };\n }\n\n /**\n * Builds server payload for the `mint_nlp` execute action.\n * @param clientParams Client MintNlp params.\n * @returns `mint_nlp` payload\n */\n async buildMintNlpPayload(\n clientParams: EngineExecuteRequestParamsByType['mint_nlp'],\n ): Promise<EngineServerExecuteRequestByType['mint_nlp']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('mint_nlp', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'mint_nlp',\n paramsWithNonce,\n );\n\n return {\n signature,\n tx,\n spot_leverage: clientParams.spotLeverage ?? null,\n };\n }\n\n /**\n * Builds server payload for the `burn_nlp` execute action.\n * @param clientParams Client BurnNlp params.\n * @returns `burn_nlp` payload\n */\n async buildBurnNlpPayload(\n clientParams: EngineExecuteRequestParamsByType['burn_nlp'],\n ): Promise<EngineServerExecuteRequestByType['burn_nlp']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('burn_nlp', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'burn_nlp',\n paramsWithNonce,\n );\n\n return {\n signature,\n tx,\n };\n }\n\n protected async getSignatureIfNeeded<T extends SignableRequestType>(\n requestType: T,\n paramsWithNonce: SignatureParams & SignableRequestTypeToParams[T],\n ) {\n if ('signature' in paramsWithNonce) {\n return paramsWithNonce.signature;\n }\n\n return await this.engineClient.sign(\n requestType,\n paramsWithNonce.verifyingAddr,\n paramsWithNonce.chainId,\n paramsWithNonce,\n );\n }\n\n protected async getTxNonceIfNeeded(\n params: WithBaseEngineExecuteParams<{ subaccountOwner: string }>,\n ) {\n if (params.nonce) {\n return params.nonce;\n }\n return await this.engineClient.getTxNonce(params.subaccountOwner);\n }\n\n protected getOrderNonceIfNeeded(\n params: WithBaseEngineExecuteParams<unknown>,\n ) {\n if (params.nonce) {\n return params.nonce;\n }\n return getOrderNonce();\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/EngineExecuteBuilder.ts"],"sourcesContent":["import {\n EIP712OrderParams,\n getNadoEIP712Values,\n getOrderNonce,\n SignableRequestType,\n SignableRequestTypeToParams,\n} from '@nadohq/shared';\nimport { EngineBaseClient } from './EngineBaseClient';\nimport {\n EngineExecuteRequestParamsByType,\n EngineServerExecutePlaceOrderPayload,\n EngineServerExecuteRequestByType,\n SignatureParams,\n WithBaseEngineExecuteParams,\n WithSignature,\n} from './types';\n\n/**\n * Builds execute payloads as expected by the server.\n * @param nonce A nonce is computed when one is not provided.\n * @param signature A signature is computed when one is not provided.\n */\nexport class EngineExecuteBuilder {\n readonly engineClient: EngineBaseClient;\n\n constructor(engineClient: EngineBaseClient) {\n this.engineClient = engineClient;\n }\n\n /**\n * Builds server payload for the `liquidate_subaccount` execute action.\n * @param clientParams Client LiquidateSubaccount params.\n * @returns `liquidate_subaccount` payload\n */\n async buildLiquidateSubaccountPayload(\n clientParams: EngineExecuteRequestParamsByType['liquidate_subaccount'],\n ): Promise<EngineServerExecuteRequestByType['liquidate_subaccount']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('liquidate_subaccount', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'liquidate_subaccount',\n paramsWithNonce,\n );\n\n return {\n signature,\n tx,\n };\n }\n\n /**\n * Builds server payload for the `withdraw_collateral` execute action.\n * @param clientParams Client WithdrawCollateral params.\n * @returns `liquidate_subaccount` payload\n */\n async buildWithdrawCollateralPayload(\n clientParams: EngineExecuteRequestParamsByType['withdraw_collateral'],\n ): Promise<EngineServerExecuteRequestByType['withdraw_collateral']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const signature = await this.getSignatureIfNeeded(\n 'withdraw_collateral',\n paramsWithNonce,\n );\n\n const tx = getNadoEIP712Values('withdraw_collateral', paramsWithNonce);\n return {\n signature,\n tx,\n spot_leverage: clientParams.spotLeverage ?? null,\n };\n }\n\n /**\n * Builds server payload for the `place_order` execute action.\n *\n * @param clientParams Client PlaceOrder params.\n * @returns `place_order` payload\n */\n async buildPlaceOrderPayload(\n clientParams: EngineExecuteRequestParamsByType['place_order'],\n ): Promise<EngineServerExecutePlaceOrderPayload> {\n const nonce = this.getOrderNonceIfNeeded(clientParams);\n const orderWithNonce = { ...clientParams.order, nonce };\n\n const signature = await this.getSignatureIfNeeded('place_order', {\n // Gets expected type (signature params from `clientParams` and order params from `orderWithNonce`)\n ...clientParams,\n ...orderWithNonce,\n });\n\n return this.buildPlaceOrderPayloadSync({\n ...clientParams,\n order: orderWithNonce,\n signature,\n });\n }\n\n /**\n * Synchronously builds server payload for the `place_order` execute action.\n *\n * @param clientParams Client PlaceOrder params.\n * @returns `place_order` payload\n */\n buildPlaceOrderPayloadSync(\n clientParams: WithSignature<\n EngineExecuteRequestParamsByType['place_order'] & {\n order: EIP712OrderParams;\n }\n >,\n ): EngineServerExecutePlaceOrderPayload {\n const orderEIP712Values = getNadoEIP712Values(\n 'place_order',\n clientParams.order,\n );\n\n return {\n payload: {\n id: clientParams.id ?? null,\n product_id: clientParams.productId,\n order: orderEIP712Values,\n signature: clientParams.signature,\n spot_leverage: clientParams.spotLeverage ?? null,\n borrow_margin: clientParams.borrowMargin ?? null,\n },\n orderParams: clientParams.order,\n };\n }\n\n /**\n * Builds server payload for the `place_orders` execute action.\n * @param clientParams Client PlaceOrders params.\n * @returns `place_orders` payload\n */\n async buildPlaceOrdersPayload(\n clientParams: EngineExecuteRequestParamsByType['place_orders'],\n ): Promise<EngineServerExecuteRequestByType['place_orders']> {\n return Promise.all(\n clientParams.map(async (orderParams) => {\n const payload = await this.buildPlaceOrderPayload(orderParams);\n return payload.payload;\n }),\n );\n }\n\n /**\n * Builds server payload for the `cancel_orders` execute action. As such, requires a signature to be given\n *\n * @param clientParams Client CancelOrders params.\n * @returns `cancel_orders` payload\n */\n async buildCancelOrdersPayload(\n clientParams: EngineExecuteRequestParamsByType['cancel_orders'],\n ): Promise<EngineServerExecuteRequestByType['cancel_orders']> {\n const nonce = this.getOrderNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n const signature = await this.getSignatureIfNeeded(\n 'cancel_orders',\n paramsWithNonce,\n );\n\n return this.buildCancelOrdersPayloadSync({\n ...paramsWithNonce,\n signature,\n });\n }\n\n /**\n * Synchronously builds server payload for the `cancel_orders` execute action.\n *\n * @param clientParams Client CancelOrders params.\n * @returns `cancel_orders` payload\n */\n buildCancelOrdersPayloadSync(\n clientParams: WithSignature<\n EngineExecuteRequestParamsByType['cancel_orders'] & { nonce: string }\n >,\n ): EngineServerExecuteRequestByType['cancel_orders'] {\n const tx = getNadoEIP712Values('cancel_orders', clientParams);\n\n return {\n tx,\n signature: clientParams.signature,\n };\n }\n\n /**\n * Builds server payload for the `cancel_product_orders` execute action.\n * @param clientParams Client CancelProductOrders params.\n * @returns `cancel_product_orders` payload\n */\n async buildCancelProductOrdersPayload(\n clientParams: EngineExecuteRequestParamsByType['cancel_product_orders'],\n ): Promise<EngineServerExecuteRequestByType['cancel_product_orders']> {\n const nonce = this.getOrderNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('cancel_product_orders', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'cancel_product_orders',\n paramsWithNonce,\n );\n\n return {\n tx,\n signature,\n };\n }\n\n /**\n * Builds server payload for the `link_signer` execute action.\n *\n * @param clientParams Client LinkSigner params.\n * @returns `link_signer` payload\n */\n async buildLinkSignerPayload(\n clientParams: EngineExecuteRequestParamsByType['link_signer'],\n ): Promise<EngineServerExecuteRequestByType['link_signer']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('link_signer', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'link_signer',\n paramsWithNonce,\n );\n\n return {\n tx,\n signature,\n };\n }\n\n /**\n * Builds server payload for the `transfer_quote` execute action.\n *\n * @param clientParams Client TransferQuote params.\n * @returns `transfer_quote` payload\n */\n async buildTransferQuotePayload(\n clientParams: EngineExecuteRequestParamsByType['transfer_quote'],\n ): Promise<EngineServerExecuteRequestByType['transfer_quote']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('transfer_quote', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'transfer_quote',\n paramsWithNonce,\n );\n\n return {\n tx,\n signature,\n };\n }\n\n /**\n * Builds server payload for the `mint_nlp` execute action.\n * @param clientParams Client MintNlp params.\n * @returns `mint_nlp` payload\n */\n async buildMintNlpPayload(\n clientParams: EngineExecuteRequestParamsByType['mint_nlp'],\n ): Promise<EngineServerExecuteRequestByType['mint_nlp']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('mint_nlp', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'mint_nlp',\n paramsWithNonce,\n );\n\n return {\n signature,\n tx,\n spot_leverage: clientParams.spotLeverage ?? null,\n };\n }\n\n /**\n * Builds server payload for the `burn_nlp` execute action.\n * @param clientParams Client BurnNlp params.\n * @returns `burn_nlp` payload\n */\n async buildBurnNlpPayload(\n clientParams: EngineExecuteRequestParamsByType['burn_nlp'],\n ): Promise<EngineServerExecuteRequestByType['burn_nlp']> {\n const nonce = await this.getTxNonceIfNeeded(clientParams);\n const paramsWithNonce = { ...clientParams, nonce };\n\n const tx = getNadoEIP712Values('burn_nlp', paramsWithNonce);\n const signature = await this.getSignatureIfNeeded(\n 'burn_nlp',\n paramsWithNonce,\n );\n\n return {\n signature,\n tx,\n };\n }\n\n protected async getSignatureIfNeeded<T extends SignableRequestType>(\n requestType: T,\n paramsWithNonce: SignatureParams & SignableRequestTypeToParams[T],\n ) {\n if ('signature' in paramsWithNonce) {\n return paramsWithNonce.signature;\n }\n\n return await this.engineClient.sign(\n requestType,\n paramsWithNonce.verifyingAddr,\n paramsWithNonce.chainId,\n paramsWithNonce,\n );\n }\n\n protected async getTxNonceIfNeeded(\n params: WithBaseEngineExecuteParams<{ subaccountOwner: string }>,\n ) {\n if (params.nonce) {\n return params.nonce;\n }\n return await this.engineClient.getTxNonce(params.subaccountOwner);\n }\n\n protected getOrderNonceIfNeeded(\n params: WithBaseEngineExecuteParams<unknown>,\n ) {\n if (params.nonce) {\n return params.nonce;\n }\n return getOrderNonce();\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,10 +1,9 @@
1
- import { EIP712OrderParams, EIP712IsolatedOrderParams, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/contracts';
1
+ import { EIP712OrderParams, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/shared';
2
2
  import { EngineBaseClient } from './EngineBaseClient.cjs';
3
3
  import { EngineExecuteRequestParamsByType, WithSignature, SignatureParams, WithBaseEngineExecuteParams } from './types/clientExecuteTypes.cjs';
4
- import { EngineServerExecuteRequestByType, EngineServerExecutePlaceOrderPayload, EngineServerExecutePlaceIsolatedOrderPayload } from './types/serverExecuteTypes.cjs';
4
+ import { EngineServerExecuteRequestByType, EngineServerExecutePlaceOrderPayload } from './types/serverExecuteTypes.cjs';
5
5
  import 'axios';
6
6
  import './types/clientQueryTypes.cjs';
7
- import '@nadohq/utils';
8
7
  import './types/serverQueryTypes.cjs';
9
8
  import './types/serverQueryModelTypes.cjs';
10
9
 
@@ -45,21 +44,11 @@ declare class EngineExecuteBuilder {
45
44
  order: EIP712OrderParams;
46
45
  }>): EngineServerExecutePlaceOrderPayload;
47
46
  /**
48
- * Builds server payload for the `place_isolated_order` execute action.
49
- *
50
- * @param clientParams Client PlaceIsolatedOrder params.
51
- * @returns `place_isolated_order` payload
52
- */
53
- buildIsolatedPlaceOrderPayload(clientParams: EngineExecuteRequestParamsByType['place_isolated_order']): Promise<EngineServerExecutePlaceIsolatedOrderPayload>;
54
- /**
55
- * Synchronously builds server payload for the `place_isolated_order` execute action.
56
- *
57
- * @param clientParams Client PlaceIsolatedOrder params.
58
- * @returns `place_isolated_order` payload
47
+ * Builds server payload for the `place_orders` execute action.
48
+ * @param clientParams Client PlaceOrders params.
49
+ * @returns `place_orders` payload
59
50
  */
60
- buildPlaceIsolatedOrderPayloadSync(clientParams: WithSignature<EngineExecuteRequestParamsByType['place_isolated_order'] & {
61
- order: EIP712IsolatedOrderParams;
62
- }>): EngineServerExecutePlaceIsolatedOrderPayload;
51
+ buildPlaceOrdersPayload(clientParams: EngineExecuteRequestParamsByType['place_orders']): Promise<EngineServerExecuteRequestByType['place_orders']>;
63
52
  /**
64
53
  * Builds server payload for the `cancel_orders` execute action. As such, requires a signature to be given
65
54
  *
@@ -1,10 +1,9 @@
1
- import { EIP712OrderParams, EIP712IsolatedOrderParams, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/contracts';
1
+ import { EIP712OrderParams, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/shared';
2
2
  import { EngineBaseClient } from './EngineBaseClient.js';
3
3
  import { EngineExecuteRequestParamsByType, WithSignature, SignatureParams, WithBaseEngineExecuteParams } from './types/clientExecuteTypes.js';
4
- import { EngineServerExecuteRequestByType, EngineServerExecutePlaceOrderPayload, EngineServerExecutePlaceIsolatedOrderPayload } from './types/serverExecuteTypes.js';
4
+ import { EngineServerExecuteRequestByType, EngineServerExecutePlaceOrderPayload } from './types/serverExecuteTypes.js';
5
5
  import 'axios';
6
6
  import './types/clientQueryTypes.js';
7
- import '@nadohq/utils';
8
7
  import './types/serverQueryTypes.js';
9
8
  import './types/serverQueryModelTypes.js';
10
9
 
@@ -45,21 +44,11 @@ declare class EngineExecuteBuilder {
45
44
  order: EIP712OrderParams;
46
45
  }>): EngineServerExecutePlaceOrderPayload;
47
46
  /**
48
- * Builds server payload for the `place_isolated_order` execute action.
49
- *
50
- * @param clientParams Client PlaceIsolatedOrder params.
51
- * @returns `place_isolated_order` payload
52
- */
53
- buildIsolatedPlaceOrderPayload(clientParams: EngineExecuteRequestParamsByType['place_isolated_order']): Promise<EngineServerExecutePlaceIsolatedOrderPayload>;
54
- /**
55
- * Synchronously builds server payload for the `place_isolated_order` execute action.
56
- *
57
- * @param clientParams Client PlaceIsolatedOrder params.
58
- * @returns `place_isolated_order` payload
47
+ * Builds server payload for the `place_orders` execute action.
48
+ * @param clientParams Client PlaceOrders params.
49
+ * @returns `place_orders` payload
59
50
  */
60
- buildPlaceIsolatedOrderPayloadSync(clientParams: WithSignature<EngineExecuteRequestParamsByType['place_isolated_order'] & {
61
- order: EIP712IsolatedOrderParams;
62
- }>): EngineServerExecutePlaceIsolatedOrderPayload;
51
+ buildPlaceOrdersPayload(clientParams: EngineExecuteRequestParamsByType['place_orders']): Promise<EngineServerExecuteRequestByType['place_orders']>;
63
52
  /**
64
53
  * Builds server payload for the `cancel_orders` execute action. As such, requires a signature to be given
65
54
  *