From c7f446bc543402d923caf81bc784236775a20906 Mon Sep 17 00:00:00 2001 From: cryptoDev222 Date: Tue, 10 Aug 2021 09:54:21 -0500 Subject: [PATCH] enable check eth addLiquidity --- .../mainnet/connectors/uniswapV3/helpers.sol | 38 +++++++++++++------ .../connectors/uniswapV3/interface.sol | 2 +- .../mainnet/connectors/uniswapV3/main.sol | 4 +- hardhat.config.js | 2 +- 4 files changed, 30 insertions(+), 16 deletions(-) diff --git a/contracts/mainnet/connectors/uniswapV3/helpers.sol b/contracts/mainnet/connectors/uniswapV3/helpers.sol index 986c28b8..9c098756 100644 --- a/contracts/mainnet/connectors/uniswapV3/helpers.sol +++ b/contracts/mainnet/connectors/uniswapV3/helpers.sol @@ -1,15 +1,14 @@ -pragma solidity ^0.7.5; +pragma solidity ^0.7.6; pragma abicoder v2; import {TokenInterface} from "../../common/interfaces.sol"; import {DSMath} from "../../common/math.sol"; import {Basic} from "../../common/basic.sol"; -import {INonfungiblePositionManager, ISwapRouter} from "./interface.sol"; +import "./interface.sol"; import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; import "@uniswap/v3-core/contracts/libraries/TickMath.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import "@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol"; -import "@uniswap/v3-periphery/contracts/base/LiquidityManagement.sol"; abstract contract Helpers is DSMath, Basic { /** @@ -27,7 +26,7 @@ abstract contract Helpers is DSMath, Basic { int24 tickLower; int24 tickUpper; uint256 amtA; - uint256 unitAmt; + uint256 amtB; uint256 slippage; } @@ -89,10 +88,9 @@ abstract contract Helpers is DSMath, Basic { uint256 _amount0 = params.amtA == uint256(-1) ? getTokenBal(TokenInterface(params.tokenA)) : params.amtA; - uint256 _amount1 = convert18ToDec( - _token1.decimals(), - wmul(params.unitAmt, convertTo18(_token1.decimals(), _amount0)) - ); + uint256 _amount1 = params.amtA == uint256(-1) + ? getTokenBal(TokenInterface(params.tokenA)) + : params.amtB; (_token0, _token1, _amount0, _amount1) = sortTokens( params.tokenA, @@ -129,13 +127,28 @@ abstract contract Helpers is DSMath, Basic { (tokenId, liquidity, amount0, amount1) = nftManager.mint(params); } + function _checkETH( + uint256 _tokenId, + uint256 _amount0, + uint256 _amount1 + ) internal { + (, , address token0, address token1, , , , , , , , ) = nftManager + .positions(_tokenId); + uint256 isEth = token0 == wethAddr ? 0 : 2; + isEth = token0 == wethAddr ? 1 : 2; + convertEthToWeth(isEth == 0, TokenInterface(token0), _amount0); + convertEthToWeth(isEth == 1, TokenInterface(token1), _amount1); + approve(TokenInterface(token0), address(nftManager), _amount0); + approve(TokenInterface(token1), address(nftManager), _amount1); + } + /** * @dev addLiquidity function which interact with Uniswap v3 */ function _addLiquidity( uint256 _tokenId, - uint256 _amount0Desired, - uint256 _amount1Desired, + uint256 _amount0, + uint256 _amount1, uint256 _amount0Min, uint256 _amount1Min ) @@ -146,11 +159,12 @@ abstract contract Helpers is DSMath, Basic { uint256 amount1 ) { + _checkETH(_tokenId, _amount0, _amount1); INonfungiblePositionManager.IncreaseLiquidityParams memory params = INonfungiblePositionManager.IncreaseLiquidityParams( _tokenId, - _amount0Desired, - _amount1Desired, + _amount0, + _amount1, _amount0Min, _amount1Min, block.timestamp diff --git a/contracts/mainnet/connectors/uniswapV3/interface.sol b/contracts/mainnet/connectors/uniswapV3/interface.sol index 3486e9aa..f8bc6e84 100644 --- a/contracts/mainnet/connectors/uniswapV3/interface.sol +++ b/contracts/mainnet/connectors/uniswapV3/interface.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.7.5; +pragma solidity ^0.7.6; pragma abicoder v2; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; diff --git a/contracts/mainnet/connectors/uniswapV3/main.sol b/contracts/mainnet/connectors/uniswapV3/main.sol index b3f43e29..cda8576b 100644 --- a/contracts/mainnet/connectors/uniswapV3/main.sol +++ b/contracts/mainnet/connectors/uniswapV3/main.sol @@ -1,4 +1,4 @@ -pragma solidity =0.7.6; +pragma solidity ^0.7.6; pragma abicoder v2; /** @@ -27,7 +27,7 @@ abstract contract UniswapResolver is Helpers, Events { returns (string memory _eventName, bytes memory _eventParam) { params.amtA = getUint(getId, params.amtA); - + ( uint256 _tokenID, uint256 _amtA, diff --git a/hardhat.config.js b/hardhat.config.js index 86ed948b..b774310a 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -26,7 +26,7 @@ module.exports = { version: "0.7.6", settings: { optimizer: { - enabled: false, + enabled: true, runs: 200, }, },