diff --git a/contracts/middleware/MiddlewareRemove.sol b/contracts/middleware/MiddlewareRemove.sol index 672aa2d77..d564a770e 100644 --- a/contracts/middleware/MiddlewareRemove.sol +++ b/contracts/middleware/MiddlewareRemove.sol @@ -41,22 +41,15 @@ contract MiddlewareRemove is BaseMiddleware { IPoolManager.ModifyLiquidityParams calldata params, bytes calldata hookData ) external returns (bytes4) { - (bool success,) = address(this).delegatecall{gas: GAS_LIMIT}( - abi.encodeWithSelector(this._callAndEnsurePrice.selector, sender, key, params, hookData) - ); + address(this).delegatecall{gas: GAS_LIMIT}(abi.encodeWithSelector(this._callAndEnsurePrice.selector, msg.data)); return BaseHook.beforeRemoveLiquidity.selector; } - function _callAndEnsurePrice( - address sender, - PoolKey calldata key, - IPoolManager.ModifyLiquidityParams calldata params, - bytes calldata hookData - ) external { + function _callAndEnsurePrice(bytes calldata data) external { + (, PoolKey memory key,,) = abi.decode(data[4:], (address, PoolKey, IPoolManager.ModifyLiquidityParams, bytes)); + (uint160 priceBefore,,,) = manager.getSlot0(key.toId()); - (bool success,) = address(implementation).delegatecall( - abi.encodeWithSelector(this.beforeRemoveLiquidity.selector, sender, key, params, hookData) - ); + (bool success,) = address(implementation).delegatecall(data); if (!success) { revert(); }