From f3ed39fedbf9b43f1975ccfa5be29a24562aeb24 Mon Sep 17 00:00:00 2001 From: Kanan <93033289+kriss39@users.noreply.github.com> Date: Sat, 12 Sep 2026 22:58:32 +0400 Subject: [PATCH] fix(api): make request identifiers exclusive --- src/api.ts | 4 +++- tests/api.contract.ts | 44 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 tests/api.contract.ts diff --git a/src/api.ts b/src/api.ts index 62a5f217..aa742fbd 100644 --- a/src/api.ts +++ b/src/api.ts @@ -594,11 +594,13 @@ type PartialContractCallsQuoteRequest = ToolConfiguration & { export type ContractCallsQuoteRequestToAmount = PartialContractCallsQuoteRequest & { toAmount: string + fromAmount?: never } export type ContractCallsQuoteRequestFromAmount = PartialContractCallsQuoteRequest & { fromAmount: string + toAmount?: never } export type ContractCallsQuoteRequest = @@ -665,7 +667,7 @@ export type GetStatusRequest = { toChain?: number | string transactionId?: string depositAddress?: string -} & ({ txHash: string } | { taskId: string }) +} & ({ txHash: string; taskId?: never } | { taskId: string; txHash?: never }) export interface BaseTransactionInfo { txHash: string diff --git a/tests/api.contract.ts b/tests/api.contract.ts new file mode 100644 index 00000000..24252694 --- /dev/null +++ b/tests/api.contract.ts @@ -0,0 +1,44 @@ +import type { + ContractCallsQuoteRequest, + GetStatusRequest, +} from '../src/index.js' + +const contractCallRequestBase = { + fromChain: 1, + fromToken: '0x0000000000000000000000000000000000000000', + fromAddress: '0x0000000000000000000000000000000000000001', + toChain: 10, + toToken: '0x0000000000000000000000000000000000000000', + contractCalls: [], +} + +export const fromAmountContractCallRequest = { + ...contractCallRequestBase, + fromAmount: '1', +} satisfies ContractCallsQuoteRequest + +export const toAmountContractCallRequest = { + ...contractCallRequestBase, + toAmount: '1', +} satisfies ContractCallsQuoteRequest + +export const transactionHashStatusRequest = { + txHash: '0xabc', +} satisfies GetStatusRequest + +export const taskStatusRequest = { + taskId: 'task-id', +} satisfies GetStatusRequest + +// @ts-expect-error Contract-call quote modes are mutually exclusive. +export const contractCallRequestWithBothAmounts: ContractCallsQuoteRequest = { + ...contractCallRequestBase, + fromAmount: '1', + toAmount: '1', +} + +// @ts-expect-error A status lookup accepts one identifier at a time. +export const statusRequestWithBothIdentifiers: GetStatusRequest = { + txHash: '0xabc', + taskId: 'task-id', +}