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";
-}