diff --git a/CHANGELOG.md b/CHANGELOG.md index 9feac9b8..a5920d9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +- changed: Update sideshift plugin with new optional API fields - changed: Add signature header support to Exolix - changed: Add index for orderId - changed: Add EVM chainId, pluginId, and tokenId fields to StandardTx diff --git a/src/partners/sideshift.ts b/src/partners/sideshift.ts index e296d37f..d05f66eb 100644 --- a/src/partners/sideshift.ts +++ b/src/partners/sideshift.ts @@ -1,6 +1,7 @@ import { asArray, asMaybe, + asNumber, asObject, asOptional, asString, @@ -156,6 +157,11 @@ const asSideshiftTx = asObject({ prevDepositAddresses: asMaybe(asObject({ address: asMaybe(asString) })), depositAsset: asString, depositNetwork: asOptional(asString), + depositHash: asOptional(asString), + depositContractAddress: asOptional(asString), + // asMaybe so an unexpected encoding (e.g. a numeric string) degrades to + // undefined instead of throwing and aborting the whole 5-day query block + depositEvmChainId: asMaybe(asNumber), invoiceAmount: asString, settleAddress: asObject({ address: asString @@ -163,7 +169,11 @@ const asSideshiftTx = asObject({ settleAmount: asString, settleAsset: asString, settleNetwork: asOptional(asString), - createdAt: asString + settleHash: asOptional(asString), + settleContractAddress: asOptional(asString), + settleEvmChainId: asMaybe(asNumber), + createdAt: asString, + settledAt: asOptional(asString) }) const asSideshiftPluginParams = asObject({ @@ -363,7 +373,12 @@ export async function processSideshiftTx( status: statusMap[tx.status], orderId: tx.id, countryCode: null, - depositTxid: undefined, + // On EVM networks, TRON, Aptos, Sui, NEAR, and Algorand, SideShift's + // depositHash is the internal sweep transaction (deposit contract to + // their wallet), not the customer's own deposit transaction. The API + // exposes no better field, so treat this as an order reference, not a + // pointer to the customer's on-chain payment. + depositTxid: tx.depositHash, depositAddress, depositCurrency: tx.depositAsset, depositChainPluginId: depositAsset.chainPluginId, @@ -373,7 +388,7 @@ export async function processSideshiftTx( direction: null, exchangeType: 'swap', paymentType: null, - payoutTxid: undefined, + payoutTxid: tx.settleHash, payoutAddress: tx.settleAddress.address, payoutCurrency: tx.settleAsset, payoutChainPluginId: payoutAsset.chainPluginId, diff --git a/src/queryEngine.ts b/src/queryEngine.ts index 8551c54f..5c9ce353 100644 --- a/src/queryEngine.ts +++ b/src/queryEngine.ts @@ -187,9 +187,11 @@ export async function queryEngine(): Promise { const checkUpdateTx = (oldTx: StandardTx, newTx: StandardTx): string[] => { const fields = [ 'status', + 'depositTxid', 'depositChainPluginId', 'depositEvmChainId', 'depositTokenId', + 'payoutTxid', 'payoutChainPluginId', 'payoutEvmChainId', 'payoutTokenId'