From fa5863b42cd0b1b59b2589bac588836411d730f0 Mon Sep 17 00:00:00 2001 From: lomonoshka Date: Tue, 31 Oct 2023 10:44:23 +0400 Subject: [PATCH] Fix patching with eth balance --- src/Unit/Exchange/generateSwapCalldata.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index d38df4e..4aa3e18 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -131,7 +131,7 @@ export async function generateSwapCalldata({ )); } - ({ swapDescription, calls } = await wrapOrUnwrapIfNeeded(amountNativeDecimals, swapDescription, calls, swapExecutorContractAddress)); + ({ swapDescription, calls } = await wrapOrUnwrapIfNeeded(amountNativeDecimals, swapDescription, calls, swapExecutorContractAddress, wethAddress)); const calldata = generateCalls(calls); return { swapDescription, calldata }; } @@ -251,16 +251,17 @@ async function wrapOrUnwrapIfNeeded( amount: BigNumberish, swapDescription: LibValidator.SwapDescriptionStruct, calls: BytesLike[], - swapExecutorContractAddress: string + swapExecutorContractAddress: string, + wethAddress: string ) { if (swapDescription.srcToken === ZeroAddress) { const wrapCall = generateWrapAndTransferCall(swapDescription.srcReceiver, { value: amount }); swapDescription.srcReceiver = swapExecutorContractAddress calls = ([wrapCall] as BytesLike[]).concat(calls); - } + } if (swapDescription.dstToken === ZeroAddress) { let unwrapCall = generateUnwrapAndTransferCall(swapDescription.dstReceiver, 0); - unwrapCall = pathCallWithBalance(unwrapCall, swapDescription.dstToken); + unwrapCall = pathCallWithBalance(unwrapCall, wethAddress); calls.push(unwrapCall); } else { let transferCall = await generateTransferCall(swapDescription.dstToken, swapDescription.dstReceiver, 0);