diff --git a/packages/swapper/src/swappers/RelaySwapper/utils/getTrade.ts b/packages/swapper/src/swappers/RelaySwapper/utils/getTrade.ts index d444fb9c109..e5aadf454e1 100644 --- a/packages/swapper/src/swappers/RelaySwapper/utils/getTrade.ts +++ b/packages/swapper/src/swappers/RelaySwapper/utils/getTrade.ts @@ -245,6 +245,16 @@ export async function getTrade({ const { data: quote } = maybeQuote.unwrap() + const orderId = quote.protocol?.v2?.orderId + if (!orderId) { + return Err( + makeSwapErrorRight({ + message: 'Relay quote missing protocol.v2.orderId', + code: TradeQuoteError.UnknownError, + }), + ) + } + const { slippageTolerance, currencyOut, timeEstimate } = quote.details const buyAmountAfterFeesCryptoBaseUnit = currencyOut.amount @@ -504,7 +514,7 @@ export async function getTrade({ value: sellAmountIncludingProtocolFeesCryptoBaseUnit, chainSpecific: { pubkey: xpub ?? getRelayDefaultUserAddress(sellAsset.chainId), - opReturnData: firstStep.requestId, + opReturnData: orderId, }, sendMax: false, } @@ -599,9 +609,10 @@ export async function getTrade({ relayTransactionMetadata: { from: sendAddress, psbt: selectedItem.data.psbt, - opReturnData: quoteStep.requestId, + opReturnData: orderId, to: relayer, relayId: quote.steps[0].requestId, + orderId, }, solanaTransactionMetadata: undefined, } @@ -620,6 +631,7 @@ export async function getTrade({ gasLimit: selectedItem.data?.gas, chainId: Number(fromChainId(sellAsset.chainId).chainReference), relayId: quote.steps[0].requestId, + orderId, }, solanaTransactionMetadata: undefined, } @@ -634,6 +646,7 @@ export async function getTrade({ }, relayTransactionMetadata: { relayId: quote.steps[0].requestId, + orderId, }, } } @@ -644,6 +657,7 @@ export async function getTrade({ solanaTransactionMetadata: undefined, relayTransactionMetadata: { relayId: quote.steps[0].requestId, + orderId, to: selectedItem.data?.parameter?.contract_address, }, } diff --git a/packages/swapper/src/swappers/RelaySwapper/utils/types.ts b/packages/swapper/src/swappers/RelaySwapper/utils/types.ts index a35ca1a8942..537c095ef1d 100644 --- a/packages/swapper/src/swappers/RelaySwapper/utils/types.ts +++ b/packages/swapper/src/swappers/RelaySwapper/utils/types.ts @@ -25,6 +25,7 @@ export type RelayTransactionMetadata = { psbt?: string opReturnData?: string relayId: string + orderId: string } export type RelayStatus = { @@ -146,10 +147,26 @@ export type RelayQuoteStep = { items?: RelayQuoteItem[] } +export type RelayProtocolV2 = { + orderId: string + orderData?: unknown + paymentDetails?: { + chainId: string + depository: string + currency: string + amount: string + } +} + +export type RelayProtocol = { + v2?: RelayProtocolV2 +} + export type RelayQuote = { fees: RelayFees details: QuoteDetails steps: RelayQuoteStep[] + protocol?: RelayProtocol } export const isRelayQuoteUtxoItemData = (