@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.
- package/dist/EngineBaseClient.cjs +8 -7
- package/dist/EngineBaseClient.cjs.map +1 -1
- package/dist/EngineBaseClient.d.cts +2 -3
- package/dist/EngineBaseClient.d.ts +2 -3
- package/dist/EngineBaseClient.js +7 -5
- package/dist/EngineBaseClient.js.map +1 -1
- package/dist/EngineClient.d.cts +1 -2
- package/dist/EngineClient.d.ts +1 -2
- package/dist/EngineExecuteBuilder.cjs +23 -51
- package/dist/EngineExecuteBuilder.cjs.map +1 -1
- package/dist/EngineExecuteBuilder.d.cts +6 -17
- package/dist/EngineExecuteBuilder.d.ts +6 -17
- package/dist/EngineExecuteBuilder.js +13 -41
- package/dist/EngineExecuteBuilder.js.map +1 -1
- package/dist/EngineExecuteClient.cjs +6 -10
- package/dist/EngineExecuteClient.cjs.map +1 -1
- package/dist/EngineExecuteClient.d.cts +3 -4
- package/dist/EngineExecuteClient.d.ts +3 -4
- package/dist/EngineExecuteClient.js +6 -10
- package/dist/EngineExecuteClient.js.map +1 -1
- package/dist/EngineQueryClient.cjs +62 -52
- package/dist/EngineQueryClient.cjs.map +1 -1
- package/dist/EngineQueryClient.d.cts +12 -11
- package/dist/EngineQueryClient.d.ts +12 -11
- package/dist/EngineQueryClient.js +41 -30
- package/dist/EngineQueryClient.js.map +1 -1
- package/dist/EngineWebClient.cjs +0 -2
- package/dist/EngineWebClient.cjs.map +1 -1
- package/dist/EngineWebClient.d.cts +1 -2
- package/dist/EngineWebClient.d.ts +1 -2
- package/dist/EngineWebClient.js +0 -2
- package/dist/EngineWebClient.js.map +1 -1
- package/dist/endpoints.cjs +6 -6
- package/dist/endpoints.cjs.map +1 -1
- package/dist/endpoints.d.cts +1 -1
- package/dist/endpoints.d.ts +1 -1
- package/dist/endpoints.js +6 -6
- package/dist/endpoints.js.map +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -12
- package/dist/index.d.ts +11 -12
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/types/EngineServerFailureError.cjs +1 -1
- package/dist/types/EngineServerFailureError.cjs.map +1 -1
- package/dist/types/EngineServerFailureError.d.cts +2 -2
- package/dist/types/EngineServerFailureError.d.ts +2 -2
- package/dist/types/EngineServerFailureError.js +1 -1
- package/dist/types/EngineServerFailureError.js.map +1 -1
- package/dist/types/clientExecuteTypes.cjs.map +1 -1
- package/dist/types/clientExecuteTypes.d.cts +4 -12
- package/dist/types/clientExecuteTypes.d.ts +4 -12
- package/dist/types/clientQueryTypes.cjs.map +1 -1
- package/dist/types/clientQueryTypes.d.cts +30 -23
- package/dist/types/clientQueryTypes.d.ts +30 -23
- package/dist/types/index.cjs +10 -10
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +8 -9
- package/dist/types/index.d.ts +8 -9
- package/dist/types/index.js +5 -5
- package/dist/types/index.js.map +1 -1
- package/dist/types/serverExecuteTypes.cjs.map +1 -1
- package/dist/types/serverExecuteTypes.d.cts +6 -14
- package/dist/types/serverExecuteTypes.d.ts +6 -14
- package/dist/types/serverQueryModelTypes.cjs.map +1 -1
- package/dist/types/serverQueryModelTypes.d.cts +1 -1
- package/dist/types/serverQueryModelTypes.d.ts +1 -1
- package/dist/types/serverQueryTypes.cjs.map +1 -1
- package/dist/types/serverQueryTypes.d.cts +33 -13
- package/dist/types/serverQueryTypes.d.ts +33 -13
- package/dist/types/serverSubscriptionEventTypes.cjs.map +1 -1
- package/dist/types/serverSubscriptionEventTypes.d.cts +87 -23
- package/dist/types/serverSubscriptionEventTypes.d.ts +87 -23
- package/dist/types/serverSubscriptionTypes.cjs.map +1 -1
- package/dist/types/serverSubscriptionTypes.d.cts +21 -4
- package/dist/types/serverSubscriptionTypes.d.ts +21 -4
- package/dist/utils/index.d.cts +3 -4
- package/dist/utils/index.d.ts +3 -4
- package/dist/utils/productEngineTypeMappers.cjs +5 -5
- package/dist/utils/productEngineTypeMappers.cjs.map +1 -1
- package/dist/utils/productEngineTypeMappers.d.cts +1 -1
- package/dist/utils/productEngineTypeMappers.d.ts +1 -1
- package/dist/utils/productEngineTypeMappers.js +1 -1
- package/dist/utils/productEngineTypeMappers.js.map +1 -1
- package/dist/utils/queryDataMappers.cjs +99 -90
- package/dist/utils/queryDataMappers.cjs.map +1 -1
- package/dist/utils/queryDataMappers.d.cts +5 -5
- package/dist/utils/queryDataMappers.d.ts +5 -5
- package/dist/utils/queryDataMappers.js +26 -19
- package/dist/utils/queryDataMappers.js.map +1 -1
- package/package.json +3 -4
- package/src/EngineBaseClient.ts +5 -3
- package/src/EngineExecuteBuilder.ts +14 -54
- package/src/EngineExecuteClient.ts +7 -15
- package/src/EngineQueryClient.ts +51 -31
- package/src/EngineWebClient.ts +0 -2
- package/src/endpoints.ts +4 -5
- package/src/index.ts +2 -2
- package/src/types/EngineServerFailureError.ts +2 -2
- package/src/types/clientExecuteTypes.ts +5 -17
- package/src/types/clientQueryTypes.ts +44 -32
- package/src/types/index.ts +5 -5
- package/src/types/serverExecuteTypes.ts +7 -18
- package/src/types/serverQueryModelTypes.ts +1 -1
- package/src/types/serverQueryTypes.ts +40 -16
- package/src/types/serverSubscriptionEventTypes.ts +131 -21
- package/src/types/serverSubscriptionTypes.ts +23 -3
- package/src/utils/productEngineTypeMappers.ts +1 -1
- 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
|
|
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
|
|
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
|
|
140
|
+
throw new import_shared.WalletNotProvidedError();
|
|
140
141
|
}
|
|
141
|
-
return (0,
|
|
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
|
|
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/
|
|
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/
|
|
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 {
|
package/dist/EngineBaseClient.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
// src/EngineBaseClient.ts
|
|
2
2
|
import {
|
|
3
|
-
getSignedTransactionRequest
|
|
4
|
-
|
|
5
|
-
|
|
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
|
|
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":[]}
|
package/dist/EngineClient.d.cts
CHANGED
|
@@ -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/
|
|
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>;
|
package/dist/EngineClient.d.ts
CHANGED
|
@@ -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/
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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 `
|
|
112
|
-
*
|
|
113
|
-
* @
|
|
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
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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 `
|
|
49
|
-
*
|
|
50
|
-
* @
|
|
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
|
-
|
|
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,
|
|
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
|
|
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 `
|
|
49
|
-
*
|
|
50
|
-
* @
|
|
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
|
-
|
|
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
|
*
|