@nadohq/trigger-client 0.1.0-alpha.6 → 0.1.0-alpha.8
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/TriggerClient.cjs +17 -0
- package/dist/TriggerClient.cjs.map +1 -1
- package/dist/TriggerClient.d.cts +2 -1
- package/dist/TriggerClient.d.ts +2 -1
- package/dist/TriggerClient.js +22 -1
- package/dist/TriggerClient.js.map +1 -1
- package/dist/dataMappers.cjs +53 -7
- package/dist/dataMappers.cjs.map +1 -1
- package/dist/dataMappers.d.cts +4 -3
- package/dist/dataMappers.d.ts +4 -3
- package/dist/dataMappers.js +51 -6
- package/dist/dataMappers.js.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/types/clientModelTypes.cjs.map +1 -1
- package/dist/types/clientModelTypes.d.cts +14 -2
- package/dist/types/clientModelTypes.d.ts +14 -2
- package/dist/types/clientTypes.cjs.map +1 -1
- package/dist/types/clientTypes.d.cts +27 -2
- package/dist/types/clientTypes.d.ts +27 -2
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/serverQueryTypes.cjs.map +1 -1
- package/dist/types/serverQueryTypes.d.cts +40 -5
- package/dist/types/serverQueryTypes.d.ts +40 -5
- package/package.json +4 -4
- package/src/TriggerClient.ts +32 -1
- package/src/dataMappers.ts +54 -5
- package/src/types/clientModelTypes.ts +19 -3
- package/src/types/clientTypes.ts +37 -1
- package/src/types/serverQueryTypes.ts +58 -7
package/dist/TriggerClient.cjs
CHANGED
|
@@ -161,6 +161,23 @@ var TriggerClient = class {
|
|
|
161
161
|
orders
|
|
162
162
|
};
|
|
163
163
|
}
|
|
164
|
+
async listTwapExecutions(params) {
|
|
165
|
+
const queryParams = {
|
|
166
|
+
digest: params.digest
|
|
167
|
+
};
|
|
168
|
+
const baseResponse = await this.query("list_twap_executions", queryParams);
|
|
169
|
+
const executions = baseResponse.executions.map(
|
|
170
|
+
(execution) => ({
|
|
171
|
+
executionId: execution.execution_id,
|
|
172
|
+
scheduledTime: execution.scheduled_time,
|
|
173
|
+
status: (0, import_dataMappers.mapTwapExecutionStatus)(execution.status),
|
|
174
|
+
updatedAt: execution.updated_at
|
|
175
|
+
})
|
|
176
|
+
);
|
|
177
|
+
return {
|
|
178
|
+
executions
|
|
179
|
+
};
|
|
180
|
+
}
|
|
164
181
|
/*
|
|
165
182
|
Base Fns
|
|
166
183
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/TriggerClient.ts"],"sourcesContent":["import {\n EIP712CancelOrdersParams,\n EIP712CancelProductOrdersParams,\n EIP712ListTriggerOrdersParams,\n EIP712OrderParams,\n getDefaultRecvTime,\n getNadoEIP712Values,\n getOrderNonce,\n getSignedTransactionRequest,\n SignableRequestType,\n SignableRequestTypeToParams,\n toIntegerString,\n WalletClientWithAccount,\n WalletNotProvidedError,\n} from '@nadohq/shared';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport { mapServerOrderInfo, mapTriggerCriteria } from './dataMappers';\nimport {\n TriggerCancelOrdersParams,\n TriggerCancelProductOrdersParams,\n TriggerListOrdersParams,\n TriggerListOrdersResponse,\n TriggerOrderInfo,\n TriggerPlaceOrderParams,\n TriggerServerExecuteRequestByType,\n TriggerServerExecuteRequestType,\n TriggerServerExecuteResult,\n TriggerServerExecuteSuccessResult,\n TriggerServerQueryRequestByType,\n TriggerServerQueryRequestType,\n TriggerServerQueryResponse,\n TriggerServerQueryResponseByType,\n TriggerServerQuerySuccessResponse,\n} from './types';\nimport { TriggerServerFailureError } from './types/TriggerServerFailureError';\n\nexport interface TriggerClientOpts {\n // Server URL\n url: string;\n // Wallet client for EIP712 signing\n walletClient?: WalletClientWithAccount;\n // Linked signer registered through the engine, if provided, execute requests will use this signer\n linkedSignerWalletClient?: WalletClientWithAccount;\n}\n\n/**\n * Client for all trigger service requests\n */\nexport class TriggerClient {\n readonly opts: TriggerClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: TriggerClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\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 requests\n *\n * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer\n */\n public setLinkedSigner(\n linkedSignerWalletClient: WalletClientWithAccount | null,\n ) {\n this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? undefined;\n }\n\n /*\n Executes\n */\n\n async placeTriggerOrder(params: TriggerPlaceOrderParams) {\n const orderParams: EIP712OrderParams = {\n amount: params.order.amount,\n expiration: params.order.expiration,\n price: params.order.price,\n subaccountName: params.order.subaccountName,\n subaccountOwner: params.order.subaccountOwner,\n nonce: params.nonce ?? getOrderNonce(),\n appendix: params.order.appendix,\n };\n const signature = await this.sign(\n 'place_order',\n params.verifyingAddr,\n params.chainId,\n orderParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['place_order'] = {\n id: params.id ?? null,\n order: getNadoEIP712Values('place_order', orderParams),\n trigger: mapTriggerCriteria(params.triggerCriteria),\n signature,\n product_id: params.productId,\n spot_leverage: params.spotLeverage ?? null,\n digest: params.digest ?? null,\n borrow_margin: params.borrowMargin ?? null,\n };\n\n return this.execute('place_order', executeParams);\n }\n\n async cancelTriggerOrders(params: TriggerCancelOrdersParams) {\n const cancelOrdersParams: EIP712CancelOrdersParams = {\n digests: params.digests,\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values('cancel_orders', cancelOrdersParams);\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_orders'] = {\n signature: await this.sign(\n 'cancel_orders',\n params.verifyingAddr,\n params.chainId,\n cancelOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_orders', executeParams);\n }\n\n async cancelProductOrders(params: TriggerCancelProductOrdersParams) {\n const cancelProductOrdersParams: EIP712CancelProductOrdersParams = {\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values(\n 'cancel_product_orders',\n cancelProductOrdersParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_product_orders'] =\n {\n signature: await this.sign(\n 'cancel_product_orders',\n params.verifyingAddr,\n params.chainId,\n cancelProductOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_product_orders', executeParams);\n }\n\n /*\n Queries\n */\n async listOrders(\n params: TriggerListOrdersParams,\n ): Promise<TriggerListOrdersResponse> {\n const signatureParams: EIP712ListTriggerOrdersParams = {\n // Default to 90 seconds from now if no recvTime is provided\n recvTime: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n\n const tx = getNadoEIP712Values('list_trigger_orders', signatureParams);\n const signature = await this.sign(\n 'list_trigger_orders',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const queryParams: TriggerServerQueryRequestByType['list_trigger_orders'] =\n {\n limit: params.limit,\n max_update_time: params.maxUpdateTimeInclusive,\n pending: params.pending,\n product_id: params.productId,\n digests: params.digests,\n trigger_types: params.triggerTypes,\n reduce_only: params.reduceOnly,\n signature,\n tx,\n };\n\n const baseResponse = await this.query('list_trigger_orders', queryParams);\n\n const orders: TriggerOrderInfo[] =\n baseResponse.orders.map(mapServerOrderInfo);\n\n return {\n orders,\n };\n }\n\n /*\n Base Fns\n */\n protected async sign<T extends SignableRequestType>(\n requestType: T,\n verifyingContract: string,\n chainId: number,\n params: SignableRequestTypeToParams[T],\n ) {\n // Use the linked signer if provided, otherwise use the default signer provided to the engine\n const walletClient =\n this.opts.linkedSignerWalletClient ?? this.opts.walletClient;\n\n if (walletClient == null) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\n }\n\n /**\n * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped\n * in an TriggerServerFailureError on failure.\n *\n * @param requestType\n * @param params\n */\n protected async execute<TRequestType extends TriggerServerExecuteRequestType>(\n requestType: TRequestType,\n params: TriggerServerExecuteRequestByType[TRequestType],\n ): Promise<TriggerServerExecuteSuccessResult<TRequestType>> {\n const reqBody = {\n [requestType]: params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerExecuteResult<TRequestType>\n >(`${this.opts.url}/execute`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus catches the failure result and throws the error, so the cast to the success response is acceptable here\n return response.data as TriggerServerExecuteSuccessResult<TRequestType>;\n }\n\n protected async query<TRequestType extends TriggerServerQueryRequestType>(\n requestType: TRequestType,\n params: TriggerServerQueryRequestByType[TRequestType],\n ): Promise<TriggerServerQueryResponseByType[TRequestType]> {\n const reqBody = {\n type: requestType,\n ...params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerQueryResponse<TRequestType>\n >(`${this.opts.url}/query`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus throws on failure responses so the cast to the success response is acceptable here\n const successResponse = response as AxiosResponse<\n TriggerServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n private checkResponseStatus(response: AxiosResponse) {\n if (response.status !== 200 || !response.data) {\n throw Error(\n `Unexpected response from server: ${response.status} ${response.statusText}. Data: ${response.data}`,\n );\n }\n }\n\n private checkServerStatus(\n response: AxiosResponse<\n TriggerServerExecuteResult | TriggerServerQueryResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new TriggerServerFailureError(response.data);\n }\n }\n}\n"],"mappings":"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","names":["axios"]}
|
|
1
|
+
{"version":3,"sources":["../src/TriggerClient.ts"],"sourcesContent":["import {\n EIP712CancelOrdersParams,\n EIP712CancelProductOrdersParams,\n EIP712ListTriggerOrdersParams,\n EIP712OrderParams,\n getDefaultRecvTime,\n getNadoEIP712Values,\n getOrderNonce,\n getSignedTransactionRequest,\n SignableRequestType,\n SignableRequestTypeToParams,\n toIntegerString,\n WalletClientWithAccount,\n WalletNotProvidedError,\n} from '@nadohq/shared';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport {\n mapServerOrderInfo,\n mapTriggerCriteria,\n mapTwapExecutionStatus,\n} from './dataMappers';\nimport {\n TriggerCancelOrdersParams,\n TriggerCancelProductOrdersParams,\n TriggerListOrdersParams,\n TriggerListOrdersResponse,\n TriggerListTwapExecutionsParams,\n TriggerListTwapExecutionsResponse,\n TriggerOrderInfo,\n TriggerPlaceOrderParams,\n TriggerServerExecuteRequestByType,\n TriggerServerExecuteRequestType,\n TriggerServerExecuteResult,\n TriggerServerExecuteSuccessResult,\n TriggerServerQueryRequestByType,\n TriggerServerQueryRequestType,\n TriggerServerQueryResponse,\n TriggerServerQueryResponseByType,\n TriggerServerQuerySuccessResponse,\n TwapExecutionInfo,\n} from './types';\nimport { TriggerServerFailureError } from './types/TriggerServerFailureError';\n\nexport interface TriggerClientOpts {\n // Server URL\n url: string;\n // Wallet client for EIP712 signing\n walletClient?: WalletClientWithAccount;\n // Linked signer registered through the engine, if provided, execute requests will use this signer\n linkedSignerWalletClient?: WalletClientWithAccount;\n}\n\n/**\n * Client for all trigger service requests\n */\nexport class TriggerClient {\n readonly opts: TriggerClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: TriggerClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\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 requests\n *\n * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer\n */\n public setLinkedSigner(\n linkedSignerWalletClient: WalletClientWithAccount | null,\n ) {\n this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? undefined;\n }\n\n /*\n Executes\n */\n\n async placeTriggerOrder(params: TriggerPlaceOrderParams) {\n const orderParams: EIP712OrderParams = {\n amount: params.order.amount,\n expiration: params.order.expiration,\n price: params.order.price,\n subaccountName: params.order.subaccountName,\n subaccountOwner: params.order.subaccountOwner,\n nonce: params.nonce ?? getOrderNonce(),\n appendix: params.order.appendix,\n };\n const signature = await this.sign(\n 'place_order',\n params.verifyingAddr,\n params.chainId,\n orderParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['place_order'] = {\n id: params.id ?? null,\n order: getNadoEIP712Values('place_order', orderParams),\n trigger: mapTriggerCriteria(params.triggerCriteria),\n signature,\n product_id: params.productId,\n spot_leverage: params.spotLeverage ?? null,\n digest: params.digest ?? null,\n borrow_margin: params.borrowMargin ?? null,\n };\n\n return this.execute('place_order', executeParams);\n }\n\n async cancelTriggerOrders(params: TriggerCancelOrdersParams) {\n const cancelOrdersParams: EIP712CancelOrdersParams = {\n digests: params.digests,\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values('cancel_orders', cancelOrdersParams);\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_orders'] = {\n signature: await this.sign(\n 'cancel_orders',\n params.verifyingAddr,\n params.chainId,\n cancelOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_orders', executeParams);\n }\n\n async cancelProductOrders(params: TriggerCancelProductOrdersParams) {\n const cancelProductOrdersParams: EIP712CancelProductOrdersParams = {\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values(\n 'cancel_product_orders',\n cancelProductOrdersParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_product_orders'] =\n {\n signature: await this.sign(\n 'cancel_product_orders',\n params.verifyingAddr,\n params.chainId,\n cancelProductOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_product_orders', executeParams);\n }\n\n /*\n Queries\n */\n async listOrders(\n params: TriggerListOrdersParams,\n ): Promise<TriggerListOrdersResponse> {\n const signatureParams: EIP712ListTriggerOrdersParams = {\n // Default to 90 seconds from now if no recvTime is provided\n recvTime: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n\n const tx = getNadoEIP712Values('list_trigger_orders', signatureParams);\n const signature = await this.sign(\n 'list_trigger_orders',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const queryParams: TriggerServerQueryRequestByType['list_trigger_orders'] =\n {\n limit: params.limit,\n max_update_time: params.maxUpdateTimeInclusive,\n pending: params.pending,\n product_id: params.productId,\n digests: params.digests,\n trigger_types: params.triggerTypes,\n reduce_only: params.reduceOnly,\n signature,\n tx,\n };\n\n const baseResponse = await this.query('list_trigger_orders', queryParams);\n\n const orders: TriggerOrderInfo[] =\n baseResponse.orders.map(mapServerOrderInfo);\n\n return {\n orders,\n };\n }\n\n async listTwapExecutions(\n params: TriggerListTwapExecutionsParams,\n ): Promise<TriggerListTwapExecutionsResponse> {\n const queryParams: TriggerServerQueryRequestByType['list_twap_executions'] =\n {\n digest: params.digest,\n };\n\n const baseResponse = await this.query('list_twap_executions', queryParams);\n\n const executions: TwapExecutionInfo[] = baseResponse.executions.map(\n (execution) => ({\n executionId: execution.execution_id,\n scheduledTime: execution.scheduled_time,\n status: mapTwapExecutionStatus(execution.status),\n updatedAt: execution.updated_at,\n }),\n );\n\n return {\n executions,\n };\n }\n\n /*\n Base Fns\n */\n protected async sign<T extends SignableRequestType>(\n requestType: T,\n verifyingContract: string,\n chainId: number,\n params: SignableRequestTypeToParams[T],\n ) {\n // Use the linked signer if provided, otherwise use the default signer provided to the engine\n const walletClient =\n this.opts.linkedSignerWalletClient ?? this.opts.walletClient;\n\n if (walletClient == null) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\n }\n\n /**\n * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped\n * in an TriggerServerFailureError on failure.\n *\n * @param requestType\n * @param params\n */\n protected async execute<TRequestType extends TriggerServerExecuteRequestType>(\n requestType: TRequestType,\n params: TriggerServerExecuteRequestByType[TRequestType],\n ): Promise<TriggerServerExecuteSuccessResult<TRequestType>> {\n const reqBody = {\n [requestType]: params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerExecuteResult<TRequestType>\n >(`${this.opts.url}/execute`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus catches the failure result and throws the error, so the cast to the success response is acceptable here\n return response.data as TriggerServerExecuteSuccessResult<TRequestType>;\n }\n\n protected async query<TRequestType extends TriggerServerQueryRequestType>(\n requestType: TRequestType,\n params: TriggerServerQueryRequestByType[TRequestType],\n ): Promise<TriggerServerQueryResponseByType[TRequestType]> {\n const reqBody = {\n type: requestType,\n ...params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerQueryResponse<TRequestType>\n >(`${this.opts.url}/query`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus throws on failure responses so the cast to the success response is acceptable here\n const successResponse = response as AxiosResponse<\n TriggerServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n private checkResponseStatus(response: AxiosResponse) {\n if (response.status !== 200 || !response.data) {\n throw Error(\n `Unexpected response from server: ${response.status} ${response.statusText}. Data: ${response.data}`,\n );\n }\n }\n\n private checkServerStatus(\n response: AxiosResponse<\n TriggerServerExecuteResult | TriggerServerQueryResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new TriggerServerFailureError(response.data);\n }\n }\n}\n"],"mappings":"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","names":["axios"]}
|
package/dist/TriggerClient.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WalletClientWithAccount, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/shared';
|
|
2
2
|
import { AxiosInstance } from 'axios';
|
|
3
|
-
import { TriggerPlaceOrderParams, TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse } from './types/clientTypes.cjs';
|
|
3
|
+
import { TriggerPlaceOrderParams, TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse, TriggerListTwapExecutionsParams, TriggerListTwapExecutionsResponse } from './types/clientTypes.cjs';
|
|
4
4
|
import { TriggerServerExecuteSuccessResult, TriggerServerExecuteRequestType, TriggerServerExecuteRequestByType } from './types/serverExecuteTypes.cjs';
|
|
5
5
|
import { TriggerServerQueryRequestType, TriggerServerQueryRequestByType, TriggerServerQueryResponseByType } from './types/serverQueryTypes.cjs';
|
|
6
6
|
import '@nadohq/engine-client';
|
|
@@ -29,6 +29,7 @@ declare class TriggerClient {
|
|
|
29
29
|
cancelTriggerOrders(params: TriggerCancelOrdersParams): Promise<TriggerServerExecuteSuccessResult<"cancel_orders">>;
|
|
30
30
|
cancelProductOrders(params: TriggerCancelProductOrdersParams): Promise<TriggerServerExecuteSuccessResult<"cancel_product_orders">>;
|
|
31
31
|
listOrders(params: TriggerListOrdersParams): Promise<TriggerListOrdersResponse>;
|
|
32
|
+
listTwapExecutions(params: TriggerListTwapExecutionsParams): Promise<TriggerListTwapExecutionsResponse>;
|
|
32
33
|
protected sign<T extends SignableRequestType>(requestType: T, verifyingContract: string, chainId: number, params: SignableRequestTypeToParams[T]): Promise<`0x${string}`>;
|
|
33
34
|
/**
|
|
34
35
|
* POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped
|
package/dist/TriggerClient.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WalletClientWithAccount, SignableRequestType, SignableRequestTypeToParams } from '@nadohq/shared';
|
|
2
2
|
import { AxiosInstance } from 'axios';
|
|
3
|
-
import { TriggerPlaceOrderParams, TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse } from './types/clientTypes.js';
|
|
3
|
+
import { TriggerPlaceOrderParams, TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse, TriggerListTwapExecutionsParams, TriggerListTwapExecutionsResponse } from './types/clientTypes.js';
|
|
4
4
|
import { TriggerServerExecuteSuccessResult, TriggerServerExecuteRequestType, TriggerServerExecuteRequestByType } from './types/serverExecuteTypes.js';
|
|
5
5
|
import { TriggerServerQueryRequestType, TriggerServerQueryRequestByType, TriggerServerQueryResponseByType } from './types/serverQueryTypes.js';
|
|
6
6
|
import '@nadohq/engine-client';
|
|
@@ -29,6 +29,7 @@ declare class TriggerClient {
|
|
|
29
29
|
cancelTriggerOrders(params: TriggerCancelOrdersParams): Promise<TriggerServerExecuteSuccessResult<"cancel_orders">>;
|
|
30
30
|
cancelProductOrders(params: TriggerCancelProductOrdersParams): Promise<TriggerServerExecuteSuccessResult<"cancel_product_orders">>;
|
|
31
31
|
listOrders(params: TriggerListOrdersParams): Promise<TriggerListOrdersResponse>;
|
|
32
|
+
listTwapExecutions(params: TriggerListTwapExecutionsParams): Promise<TriggerListTwapExecutionsResponse>;
|
|
32
33
|
protected sign<T extends SignableRequestType>(requestType: T, verifyingContract: string, chainId: number, params: SignableRequestTypeToParams[T]): Promise<`0x${string}`>;
|
|
33
34
|
/**
|
|
34
35
|
* POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped
|
package/dist/TriggerClient.js
CHANGED
|
@@ -8,7 +8,11 @@ import {
|
|
|
8
8
|
WalletNotProvidedError
|
|
9
9
|
} from "@nadohq/shared";
|
|
10
10
|
import axios from "axios";
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
mapServerOrderInfo,
|
|
13
|
+
mapTriggerCriteria,
|
|
14
|
+
mapTwapExecutionStatus
|
|
15
|
+
} from "./dataMappers.js";
|
|
12
16
|
import { TriggerServerFailureError } from "./types/TriggerServerFailureError.js";
|
|
13
17
|
var TriggerClient = class {
|
|
14
18
|
constructor(opts) {
|
|
@@ -134,6 +138,23 @@ var TriggerClient = class {
|
|
|
134
138
|
orders
|
|
135
139
|
};
|
|
136
140
|
}
|
|
141
|
+
async listTwapExecutions(params) {
|
|
142
|
+
const queryParams = {
|
|
143
|
+
digest: params.digest
|
|
144
|
+
};
|
|
145
|
+
const baseResponse = await this.query("list_twap_executions", queryParams);
|
|
146
|
+
const executions = baseResponse.executions.map(
|
|
147
|
+
(execution) => ({
|
|
148
|
+
executionId: execution.execution_id,
|
|
149
|
+
scheduledTime: execution.scheduled_time,
|
|
150
|
+
status: mapTwapExecutionStatus(execution.status),
|
|
151
|
+
updatedAt: execution.updated_at
|
|
152
|
+
})
|
|
153
|
+
);
|
|
154
|
+
return {
|
|
155
|
+
executions
|
|
156
|
+
};
|
|
157
|
+
}
|
|
137
158
|
/*
|
|
138
159
|
Base Fns
|
|
139
160
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/TriggerClient.ts"],"sourcesContent":["import {\n EIP712CancelOrdersParams,\n EIP712CancelProductOrdersParams,\n EIP712ListTriggerOrdersParams,\n EIP712OrderParams,\n getDefaultRecvTime,\n getNadoEIP712Values,\n getOrderNonce,\n getSignedTransactionRequest,\n SignableRequestType,\n SignableRequestTypeToParams,\n toIntegerString,\n WalletClientWithAccount,\n WalletNotProvidedError,\n} from '@nadohq/shared';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport { mapServerOrderInfo, mapTriggerCriteria } from './dataMappers';\nimport {\n TriggerCancelOrdersParams,\n TriggerCancelProductOrdersParams,\n TriggerListOrdersParams,\n TriggerListOrdersResponse,\n TriggerOrderInfo,\n TriggerPlaceOrderParams,\n TriggerServerExecuteRequestByType,\n TriggerServerExecuteRequestType,\n TriggerServerExecuteResult,\n TriggerServerExecuteSuccessResult,\n TriggerServerQueryRequestByType,\n TriggerServerQueryRequestType,\n TriggerServerQueryResponse,\n TriggerServerQueryResponseByType,\n TriggerServerQuerySuccessResponse,\n} from './types';\nimport { TriggerServerFailureError } from './types/TriggerServerFailureError';\n\nexport interface TriggerClientOpts {\n // Server URL\n url: string;\n // Wallet client for EIP712 signing\n walletClient?: WalletClientWithAccount;\n // Linked signer registered through the engine, if provided, execute requests will use this signer\n linkedSignerWalletClient?: WalletClientWithAccount;\n}\n\n/**\n * Client for all trigger service requests\n */\nexport class TriggerClient {\n readonly opts: TriggerClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: TriggerClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\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 requests\n *\n * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer\n */\n public setLinkedSigner(\n linkedSignerWalletClient: WalletClientWithAccount | null,\n ) {\n this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? undefined;\n }\n\n /*\n Executes\n */\n\n async placeTriggerOrder(params: TriggerPlaceOrderParams) {\n const orderParams: EIP712OrderParams = {\n amount: params.order.amount,\n expiration: params.order.expiration,\n price: params.order.price,\n subaccountName: params.order.subaccountName,\n subaccountOwner: params.order.subaccountOwner,\n nonce: params.nonce ?? getOrderNonce(),\n appendix: params.order.appendix,\n };\n const signature = await this.sign(\n 'place_order',\n params.verifyingAddr,\n params.chainId,\n orderParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['place_order'] = {\n id: params.id ?? null,\n order: getNadoEIP712Values('place_order', orderParams),\n trigger: mapTriggerCriteria(params.triggerCriteria),\n signature,\n product_id: params.productId,\n spot_leverage: params.spotLeverage ?? null,\n digest: params.digest ?? null,\n borrow_margin: params.borrowMargin ?? null,\n };\n\n return this.execute('place_order', executeParams);\n }\n\n async cancelTriggerOrders(params: TriggerCancelOrdersParams) {\n const cancelOrdersParams: EIP712CancelOrdersParams = {\n digests: params.digests,\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values('cancel_orders', cancelOrdersParams);\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_orders'] = {\n signature: await this.sign(\n 'cancel_orders',\n params.verifyingAddr,\n params.chainId,\n cancelOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_orders', executeParams);\n }\n\n async cancelProductOrders(params: TriggerCancelProductOrdersParams) {\n const cancelProductOrdersParams: EIP712CancelProductOrdersParams = {\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values(\n 'cancel_product_orders',\n cancelProductOrdersParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_product_orders'] =\n {\n signature: await this.sign(\n 'cancel_product_orders',\n params.verifyingAddr,\n params.chainId,\n cancelProductOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_product_orders', executeParams);\n }\n\n /*\n Queries\n */\n async listOrders(\n params: TriggerListOrdersParams,\n ): Promise<TriggerListOrdersResponse> {\n const signatureParams: EIP712ListTriggerOrdersParams = {\n // Default to 90 seconds from now if no recvTime is provided\n recvTime: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n\n const tx = getNadoEIP712Values('list_trigger_orders', signatureParams);\n const signature = await this.sign(\n 'list_trigger_orders',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const queryParams: TriggerServerQueryRequestByType['list_trigger_orders'] =\n {\n limit: params.limit,\n max_update_time: params.maxUpdateTimeInclusive,\n pending: params.pending,\n product_id: params.productId,\n digests: params.digests,\n trigger_types: params.triggerTypes,\n reduce_only: params.reduceOnly,\n signature,\n tx,\n };\n\n const baseResponse = await this.query('list_trigger_orders', queryParams);\n\n const orders: TriggerOrderInfo[] =\n baseResponse.orders.map(mapServerOrderInfo);\n\n return {\n orders,\n };\n }\n\n /*\n Base Fns\n */\n protected async sign<T extends SignableRequestType>(\n requestType: T,\n verifyingContract: string,\n chainId: number,\n params: SignableRequestTypeToParams[T],\n ) {\n // Use the linked signer if provided, otherwise use the default signer provided to the engine\n const walletClient =\n this.opts.linkedSignerWalletClient ?? this.opts.walletClient;\n\n if (walletClient == null) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\n }\n\n /**\n * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped\n * in an TriggerServerFailureError on failure.\n *\n * @param requestType\n * @param params\n */\n protected async execute<TRequestType extends TriggerServerExecuteRequestType>(\n requestType: TRequestType,\n params: TriggerServerExecuteRequestByType[TRequestType],\n ): Promise<TriggerServerExecuteSuccessResult<TRequestType>> {\n const reqBody = {\n [requestType]: params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerExecuteResult<TRequestType>\n >(`${this.opts.url}/execute`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus catches the failure result and throws the error, so the cast to the success response is acceptable here\n return response.data as TriggerServerExecuteSuccessResult<TRequestType>;\n }\n\n protected async query<TRequestType extends TriggerServerQueryRequestType>(\n requestType: TRequestType,\n params: TriggerServerQueryRequestByType[TRequestType],\n ): Promise<TriggerServerQueryResponseByType[TRequestType]> {\n const reqBody = {\n type: requestType,\n ...params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerQueryResponse<TRequestType>\n >(`${this.opts.url}/query`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus throws on failure responses so the cast to the success response is acceptable here\n const successResponse = response as AxiosResponse<\n TriggerServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n private checkResponseStatus(response: AxiosResponse) {\n if (response.status !== 200 || !response.data) {\n throw Error(\n `Unexpected response from server: ${response.status} ${response.statusText}. Data: ${response.data}`,\n );\n }\n }\n\n private checkServerStatus(\n response: AxiosResponse<\n TriggerServerExecuteResult | TriggerServerQueryResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new TriggerServerFailureError(response.data);\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/TriggerClient.ts"],"sourcesContent":["import {\n EIP712CancelOrdersParams,\n EIP712CancelProductOrdersParams,\n EIP712ListTriggerOrdersParams,\n EIP712OrderParams,\n getDefaultRecvTime,\n getNadoEIP712Values,\n getOrderNonce,\n getSignedTransactionRequest,\n SignableRequestType,\n SignableRequestTypeToParams,\n toIntegerString,\n WalletClientWithAccount,\n WalletNotProvidedError,\n} from '@nadohq/shared';\nimport axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport {\n mapServerOrderInfo,\n mapTriggerCriteria,\n mapTwapExecutionStatus,\n} from './dataMappers';\nimport {\n TriggerCancelOrdersParams,\n TriggerCancelProductOrdersParams,\n TriggerListOrdersParams,\n TriggerListOrdersResponse,\n TriggerListTwapExecutionsParams,\n TriggerListTwapExecutionsResponse,\n TriggerOrderInfo,\n TriggerPlaceOrderParams,\n TriggerServerExecuteRequestByType,\n TriggerServerExecuteRequestType,\n TriggerServerExecuteResult,\n TriggerServerExecuteSuccessResult,\n TriggerServerQueryRequestByType,\n TriggerServerQueryRequestType,\n TriggerServerQueryResponse,\n TriggerServerQueryResponseByType,\n TriggerServerQuerySuccessResponse,\n TwapExecutionInfo,\n} from './types';\nimport { TriggerServerFailureError } from './types/TriggerServerFailureError';\n\nexport interface TriggerClientOpts {\n // Server URL\n url: string;\n // Wallet client for EIP712 signing\n walletClient?: WalletClientWithAccount;\n // Linked signer registered through the engine, if provided, execute requests will use this signer\n linkedSignerWalletClient?: WalletClientWithAccount;\n}\n\n/**\n * Client for all trigger service requests\n */\nexport class TriggerClient {\n readonly opts: TriggerClientOpts;\n readonly axiosInstance: AxiosInstance;\n\n constructor(opts: TriggerClientOpts) {\n this.opts = opts;\n this.axiosInstance = axios.create({\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 requests\n *\n * @param linkedSignerWalletClient The linkedSigner to use for all signatures. Set to null to revert to the chain signer\n */\n public setLinkedSigner(\n linkedSignerWalletClient: WalletClientWithAccount | null,\n ) {\n this.opts.linkedSignerWalletClient = linkedSignerWalletClient ?? undefined;\n }\n\n /*\n Executes\n */\n\n async placeTriggerOrder(params: TriggerPlaceOrderParams) {\n const orderParams: EIP712OrderParams = {\n amount: params.order.amount,\n expiration: params.order.expiration,\n price: params.order.price,\n subaccountName: params.order.subaccountName,\n subaccountOwner: params.order.subaccountOwner,\n nonce: params.nonce ?? getOrderNonce(),\n appendix: params.order.appendix,\n };\n const signature = await this.sign(\n 'place_order',\n params.verifyingAddr,\n params.chainId,\n orderParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['place_order'] = {\n id: params.id ?? null,\n order: getNadoEIP712Values('place_order', orderParams),\n trigger: mapTriggerCriteria(params.triggerCriteria),\n signature,\n product_id: params.productId,\n spot_leverage: params.spotLeverage ?? null,\n digest: params.digest ?? null,\n borrow_margin: params.borrowMargin ?? null,\n };\n\n return this.execute('place_order', executeParams);\n }\n\n async cancelTriggerOrders(params: TriggerCancelOrdersParams) {\n const cancelOrdersParams: EIP712CancelOrdersParams = {\n digests: params.digests,\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values('cancel_orders', cancelOrdersParams);\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_orders'] = {\n signature: await this.sign(\n 'cancel_orders',\n params.verifyingAddr,\n params.chainId,\n cancelOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_orders', executeParams);\n }\n\n async cancelProductOrders(params: TriggerCancelProductOrdersParams) {\n const cancelProductOrdersParams: EIP712CancelProductOrdersParams = {\n nonce: params.nonce ?? getOrderNonce(),\n productIds: params.productIds,\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n const tx = getNadoEIP712Values(\n 'cancel_product_orders',\n cancelProductOrdersParams,\n );\n\n const executeParams: TriggerServerExecuteRequestByType['cancel_product_orders'] =\n {\n signature: await this.sign(\n 'cancel_product_orders',\n params.verifyingAddr,\n params.chainId,\n cancelProductOrdersParams,\n ),\n tx,\n };\n\n return this.execute('cancel_product_orders', executeParams);\n }\n\n /*\n Queries\n */\n async listOrders(\n params: TriggerListOrdersParams,\n ): Promise<TriggerListOrdersResponse> {\n const signatureParams: EIP712ListTriggerOrdersParams = {\n // Default to 90 seconds from now if no recvTime is provided\n recvTime: toIntegerString(params.recvTime ?? getDefaultRecvTime()),\n subaccountName: params.subaccountName,\n subaccountOwner: params.subaccountOwner,\n };\n\n const tx = getNadoEIP712Values('list_trigger_orders', signatureParams);\n const signature = await this.sign(\n 'list_trigger_orders',\n params.verifyingAddr,\n params.chainId,\n signatureParams,\n );\n\n const queryParams: TriggerServerQueryRequestByType['list_trigger_orders'] =\n {\n limit: params.limit,\n max_update_time: params.maxUpdateTimeInclusive,\n pending: params.pending,\n product_id: params.productId,\n digests: params.digests,\n trigger_types: params.triggerTypes,\n reduce_only: params.reduceOnly,\n signature,\n tx,\n };\n\n const baseResponse = await this.query('list_trigger_orders', queryParams);\n\n const orders: TriggerOrderInfo[] =\n baseResponse.orders.map(mapServerOrderInfo);\n\n return {\n orders,\n };\n }\n\n async listTwapExecutions(\n params: TriggerListTwapExecutionsParams,\n ): Promise<TriggerListTwapExecutionsResponse> {\n const queryParams: TriggerServerQueryRequestByType['list_twap_executions'] =\n {\n digest: params.digest,\n };\n\n const baseResponse = await this.query('list_twap_executions', queryParams);\n\n const executions: TwapExecutionInfo[] = baseResponse.executions.map(\n (execution) => ({\n executionId: execution.execution_id,\n scheduledTime: execution.scheduled_time,\n status: mapTwapExecutionStatus(execution.status),\n updatedAt: execution.updated_at,\n }),\n );\n\n return {\n executions,\n };\n }\n\n /*\n Base Fns\n */\n protected async sign<T extends SignableRequestType>(\n requestType: T,\n verifyingContract: string,\n chainId: number,\n params: SignableRequestTypeToParams[T],\n ) {\n // Use the linked signer if provided, otherwise use the default signer provided to the engine\n const walletClient =\n this.opts.linkedSignerWalletClient ?? this.opts.walletClient;\n\n if (walletClient == null) {\n throw new WalletNotProvidedError();\n }\n\n return getSignedTransactionRequest({\n chainId,\n requestParams: params,\n requestType,\n walletClient,\n verifyingContract,\n });\n }\n\n /**\n * POSTs an execute message to the trigger service and returns the successful response. Throws the failure response wrapped\n * in an TriggerServerFailureError on failure.\n *\n * @param requestType\n * @param params\n */\n protected async execute<TRequestType extends TriggerServerExecuteRequestType>(\n requestType: TRequestType,\n params: TriggerServerExecuteRequestByType[TRequestType],\n ): Promise<TriggerServerExecuteSuccessResult<TRequestType>> {\n const reqBody = {\n [requestType]: params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerExecuteResult<TRequestType>\n >(`${this.opts.url}/execute`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus catches the failure result and throws the error, so the cast to the success response is acceptable here\n return response.data as TriggerServerExecuteSuccessResult<TRequestType>;\n }\n\n protected async query<TRequestType extends TriggerServerQueryRequestType>(\n requestType: TRequestType,\n params: TriggerServerQueryRequestByType[TRequestType],\n ): Promise<TriggerServerQueryResponseByType[TRequestType]> {\n const reqBody = {\n type: requestType,\n ...params,\n };\n const response = await this.axiosInstance.post<\n TriggerServerQueryResponse<TRequestType>\n >(`${this.opts.url}/query`, reqBody);\n\n this.checkResponseStatus(response);\n this.checkServerStatus(response);\n\n // checkServerStatus throws on failure responses so the cast to the success response is acceptable here\n const successResponse = response as AxiosResponse<\n TriggerServerQuerySuccessResponse<TRequestType>\n >;\n\n return successResponse.data.data;\n }\n\n private checkResponseStatus(response: AxiosResponse) {\n if (response.status !== 200 || !response.data) {\n throw Error(\n `Unexpected response from server: ${response.status} ${response.statusText}. Data: ${response.data}`,\n );\n }\n }\n\n private checkServerStatus(\n response: AxiosResponse<\n TriggerServerExecuteResult | TriggerServerQueryResponse\n >,\n ) {\n if (response.data.status !== 'success') {\n throw new TriggerServerFailureError(response.data);\n }\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/dataMappers.cjs
CHANGED
|
@@ -21,7 +21,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var dataMappers_exports = {};
|
|
22
22
|
__export(dataMappers_exports, {
|
|
23
23
|
mapServerOrderInfo: () => mapServerOrderInfo,
|
|
24
|
-
mapTriggerCriteria: () => mapTriggerCriteria
|
|
24
|
+
mapTriggerCriteria: () => mapTriggerCriteria,
|
|
25
|
+
mapTwapExecutionStatus: () => mapTwapExecutionStatus
|
|
25
26
|
});
|
|
26
27
|
module.exports = __toCommonJS(dataMappers_exports);
|
|
27
28
|
var import_shared = require("@nadohq/shared");
|
|
@@ -90,24 +91,44 @@ function mapServerOrderInfo(info) {
|
|
|
90
91
|
};
|
|
91
92
|
}
|
|
92
93
|
function mapTriggerServerOrderStatus(status) {
|
|
93
|
-
if (status === "
|
|
94
|
+
if (status === "triggering") {
|
|
94
95
|
return {
|
|
95
|
-
type: "
|
|
96
|
+
type: "triggering"
|
|
97
|
+
};
|
|
98
|
+
} else if (status === "waiting_price") {
|
|
99
|
+
return {
|
|
100
|
+
type: "waiting_price"
|
|
101
|
+
};
|
|
102
|
+
} else if (status === "waiting_dependency") {
|
|
103
|
+
return {
|
|
104
|
+
type: "waiting_dependency"
|
|
96
105
|
};
|
|
97
106
|
} else if ("cancelled" in status) {
|
|
98
107
|
return {
|
|
99
108
|
type: "cancelled",
|
|
100
109
|
reason: status.cancelled
|
|
101
110
|
};
|
|
111
|
+
} else if ("triggered" in status) {
|
|
112
|
+
return {
|
|
113
|
+
type: "triggered",
|
|
114
|
+
result: status.triggered
|
|
115
|
+
};
|
|
102
116
|
} else if ("internal_error" in status) {
|
|
103
117
|
return {
|
|
104
118
|
type: "internal_error",
|
|
105
119
|
error: status.internal_error
|
|
106
120
|
};
|
|
107
|
-
} else if ("
|
|
121
|
+
} else if ("twap_executing" in status) {
|
|
108
122
|
return {
|
|
109
|
-
type: "
|
|
110
|
-
|
|
123
|
+
type: "twap_executing",
|
|
124
|
+
currentExecution: status.twap_executing.current_execution,
|
|
125
|
+
totalExecutions: status.twap_executing.total_executions
|
|
126
|
+
};
|
|
127
|
+
} else if ("twap_completed" in status) {
|
|
128
|
+
return {
|
|
129
|
+
type: "twap_completed",
|
|
130
|
+
executed: status.twap_completed.executed,
|
|
131
|
+
total: status.twap_completed.total
|
|
111
132
|
};
|
|
112
133
|
}
|
|
113
134
|
throw Error(`Unknown trigger order status: ${JSON.stringify(status)}`);
|
|
@@ -183,9 +204,34 @@ function mapServerTimeTriggerCriteria(serverCriteria) {
|
|
|
183
204
|
)
|
|
184
205
|
};
|
|
185
206
|
}
|
|
207
|
+
function mapTwapExecutionStatus(status) {
|
|
208
|
+
if (status === "pending") {
|
|
209
|
+
return {
|
|
210
|
+
type: "pending"
|
|
211
|
+
};
|
|
212
|
+
} else if ("executed" in status) {
|
|
213
|
+
return {
|
|
214
|
+
type: "executed",
|
|
215
|
+
executedTime: status.executed.executed_time,
|
|
216
|
+
executeResponse: status.executed.execute_response
|
|
217
|
+
};
|
|
218
|
+
} else if ("failed" in status) {
|
|
219
|
+
return {
|
|
220
|
+
type: "failed",
|
|
221
|
+
error: status.failed
|
|
222
|
+
};
|
|
223
|
+
} else if ("cancelled" in status) {
|
|
224
|
+
return {
|
|
225
|
+
type: "cancelled",
|
|
226
|
+
reason: status.cancelled
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
throw Error(`Unknown TWAP execution status: ${JSON.stringify(status)}`);
|
|
230
|
+
}
|
|
186
231
|
// Annotate the CommonJS export names for ESM import in node:
|
|
187
232
|
0 && (module.exports = {
|
|
188
233
|
mapServerOrderInfo,
|
|
189
|
-
mapTriggerCriteria
|
|
234
|
+
mapTriggerCriteria,
|
|
235
|
+
mapTwapExecutionStatus
|
|
190
236
|
});
|
|
191
237
|
//# sourceMappingURL=dataMappers.cjs.map
|
package/dist/dataMappers.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dataMappers.ts"],"sourcesContent":["import { unpackOrderAppendix } from '@nadohq/shared';\nimport {\n addDecimals,\n removeDecimals,\n toBigDecimal,\n toIntegerString,\n} from '@nadohq/shared';\nimport {\n PriceTriggerCriteria,\n PriceTriggerRequirementType,\n TimeTriggerCriteria,\n TriggerCriteria,\n TriggerOrder,\n TriggerOrderInfo,\n TriggerOrderStatus,\n TriggerServerOrderInfo,\n TriggerServerOrderStatus,\n TriggerServerPriceRequirement,\n TriggerServerPriceTriggerCriteria,\n TriggerServerTimeTriggerCriteria,\n TriggerServerTriggerCriteria,\n} from './types';\n\n/**\n * Maps client-side trigger criteria to server-side trigger criteria format.\n * Converts price and time triggers to their respective server representations\n * with proper decimal scaling and field name transformations.\n *\n * @param criteria - The client-side trigger criteria (price or time based)\n * @returns The server-formatted trigger criteria ready for API transmission\n */\nexport function mapTriggerCriteria(\n criteria: TriggerCriteria,\n): TriggerServerTriggerCriteria {\n switch (criteria.type) {\n case 'price':\n return {\n price_trigger: mapPriceTriggerCriteria(criteria.criteria),\n };\n case 'time':\n return {\n time_trigger: mapTimeTriggerCriteria(criteria.criteria),\n };\n }\n}\n\nfunction mapPriceTriggerCriteria(\n criteria: PriceTriggerCriteria,\n): TriggerServerPriceTriggerCriteria {\n const priceValue = toIntegerString(addDecimals(criteria.triggerPrice));\n\n const price_requirement = ((): TriggerServerPriceRequirement => {\n switch (criteria.type) {\n case 'oracle_price_above':\n return { oracle_price_above: priceValue };\n case 'oracle_price_below':\n return { oracle_price_below: priceValue };\n case 'last_price_above':\n return { last_price_above: priceValue };\n case 'last_price_below':\n return { last_price_below: priceValue };\n case 'mid_price_above':\n return { mid_price_above: priceValue };\n case 'mid_price_below':\n return { mid_price_below: priceValue };\n }\n })();\n\n return {\n price_requirement,\n dependency: criteria.dependency\n ? {\n digest: criteria.dependency.digest,\n on_partial_fill: criteria.dependency.onPartialFill,\n }\n : undefined,\n };\n}\n\nfunction mapTimeTriggerCriteria(\n criteria: TimeTriggerCriteria,\n): TriggerServerTimeTriggerCriteria {\n return {\n interval: toIntegerString(criteria.interval),\n amounts: criteria.amounts?.map((amount) => toIntegerString(amount)),\n };\n}\n\n/**\n * Maps complete server-side trigger order information to client-side format.\n *\n * @param info - The complete server-side trigger order information including order, status, and timestamps\n * @returns The client-side trigger order information with converted values and normalized structure\n */\nexport function mapServerOrderInfo(\n info: TriggerServerOrderInfo,\n): TriggerOrderInfo {\n const { order: serverOrder, status, updated_at } = info;\n const order: TriggerOrder = {\n amount: toBigDecimal(serverOrder.order.amount),\n expiration: Number(serverOrder.order.expiration),\n nonce: serverOrder.order.nonce,\n price: removeDecimals(toBigDecimal(serverOrder.order.priceX18)),\n digest: serverOrder.digest,\n productId: serverOrder.product_id,\n triggerCriteria: mapServerTriggerCriteria(serverOrder.trigger),\n appendix: unpackOrderAppendix(serverOrder.order.appendix),\n };\n return {\n serverOrder,\n order,\n status: mapTriggerServerOrderStatus(status),\n updatedAt: updated_at,\n };\n}\n\nfunction mapTriggerServerOrderStatus(\n status: TriggerServerOrderStatus,\n): TriggerOrderStatus {\n if (status === 'pending') {\n return {\n type: 'pending',\n };\n } else if ('cancelled' in status) {\n return {\n type: 'cancelled',\n reason: status.cancelled,\n };\n } else if ('internal_error' in status) {\n return {\n type: 'internal_error',\n error: status.internal_error,\n };\n } else if ('triggered' in status) {\n return {\n type: 'triggered',\n result: status.triggered,\n };\n }\n throw Error(`Unknown trigger order status: ${JSON.stringify(status)}`);\n}\n\nfunction mapServerTriggerCriteria(\n criteria: TriggerServerTriggerCriteria,\n): TriggerCriteria {\n if ('price_trigger' in criteria) {\n return {\n type: 'price',\n criteria: mapServerPriceTriggerCriteria(criteria.price_trigger),\n };\n }\n if ('time_trigger' in criteria) {\n return {\n type: 'time',\n criteria: mapServerTimeTriggerCriteria(criteria.time_trigger),\n };\n }\n throw new Error(`Unknown trigger criteria: ${JSON.stringify(criteria)}`);\n}\n\nfunction mapServerPriceTriggerCriteria(\n serverCriteria: TriggerServerPriceTriggerCriteria,\n): PriceTriggerCriteria {\n const { price_requirement, dependency } = serverCriteria;\n\n const { type, triggerPrice } = ((): {\n type: PriceTriggerRequirementType;\n triggerPrice: string;\n } => {\n if ('oracle_price_above' in price_requirement) {\n return {\n type: 'oracle_price_above',\n triggerPrice: price_requirement.oracle_price_above,\n };\n } else if ('oracle_price_below' in price_requirement) {\n return {\n type: 'oracle_price_below',\n triggerPrice: price_requirement.oracle_price_below,\n };\n } else if ('last_price_above' in price_requirement) {\n return {\n type: 'last_price_above',\n triggerPrice: price_requirement.last_price_above,\n };\n } else if ('last_price_below' in price_requirement) {\n return {\n type: 'last_price_below',\n triggerPrice: price_requirement.last_price_below,\n };\n } else if ('mid_price_above' in price_requirement) {\n return {\n type: 'mid_price_above',\n triggerPrice: price_requirement.mid_price_above,\n };\n } else if ('mid_price_below' in price_requirement) {\n return {\n type: 'mid_price_below',\n triggerPrice: price_requirement.mid_price_below,\n };\n } else {\n throw new Error(\n `Unknown price requirement: ${JSON.stringify(price_requirement)}`,\n );\n }\n })();\n\n return {\n type,\n triggerPrice: removeDecimals(triggerPrice),\n dependency: dependency\n ? {\n digest: dependency.digest,\n onPartialFill: dependency.on_partial_fill,\n }\n : undefined,\n };\n}\n\nfunction mapServerTimeTriggerCriteria(\n serverCriteria: TriggerServerTimeTriggerCriteria,\n): TimeTriggerCriteria {\n return {\n interval: toBigDecimal(serverCriteria.interval),\n amounts: serverCriteria.amounts?.map((amount: string) =>\n toBigDecimal(amount),\n ),\n };\n}\n"],"mappings":"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","names":["import_shared"]}
|
|
1
|
+
{"version":3,"sources":["../src/dataMappers.ts"],"sourcesContent":["import { unpackOrderAppendix } from '@nadohq/shared';\nimport {\n addDecimals,\n removeDecimals,\n toBigDecimal,\n toIntegerString,\n} from '@nadohq/shared';\nimport {\n PriceTriggerCriteria,\n PriceTriggerRequirementType,\n TimeTriggerCriteria,\n TriggerCriteria,\n TriggerOrder,\n TriggerOrderInfo,\n TriggerOrderStatus,\n TriggerServerOrderInfo,\n TriggerServerOrderStatus,\n TriggerServerPriceRequirement,\n TriggerServerPriceTriggerCriteria,\n TriggerServerTimeTriggerCriteria,\n TriggerServerTriggerCriteria,\n TriggerServerTwapExecutionStatus,\n TwapExecutionStatus,\n} from './types';\n\n/**\n * Maps client-side trigger criteria to server-side trigger criteria format.\n * Converts price and time triggers to their respective server representations\n * with proper decimal scaling and field name transformations.\n *\n * @param criteria - The client-side trigger criteria (price or time based)\n * @returns The server-formatted trigger criteria ready for API transmission\n */\nexport function mapTriggerCriteria(\n criteria: TriggerCriteria,\n): TriggerServerTriggerCriteria {\n switch (criteria.type) {\n case 'price':\n return {\n price_trigger: mapPriceTriggerCriteria(criteria.criteria),\n };\n case 'time':\n return {\n time_trigger: mapTimeTriggerCriteria(criteria.criteria),\n };\n }\n}\n\nfunction mapPriceTriggerCriteria(\n criteria: PriceTriggerCriteria,\n): TriggerServerPriceTriggerCriteria {\n const priceValue = toIntegerString(addDecimals(criteria.triggerPrice));\n\n const price_requirement = ((): TriggerServerPriceRequirement => {\n switch (criteria.type) {\n case 'oracle_price_above':\n return { oracle_price_above: priceValue };\n case 'oracle_price_below':\n return { oracle_price_below: priceValue };\n case 'last_price_above':\n return { last_price_above: priceValue };\n case 'last_price_below':\n return { last_price_below: priceValue };\n case 'mid_price_above':\n return { mid_price_above: priceValue };\n case 'mid_price_below':\n return { mid_price_below: priceValue };\n }\n })();\n\n return {\n price_requirement,\n dependency: criteria.dependency\n ? {\n digest: criteria.dependency.digest,\n on_partial_fill: criteria.dependency.onPartialFill,\n }\n : undefined,\n };\n}\n\nfunction mapTimeTriggerCriteria(\n criteria: TimeTriggerCriteria,\n): TriggerServerTimeTriggerCriteria {\n return {\n interval: toIntegerString(criteria.interval),\n amounts: criteria.amounts?.map((amount) => toIntegerString(amount)),\n };\n}\n\n/**\n * Maps complete server-side trigger order information to client-side format.\n *\n * @param info - The complete server-side trigger order information including order, status, and timestamps\n * @returns The client-side trigger order information with converted values and normalized structure\n */\nexport function mapServerOrderInfo(\n info: TriggerServerOrderInfo,\n): TriggerOrderInfo {\n const { order: serverOrder, status, updated_at } = info;\n const order: TriggerOrder = {\n amount: toBigDecimal(serverOrder.order.amount),\n expiration: Number(serverOrder.order.expiration),\n nonce: serverOrder.order.nonce,\n price: removeDecimals(toBigDecimal(serverOrder.order.priceX18)),\n digest: serverOrder.digest,\n productId: serverOrder.product_id,\n triggerCriteria: mapServerTriggerCriteria(serverOrder.trigger),\n appendix: unpackOrderAppendix(serverOrder.order.appendix),\n };\n return {\n serverOrder,\n order,\n status: mapTriggerServerOrderStatus(status),\n updatedAt: updated_at,\n };\n}\n\nfunction mapTriggerServerOrderStatus(\n status: TriggerServerOrderStatus,\n): TriggerOrderStatus {\n if (status === 'triggering') {\n return {\n type: 'triggering',\n };\n } else if (status === 'waiting_price') {\n return {\n type: 'waiting_price',\n };\n } else if (status === 'waiting_dependency') {\n return {\n type: 'waiting_dependency',\n };\n } else if ('cancelled' in status) {\n return {\n type: 'cancelled',\n reason: status.cancelled,\n };\n } else if ('triggered' in status) {\n return {\n type: 'triggered',\n result: status.triggered,\n };\n } else if ('internal_error' in status) {\n return {\n type: 'internal_error',\n error: status.internal_error,\n };\n } else if ('twap_executing' in status) {\n return {\n type: 'twap_executing',\n currentExecution: status.twap_executing.current_execution,\n totalExecutions: status.twap_executing.total_executions,\n };\n } else if ('twap_completed' in status) {\n return {\n type: 'twap_completed',\n executed: status.twap_completed.executed,\n total: status.twap_completed.total,\n };\n }\n throw Error(`Unknown trigger order status: ${JSON.stringify(status)}`);\n}\n\nfunction mapServerTriggerCriteria(\n criteria: TriggerServerTriggerCriteria,\n): TriggerCriteria {\n if ('price_trigger' in criteria) {\n return {\n type: 'price',\n criteria: mapServerPriceTriggerCriteria(criteria.price_trigger),\n };\n }\n if ('time_trigger' in criteria) {\n return {\n type: 'time',\n criteria: mapServerTimeTriggerCriteria(criteria.time_trigger),\n };\n }\n throw new Error(`Unknown trigger criteria: ${JSON.stringify(criteria)}`);\n}\n\nfunction mapServerPriceTriggerCriteria(\n serverCriteria: TriggerServerPriceTriggerCriteria,\n): PriceTriggerCriteria {\n const { price_requirement, dependency } = serverCriteria;\n\n const { type, triggerPrice } = ((): {\n type: PriceTriggerRequirementType;\n triggerPrice: string;\n } => {\n if ('oracle_price_above' in price_requirement) {\n return {\n type: 'oracle_price_above',\n triggerPrice: price_requirement.oracle_price_above,\n };\n } else if ('oracle_price_below' in price_requirement) {\n return {\n type: 'oracle_price_below',\n triggerPrice: price_requirement.oracle_price_below,\n };\n } else if ('last_price_above' in price_requirement) {\n return {\n type: 'last_price_above',\n triggerPrice: price_requirement.last_price_above,\n };\n } else if ('last_price_below' in price_requirement) {\n return {\n type: 'last_price_below',\n triggerPrice: price_requirement.last_price_below,\n };\n } else if ('mid_price_above' in price_requirement) {\n return {\n type: 'mid_price_above',\n triggerPrice: price_requirement.mid_price_above,\n };\n } else if ('mid_price_below' in price_requirement) {\n return {\n type: 'mid_price_below',\n triggerPrice: price_requirement.mid_price_below,\n };\n } else {\n throw new Error(\n `Unknown price requirement: ${JSON.stringify(price_requirement)}`,\n );\n }\n })();\n\n return {\n type,\n triggerPrice: removeDecimals(triggerPrice),\n dependency: dependency\n ? {\n digest: dependency.digest,\n onPartialFill: dependency.on_partial_fill,\n }\n : undefined,\n };\n}\n\nfunction mapServerTimeTriggerCriteria(\n serverCriteria: TriggerServerTimeTriggerCriteria,\n): TimeTriggerCriteria {\n return {\n interval: toBigDecimal(serverCriteria.interval),\n amounts: serverCriteria.amounts?.map((amount: string) =>\n toBigDecimal(amount),\n ),\n };\n}\n\nexport function mapTwapExecutionStatus(\n status: TriggerServerTwapExecutionStatus,\n): TwapExecutionStatus {\n if (status === 'pending') {\n return {\n type: 'pending',\n };\n } else if ('executed' in status) {\n return {\n type: 'executed',\n executedTime: status.executed.executed_time,\n executeResponse: status.executed.execute_response,\n };\n } else if ('failed' in status) {\n return {\n type: 'failed',\n error: status.failed,\n };\n } else if ('cancelled' in status) {\n return {\n type: 'cancelled',\n reason: status.cancelled,\n };\n }\n throw Error(`Unknown TWAP execution status: ${JSON.stringify(status)}`);\n}\n"],"mappings":"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","names":["import_shared"]}
|
package/dist/dataMappers.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TriggerCriteria } from './types/clientModelTypes.cjs';
|
|
2
|
-
import { TriggerOrderInfo } from './types/clientTypes.cjs';
|
|
2
|
+
import { TriggerOrderInfo, TwapExecutionStatus } from './types/clientTypes.cjs';
|
|
3
3
|
import { TriggerServerTriggerCriteria } from './types/serverModelTypes.cjs';
|
|
4
|
-
import { TriggerServerOrderInfo } from './types/serverQueryTypes.cjs';
|
|
4
|
+
import { TriggerServerOrderInfo, TriggerServerTwapExecutionStatus } from './types/serverQueryTypes.cjs';
|
|
5
5
|
import '@nadohq/engine-client';
|
|
6
6
|
import '@nadohq/shared';
|
|
7
7
|
import './types/serverExecuteTypes.cjs';
|
|
@@ -22,5 +22,6 @@ declare function mapTriggerCriteria(criteria: TriggerCriteria): TriggerServerTri
|
|
|
22
22
|
* @returns The client-side trigger order information with converted values and normalized structure
|
|
23
23
|
*/
|
|
24
24
|
declare function mapServerOrderInfo(info: TriggerServerOrderInfo): TriggerOrderInfo;
|
|
25
|
+
declare function mapTwapExecutionStatus(status: TriggerServerTwapExecutionStatus): TwapExecutionStatus;
|
|
25
26
|
|
|
26
|
-
export { mapServerOrderInfo, mapTriggerCriteria };
|
|
27
|
+
export { mapServerOrderInfo, mapTriggerCriteria, mapTwapExecutionStatus };
|
package/dist/dataMappers.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TriggerCriteria } from './types/clientModelTypes.js';
|
|
2
|
-
import { TriggerOrderInfo } from './types/clientTypes.js';
|
|
2
|
+
import { TriggerOrderInfo, TwapExecutionStatus } from './types/clientTypes.js';
|
|
3
3
|
import { TriggerServerTriggerCriteria } from './types/serverModelTypes.js';
|
|
4
|
-
import { TriggerServerOrderInfo } from './types/serverQueryTypes.js';
|
|
4
|
+
import { TriggerServerOrderInfo, TriggerServerTwapExecutionStatus } from './types/serverQueryTypes.js';
|
|
5
5
|
import '@nadohq/engine-client';
|
|
6
6
|
import '@nadohq/shared';
|
|
7
7
|
import './types/serverExecuteTypes.js';
|
|
@@ -22,5 +22,6 @@ declare function mapTriggerCriteria(criteria: TriggerCriteria): TriggerServerTri
|
|
|
22
22
|
* @returns The client-side trigger order information with converted values and normalized structure
|
|
23
23
|
*/
|
|
24
24
|
declare function mapServerOrderInfo(info: TriggerServerOrderInfo): TriggerOrderInfo;
|
|
25
|
+
declare function mapTwapExecutionStatus(status: TriggerServerTwapExecutionStatus): TwapExecutionStatus;
|
|
25
26
|
|
|
26
|
-
export { mapServerOrderInfo, mapTriggerCriteria };
|
|
27
|
+
export { mapServerOrderInfo, mapTriggerCriteria, mapTwapExecutionStatus };
|
package/dist/dataMappers.js
CHANGED
|
@@ -70,24 +70,44 @@ function mapServerOrderInfo(info) {
|
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
72
|
function mapTriggerServerOrderStatus(status) {
|
|
73
|
-
if (status === "
|
|
73
|
+
if (status === "triggering") {
|
|
74
74
|
return {
|
|
75
|
-
type: "
|
|
75
|
+
type: "triggering"
|
|
76
|
+
};
|
|
77
|
+
} else if (status === "waiting_price") {
|
|
78
|
+
return {
|
|
79
|
+
type: "waiting_price"
|
|
80
|
+
};
|
|
81
|
+
} else if (status === "waiting_dependency") {
|
|
82
|
+
return {
|
|
83
|
+
type: "waiting_dependency"
|
|
76
84
|
};
|
|
77
85
|
} else if ("cancelled" in status) {
|
|
78
86
|
return {
|
|
79
87
|
type: "cancelled",
|
|
80
88
|
reason: status.cancelled
|
|
81
89
|
};
|
|
90
|
+
} else if ("triggered" in status) {
|
|
91
|
+
return {
|
|
92
|
+
type: "triggered",
|
|
93
|
+
result: status.triggered
|
|
94
|
+
};
|
|
82
95
|
} else if ("internal_error" in status) {
|
|
83
96
|
return {
|
|
84
97
|
type: "internal_error",
|
|
85
98
|
error: status.internal_error
|
|
86
99
|
};
|
|
87
|
-
} else if ("
|
|
100
|
+
} else if ("twap_executing" in status) {
|
|
88
101
|
return {
|
|
89
|
-
type: "
|
|
90
|
-
|
|
102
|
+
type: "twap_executing",
|
|
103
|
+
currentExecution: status.twap_executing.current_execution,
|
|
104
|
+
totalExecutions: status.twap_executing.total_executions
|
|
105
|
+
};
|
|
106
|
+
} else if ("twap_completed" in status) {
|
|
107
|
+
return {
|
|
108
|
+
type: "twap_completed",
|
|
109
|
+
executed: status.twap_completed.executed,
|
|
110
|
+
total: status.twap_completed.total
|
|
91
111
|
};
|
|
92
112
|
}
|
|
93
113
|
throw Error(`Unknown trigger order status: ${JSON.stringify(status)}`);
|
|
@@ -163,8 +183,33 @@ function mapServerTimeTriggerCriteria(serverCriteria) {
|
|
|
163
183
|
)
|
|
164
184
|
};
|
|
165
185
|
}
|
|
186
|
+
function mapTwapExecutionStatus(status) {
|
|
187
|
+
if (status === "pending") {
|
|
188
|
+
return {
|
|
189
|
+
type: "pending"
|
|
190
|
+
};
|
|
191
|
+
} else if ("executed" in status) {
|
|
192
|
+
return {
|
|
193
|
+
type: "executed",
|
|
194
|
+
executedTime: status.executed.executed_time,
|
|
195
|
+
executeResponse: status.executed.execute_response
|
|
196
|
+
};
|
|
197
|
+
} else if ("failed" in status) {
|
|
198
|
+
return {
|
|
199
|
+
type: "failed",
|
|
200
|
+
error: status.failed
|
|
201
|
+
};
|
|
202
|
+
} else if ("cancelled" in status) {
|
|
203
|
+
return {
|
|
204
|
+
type: "cancelled",
|
|
205
|
+
reason: status.cancelled
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
throw Error(`Unknown TWAP execution status: ${JSON.stringify(status)}`);
|
|
209
|
+
}
|
|
166
210
|
export {
|
|
167
211
|
mapServerOrderInfo,
|
|
168
|
-
mapTriggerCriteria
|
|
212
|
+
mapTriggerCriteria,
|
|
213
|
+
mapTwapExecutionStatus
|
|
169
214
|
};
|
|
170
215
|
//# sourceMappingURL=dataMappers.js.map
|
package/dist/dataMappers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dataMappers.ts"],"sourcesContent":["import { unpackOrderAppendix } from '@nadohq/shared';\nimport {\n addDecimals,\n removeDecimals,\n toBigDecimal,\n toIntegerString,\n} from '@nadohq/shared';\nimport {\n PriceTriggerCriteria,\n PriceTriggerRequirementType,\n TimeTriggerCriteria,\n TriggerCriteria,\n TriggerOrder,\n TriggerOrderInfo,\n TriggerOrderStatus,\n TriggerServerOrderInfo,\n TriggerServerOrderStatus,\n TriggerServerPriceRequirement,\n TriggerServerPriceTriggerCriteria,\n TriggerServerTimeTriggerCriteria,\n TriggerServerTriggerCriteria,\n} from './types';\n\n/**\n * Maps client-side trigger criteria to server-side trigger criteria format.\n * Converts price and time triggers to their respective server representations\n * with proper decimal scaling and field name transformations.\n *\n * @param criteria - The client-side trigger criteria (price or time based)\n * @returns The server-formatted trigger criteria ready for API transmission\n */\nexport function mapTriggerCriteria(\n criteria: TriggerCriteria,\n): TriggerServerTriggerCriteria {\n switch (criteria.type) {\n case 'price':\n return {\n price_trigger: mapPriceTriggerCriteria(criteria.criteria),\n };\n case 'time':\n return {\n time_trigger: mapTimeTriggerCriteria(criteria.criteria),\n };\n }\n}\n\nfunction mapPriceTriggerCriteria(\n criteria: PriceTriggerCriteria,\n): TriggerServerPriceTriggerCriteria {\n const priceValue = toIntegerString(addDecimals(criteria.triggerPrice));\n\n const price_requirement = ((): TriggerServerPriceRequirement => {\n switch (criteria.type) {\n case 'oracle_price_above':\n return { oracle_price_above: priceValue };\n case 'oracle_price_below':\n return { oracle_price_below: priceValue };\n case 'last_price_above':\n return { last_price_above: priceValue };\n case 'last_price_below':\n return { last_price_below: priceValue };\n case 'mid_price_above':\n return { mid_price_above: priceValue };\n case 'mid_price_below':\n return { mid_price_below: priceValue };\n }\n })();\n\n return {\n price_requirement,\n dependency: criteria.dependency\n ? {\n digest: criteria.dependency.digest,\n on_partial_fill: criteria.dependency.onPartialFill,\n }\n : undefined,\n };\n}\n\nfunction mapTimeTriggerCriteria(\n criteria: TimeTriggerCriteria,\n): TriggerServerTimeTriggerCriteria {\n return {\n interval: toIntegerString(criteria.interval),\n amounts: criteria.amounts?.map((amount) => toIntegerString(amount)),\n };\n}\n\n/**\n * Maps complete server-side trigger order information to client-side format.\n *\n * @param info - The complete server-side trigger order information including order, status, and timestamps\n * @returns The client-side trigger order information with converted values and normalized structure\n */\nexport function mapServerOrderInfo(\n info: TriggerServerOrderInfo,\n): TriggerOrderInfo {\n const { order: serverOrder, status, updated_at } = info;\n const order: TriggerOrder = {\n amount: toBigDecimal(serverOrder.order.amount),\n expiration: Number(serverOrder.order.expiration),\n nonce: serverOrder.order.nonce,\n price: removeDecimals(toBigDecimal(serverOrder.order.priceX18)),\n digest: serverOrder.digest,\n productId: serverOrder.product_id,\n triggerCriteria: mapServerTriggerCriteria(serverOrder.trigger),\n appendix: unpackOrderAppendix(serverOrder.order.appendix),\n };\n return {\n serverOrder,\n order,\n status: mapTriggerServerOrderStatus(status),\n updatedAt: updated_at,\n };\n}\n\nfunction mapTriggerServerOrderStatus(\n status: TriggerServerOrderStatus,\n): TriggerOrderStatus {\n if (status === 'pending') {\n return {\n type: 'pending',\n };\n } else if ('cancelled' in status) {\n return {\n type: 'cancelled',\n reason: status.cancelled,\n };\n } else if ('internal_error' in status) {\n return {\n type: 'internal_error',\n error: status.internal_error,\n };\n } else if ('triggered' in status) {\n return {\n type: 'triggered',\n result: status.triggered,\n };\n }\n throw Error(`Unknown trigger order status: ${JSON.stringify(status)}`);\n}\n\nfunction mapServerTriggerCriteria(\n criteria: TriggerServerTriggerCriteria,\n): TriggerCriteria {\n if ('price_trigger' in criteria) {\n return {\n type: 'price',\n criteria: mapServerPriceTriggerCriteria(criteria.price_trigger),\n };\n }\n if ('time_trigger' in criteria) {\n return {\n type: 'time',\n criteria: mapServerTimeTriggerCriteria(criteria.time_trigger),\n };\n }\n throw new Error(`Unknown trigger criteria: ${JSON.stringify(criteria)}`);\n}\n\nfunction mapServerPriceTriggerCriteria(\n serverCriteria: TriggerServerPriceTriggerCriteria,\n): PriceTriggerCriteria {\n const { price_requirement, dependency } = serverCriteria;\n\n const { type, triggerPrice } = ((): {\n type: PriceTriggerRequirementType;\n triggerPrice: string;\n } => {\n if ('oracle_price_above' in price_requirement) {\n return {\n type: 'oracle_price_above',\n triggerPrice: price_requirement.oracle_price_above,\n };\n } else if ('oracle_price_below' in price_requirement) {\n return {\n type: 'oracle_price_below',\n triggerPrice: price_requirement.oracle_price_below,\n };\n } else if ('last_price_above' in price_requirement) {\n return {\n type: 'last_price_above',\n triggerPrice: price_requirement.last_price_above,\n };\n } else if ('last_price_below' in price_requirement) {\n return {\n type: 'last_price_below',\n triggerPrice: price_requirement.last_price_below,\n };\n } else if ('mid_price_above' in price_requirement) {\n return {\n type: 'mid_price_above',\n triggerPrice: price_requirement.mid_price_above,\n };\n } else if ('mid_price_below' in price_requirement) {\n return {\n type: 'mid_price_below',\n triggerPrice: price_requirement.mid_price_below,\n };\n } else {\n throw new Error(\n `Unknown price requirement: ${JSON.stringify(price_requirement)}`,\n );\n }\n })();\n\n return {\n type,\n triggerPrice: removeDecimals(triggerPrice),\n dependency: dependency\n ? {\n digest: dependency.digest,\n onPartialFill: dependency.on_partial_fill,\n }\n : undefined,\n };\n}\n\nfunction mapServerTimeTriggerCriteria(\n serverCriteria: TriggerServerTimeTriggerCriteria,\n): TimeTriggerCriteria {\n return {\n interval: toBigDecimal(serverCriteria.interval),\n amounts: serverCriteria.amounts?.map((amount: string) =>\n toBigDecimal(amount),\n ),\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/dataMappers.ts"],"sourcesContent":["import { unpackOrderAppendix } from '@nadohq/shared';\nimport {\n addDecimals,\n removeDecimals,\n toBigDecimal,\n toIntegerString,\n} from '@nadohq/shared';\nimport {\n PriceTriggerCriteria,\n PriceTriggerRequirementType,\n TimeTriggerCriteria,\n TriggerCriteria,\n TriggerOrder,\n TriggerOrderInfo,\n TriggerOrderStatus,\n TriggerServerOrderInfo,\n TriggerServerOrderStatus,\n TriggerServerPriceRequirement,\n TriggerServerPriceTriggerCriteria,\n TriggerServerTimeTriggerCriteria,\n TriggerServerTriggerCriteria,\n TriggerServerTwapExecutionStatus,\n TwapExecutionStatus,\n} from './types';\n\n/**\n * Maps client-side trigger criteria to server-side trigger criteria format.\n * Converts price and time triggers to their respective server representations\n * with proper decimal scaling and field name transformations.\n *\n * @param criteria - The client-side trigger criteria (price or time based)\n * @returns The server-formatted trigger criteria ready for API transmission\n */\nexport function mapTriggerCriteria(\n criteria: TriggerCriteria,\n): TriggerServerTriggerCriteria {\n switch (criteria.type) {\n case 'price':\n return {\n price_trigger: mapPriceTriggerCriteria(criteria.criteria),\n };\n case 'time':\n return {\n time_trigger: mapTimeTriggerCriteria(criteria.criteria),\n };\n }\n}\n\nfunction mapPriceTriggerCriteria(\n criteria: PriceTriggerCriteria,\n): TriggerServerPriceTriggerCriteria {\n const priceValue = toIntegerString(addDecimals(criteria.triggerPrice));\n\n const price_requirement = ((): TriggerServerPriceRequirement => {\n switch (criteria.type) {\n case 'oracle_price_above':\n return { oracle_price_above: priceValue };\n case 'oracle_price_below':\n return { oracle_price_below: priceValue };\n case 'last_price_above':\n return { last_price_above: priceValue };\n case 'last_price_below':\n return { last_price_below: priceValue };\n case 'mid_price_above':\n return { mid_price_above: priceValue };\n case 'mid_price_below':\n return { mid_price_below: priceValue };\n }\n })();\n\n return {\n price_requirement,\n dependency: criteria.dependency\n ? {\n digest: criteria.dependency.digest,\n on_partial_fill: criteria.dependency.onPartialFill,\n }\n : undefined,\n };\n}\n\nfunction mapTimeTriggerCriteria(\n criteria: TimeTriggerCriteria,\n): TriggerServerTimeTriggerCriteria {\n return {\n interval: toIntegerString(criteria.interval),\n amounts: criteria.amounts?.map((amount) => toIntegerString(amount)),\n };\n}\n\n/**\n * Maps complete server-side trigger order information to client-side format.\n *\n * @param info - The complete server-side trigger order information including order, status, and timestamps\n * @returns The client-side trigger order information with converted values and normalized structure\n */\nexport function mapServerOrderInfo(\n info: TriggerServerOrderInfo,\n): TriggerOrderInfo {\n const { order: serverOrder, status, updated_at } = info;\n const order: TriggerOrder = {\n amount: toBigDecimal(serverOrder.order.amount),\n expiration: Number(serverOrder.order.expiration),\n nonce: serverOrder.order.nonce,\n price: removeDecimals(toBigDecimal(serverOrder.order.priceX18)),\n digest: serverOrder.digest,\n productId: serverOrder.product_id,\n triggerCriteria: mapServerTriggerCriteria(serverOrder.trigger),\n appendix: unpackOrderAppendix(serverOrder.order.appendix),\n };\n return {\n serverOrder,\n order,\n status: mapTriggerServerOrderStatus(status),\n updatedAt: updated_at,\n };\n}\n\nfunction mapTriggerServerOrderStatus(\n status: TriggerServerOrderStatus,\n): TriggerOrderStatus {\n if (status === 'triggering') {\n return {\n type: 'triggering',\n };\n } else if (status === 'waiting_price') {\n return {\n type: 'waiting_price',\n };\n } else if (status === 'waiting_dependency') {\n return {\n type: 'waiting_dependency',\n };\n } else if ('cancelled' in status) {\n return {\n type: 'cancelled',\n reason: status.cancelled,\n };\n } else if ('triggered' in status) {\n return {\n type: 'triggered',\n result: status.triggered,\n };\n } else if ('internal_error' in status) {\n return {\n type: 'internal_error',\n error: status.internal_error,\n };\n } else if ('twap_executing' in status) {\n return {\n type: 'twap_executing',\n currentExecution: status.twap_executing.current_execution,\n totalExecutions: status.twap_executing.total_executions,\n };\n } else if ('twap_completed' in status) {\n return {\n type: 'twap_completed',\n executed: status.twap_completed.executed,\n total: status.twap_completed.total,\n };\n }\n throw Error(`Unknown trigger order status: ${JSON.stringify(status)}`);\n}\n\nfunction mapServerTriggerCriteria(\n criteria: TriggerServerTriggerCriteria,\n): TriggerCriteria {\n if ('price_trigger' in criteria) {\n return {\n type: 'price',\n criteria: mapServerPriceTriggerCriteria(criteria.price_trigger),\n };\n }\n if ('time_trigger' in criteria) {\n return {\n type: 'time',\n criteria: mapServerTimeTriggerCriteria(criteria.time_trigger),\n };\n }\n throw new Error(`Unknown trigger criteria: ${JSON.stringify(criteria)}`);\n}\n\nfunction mapServerPriceTriggerCriteria(\n serverCriteria: TriggerServerPriceTriggerCriteria,\n): PriceTriggerCriteria {\n const { price_requirement, dependency } = serverCriteria;\n\n const { type, triggerPrice } = ((): {\n type: PriceTriggerRequirementType;\n triggerPrice: string;\n } => {\n if ('oracle_price_above' in price_requirement) {\n return {\n type: 'oracle_price_above',\n triggerPrice: price_requirement.oracle_price_above,\n };\n } else if ('oracle_price_below' in price_requirement) {\n return {\n type: 'oracle_price_below',\n triggerPrice: price_requirement.oracle_price_below,\n };\n } else if ('last_price_above' in price_requirement) {\n return {\n type: 'last_price_above',\n triggerPrice: price_requirement.last_price_above,\n };\n } else if ('last_price_below' in price_requirement) {\n return {\n type: 'last_price_below',\n triggerPrice: price_requirement.last_price_below,\n };\n } else if ('mid_price_above' in price_requirement) {\n return {\n type: 'mid_price_above',\n triggerPrice: price_requirement.mid_price_above,\n };\n } else if ('mid_price_below' in price_requirement) {\n return {\n type: 'mid_price_below',\n triggerPrice: price_requirement.mid_price_below,\n };\n } else {\n throw new Error(\n `Unknown price requirement: ${JSON.stringify(price_requirement)}`,\n );\n }\n })();\n\n return {\n type,\n triggerPrice: removeDecimals(triggerPrice),\n dependency: dependency\n ? {\n digest: dependency.digest,\n onPartialFill: dependency.on_partial_fill,\n }\n : undefined,\n };\n}\n\nfunction mapServerTimeTriggerCriteria(\n serverCriteria: TriggerServerTimeTriggerCriteria,\n): TimeTriggerCriteria {\n return {\n interval: toBigDecimal(serverCriteria.interval),\n amounts: serverCriteria.amounts?.map((amount: string) =>\n toBigDecimal(amount),\n ),\n };\n}\n\nexport function mapTwapExecutionStatus(\n status: TriggerServerTwapExecutionStatus,\n): TwapExecutionStatus {\n if (status === 'pending') {\n return {\n type: 'pending',\n };\n } else if ('executed' in status) {\n return {\n type: 'executed',\n executedTime: status.executed.executed_time,\n executeResponse: status.executed.execute_response,\n };\n } else if ('failed' in status) {\n return {\n type: 'failed',\n error: status.failed,\n };\n } else if ('cancelled' in status) {\n return {\n type: 'cancelled',\n reason: status.cancelled,\n };\n }\n throw Error(`Unknown TWAP execution status: ${JSON.stringify(status)}`);\n}\n"],"mappings":"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","names":[]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { PriceTriggerCriteria, PriceTriggerDependency, PriceTriggerRequirementType, TimeTriggerCriteria, TriggerCriteria, TriggerCriteriaType, TriggerOrderStatus } from './types/clientModelTypes.cjs';
|
|
2
|
-
export { TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse, TriggerOrder, TriggerOrderInfo, TriggerPlaceOrderParams } from './types/clientTypes.cjs';
|
|
2
|
+
export { TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse, TriggerListTwapExecutionsParams, TriggerListTwapExecutionsResponse, TriggerOrder, TriggerOrderInfo, TriggerPlaceOrderParams, TwapExecutionInfo, TwapExecutionStatus } from './types/clientTypes.cjs';
|
|
3
3
|
export { TriggerServerDependency, TriggerServerPriceRequirement, TriggerServerPriceTriggerCriteria, TriggerServerTimeTriggerCriteria, TriggerServerTriggerCriteria } from './types/serverModelTypes.cjs';
|
|
4
4
|
export { TriggerServerCancelOrdersParams, TriggerServerCancelProductOrdersParams, TriggerServerExecuteRequestByType, TriggerServerExecuteRequestType, TriggerServerExecuteResult, TriggerServerExecuteSuccessResult, TriggerServerPlaceOrderParams } from './types/serverExecuteTypes.cjs';
|
|
5
|
-
export { TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter } from './types/serverQueryTypes.cjs';
|
|
5
|
+
export { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse } from './types/serverQueryTypes.cjs';
|
|
6
6
|
export { TriggerServerFailureError } from './types/TriggerServerFailureError.cjs';
|
|
7
7
|
export { TriggerClient, TriggerClientOpts } from './TriggerClient.cjs';
|
|
8
8
|
export { TRIGGER_CLIENT_ENDPOINTS } from './endpoints.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { PriceTriggerCriteria, PriceTriggerDependency, PriceTriggerRequirementType, TimeTriggerCriteria, TriggerCriteria, TriggerCriteriaType, TriggerOrderStatus } from './types/clientModelTypes.js';
|
|
2
|
-
export { TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse, TriggerOrder, TriggerOrderInfo, TriggerPlaceOrderParams } from './types/clientTypes.js';
|
|
2
|
+
export { TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse, TriggerListTwapExecutionsParams, TriggerListTwapExecutionsResponse, TriggerOrder, TriggerOrderInfo, TriggerPlaceOrderParams, TwapExecutionInfo, TwapExecutionStatus } from './types/clientTypes.js';
|
|
3
3
|
export { TriggerServerDependency, TriggerServerPriceRequirement, TriggerServerPriceTriggerCriteria, TriggerServerTimeTriggerCriteria, TriggerServerTriggerCriteria } from './types/serverModelTypes.js';
|
|
4
4
|
export { TriggerServerCancelOrdersParams, TriggerServerCancelProductOrdersParams, TriggerServerExecuteRequestByType, TriggerServerExecuteRequestType, TriggerServerExecuteResult, TriggerServerExecuteSuccessResult, TriggerServerPlaceOrderParams } from './types/serverExecuteTypes.js';
|
|
5
|
-
export { TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter } from './types/serverQueryTypes.js';
|
|
5
|
+
export { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse } from './types/serverQueryTypes.js';
|
|
6
6
|
export { TriggerServerFailureError } from './types/TriggerServerFailureError.js';
|
|
7
7
|
export { TriggerClient, TriggerClientOpts } from './TriggerClient.js';
|
|
8
8
|
export { TRIGGER_CLIENT_ENDPOINTS } from './endpoints.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/clientModelTypes.ts"],"sourcesContent":["import { EngineServerExecuteResult } from '@nadohq/engine-client';\nimport { BigDecimalish } from '@nadohq/shared';\n\n/*\nPrice trigger\n */\n\nexport type PriceTriggerRequirementType =\n | 'oracle_price_above'\n | 'oracle_price_below'\n | 'last_price_above'\n | 'last_price_below'\n | 'mid_price_above'\n | 'mid_price_below';\n\nexport interface PriceTriggerDependency {\n /**\n * Digest of the order that this trigger depends on.\n */\n digest: string;\n /**\n * Whether to trigger on partial fills.\n */\n onPartialFill: boolean;\n}\n\nexport interface PriceTriggerCriteria {\n type: PriceTriggerRequirementType;\n triggerPrice: BigDecimalish;\n dependency?: PriceTriggerDependency;\n}\n\n/*\nTime trigger (for TWAP)\n */\n\nexport interface TimeTriggerCriteria {\n /**\n * For TWAP: Trigger interval in seconds\n */\n interval: BigDecimalish;\n /**\n * For TWAP: By default, trigger service will split up orders as per total amount / interval\n * If you want to specify the amounts for each interval, you can provide them here.\n */\n amounts?: BigDecimalish[];\n}\n\n/**\n * All possible trigger conditions that can be used to place a trigger order.\n */\nexport type TriggerCriteria =\n | {\n type: 'price';\n criteria: PriceTriggerCriteria;\n }\n | {\n type: 'time';\n criteria: TimeTriggerCriteria;\n };\n\nexport type TriggerCriteriaType = TriggerCriteria['type'];\n\nexport type TriggerOrderStatus =\n | {\n type: '
|
|
1
|
+
{"version":3,"sources":["../../src/types/clientModelTypes.ts"],"sourcesContent":["import { EngineServerExecuteResult } from '@nadohq/engine-client';\nimport { BigDecimalish } from '@nadohq/shared';\n\n/*\nPrice trigger\n */\n\nexport type PriceTriggerRequirementType =\n | 'oracle_price_above'\n | 'oracle_price_below'\n | 'last_price_above'\n | 'last_price_below'\n | 'mid_price_above'\n | 'mid_price_below';\n\nexport interface PriceTriggerDependency {\n /**\n * Digest of the order that this trigger depends on.\n */\n digest: string;\n /**\n * Whether to trigger on partial fills.\n */\n onPartialFill: boolean;\n}\n\nexport interface PriceTriggerCriteria {\n type: PriceTriggerRequirementType;\n triggerPrice: BigDecimalish;\n dependency?: PriceTriggerDependency;\n}\n\n/*\nTime trigger (for TWAP)\n */\n\nexport interface TimeTriggerCriteria {\n /**\n * For TWAP: Trigger interval in seconds\n */\n interval: BigDecimalish;\n /**\n * For TWAP: By default, trigger service will split up orders as per total amount / interval\n * If you want to specify the amounts for each interval, you can provide them here.\n */\n amounts?: BigDecimalish[];\n}\n\n/**\n * All possible trigger conditions that can be used to place a trigger order.\n */\nexport type TriggerCriteria =\n | {\n type: 'price';\n criteria: PriceTriggerCriteria;\n }\n | {\n type: 'time';\n criteria: TimeTriggerCriteria;\n };\n\nexport type TriggerCriteriaType = TriggerCriteria['type'];\n\nexport type TriggerOrderStatus =\n | {\n type: 'cancelled';\n reason: string;\n }\n | {\n type: 'triggered';\n result: EngineServerExecuteResult;\n }\n | {\n type: 'internal_error';\n error: string;\n }\n | {\n type: 'triggering';\n }\n | {\n type: 'waiting_price';\n }\n | {\n type: 'waiting_dependency';\n }\n | {\n type: 'twap_executing';\n currentExecution: number;\n totalExecutions: number;\n }\n | {\n type: 'twap_completed';\n executed: number;\n total: number;\n };\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|