diff --git a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityOutsideActiveId_ExistingId.snap b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityOutsideActiveId_ExistingId.snap index aca9d39..7b0cdd4 100644 --- a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityOutsideActiveId_ExistingId.snap +++ b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityOutsideActiveId_ExistingId.snap @@ -1 +1 @@ -180493 \ No newline at end of file +180350 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityOutsideActiveId_NewId.snap b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityOutsideActiveId_NewId.snap index 61cd84b..51f4302 100644 --- a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityOutsideActiveId_NewId.snap +++ b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityOutsideActiveId_NewId.snap @@ -1 +1 @@ -634649 \ No newline at end of file +634518 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityWithActiveId.snap b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityWithActiveId.snap index bcfbbfe..6773759 100644 --- a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityWithActiveId.snap +++ b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityWithActiveId.snap @@ -1 +1 @@ -900919 \ No newline at end of file +900791 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityWithActiveId_WithHook.snap b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityWithActiveId_WithHook.snap index fe84836..777bc40 100644 --- a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityWithActiveId_WithHook.snap +++ b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testAddLiquidityWithActiveId_WithHook.snap @@ -1 +1 @@ -1266119 \ No newline at end of file +1265997 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testBatch_AddLiquidityWithActiveId.snap b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testBatch_AddLiquidityWithActiveId.snap index 2318462..e5c6621 100644 --- a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testBatch_AddLiquidityWithActiveId.snap +++ b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testBatch_AddLiquidityWithActiveId.snap @@ -1 +1 @@ -913840 \ No newline at end of file +913724 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testBatch_AddLiquidityWithActiveId_WithoutCloseCurrency.snap b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testBatch_AddLiquidityWithActiveId_WithoutCloseCurrency.snap index bcfbbfe..6773759 100644 --- a/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testBatch_AddLiquidityWithActiveId_WithoutCloseCurrency.snap +++ b/.forge-snapshots/BinFungiblePositionManager_AddLiquidityTest#testBatch_AddLiquidityWithActiveId_WithoutCloseCurrency.snap @@ -1 +1 @@ -900919 \ No newline at end of file +900791 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testBatch_RemoveLiquidityWithActiveId_ThreeBins.snap b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testBatch_RemoveLiquidityWithActiveId_ThreeBins.snap index 937901d..965c683 100644 --- a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testBatch_RemoveLiquidityWithActiveId_ThreeBins.snap +++ b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testBatch_RemoveLiquidityWithActiveId_ThreeBins.snap @@ -1 +1 @@ -222862 \ No newline at end of file +222788 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testBatch_RemoveLiquidityWithActiveId_ThreeBins_WithoutCloseCurrency.snap b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testBatch_RemoveLiquidityWithActiveId_ThreeBins_WithoutCloseCurrency.snap index a8a136f..afe20e5 100644 --- a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testBatch_RemoveLiquidityWithActiveId_ThreeBins_WithoutCloseCurrency.snap +++ b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testBatch_RemoveLiquidityWithActiveId_ThreeBins_WithoutCloseCurrency.snap @@ -1 +1 @@ -212366 \ No newline at end of file +212283 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidityOutsideActiveId_ThreeBins.snap b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidityOutsideActiveId_ThreeBins.snap index 0fae174..98c58ec 100644 --- a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidityOutsideActiveId_ThreeBins.snap +++ b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidityOutsideActiveId_ThreeBins.snap @@ -1 +1 @@ -146512 \ No newline at end of file +146429 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidityWithActiveId_ThreeBins.snap b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidityWithActiveId_ThreeBins.snap index e8e77d9..072db05 100644 --- a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidityWithActiveId_ThreeBins.snap +++ b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidityWithActiveId_ThreeBins.snap @@ -1 +1 @@ -212365 \ No newline at end of file +212282 \ No newline at end of file diff --git a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidity_Half.snap b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidity_Half.snap index 82e1abb..ed790ca 100644 --- a/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidity_Half.snap +++ b/.forge-snapshots/BinFungiblePositionManager_RemoveLiquidityTest#testRemoveLiquidity_Half.snap @@ -1 +1 @@ -237897 \ No newline at end of file +237793 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2IncludingInit.snap b/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2IncludingInit.snap index eba3eee..746b998 100644 --- a/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2IncludingInit.snap +++ b/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2IncludingInit.snap @@ -1 +1 @@ -1017493 \ No newline at end of file +1017338 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2WithoutInit.snap b/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2WithoutInit.snap index 9e82055..854366d 100644 --- a/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2WithoutInit.snap +++ b/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2WithoutInit.snap @@ -1 +1 @@ -977654 \ No newline at end of file +977526 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2WithoutNativeToken.snap b/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2WithoutNativeToken.snap index aabf5d2..483e421 100644 --- a/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2WithoutNativeToken.snap +++ b/.forge-snapshots/BinMigratorFromPancakeswapV2Test#testMigrateFromV2WithoutNativeToken.snap @@ -1 +1 @@ -1021803 \ No newline at end of file +1021675 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3IncludingInit.snap b/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3IncludingInit.snap index eccbd26..af4f805 100644 --- a/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3IncludingInit.snap +++ b/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3IncludingInit.snap @@ -1 +1 @@ -1096421 \ No newline at end of file +1096266 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3WithoutInit.snap b/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3WithoutInit.snap index d0cc4fb..d414579 100644 --- a/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3WithoutInit.snap +++ b/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3WithoutInit.snap @@ -1 +1 @@ -1056634 \ No newline at end of file +1056506 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3WithoutNativeToken.snap b/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3WithoutNativeToken.snap index b5cd892..9ec6274 100644 --- a/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3WithoutNativeToken.snap +++ b/.forge-snapshots/BinMigratorFromPancakeswapV3Test#testMigrateFromV3WithoutNativeToken.snap @@ -1 +1 @@ -1094163 \ No newline at end of file +1094035 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2IncludingInit.snap b/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2IncludingInit.snap index e6ee0f3..9feb506 100644 --- a/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2IncludingInit.snap +++ b/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2IncludingInit.snap @@ -1 +1 @@ -1017505 \ No newline at end of file +1017350 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2WithoutInit.snap b/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2WithoutInit.snap index 77b9410..8fffe3e 100644 --- a/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2WithoutInit.snap +++ b/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2WithoutInit.snap @@ -1 +1 @@ -977666 \ No newline at end of file +977538 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2WithoutNativeToken.snap b/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2WithoutNativeToken.snap index f7d4e86..ba9b232 100644 --- a/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2WithoutNativeToken.snap +++ b/.forge-snapshots/BinMigratorFromUniswapV2Test#testMigrateFromV2WithoutNativeToken.snap @@ -1 +1 @@ -1021800 \ No newline at end of file +1021672 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3IncludingInit.snap b/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3IncludingInit.snap index 1abbbcd..c2d2eb7 100644 --- a/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3IncludingInit.snap +++ b/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3IncludingInit.snap @@ -1 +1 @@ -1094403 \ No newline at end of file +1094248 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3WithoutInit.snap b/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3WithoutInit.snap index 39999fd..3b19055 100644 --- a/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3WithoutInit.snap +++ b/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3WithoutInit.snap @@ -1 +1 @@ -1054616 \ No newline at end of file +1054488 \ No newline at end of file diff --git a/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3WithoutNativeToken.snap b/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3WithoutNativeToken.snap index 823c2c0..63d1766 100644 --- a/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3WithoutNativeToken.snap +++ b/.forge-snapshots/BinMigratorFromUniswapV3Test#testMigrateFromV3WithoutNativeToken.snap @@ -1 +1 @@ -1092141 \ No newline at end of file +1092013 \ No newline at end of file diff --git a/src/pool-bin/BinFungiblePositionManager.sol b/src/pool-bin/BinFungiblePositionManager.sol index c284bd4..87f1247 100644 --- a/src/pool-bin/BinFungiblePositionManager.sol +++ b/src/pool-bin/BinFungiblePositionManager.sol @@ -96,36 +96,6 @@ contract BinFungiblePositionManager is return abi.decode(vault.lock(abi.encode(msg.sender, false, lockData)), (bytes[])); } - /// @inheritdoc IBinFungiblePositionManager - function addLiquidity(AddLiquidityParams calldata params) - external - payable - override - checkDeadline(params.deadline) - returns (uint128 amount0, uint128 amount1, uint256[] memory tokenIds, uint256[] memory liquidityMinted) - { - bytes memory addLiquidityData = abi.encode(CallbackData(CallbackDataType.AddLiquidity, abi.encode(params))); - - (amount0, amount1, tokenIds, liquidityMinted) = abi.decode( - vault.lock(abi.encode(msg.sender, true, addLiquidityData)), (uint128, uint128, uint256[], uint256[]) - ); - } - - /// @inheritdoc IBinFungiblePositionManager - function removeLiquidity(RemoveLiquidityParams calldata params) - external - payable - override - checkDeadline(params.deadline) - returns (uint128 amount0, uint128 amount1, uint256[] memory tokenIds) - { - bytes memory removeLiquidityData = - abi.encode(CallbackData(CallbackDataType.RemoveLiquidity, abi.encode(params))); - - (amount0, amount1, tokenIds) = - abi.decode(vault.lock(abi.encode(msg.sender, true, removeLiquidityData)), (uint128, uint128, uint256[])); - } - function lockAcquired(bytes calldata rawData) external override returns (bytes memory returnData) { if (msg.sender != address(vault)) revert OnlyVaultCaller(); diff --git a/src/pool-bin/interfaces/IBinFungiblePositionManager.sol b/src/pool-bin/interfaces/IBinFungiblePositionManager.sol index b7f771f..4eb92c3 100644 --- a/src/pool-bin/interfaces/IBinFungiblePositionManager.sol +++ b/src/pool-bin/interfaces/IBinFungiblePositionManager.sol @@ -116,24 +116,4 @@ interface IBinFungiblePositionManager is IBinFungibleToken, IPeripheryPayments, /// @param deadline is the deadline for the batched actions to be executed /// @return returnData is the endocing of each actions return information function modifyLiquidities(bytes calldata payload, uint256 deadline) external payable returns (bytes[] memory); - - /// @notice Add liquidity, user will receive ERC1155 tokens as receipt of bin share ownership. - /// @dev The ID of the ERC11155 token is keccak256(abi.encode(poolkey.toId, binId)) - /// @return amount0 Amount of token0 added - /// @return amount1 Amount of token1 added - /// @return tokenIds Ids of token minted - /// @return liquidityMinted Amount of liquidity added - function addLiquidity(AddLiquidityParams calldata) - external - payable - returns (uint128 amount0, uint128 amount1, uint256[] memory tokenIds, uint256[] memory liquidityMinted); - - /// @notice Remove liquidity, burn NFT and retrieve back the ERC20 tokens for the liquidity - /// @return amount0 Amount of token0 removed - /// @return amount1 Amount of token1 removed - /// @return tokenIds Ids of token burnt - function removeLiquidity(RemoveLiquidityParams calldata) - external - payable - returns (uint128 amount0, uint128 amount1, uint256[] memory tokenIds); } diff --git a/test/pool-bin/BinFungiblePositionManager_AddLiquidity.t.sol b/test/pool-bin/BinFungiblePositionManager_AddLiquidity.t.sol index 8521224..40dff96 100644 --- a/test/pool-bin/BinFungiblePositionManager_AddLiquidity.t.sol +++ b/test/pool-bin/BinFungiblePositionManager_AddLiquidity.t.sol @@ -605,9 +605,9 @@ contract BinFungiblePositionManager_AddLiquidityTest is Test, GasSnapshot, Liqui addParams.to = user; if (user == alice) { - (,, aliceTokenIds, aliceLiquidityMinted) = binFungiblePositionManager.addLiquidity(addParams); + (,, aliceTokenIds, aliceLiquidityMinted) = addLiquidity(addParams); } else { - (,, bobTokenIds, bobLiquidityMinted) = binFungiblePositionManager.addLiquidity(addParams); + (,, bobTokenIds, bobLiquidityMinted) = addLiquidity(addParams); } for (uint256 j; j < binIds.length; j++) { @@ -676,7 +676,7 @@ contract BinFungiblePositionManager_AddLiquidityTest is Test, GasSnapshot, Liqui function _getModifyLiquiditiesAddPayload( IBinFungiblePositionManager.AddLiquidityParams memory params, bool shouldCloseCurrency - ) internal view returns (bytes memory) { + ) internal pure returns (bytes memory) { // generate modifyLiquidities data bytes memory addLiquidityData = abi.encode( IBinFungiblePositionManager.CallbackData( diff --git a/test/pool-bin/BinFungiblePositionManager_RemoveLiquidity.t.sol b/test/pool-bin/BinFungiblePositionManager_RemoveLiquidity.t.sol index 083ba1a..5a09253 100644 --- a/test/pool-bin/BinFungiblePositionManager_RemoveLiquidity.t.sol +++ b/test/pool-bin/BinFungiblePositionManager_RemoveLiquidity.t.sol @@ -450,7 +450,7 @@ contract BinFungiblePositionManager_RemoveLiquidityTest is Test, GasSnapshot, Li token0.mint(alice, 1 ether); token1.mint(alice, 1 ether); params = _getAddParams(key1, binIds, 1 ether, 1 ether, activeId, alice); - (,,, uint256[] memory liquidityMinted) = binFungiblePositionManager.addLiquidity(params); + (,,, uint256[] memory liquidityMinted) = addLiquidity(params); // remove more than minted, arithemtic as bal goes into negative liquidityMinted[0] = liquidityMinted[0] + 1; @@ -469,7 +469,7 @@ contract BinFungiblePositionManager_RemoveLiquidityTest is Test, GasSnapshot, Li uint24[] memory binIds = getBinIds(activeId, 3); IBinFungiblePositionManager.AddLiquidityParams memory params; params = _getAddParams(key1, binIds, 1 ether, 1 ether, activeId, alice); - (,,, uint256[] memory liquidityMinted) = binFungiblePositionManager.addLiquidity(params); + (,,, uint256[] memory liquidityMinted) = addLiquidity(params); vm.stopPrank(); assertEq(token0.balanceOf(bob), 0 ether); @@ -500,7 +500,7 @@ contract BinFungiblePositionManager_RemoveLiquidityTest is Test, GasSnapshot, Li uint24[] memory binIds = getBinIds(activeId, 3); IBinFungiblePositionManager.AddLiquidityParams memory params; params = _getAddParams(key1, binIds, 1 ether, 1 ether, activeId, alice); - (,,, uint256[] memory liquidityMinted) = binFungiblePositionManager.addLiquidity(params); + (,,, uint256[] memory liquidityMinted) = addLiquidity(params); vm.stopPrank(); assertEq(token0.balanceOf(bob), 0 ether); @@ -529,9 +529,9 @@ contract BinFungiblePositionManager_RemoveLiquidityTest is Test, GasSnapshot, Li token0.mint(alice, 3 ether); token1.mint(alice, 3 ether); params = _getAddParams(key1, binIds, 1 ether, 1 ether, activeId, alice); - (,,, uint256[] memory liquidityMinted1) = binFungiblePositionManager.addLiquidity(params); + (,,, uint256[] memory liquidityMinted1) = addLiquidity(params); params = _getAddParams(key2, binIds, 2 ether, 2 ether, activeId, alice); - (,,, uint256[] memory liquidityMinted2) = binFungiblePositionManager.addLiquidity(params); + (,,, uint256[] memory liquidityMinted2) = addLiquidity(params); assertEq(token0.balanceOf(alice), 0); assertEq(token1.balanceOf(alice), 0); @@ -626,7 +626,7 @@ contract BinFungiblePositionManager_RemoveLiquidityTest is Test, GasSnapshot, Li function _getModifyLiquiditiesRemovePayload( IBinFungiblePositionManager.RemoveLiquidityParams memory params, bool shouldCloseCurrency - ) internal view returns (bytes memory) { + ) internal pure returns (bytes memory) { // generate modifyLiquidities data bytes memory removeLiquidityData = abi.encode( IBinFungiblePositionManager.CallbackData( @@ -656,7 +656,7 @@ contract BinFungiblePositionManager_RemoveLiquidityTest is Test, GasSnapshot, Li function _getModifyLiquiditiesAddPayload( IBinFungiblePositionManager.AddLiquidityParams memory params, bool shouldCloseCurrency - ) internal view returns (bytes memory) { + ) internal pure returns (bytes memory) { // generate modifyLiquidities data bytes memory addLiquidityData = abi.encode( IBinFungiblePositionManager.CallbackData( diff --git a/test/pool-bin/BinQuoter.t.sol b/test/pool-bin/BinQuoter.t.sol index 19c3e17..2c37c31 100644 --- a/test/pool-bin/BinQuoter.t.sol +++ b/test/pool-bin/BinQuoter.t.sol @@ -126,15 +126,37 @@ contract BinQuoterTest is Test, GasSnapshot, LiquidityParamsHelper { uint24[] memory binIds = getBinIds(activeId, 3); IBinFungiblePositionManager.AddLiquidityParams memory addParams; addParams = _getAddParams(key, binIds, 10 ether, 10 ether, activeId, alice); - binFungiblePositionManager.addLiquidity(addParams); + + bytes memory addLiquidityData = abi.encode( + IBinFungiblePositionManager.CallbackData( + IBinFungiblePositionManager.CallbackDataType.AddLiquidity, abi.encode(addParams) + ) + ); + bytes[] memory lockDataArray = new bytes[](1); + lockDataArray[0] = addLiquidityData; + binFungiblePositionManager.modifyLiquidities(abi.encode(lockDataArray), block.timestamp + 1); addParams = _getAddParams(key2, binIds, 10 ether, 10 ether, activeId, alice); - binFungiblePositionManager.addLiquidity(addParams); + + addLiquidityData = abi.encode( + IBinFungiblePositionManager.CallbackData( + IBinFungiblePositionManager.CallbackDataType.AddLiquidity, abi.encode(addParams) + ) + ); + lockDataArray[0] = addLiquidityData; + binFungiblePositionManager.modifyLiquidities(abi.encode(lockDataArray), block.timestamp + 1); // add liquidity for ETH-token0 native pool (10 eth each) token0.mint(alice, 10 ether); vm.deal(alice, 10 ether); addParams = _getAddParams(key3, binIds, 10 ether, 10 ether, activeId, alice); - binFungiblePositionManager.addLiquidity{value: 10 ether}(addParams); + // binFungiblePositionManager.addLiquidity{value: 10 ether}(addParams); + addLiquidityData = abi.encode( + IBinFungiblePositionManager.CallbackData( + IBinFungiblePositionManager.CallbackDataType.AddLiquidity, abi.encode(addParams) + ) + ); + lockDataArray[0] = addLiquidityData; + binFungiblePositionManager.modifyLiquidities{value: 10 ether}(abi.encode(lockDataArray), block.timestamp + 1); } function testQuoter_quoteExactInputSingle_zeroForOne() public { diff --git a/test/pool-bin/BinSwapRouter.t.sol b/test/pool-bin/BinSwapRouter.t.sol index 02e069a..74182be 100644 --- a/test/pool-bin/BinSwapRouter.t.sol +++ b/test/pool-bin/BinSwapRouter.t.sol @@ -121,15 +121,37 @@ contract BinSwapRouterTest is Test, GasSnapshot, LiquidityParamsHelper { uint24[] memory binIds = getBinIds(activeId, 3); IBinFungiblePositionManager.AddLiquidityParams memory addParams; addParams = _getAddParams(key, binIds, 10 ether, 10 ether, activeId, alice); - binFungiblePositionManager.addLiquidity(addParams); + // binFungiblePositionManager.addLiquidity(addParams); + bytes memory addLiquidityData = abi.encode( + IBinFungiblePositionManager.CallbackData( + IBinFungiblePositionManager.CallbackDataType.AddLiquidity, abi.encode(addParams) + ) + ); + bytes[] memory lockDataArray = new bytes[](1); + lockDataArray[0] = addLiquidityData; + binFungiblePositionManager.modifyLiquidities(abi.encode(lockDataArray), block.timestamp + 1); addParams = _getAddParams(key2, binIds, 10 ether, 10 ether, activeId, alice); - binFungiblePositionManager.addLiquidity(addParams); + + addLiquidityData = abi.encode( + IBinFungiblePositionManager.CallbackData( + IBinFungiblePositionManager.CallbackDataType.AddLiquidity, abi.encode(addParams) + ) + ); + lockDataArray[0] = addLiquidityData; + binFungiblePositionManager.modifyLiquidities(abi.encode(lockDataArray), block.timestamp + 1); // add liquidity for ETH-token0 native pool (10 eth each) token0.mint(alice, 10 ether); vm.deal(alice, 10 ether); addParams = _getAddParams(key3, binIds, 10 ether, 10 ether, activeId, alice); - binFungiblePositionManager.addLiquidity{value: 10 ether}(addParams); + + addLiquidityData = abi.encode( + IBinFungiblePositionManager.CallbackData( + IBinFungiblePositionManager.CallbackDataType.AddLiquidity, abi.encode(addParams) + ) + ); + lockDataArray[0] = addLiquidityData; + binFungiblePositionManager.modifyLiquidities{value: 10 ether}(abi.encode(lockDataArray), block.timestamp + 1); } function testLockAcquired_VaultOnly() public { diff --git a/test/pool-bin/BinSwapRouterInvariant.t.sol b/test/pool-bin/BinSwapRouterInvariant.t.sol index 53c2230..cf5b4d5 100644 --- a/test/pool-bin/BinSwapRouterInvariant.t.sol +++ b/test/pool-bin/BinSwapRouterInvariant.t.sol @@ -245,11 +245,16 @@ contract BinSwapRouterHandler is Test, LiquidityParamsHelper { uint24[] memory binIds = getBinIds(activeId, 3); IBinFungiblePositionManager.AddLiquidityParams memory addParams; addParams = _getAddParams(pk, binIds, amt, amt, activeId, alice); - if (isNativePool) { - binFungiblePositionManager.addLiquidity{value: amt}(addParams); - } else { - binFungiblePositionManager.addLiquidity(addParams); - } + bytes memory addLiquidityData = abi.encode( + IBinFungiblePositionManager.CallbackData( + IBinFungiblePositionManager.CallbackDataType.AddLiquidity, abi.encode(addParams) + ) + ); + bytes[] memory lockDataArray = new bytes[](1); + lockDataArray[0] = addLiquidityData; + binFungiblePositionManager.modifyLiquidities{value: isNativePool ? amt : 0}( + abi.encode(lockDataArray), block.timestamp + 1 + ); vm.stopPrank(); } }