From 69ce278335e43e9c820041e7e498f8b94bb5be0a Mon Sep 17 00:00:00 2001 From: pradyuman-verma <pradyumnverma27@gmail.com> Date: Fri, 19 Nov 2021 18:29:55 +0530 Subject: [PATCH] update --- .../connectors/uniswap-sell-beta/helpers.sol | 67 +++++++++++++++++++ .../uniswap-sell-beta}/interface.sol | 0 .../uniswap-sell-beta}/libraries/BitMath.sol | 0 .../libraries/FixedPoint128.sol | 0 .../libraries/FixedPoint96.sol | 0 .../uniswap-sell-beta}/libraries/FullMath.sol | 0 .../libraries/IERC20Minimal.sol | 0 .../uniswap-sell-beta}/libraries/LICENSE_GPL | 0 .../uniswap-sell-beta}/libraries/LICENSE_MIT | 0 .../libraries/LiquidityMath.sol | 0 .../libraries/LowGasSafeMath.sol | 0 .../uniswap-sell-beta}/libraries/Oracle.sol | 0 .../uniswap-sell-beta}/libraries/Position.sol | 0 .../uniswap-sell-beta}/libraries/SafeCast.sol | 0 .../libraries/SqrtPriceMath.sol | 0 .../uniswap-sell-beta}/libraries/SwapMath.sol | 0 .../uniswap-sell-beta}/libraries/Tick.sol | 0 .../libraries/TickBitmap.sol | 0 .../uniswap-sell-beta}/libraries/TickMath.sol | 0 .../libraries/TransferHelper.sol | 0 .../libraries/UnsafeMath.sol | 0 .../connectors/uniswap-sell-beta/main.sol | 32 +++++++++ contracts/sample/helpers.sol | 56 ---------------- contracts/sample/main.sol | 32 --------- 24 files changed, 99 insertions(+), 88 deletions(-) create mode 100644 contracts/arbitrum/connectors/uniswap-sell-beta/helpers.sol rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/interface.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/BitMath.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/FixedPoint128.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/FixedPoint96.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/FullMath.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/IERC20Minimal.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/LICENSE_GPL (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/LICENSE_MIT (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/LiquidityMath.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/LowGasSafeMath.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/Oracle.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/Position.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/SafeCast.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/SqrtPriceMath.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/SwapMath.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/Tick.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/TickBitmap.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/TickMath.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/TransferHelper.sol (100%) rename contracts/{sample => arbitrum/connectors/uniswap-sell-beta}/libraries/UnsafeMath.sol (100%) create mode 100644 contracts/arbitrum/connectors/uniswap-sell-beta/main.sol delete mode 100644 contracts/sample/helpers.sol delete mode 100644 contracts/sample/main.sol diff --git a/contracts/arbitrum/connectors/uniswap-sell-beta/helpers.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/helpers.sol new file mode 100644 index 00000000..e7027aca --- /dev/null +++ b/contracts/arbitrum/connectors/uniswap-sell-beta/helpers.sol @@ -0,0 +1,67 @@ +pragma solidity ^0.7.6; +pragma abicoder v2; + +import "./interface.sol"; +import {SqrtPriceMath} from "./libraries/SqrtPriceMath.sol"; +import "./libraries/TransferHelper.sol"; + +abstract contract Helpers is ISwapRouter { + ISwapRouter router = + ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564); + + UniswapV3Pool state = + UniswapV3Pool(0xCEda10b4d3bdE429DdA3A6daB87b38360313CBdB); + + function getPriceLimit(uint256 amountIn, bool zeroForOne) + public + returns (uint160) + { + return ( + SqrtPriceMath.getNextSqrtPriceFromInput( + state.slot0().sqrtPriceX96, + state.liquidity(), + amountIn, + zeroForOne + ) + ); + } + + function getParams( + address tokenIn, + address tokenOut, + address recipient, + uint24 fee, + uint256 amountIn, + uint256 amountOutMinimum, + bool zeroForOne + ) public returns (ISwapRouter.ExactInputSingleParams memory params) { + params = ISwapRouter.ExactInputSingleParams({ + tokenIn: tokenIn, + tokenOut: tokenOut, + fee: fee, + recipient: recipient, + deadline: block.timestamp + 1, + amountIn: amountIn, + amountOutMinimum: amountOutMinimum, + sqrtPriceLimitX96: getPriceLimit(amountIn, zeroForOne) + }); + } + + function approveTransfer( + address tokenIn, + address sender, + address recipient, + uint256 amountIn + ) public { + TransferHelper.safeTransferFrom(tokenIn, sender, recipient, amountIn); + + TransferHelper.safeApprove(tokenIn, address(router), amountIn); + } + + function getSingleInput(ISwapRouter.ExactInputSingleParams memory params) + public + returns (uint256) + { + return (uint256(router.exactInputSingle(params))); + } +} diff --git a/contracts/sample/interface.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/interface.sol similarity index 100% rename from contracts/sample/interface.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/interface.sol diff --git a/contracts/sample/libraries/BitMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/BitMath.sol similarity index 100% rename from contracts/sample/libraries/BitMath.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/BitMath.sol diff --git a/contracts/sample/libraries/FixedPoint128.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FixedPoint128.sol similarity index 100% rename from contracts/sample/libraries/FixedPoint128.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FixedPoint128.sol diff --git a/contracts/sample/libraries/FixedPoint96.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FixedPoint96.sol similarity index 100% rename from contracts/sample/libraries/FixedPoint96.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FixedPoint96.sol diff --git a/contracts/sample/libraries/FullMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FullMath.sol similarity index 100% rename from contracts/sample/libraries/FullMath.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/FullMath.sol diff --git a/contracts/sample/libraries/IERC20Minimal.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/IERC20Minimal.sol similarity index 100% rename from contracts/sample/libraries/IERC20Minimal.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/IERC20Minimal.sol diff --git a/contracts/sample/libraries/LICENSE_GPL b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LICENSE_GPL similarity index 100% rename from contracts/sample/libraries/LICENSE_GPL rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LICENSE_GPL diff --git a/contracts/sample/libraries/LICENSE_MIT b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LICENSE_MIT similarity index 100% rename from contracts/sample/libraries/LICENSE_MIT rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LICENSE_MIT diff --git a/contracts/sample/libraries/LiquidityMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LiquidityMath.sol similarity index 100% rename from contracts/sample/libraries/LiquidityMath.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LiquidityMath.sol diff --git a/contracts/sample/libraries/LowGasSafeMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LowGasSafeMath.sol similarity index 100% rename from contracts/sample/libraries/LowGasSafeMath.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/LowGasSafeMath.sol diff --git a/contracts/sample/libraries/Oracle.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Oracle.sol similarity index 100% rename from contracts/sample/libraries/Oracle.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Oracle.sol diff --git a/contracts/sample/libraries/Position.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Position.sol similarity index 100% rename from contracts/sample/libraries/Position.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Position.sol diff --git a/contracts/sample/libraries/SafeCast.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SafeCast.sol similarity index 100% rename from contracts/sample/libraries/SafeCast.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SafeCast.sol diff --git a/contracts/sample/libraries/SqrtPriceMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SqrtPriceMath.sol similarity index 100% rename from contracts/sample/libraries/SqrtPriceMath.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SqrtPriceMath.sol diff --git a/contracts/sample/libraries/SwapMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SwapMath.sol similarity index 100% rename from contracts/sample/libraries/SwapMath.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/SwapMath.sol diff --git a/contracts/sample/libraries/Tick.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Tick.sol similarity index 100% rename from contracts/sample/libraries/Tick.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/Tick.sol diff --git a/contracts/sample/libraries/TickBitmap.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TickBitmap.sol similarity index 100% rename from contracts/sample/libraries/TickBitmap.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TickBitmap.sol diff --git a/contracts/sample/libraries/TickMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TickMath.sol similarity index 100% rename from contracts/sample/libraries/TickMath.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TickMath.sol diff --git a/contracts/sample/libraries/TransferHelper.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TransferHelper.sol similarity index 100% rename from contracts/sample/libraries/TransferHelper.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/TransferHelper.sol diff --git a/contracts/sample/libraries/UnsafeMath.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/libraries/UnsafeMath.sol similarity index 100% rename from contracts/sample/libraries/UnsafeMath.sol rename to contracts/arbitrum/connectors/uniswap-sell-beta/libraries/UnsafeMath.sol diff --git a/contracts/arbitrum/connectors/uniswap-sell-beta/main.sol b/contracts/arbitrum/connectors/uniswap-sell-beta/main.sol new file mode 100644 index 00000000..e564ec2c --- /dev/null +++ b/contracts/arbitrum/connectors/uniswap-sell-beta/main.sol @@ -0,0 +1,32 @@ +pragma solidity ^0.7.6; +pragma abicoder v2; + +import "./helpers.sol"; + +abstract contract uniswapSellBeta is Helpers { + function sell( + address tokenIn, + address tokenOut, + uint24 fee, + uint256 amountIn, + uint256 amountOutMinimum, + bool zeroForOne + ) public returns (uint256 amountOut) { + approveTransfer(tokenIn, msg.sender, address(this), amountIn); + amountOut = getSingleInput( + getParams( + tokenIn, + tokenOut, + msg.sender, + fee, + amountIn, + amountOutMinimum, + zeroForOne + ) + ); + } +} + +abstract contract UniswapSellBetaArbitrum is uniswapSellBeta { + string public constant name = "UniswapSample-v1"; +} diff --git a/contracts/sample/helpers.sol b/contracts/sample/helpers.sol deleted file mode 100644 index c199f22a..00000000 --- a/contracts/sample/helpers.sol +++ /dev/null @@ -1,56 +0,0 @@ -pragma solidity ^0.7.6; -pragma abicoder v2; - -import "./interface.sol"; -import {SqrtPriceMath} from "./libraries/SqrtPriceMath.sol"; -import "./libraries/TransferHelper.sol"; - -abstract contract Helpers is ISwapRouter { - ISwapRouter router = - ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564); - - UniswapV3Pool state = - UniswapV3Pool(0xCEda10b4d3bdE429DdA3A6daB87b38360313CBdB); - - uint24 public constant poolFee = 3000; - - function getPriceLimit( - ISwapRouter.ExactInputSingleParams memory params, - bool zeroForOne - ) public returns (uint160) { - return ( - SqrtPriceMath.getNextSqrtPriceFromInput( - state.slot0().sqrtPriceX96, - state.liquidity(), - params.amountIn, - zeroForOne - ) - ); - } - - function approveTransfer( - ISwapRouter.ExactInputSingleParams memory params, - address sender, - address recipient - ) public { - TransferHelper.safeTransferFrom( - params.tokenIn, - sender, - recipient, - params.amountIn - ); - - TransferHelper.safeApprove( - params.tokenIn, - address(router), - params.amountIn - ); - } - - function getSingleInput(ISwapRouter.ExactInputSingleParams memory params) - public - returns (uint256) - { - return (uint256(router.exactInputSingle(params))); - } -} diff --git a/contracts/sample/main.sol b/contracts/sample/main.sol deleted file mode 100644 index 3c5b6fee..00000000 --- a/contracts/sample/main.sol +++ /dev/null @@ -1,32 +0,0 @@ -pragma solidity ^0.7.6; -pragma abicoder v2; - -import "./helpers.sol"; -import "./interface.sol"; - -abstract contract uniswapSample is Helpers { - function sell( - ISwapRouter.ExactInputSingleParams memory params, - bool zeroForOne - ) public returns (uint256 amountOut) { - approveTransfer(params, msg.sender, address(this)); - - ISwapRouter.ExactInputSingleParams memory params1 = ISwapRouter - .ExactInputSingleParams({ - tokenIn: params.tokenIn, - tokenOut: params.tokenOut, - fee: poolFee, - recipient: address(this), - deadline: block.timestamp + 1, - amountIn: params.amountIn, - amountOutMinimum: 0, - sqrtPriceLimitX96: getPriceLimit(params, true) - }); - - amountOut = getSingleInput(params1); - } -} - -abstract contract UniswapArbitrum is uniswapSample { - string public constant name = "UniswapSample-v1"; -}