added aperture

This commit is contained in:
JulesCrown 2023-11-26 21:38:23 +01:00
parent fbb074e0a2
commit f1d9104d24
2 changed files with 9 additions and 11 deletions

View file

@ -1,3 +1,4 @@
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
@uniswap/v3-core/=lib/v3-core/
@uniswap/v3-periphery/=lib/v3-periphery/
@aperture/uni-v3-lib/=lib/uni-v3-lib/src/

View file

@ -1,10 +1,10 @@
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.20;
import {BloodX} from 'src/BloodX.sol';
import '@uniswap/v3-core/contracts/libraries/TickMath.sol';
import '@uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol';
import '@uniswap/v3-periphery/contracts/libraries/PoolAddress.sol';
import '@aperture/uni-v3-lib/TickMath.sol';
import '@aperture/uni-v3-lib/LiquidityAmounts.sol';
import '@aperture/uni-v3-lib/PoolAddress.sol';
import '@aperture/uni-v3-lib/CallbackValidation.sol';
import '@uniswap/v3-periphery/contracts/libraries/PositionKey.sol';
import '@uniswap/v3-core/contracts/libraries/FixedPoint128.sol';
import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';
@ -131,9 +131,8 @@ contract LiquidityManager {
uint256 amount1Owed,
bytes calldata data
) external {
PoolAddress.PoolKey memory poolKey = abi.decode(data, (PoolAddress.PoolKey));
IUniswapV3Pool pool = IUniswapV3Pool(PoolAddress.computeAddress(factory, poolKey));
require(msg.sender == address(pool));
PoolKey memory poolKey = abi.decode(data, (PoolKey));
CallbackValidation.verifyCallback(factory, poolKey);
if (amount0Owed > 0) IERC20(poolKey.token0).transfer(msg.sender, amount0Owed);
if (amount1Owed > 0) IERC20(poolKey.token1).transfer(msg.sender, amount1Owed);
@ -141,8 +140,7 @@ contract LiquidityManager {
/// @notice Add liquidity to an initialized pool
function addLiquidity(AddLiquidityParams memory params) external checkDeadline(params.deadline) {
PoolAddress.PoolKey memory poolKey =
PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: FEE});
PoolKey memory poolKey = PoolAddress.getPoolKey(params.token0, params.token1, FEE);
IUniswapV3Pool pool = IUniswapV3Pool(PoolAddress.computeAddress(factory, poolKey));
// compute the liquidity amount
@ -223,8 +221,7 @@ contract LiquidityManager {
uint128 positionLiquidity = position.liquidity;
require(positionLiquidity >= params.liquidity);
PoolAddress.PoolKey memory poolKey =
PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: FEE});
PoolKey memory poolKey = PoolAddress.getPoolKey(params.token0, params.token1, FEE);
IUniswapV3Pool pool = IUniswapV3Pool(PoolAddress.computeAddress(factory, poolKey));
(amount0, amount1) = pool.burn(params.tickLower, params.tickUpper, params.liquidity);