From 4d9f09bc211e6b4a51e537fe7913782646ceda4d Mon Sep 17 00:00:00 2001 From: lomonoshka Date: Mon, 30 Oct 2023 20:24:58 +0400 Subject: [PATCH] Add final transfer from executor in any case --- package.json | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index ea50977..122bdbe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.10-rc103", + "version": "0.20.10-rc104", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index 449c5b0..bfdf259 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -131,7 +131,7 @@ export async function generateSwapCalldata({ )); } - calls = wrapOrUnwrapIfNeeded(amountNativeDecimals, swapDescription, calls); + calls = await wrapOrUnwrapIfNeeded(amountNativeDecimals, swapDescription, calls); const calldata = generateCalls(calls); return { swapDescription, calldata }; } @@ -247,7 +247,7 @@ async function processMultiFactorySwaps( return { swapDescription, calls }; } -function wrapOrUnwrapIfNeeded(amount: BigNumberish, swapDescription: LibValidator.SwapDescriptionStruct, calls: BytesLike[]): BytesLike[] { +async function wrapOrUnwrapIfNeeded(amount: BigNumberish, swapDescription: LibValidator.SwapDescriptionStruct, calls: BytesLike[]): Promise { if (swapDescription.srcToken === ZeroAddress) { const wrapCall = generateWrapAndTransferCall(swapDescription.dstReceiver, { value: amount }); calls = ([wrapCall] as BytesLike[]).concat(calls); @@ -256,6 +256,10 @@ function wrapOrUnwrapIfNeeded(amount: BigNumberish, swapDescription: LibValidato let unwrapCall = generateUnwrapAndTransferCall(swapDescription.dstReceiver, 0); unwrapCall = pathCallWithBalance(unwrapCall, swapDescription.dstToken); calls.push(unwrapCall); + } else { + let transferCall = await generateTransferCall(swapDescription.dstToken, swapDescription.dstReceiver, 0); + transferCall = pathCallWithBalance(transferCall, swapDescription.dstToken); + calls.push(transferCall); } return calls; }