@nadohq/trigger-client 0.1.0-alpha.8 → 0.1.0-alpha.9
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 +1 -1
- package/dist/TriggerClient.cjs.map +1 -1
- package/dist/TriggerClient.js +1 -1
- package/dist/TriggerClient.js.map +1 -1
- package/dist/dataMappers.cjs +1 -1
- package/dist/dataMappers.cjs.map +1 -1
- package/dist/dataMappers.js +1 -1
- package/dist/dataMappers.js.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/types/clientTypes.cjs.map +1 -1
- package/dist/types/clientTypes.d.cts +3 -3
- package/dist/types/clientTypes.d.ts +3 -3
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/serverModelTypes.cjs.map +1 -1
- package/dist/types/serverModelTypes.d.cts +1 -1
- package/dist/types/serverModelTypes.d.ts +1 -1
- package/dist/types/serverQueryTypes.cjs.map +1 -1
- package/dist/types/serverQueryTypes.d.cts +4 -3
- package/dist/types/serverQueryTypes.d.ts +4 -3
- package/package.json +4 -4
- package/src/TriggerClient.ts +1 -1
- package/src/dataMappers.ts +1 -1
- package/src/types/clientTypes.ts +8 -7
- package/src/types/serverModelTypes.ts +1 -1
- package/src/types/serverQueryTypes.ts +12 -2
package/dist/TriggerClient.cjs
CHANGED
|
@@ -147,7 +147,7 @@ var TriggerClient = class {
|
|
|
147
147
|
const queryParams = {
|
|
148
148
|
limit: params.limit,
|
|
149
149
|
max_update_time: params.maxUpdateTimeInclusive,
|
|
150
|
-
|
|
150
|
+
status_types: params.statusTypes,
|
|
151
151
|
product_id: params.productId,
|
|
152
152
|
digests: params.digests,
|
|
153
153
|
trigger_types: params.triggerTypes,
|
|
@@ -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 {\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAcO;AACP,mBAAoD;AACpD,yBAIO;AAqBP,uCAA0C;AAcnC,IAAM,gBAAN,MAAoB;AAAA,EAIzB,YAAY,MAAyB;AACnC,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;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAkB,QAAiC;AACvD,UAAM,cAAiC;AAAA,MACrC,QAAQ,OAAO,MAAM;AAAA,MACrB,YAAY,OAAO,MAAM;AAAA,MACzB,OAAO,OAAO,MAAM;AAAA,MACpB,gBAAgB,OAAO,MAAM;AAAA,MAC7B,iBAAiB,OAAO,MAAM;AAAA,MAC9B,OAAO,OAAO,aAAS,6BAAc;AAAA,MACrC,UAAU,OAAO,MAAM;AAAA,IACzB;AACA,UAAM,YAAY,MAAM,KAAK;AAAA,MAC3B;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,IACF;AAEA,UAAM,gBAAkE;AAAA,MACtE,IAAI,OAAO,MAAM;AAAA,MACjB,WAAO,mCAAoB,eAAe,WAAW;AAAA,MACrD,aAAS,uCAAmB,OAAO,eAAe;AAAA,MAClD;AAAA,MACA,YAAY,OAAO;AAAA,MACnB,eAAe,OAAO,gBAAgB;AAAA,MACtC,QAAQ,OAAO,UAAU;AAAA,MACzB,eAAe,OAAO,gBAAgB;AAAA,IACxC;AAEA,WAAO,KAAK,QAAQ,eAAe,aAAa;AAAA,EAClD;AAAA,EAEA,MAAM,oBAAoB,QAAmC;AAC3D,UAAM,qBAA+C;AAAA,MACnD,SAAS,OAAO;AAAA,MAChB,OAAO,OAAO,aAAS,6BAAc;AAAA,MACrC,YAAY,OAAO;AAAA,MACnB,gBAAgB,OAAO;AAAA,MACvB,iBAAiB,OAAO;AAAA,IAC1B;AACA,UAAM,SAAK,mCAAoB,iBAAiB,kBAAkB;AAElE,UAAM,gBAAoE;AAAA,MACxE,WAAW,MAAM,KAAK;AAAA,QACpB;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEA,WAAO,KAAK,QAAQ,iBAAiB,aAAa;AAAA,EACpD;AAAA,EAEA,MAAM,oBAAoB,QAA0C;AAClE,UAAM,4BAA6D;AAAA,MACjE,OAAO,OAAO,aAAS,6BAAc;AAAA,MACrC,YAAY,OAAO;AAAA,MACnB,gBAAgB,OAAO;AAAA,MACvB,iBAAiB,OAAO;AAAA,IAC1B;AACA,UAAM,SAAK;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAEA,UAAM,gBACJ;AAAA,MACE,WAAW,MAAM,KAAK;AAAA,QACpB;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEF,WAAO,KAAK,QAAQ,yBAAyB,aAAa;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WACJ,QACoC;AACpC,UAAM,kBAAiD;AAAA;AAAA,MAErD,cAAU,+BAAgB,OAAO,gBAAY,kCAAmB,CAAC;AAAA,MACjE,gBAAgB,OAAO;AAAA,MACvB,iBAAiB,OAAO;AAAA,IAC1B;AAEA,UAAM,SAAK,mCAAoB,uBAAuB,eAAe;AACrE,UAAM,YAAY,MAAM,KAAK;AAAA,MAC3B;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,IACF;AAEA,UAAM,cACJ;AAAA,MACE,OAAO,OAAO;AAAA,MACd,iBAAiB,OAAO;AAAA,MACxB,SAAS,OAAO;AAAA,MAChB,YAAY,OAAO;AAAA,MACnB,SAAS,OAAO;AAAA,MAChB,eAAe,OAAO;AAAA,MACtB,aAAa,OAAO;AAAA,MACpB;AAAA,MACA;AAAA,IACF;AAEF,UAAM,eAAe,MAAM,KAAK,MAAM,uBAAuB,WAAW;AAExE,UAAM,SACJ,aAAa,OAAO,IAAI,qCAAkB;AAE5C,WAAO;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,mBACJ,QAC4C;AAC5C,UAAM,cACJ;AAAA,MACE,QAAQ,OAAO;AAAA,IACjB;AAEF,UAAM,eAAe,MAAM,KAAK,MAAM,wBAAwB,WAAW;AAEzE,UAAM,aAAkC,aAAa,WAAW;AAAA,MAC9D,CAAC,eAAe;AAAA,QACd,aAAa,UAAU;AAAA,QACvB,eAAe,UAAU;AAAA,QACzB,YAAQ,2CAAuB,UAAU,MAAM;AAAA,QAC/C,WAAW,UAAU;AAAA,MACvB;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,KACd,aACA,mBACA,SACA,QACA;AAEA,UAAM,eACJ,KAAK,KAAK,4BAA4B,KAAK,KAAK;AAElD,QAAI,gBAAgB,MAAM;AACxB,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAgB,QACd,aACA,QAC0D;AAC1D,UAAM,UAAU;AAAA,MACd,CAAC,WAAW,GAAG;AAAA,IACjB;AACA,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,EAEA,MAAgB,MACd,aACA,QACyD;AACzD,UAAM,UAAU;AAAA,MACd,MAAM;AAAA,MACN,GAAG;AAAA,IACL;AACA,UAAM,WAAW,MAAM,KAAK,cAAc,KAExC,GAAG,KAAK,KAAK,GAAG,UAAU,OAAO;AAEnC,SAAK,oBAAoB,QAAQ;AACjC,SAAK,kBAAkB,QAAQ;AAG/B,UAAM,kBAAkB;AAIxB,WAAO,gBAAgB,KAAK;AAAA,EAC9B;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,2DAA0B,SAAS,IAAI;AAAA,IACnD;AAAA,EACF;AACF;","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 status_types: params.statusTypes,\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.js
CHANGED
|
@@ -124,7 +124,7 @@ var TriggerClient = class {
|
|
|
124
124
|
const queryParams = {
|
|
125
125
|
limit: params.limit,
|
|
126
126
|
max_update_time: params.maxUpdateTimeInclusive,
|
|
127
|
-
|
|
127
|
+
status_types: params.statusTypes,
|
|
128
128
|
product_id: params.productId,
|
|
129
129
|
digests: params.digests,
|
|
130
130
|
trigger_types: params.triggerTypes,
|
|
@@ -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 {\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":[]}
|
|
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 status_types: params.statusTypes,\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
|
@@ -67,7 +67,7 @@ function mapPriceTriggerCriteria(criteria) {
|
|
|
67
67
|
}
|
|
68
68
|
function mapTimeTriggerCriteria(criteria) {
|
|
69
69
|
return {
|
|
70
|
-
interval: (
|
|
70
|
+
interval: Number(criteria.interval),
|
|
71
71
|
amounts: criteria.amounts?.map((amount) => (0, import_shared2.toIntegerString)(amount))
|
|
72
72
|
};
|
|
73
73
|
}
|
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 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"]}
|
|
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: Number(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.js
CHANGED
|
@@ -46,7 +46,7 @@ function mapPriceTriggerCriteria(criteria) {
|
|
|
46
46
|
}
|
|
47
47
|
function mapTimeTriggerCriteria(criteria) {
|
|
48
48
|
return {
|
|
49
|
-
interval:
|
|
49
|
+
interval: Number(criteria.interval),
|
|
50
50
|
amounts: criteria.amounts?.map((amount) => toIntegerString(amount))
|
|
51
51
|
};
|
|
52
52
|
}
|
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 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":[]}
|
|
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: Number(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
|
@@ -2,7 +2,7 @@ export { PriceTriggerCriteria, PriceTriggerDependency, PriceTriggerRequirementTy
|
|
|
2
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 { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse } from './types/serverQueryTypes.cjs';
|
|
5
|
+
export { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, 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
|
@@ -2,7 +2,7 @@ export { PriceTriggerCriteria, PriceTriggerDependency, PriceTriggerRequirementTy
|
|
|
2
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 { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse } from './types/serverQueryTypes.js';
|
|
5
|
+
export { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, 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/clientTypes.ts"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"sources":["../../src/types/clientTypes.ts"],"sourcesContent":["import {\n EngineOrderParams,\n EngineServerExecuteResult,\n} from '@nadohq/engine-client';\nimport {\n BigDecimal,\n EIP712CancelOrdersParams,\n EIP712CancelProductOrdersParams,\n OrderAppendix,\n Subaccount,\n} from '@nadohq/shared';\nimport { TriggerCriteria, TriggerOrderStatus } from './clientModelTypes';\nimport {\n TriggerServerOrder,\n TriggerServerStatusTypeFilter,\n TriggerServerTriggerTypeFilter,\n} from './serverQueryTypes';\n\ntype WithOptionalNonce<T> = Omit<T, 'nonce'> & { nonce?: string };\n\ninterface SignatureParams {\n /**\n * Address derived from productId for placement (see getOrderVerifyingAddr)\n * endpoint address for cancellation & listing\n */\n verifyingAddr: string;\n chainId: number;\n}\n\n/**\n * Executes\n */\n\nexport interface TriggerPlaceOrderParams extends SignatureParams {\n id?: number;\n productId: number;\n order: EngineOrderParams;\n triggerCriteria: TriggerCriteria;\n // If not given, engine defaults to true (leverage/borrow enabled)\n spotLeverage?: boolean;\n // For isolated orders, this specifies whether margin can be borrowed (i.e. whether the cross account can have a negative USDC balance)\n borrowMargin?: boolean;\n digest?: string;\n nonce?: string;\n}\n\nexport type TriggerCancelOrdersParams = SignatureParams &\n WithOptionalNonce<EIP712CancelOrdersParams>;\n\nexport type TriggerCancelProductOrdersParams = SignatureParams &\n WithOptionalNonce<EIP712CancelProductOrdersParams>;\n\n/**\n * Queries\n */\n\nexport interface TriggerListOrdersParams extends Subaccount, SignatureParams {\n // In millis, defaults to 90s in the future\n recvTime?: BigDecimal;\n // If not given, defaults to all products\n productId?: number;\n // In seconds\n maxUpdateTimeInclusive?: number;\n // When provided, the associated trigger orders are returned regardless of other filters\n digests?: string[];\n limit?: number;\n // Filter by status types\n statusTypes?: TriggerServerStatusTypeFilter[];\n // Filter by trigger types\n triggerTypes?: TriggerServerTriggerTypeFilter[];\n // Filter by reduce-only orders\n reduceOnly?: boolean;\n}\n\nexport interface TriggerOrder {\n productId: number;\n triggerCriteria: TriggerCriteria;\n price: BigDecimal;\n amount: BigDecimal;\n expiration: number;\n nonce: string;\n digest: string;\n appendix: OrderAppendix;\n}\n\nexport interface TriggerOrderInfo {\n order: TriggerOrder;\n serverOrder: TriggerServerOrder;\n status: TriggerOrderStatus;\n updatedAt: number;\n}\n\nexport interface TriggerListOrdersResponse {\n orders: TriggerOrderInfo[];\n}\n\nexport interface TriggerListTwapExecutionsParams {\n digest: string;\n}\n\nexport type TwapExecutionStatus =\n | {\n type: 'pending';\n }\n | {\n type: 'executed';\n executedTime: number;\n executeResponse: EngineServerExecuteResult;\n }\n | {\n type: 'failed';\n error: string;\n }\n | {\n type: 'cancelled';\n reason: string;\n };\n\nexport interface TwapExecutionInfo {\n executionId: number;\n scheduledTime: number;\n status: TwapExecutionStatus;\n updatedAt: number;\n}\n\nexport interface TriggerListTwapExecutionsResponse {\n executions: TwapExecutionInfo[];\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { EIP712CancelOrdersParams, EIP712CancelProductOrdersParams, Subaccount, BigDecimal, OrderAppendix } from '@nadohq/shared';
|
|
2
1
|
import { EngineOrderParams, EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
+
import { EIP712CancelOrdersParams, EIP712CancelProductOrdersParams, Subaccount, BigDecimal, OrderAppendix } from '@nadohq/shared';
|
|
3
3
|
import { TriggerCriteria, TriggerOrderStatus } from './clientModelTypes.cjs';
|
|
4
|
-
import { TriggerServerTriggerTypeFilter, TriggerServerOrder } from './serverQueryTypes.cjs';
|
|
4
|
+
import { TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerOrder } from './serverQueryTypes.cjs';
|
|
5
5
|
import './serverExecuteTypes.cjs';
|
|
6
6
|
import './serverModelTypes.cjs';
|
|
7
7
|
|
|
@@ -37,10 +37,10 @@ type TriggerCancelProductOrdersParams = SignatureParams & WithOptionalNonce<EIP7
|
|
|
37
37
|
interface TriggerListOrdersParams extends Subaccount, SignatureParams {
|
|
38
38
|
recvTime?: BigDecimal;
|
|
39
39
|
productId?: number;
|
|
40
|
-
pending: boolean;
|
|
41
40
|
maxUpdateTimeInclusive?: number;
|
|
42
41
|
digests?: string[];
|
|
43
42
|
limit?: number;
|
|
43
|
+
statusTypes?: TriggerServerStatusTypeFilter[];
|
|
44
44
|
triggerTypes?: TriggerServerTriggerTypeFilter[];
|
|
45
45
|
reduceOnly?: boolean;
|
|
46
46
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { EIP712CancelOrdersParams, EIP712CancelProductOrdersParams, Subaccount, BigDecimal, OrderAppendix } from '@nadohq/shared';
|
|
2
1
|
import { EngineOrderParams, EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
+
import { EIP712CancelOrdersParams, EIP712CancelProductOrdersParams, Subaccount, BigDecimal, OrderAppendix } from '@nadohq/shared';
|
|
3
3
|
import { TriggerCriteria, TriggerOrderStatus } from './clientModelTypes.js';
|
|
4
|
-
import { TriggerServerTriggerTypeFilter, TriggerServerOrder } from './serverQueryTypes.js';
|
|
4
|
+
import { TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerOrder } from './serverQueryTypes.js';
|
|
5
5
|
import './serverExecuteTypes.js';
|
|
6
6
|
import './serverModelTypes.js';
|
|
7
7
|
|
|
@@ -37,10 +37,10 @@ type TriggerCancelProductOrdersParams = SignatureParams & WithOptionalNonce<EIP7
|
|
|
37
37
|
interface TriggerListOrdersParams extends Subaccount, SignatureParams {
|
|
38
38
|
recvTime?: BigDecimal;
|
|
39
39
|
productId?: number;
|
|
40
|
-
pending: boolean;
|
|
41
40
|
maxUpdateTimeInclusive?: number;
|
|
42
41
|
digests?: string[];
|
|
43
42
|
limit?: number;
|
|
43
|
+
statusTypes?: TriggerServerStatusTypeFilter[];
|
|
44
44
|
triggerTypes?: TriggerServerTriggerTypeFilter[];
|
|
45
45
|
reduceOnly?: boolean;
|
|
46
46
|
}
|
package/dist/types/index.d.cts
CHANGED
|
@@ -2,7 +2,7 @@ export { PriceTriggerCriteria, PriceTriggerDependency, PriceTriggerRequirementTy
|
|
|
2
2
|
export { TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse, TriggerListTwapExecutionsParams, TriggerListTwapExecutionsResponse, TriggerOrder, TriggerOrderInfo, TriggerPlaceOrderParams, TwapExecutionInfo, TwapExecutionStatus } from './clientTypes.cjs';
|
|
3
3
|
export { TriggerServerDependency, TriggerServerPriceRequirement, TriggerServerPriceTriggerCriteria, TriggerServerTimeTriggerCriteria, TriggerServerTriggerCriteria } from './serverModelTypes.cjs';
|
|
4
4
|
export { TriggerServerCancelOrdersParams, TriggerServerCancelProductOrdersParams, TriggerServerExecuteRequestByType, TriggerServerExecuteRequestType, TriggerServerExecuteResult, TriggerServerExecuteSuccessResult, TriggerServerPlaceOrderParams } from './serverExecuteTypes.cjs';
|
|
5
|
-
export { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse } from './serverQueryTypes.cjs';
|
|
5
|
+
export { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse } from './serverQueryTypes.cjs';
|
|
6
6
|
export { TriggerServerFailureError } from './TriggerServerFailureError.cjs';
|
|
7
7
|
import '@nadohq/engine-client';
|
|
8
8
|
import '@nadohq/shared';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { PriceTriggerCriteria, PriceTriggerDependency, PriceTriggerRequirementTy
|
|
|
2
2
|
export { TriggerCancelOrdersParams, TriggerCancelProductOrdersParams, TriggerListOrdersParams, TriggerListOrdersResponse, TriggerListTwapExecutionsParams, TriggerListTwapExecutionsResponse, TriggerOrder, TriggerOrderInfo, TriggerPlaceOrderParams, TwapExecutionInfo, TwapExecutionStatus } from './clientTypes.js';
|
|
3
3
|
export { TriggerServerDependency, TriggerServerPriceRequirement, TriggerServerPriceTriggerCriteria, TriggerServerTimeTriggerCriteria, TriggerServerTriggerCriteria } from './serverModelTypes.js';
|
|
4
4
|
export { TriggerServerCancelOrdersParams, TriggerServerCancelProductOrdersParams, TriggerServerExecuteRequestByType, TriggerServerExecuteRequestType, TriggerServerExecuteResult, TriggerServerExecuteSuccessResult, TriggerServerPlaceOrderParams } from './serverExecuteTypes.js';
|
|
5
|
-
export { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse } from './serverQueryTypes.js';
|
|
5
|
+
export { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse } from './serverQueryTypes.js';
|
|
6
6
|
export { TriggerServerFailureError } from './TriggerServerFailureError.js';
|
|
7
7
|
import '@nadohq/engine-client';
|
|
8
8
|
import '@nadohq/shared';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/serverModelTypes.ts"],"sourcesContent":["export interface TriggerServerDependency {\n digest: string;\n /**\n * Whether to trigger on partial fills.\n */\n on_partial_fill: boolean;\n}\n\nexport type TriggerServerPriceRequirement =\n // These trigger on fast oracle price\n | {\n oracle_price_above: string;\n }\n | {\n oracle_price_below: string;\n }\n // These trigger on last trade price\n | {\n last_price_above: string;\n }\n | {\n last_price_below: string;\n }\n // These trigger on mid-book price\n | {\n mid_price_above: string;\n }\n | {\n mid_price_below: string;\n };\n\nexport interface TriggerServerPriceTriggerCriteria {\n price_requirement: TriggerServerPriceRequirement;\n dependency?: TriggerServerDependency;\n}\n\nexport interface TriggerServerTimeTriggerCriteria {\n /**\n * Trigger interval in seconds\n */\n interval:
|
|
1
|
+
{"version":3,"sources":["../../src/types/serverModelTypes.ts"],"sourcesContent":["export interface TriggerServerDependency {\n digest: string;\n /**\n * Whether to trigger on partial fills.\n */\n on_partial_fill: boolean;\n}\n\nexport type TriggerServerPriceRequirement =\n // These trigger on fast oracle price\n | {\n oracle_price_above: string;\n }\n | {\n oracle_price_below: string;\n }\n // These trigger on last trade price\n | {\n last_price_above: string;\n }\n | {\n last_price_below: string;\n }\n // These trigger on mid-book price\n | {\n mid_price_above: string;\n }\n | {\n mid_price_below: string;\n };\n\nexport interface TriggerServerPriceTriggerCriteria {\n price_requirement: TriggerServerPriceRequirement;\n dependency?: TriggerServerDependency;\n}\n\nexport interface TriggerServerTimeTriggerCriteria {\n /**\n * Trigger interval in seconds\n */\n interval: number;\n /**\n * 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?: string[];\n}\n\nexport type TriggerServerTriggerCriteria =\n | {\n price_trigger: TriggerServerPriceTriggerCriteria;\n }\n | {\n time_trigger: TriggerServerTimeTriggerCriteria;\n };\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -26,7 +26,7 @@ interface TriggerServerTimeTriggerCriteria {
|
|
|
26
26
|
/**
|
|
27
27
|
* Trigger interval in seconds
|
|
28
28
|
*/
|
|
29
|
-
interval:
|
|
29
|
+
interval: number;
|
|
30
30
|
/**
|
|
31
31
|
* By default, trigger service will split up orders as per total amount / interval
|
|
32
32
|
* If you want to specify the amounts for each interval, you can provide them here.
|
|
@@ -26,7 +26,7 @@ interface TriggerServerTimeTriggerCriteria {
|
|
|
26
26
|
/**
|
|
27
27
|
* Trigger interval in seconds
|
|
28
28
|
*/
|
|
29
|
-
interval:
|
|
29
|
+
interval: number;
|
|
30
30
|
/**
|
|
31
31
|
* By default, trigger service will split up orders as per total amount / interval
|
|
32
32
|
* If you want to specify the amounts for each interval, you can provide them here.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/serverQueryTypes.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/types/serverQueryTypes.ts"],"sourcesContent":["import { EngineServerExecuteResult } from '@nadohq/engine-client';\nimport { EIP712ListTriggerOrdersValues, SignedTx } from '@nadohq/shared';\nimport { TriggerServerPlaceOrderParams } from './serverExecuteTypes';\n\nexport type TriggerServerOrderStatus =\n | {\n cancelled: TriggerServerCancelReason;\n }\n | {\n triggered: EngineServerExecuteResult;\n }\n | {\n internal_error: string;\n }\n | 'triggering'\n | 'waiting_price'\n | 'waiting_dependency'\n | {\n twap_executing: {\n current_execution: number;\n total_executions: number;\n };\n }\n | {\n twap_completed: {\n executed: number;\n total: number;\n };\n };\n\n/**\n * Request types\n */\n\nexport type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';\n\nexport type TriggerServerStatusTypeFilter =\n | 'cancelled'\n | 'triggered'\n | 'internal_error'\n | 'triggering'\n | 'waiting_price'\n | 'waiting_dependency'\n | 'twap_executing'\n | 'twap_completed';\n\nexport interface TriggerServerListTriggerOrdersParams\n extends SignedTx<EIP712ListTriggerOrdersValues> {\n // If not given, defaults to all products\n product_id?: number;\n max_update_time?: number;\n digests?: string[];\n limit?: number;\n trigger_types?: TriggerServerTriggerTypeFilter[];\n status_types?: TriggerServerStatusTypeFilter[];\n reduce_only?: boolean;\n}\n\nexport interface TriggerServerListTwapExecutionsParams {\n digest: string;\n}\n\nexport interface TriggerServerQueryRequestByType {\n list_trigger_orders: TriggerServerListTriggerOrdersParams;\n list_twap_executions: TriggerServerListTwapExecutionsParams;\n}\n\nexport type TriggerServerQueryRequestType =\n keyof TriggerServerQueryRequestByType;\n\n/**\n * Response types\n */\n\nexport type TriggerServerOrder = TriggerServerPlaceOrderParams & {\n // Digest is always populated here\n digest: string;\n};\n\nexport interface TriggerServerOrderInfo {\n order: TriggerServerOrder;\n status: TriggerServerOrderStatus;\n updated_at: number;\n}\n\nexport interface TriggerServerListTriggerOrdersResponse {\n orders: TriggerServerOrderInfo[];\n}\n\nexport type TriggerServerCancelReason =\n | 'user_requested'\n | 'linked_signer_changed'\n | 'expired'\n | 'account_health'\n | 'isolated_subaccount_closed'\n | 'dependent_order_cancelled';\n\nexport type TriggerServerTwapExecutionStatus =\n | 'pending'\n | {\n executed: {\n executed_time: number;\n execute_response: EngineServerExecuteResult;\n };\n }\n | {\n failed: string;\n }\n | {\n cancelled: TriggerServerCancelReason;\n };\n\nexport interface TriggerServerTwapExecutionInfo {\n execution_id: number;\n scheduled_time: number;\n status: TriggerServerTwapExecutionStatus;\n updated_at: number;\n}\n\nexport interface TriggerServerTwapExecutionsResponse {\n executions: TriggerServerTwapExecutionInfo[];\n}\n\nexport interface TriggerServerQueryResponseByType {\n list_trigger_orders: TriggerServerListTriggerOrdersResponse;\n list_twap_executions: TriggerServerTwapExecutionsResponse;\n}\n\nexport interface TriggerServerQuerySuccessResponse<\n TQueryType extends\n keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType,\n> {\n status: 'success';\n data: TriggerServerQueryResponseByType[TQueryType];\n}\n\nexport interface TriggerServerQueryFailureResponse {\n status: 'failure';\n error: string;\n error_code: number;\n}\n\nexport type TriggerServerQueryResponse<\n TQueryType extends\n keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType,\n> =\n | TriggerServerQuerySuccessResponse<TQueryType>\n | TriggerServerQueryFailureResponse;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SignedTx, EIP712ListTriggerOrdersValues } from '@nadohq/shared';
|
|
2
1
|
import { EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
+
import { SignedTx, EIP712ListTriggerOrdersValues } from '@nadohq/shared';
|
|
3
3
|
import { TriggerServerPlaceOrderParams } from './serverExecuteTypes.cjs';
|
|
4
4
|
import './serverModelTypes.cjs';
|
|
5
5
|
|
|
@@ -24,13 +24,14 @@ type TriggerServerOrderStatus = {
|
|
|
24
24
|
* Request types
|
|
25
25
|
*/
|
|
26
26
|
type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
|
|
27
|
+
type TriggerServerStatusTypeFilter = 'cancelled' | 'triggered' | 'internal_error' | 'triggering' | 'waiting_price' | 'waiting_dependency' | 'twap_executing' | 'twap_completed';
|
|
27
28
|
interface TriggerServerListTriggerOrdersParams extends SignedTx<EIP712ListTriggerOrdersValues> {
|
|
28
|
-
pending: boolean;
|
|
29
29
|
product_id?: number;
|
|
30
30
|
max_update_time?: number;
|
|
31
31
|
digests?: string[];
|
|
32
32
|
limit?: number;
|
|
33
33
|
trigger_types?: TriggerServerTriggerTypeFilter[];
|
|
34
|
+
status_types?: TriggerServerStatusTypeFilter[];
|
|
34
35
|
reduce_only?: boolean;
|
|
35
36
|
}
|
|
36
37
|
interface TriggerServerListTwapExecutionsParams {
|
|
@@ -90,4 +91,4 @@ interface TriggerServerQueryFailureResponse {
|
|
|
90
91
|
}
|
|
91
92
|
type TriggerServerQueryResponse<TQueryType extends keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType> = TriggerServerQuerySuccessResponse<TQueryType> | TriggerServerQueryFailureResponse;
|
|
92
93
|
|
|
93
|
-
export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
|
|
94
|
+
export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SignedTx, EIP712ListTriggerOrdersValues } from '@nadohq/shared';
|
|
2
1
|
import { EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
+
import { SignedTx, EIP712ListTriggerOrdersValues } from '@nadohq/shared';
|
|
3
3
|
import { TriggerServerPlaceOrderParams } from './serverExecuteTypes.js';
|
|
4
4
|
import './serverModelTypes.js';
|
|
5
5
|
|
|
@@ -24,13 +24,14 @@ type TriggerServerOrderStatus = {
|
|
|
24
24
|
* Request types
|
|
25
25
|
*/
|
|
26
26
|
type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
|
|
27
|
+
type TriggerServerStatusTypeFilter = 'cancelled' | 'triggered' | 'internal_error' | 'triggering' | 'waiting_price' | 'waiting_dependency' | 'twap_executing' | 'twap_completed';
|
|
27
28
|
interface TriggerServerListTriggerOrdersParams extends SignedTx<EIP712ListTriggerOrdersValues> {
|
|
28
|
-
pending: boolean;
|
|
29
29
|
product_id?: number;
|
|
30
30
|
max_update_time?: number;
|
|
31
31
|
digests?: string[];
|
|
32
32
|
limit?: number;
|
|
33
33
|
trigger_types?: TriggerServerTriggerTypeFilter[];
|
|
34
|
+
status_types?: TriggerServerStatusTypeFilter[];
|
|
34
35
|
reduce_only?: boolean;
|
|
35
36
|
}
|
|
36
37
|
interface TriggerServerListTwapExecutionsParams {
|
|
@@ -90,4 +91,4 @@ interface TriggerServerQueryFailureResponse {
|
|
|
90
91
|
}
|
|
91
92
|
type TriggerServerQueryResponse<TQueryType extends keyof TriggerServerQueryResponseByType = TriggerServerQueryRequestType> = TriggerServerQuerySuccessResponse<TQueryType> | TriggerServerQueryFailureResponse;
|
|
92
93
|
|
|
93
|
-
export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
|
|
94
|
+
export type { TriggerServerCancelReason, TriggerServerListTriggerOrdersParams, TriggerServerListTriggerOrdersResponse, TriggerServerListTwapExecutionsParams, TriggerServerOrder, TriggerServerOrderInfo, TriggerServerOrderStatus, TriggerServerQueryFailureResponse, TriggerServerQueryRequestByType, TriggerServerQueryRequestType, TriggerServerQueryResponse, TriggerServerQueryResponseByType, TriggerServerQuerySuccessResponse, TriggerServerStatusTypeFilter, TriggerServerTriggerTypeFilter, TriggerServerTwapExecutionInfo, TriggerServerTwapExecutionStatus, TriggerServerTwapExecutionsResponse };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadohq/trigger-client",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "> TODO: description",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@nadohq/engine-client": "^0.1.0-alpha.
|
|
41
|
-
"@nadohq/shared": "^0.1.0-alpha.
|
|
40
|
+
"@nadohq/engine-client": "^0.1.0-alpha.9",
|
|
41
|
+
"@nadohq/shared": "^0.1.0-alpha.9",
|
|
42
42
|
"axios": "*",
|
|
43
43
|
"ts-mixer": "*"
|
|
44
44
|
},
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"viem": "*"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "aa99daac81aaf29696ecdbdb45276145823e0ac7"
|
|
52
52
|
}
|
package/src/TriggerClient.ts
CHANGED
|
@@ -186,7 +186,7 @@ export class TriggerClient {
|
|
|
186
186
|
{
|
|
187
187
|
limit: params.limit,
|
|
188
188
|
max_update_time: params.maxUpdateTimeInclusive,
|
|
189
|
-
|
|
189
|
+
status_types: params.statusTypes,
|
|
190
190
|
product_id: params.productId,
|
|
191
191
|
digests: params.digests,
|
|
192
192
|
trigger_types: params.triggerTypes,
|
package/src/dataMappers.ts
CHANGED
|
@@ -83,7 +83,7 @@ function mapTimeTriggerCriteria(
|
|
|
83
83
|
criteria: TimeTriggerCriteria,
|
|
84
84
|
): TriggerServerTimeTriggerCriteria {
|
|
85
85
|
return {
|
|
86
|
-
interval:
|
|
86
|
+
interval: Number(criteria.interval),
|
|
87
87
|
amounts: criteria.amounts?.map((amount) => toIntegerString(amount)),
|
|
88
88
|
};
|
|
89
89
|
}
|
package/src/types/clientTypes.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
|
+
EngineOrderParams,
|
|
3
|
+
EngineServerExecuteResult,
|
|
4
|
+
} from '@nadohq/engine-client';
|
|
5
|
+
import {
|
|
6
|
+
BigDecimal,
|
|
2
7
|
EIP712CancelOrdersParams,
|
|
3
8
|
EIP712CancelProductOrdersParams,
|
|
4
9
|
OrderAppendix,
|
|
5
10
|
Subaccount,
|
|
6
11
|
} from '@nadohq/shared';
|
|
7
|
-
import {
|
|
8
|
-
EngineOrderParams,
|
|
9
|
-
EngineServerExecuteResult,
|
|
10
|
-
} from '@nadohq/engine-client';
|
|
11
|
-
import { BigDecimal } from '@nadohq/shared';
|
|
12
12
|
import { TriggerCriteria, TriggerOrderStatus } from './clientModelTypes';
|
|
13
13
|
import {
|
|
14
14
|
TriggerServerOrder,
|
|
15
|
+
TriggerServerStatusTypeFilter,
|
|
15
16
|
TriggerServerTriggerTypeFilter,
|
|
16
17
|
} from './serverQueryTypes';
|
|
17
18
|
|
|
@@ -58,13 +59,13 @@ export interface TriggerListOrdersParams extends Subaccount, SignatureParams {
|
|
|
58
59
|
recvTime?: BigDecimal;
|
|
59
60
|
// If not given, defaults to all products
|
|
60
61
|
productId?: number;
|
|
61
|
-
// Pending trigger orders only, ignores cancelled & triggered orders
|
|
62
|
-
pending: boolean;
|
|
63
62
|
// In seconds
|
|
64
63
|
maxUpdateTimeInclusive?: number;
|
|
65
64
|
// When provided, the associated trigger orders are returned regardless of other filters
|
|
66
65
|
digests?: string[];
|
|
67
66
|
limit?: number;
|
|
67
|
+
// Filter by status types
|
|
68
|
+
statusTypes?: TriggerServerStatusTypeFilter[];
|
|
68
69
|
// Filter by trigger types
|
|
69
70
|
triggerTypes?: TriggerServerTriggerTypeFilter[];
|
|
70
71
|
// Filter by reduce-only orders
|
|
@@ -38,7 +38,7 @@ export interface TriggerServerTimeTriggerCriteria {
|
|
|
38
38
|
/**
|
|
39
39
|
* Trigger interval in seconds
|
|
40
40
|
*/
|
|
41
|
-
interval:
|
|
41
|
+
interval: number;
|
|
42
42
|
/**
|
|
43
43
|
* By default, trigger service will split up orders as per total amount / interval
|
|
44
44
|
* If you want to specify the amounts for each interval, you can provide them here.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EIP712ListTriggerOrdersValues, SignedTx } from '@nadohq/shared';
|
|
2
1
|
import { EngineServerExecuteResult } from '@nadohq/engine-client';
|
|
2
|
+
import { EIP712ListTriggerOrdersValues, SignedTx } from '@nadohq/shared';
|
|
3
3
|
import { TriggerServerPlaceOrderParams } from './serverExecuteTypes';
|
|
4
4
|
|
|
5
5
|
export type TriggerServerOrderStatus =
|
|
@@ -34,15 +34,25 @@ export type TriggerServerOrderStatus =
|
|
|
34
34
|
|
|
35
35
|
export type TriggerServerTriggerTypeFilter = 'price_trigger' | 'time_trigger';
|
|
36
36
|
|
|
37
|
+
export type TriggerServerStatusTypeFilter =
|
|
38
|
+
| 'cancelled'
|
|
39
|
+
| 'triggered'
|
|
40
|
+
| 'internal_error'
|
|
41
|
+
| 'triggering'
|
|
42
|
+
| 'waiting_price'
|
|
43
|
+
| 'waiting_dependency'
|
|
44
|
+
| 'twap_executing'
|
|
45
|
+
| 'twap_completed';
|
|
46
|
+
|
|
37
47
|
export interface TriggerServerListTriggerOrdersParams
|
|
38
48
|
extends SignedTx<EIP712ListTriggerOrdersValues> {
|
|
39
|
-
pending: boolean;
|
|
40
49
|
// If not given, defaults to all products
|
|
41
50
|
product_id?: number;
|
|
42
51
|
max_update_time?: number;
|
|
43
52
|
digests?: string[];
|
|
44
53
|
limit?: number;
|
|
45
54
|
trigger_types?: TriggerServerTriggerTypeFilter[];
|
|
55
|
+
status_types?: TriggerServerStatusTypeFilter[];
|
|
46
56
|
reduce_only?: boolean;
|
|
47
57
|
}
|
|
48
58
|
|