fix: rm exactOut

This commit is contained in:
royvardhan
2025-01-28 18:32:28 +05:30
parent 8a381c4672
commit 44db2e52b3

View File

@@ -18,32 +18,27 @@ contract BalancerV2Executor is IExecutor {
external external
returns (uint256 calculatedAmount) returns (uint256 calculatedAmount)
{ {
( (
IERC20 tokenIn, IERC20 tokenIn,
IERC20 tokenOut, IERC20 tokenOut,
bytes32 poolId, bytes32 poolId,
address receiver, address receiver,
bool exactOut,
bool needsApproval bool needsApproval
) = _decodeData(data); ) = _decodeData(data);
if (needsApproval) { if (needsApproval) {
tokenIn.safeApprove(VAULT, type(uint256).max); tokenIn.safeApprove(VAULT, type(uint256).max);
} }
IVault.SingleSwap memory singleSwap = IVault.SingleSwap({ IVault.SingleSwap memory singleSwap = IVault.SingleSwap({
poolId: poolId, poolId: poolId,
kind: exactOut ? IVault.SwapKind.GIVEN_OUT : IVault.SwapKind.GIVEN_IN, kind: IVault.SwapKind.GIVEN_IN,
assetIn: IAsset(address(tokenIn)), assetIn: IAsset(address(tokenIn)),
assetOut: IAsset(address(tokenOut)), assetOut: IAsset(address(tokenOut)),
amount: givenAmount, amount: givenAmount,
userData: "" userData: ""
}); });
IVault.FundManagement memory funds = IVault.FundManagement({ IVault.FundManagement memory funds = IVault.FundManagement({
sender: address(this), sender: address(this),
fromInternalBalance: false, fromInternalBalance: false,
@@ -51,9 +46,7 @@ contract BalancerV2Executor is IExecutor {
toInternalBalance: false toInternalBalance: false
}); });
uint256 limit = 0;
uint256 limit = exactOut ? type(uint256).max : 0;
calculatedAmount = IVault(VAULT).swap( calculatedAmount = IVault(VAULT).swap(
singleSwap, singleSwap,
@@ -71,21 +64,17 @@ contract BalancerV2Executor is IExecutor {
IERC20 tokenOut, IERC20 tokenOut,
bytes32 poolId, bytes32 poolId,
address receiver, address receiver,
bool exactOut,
bool needsApproval bool needsApproval
) )
{ {
// Verify data length (20 + 20 + 32 + 20 + 1 + 1 = 94 bytes) if (data.length != 93) {
if (data.length != 94) {
revert BalancerV2Executor__InvalidDataLength(); revert BalancerV2Executor__InvalidDataLength();
} }
tokenIn = IERC20(address(bytes20(data[0:20]))); tokenIn = IERC20(address(bytes20(data[0:20])));
tokenOut = IERC20(address(bytes20(data[20:40]))); tokenOut = IERC20(address(bytes20(data[20:40])));
poolId = bytes32(data[40:72]); poolId = bytes32(data[40:72]);
receiver = address(bytes20(data[72:92])); receiver = address(bytes20(data[72:92]));
exactOut = uint8(data[92]) > 0; needsApproval = uint8(data[92]) > 0;
needsApproval = uint8(data[93]) > 0;
} }
} }