From db60f815baf2d73f4b0d2d2665f3e3575d16d5b9 Mon Sep 17 00:00:00 2001
From: Mubaris NK <mubaris@instadapp.io>
Date: Sat, 6 Feb 2021 00:03:49 +0530
Subject: [PATCH] Restructure

---
 contracts/common/basic.sol               |  4 ++--
 contracts/common/interfaces.sol          |  2 +-
 contracts/common/math.sol                |  2 +-
 contracts/common/stores.sol              | 12 +++++++++---
 contracts/connectors/1inch/events.sol    |  5 ++---
 contracts/connectors/1inch/helpers.sol   |  4 ++--
 contracts/connectors/1inch/interface.sol |  2 +-
 contracts/connectors/1inch/main.sol      | 17 ++++++++++-------
 contracts/connectors/COMP/events.sol     |  6 ++----
 contracts/connectors/COMP/helpers.sol    |  4 ++--
 contracts/connectors/COMP/interface.sol  |  2 +-
 contracts/connectors/COMP/main.sol       |  7 +++++--
 hardhat.config.js                        |  3 +++
 13 files changed, 41 insertions(+), 29 deletions(-)

diff --git a/contracts/common/basic.sol b/contracts/common/basic.sol
index 29e382b9..a9c097c8 100644
--- a/contracts/common/basic.sol
+++ b/contracts/common/basic.sol
@@ -1,10 +1,10 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 import { TokenInterface } from "./interfaces.sol";
 import { Stores } from "./stores.sol";
 import { DSMath } from "./math.sol";
 
-contract Basic is DSMath, Stores {
+abstract contract Basic is DSMath, Stores {
 
     function convert18ToDec(uint _dec, uint256 _amt) internal pure returns (uint256 amt) {
         amt = (_amt / 10 ** (18 - _dec));
diff --git a/contracts/common/interfaces.sol b/contracts/common/interfaces.sol
index e1f7daf5..320b2e0e 100644
--- a/contracts/common/interfaces.sol
+++ b/contracts/common/interfaces.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 interface TokenInterface {
     function approve(address, uint256) external;
diff --git a/contracts/common/math.sol b/contracts/common/math.sol
index 1ff023c5..64e169b4 100644
--- a/contracts/common/math.sol
+++ b/contracts/common/math.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 import { SafeMath } from "@openzeppelin/contracts/math/SafeMath.sol";
 
diff --git a/contracts/common/stores.sol b/contracts/common/stores.sol
index e04f0618..d323f8aa 100644
--- a/contracts/common/stores.sol
+++ b/contracts/common/stores.sol
@@ -1,9 +1,15 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 import { MemoryInterface, EventInterface} from "./interfaces.sol";
 
 
-contract Stores {
+abstract contract Stores {
+
+    uint256 internal immutable _id;
+
+    constructor(uint256 id) public {
+        _id = id;
+    }
 
   /**
    * @dev Return ethereum address
@@ -59,7 +65,7 @@ contract Stores {
   * @dev Connector Details - needs to be changed before deployment
   */
   function connectorID() public view returns(uint model, uint id) {
-    (model, id) = (0, 0);
+    (model, id) = (0, _id);
   }
 
 }
diff --git a/contracts/connectors/1inch/events.sol b/contracts/connectors/1inch/events.sol
index 9261a9f8..2f9dfd74 100644
--- a/contracts/connectors/1inch/events.sol
+++ b/contracts/connectors/1inch/events.sol
@@ -1,9 +1,8 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 import { OneProtoData, OneProtoMultiData, OneInchData} from "../../common/interfaces.sol";
-import { Stores } from "../../common/stores.sol";
 
-contract Events is Stores {
+contract Events {
     event LogSell(
         address indexed buyToken,
         address indexed sellToken,
diff --git a/contracts/connectors/1inch/helpers.sol b/contracts/connectors/1inch/helpers.sol
index fc30cf21..dd271830 100644
--- a/contracts/connectors/1inch/helpers.sol
+++ b/contracts/connectors/1inch/helpers.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 import { TokenInterface } from "../../common/interfaces.sol";
 import { DSMath } from "../../common/math.sol";
@@ -6,7 +6,7 @@ import { Basic } from "../../common/basic.sol";
 import { TokenInterface, OneProtoMappingInterface } from "./interface.sol";
 
 
-contract Helpers is DSMath, Basic {
+abstract contract Helpers is DSMath, Basic {
 
     /**
      * @dev Return 1proto mapping Address
diff --git a/contracts/connectors/1inch/interface.sol b/contracts/connectors/1inch/interface.sol
index 5e6483dc..1f2674f8 100644
--- a/contracts/connectors/1inch/interface.sol
+++ b/contracts/connectors/1inch/interface.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 import { TokenInterface } from "../../common/interfaces.sol";
 
diff --git a/contracts/connectors/1inch/main.sol b/contracts/connectors/1inch/main.sol
index aac4b3db..7b856f3d 100644
--- a/contracts/connectors/1inch/main.sol
+++ b/contracts/connectors/1inch/main.sol
@@ -1,14 +1,15 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 pragma experimental ABIEncoderV2;
 
 // import files from common directory
 import { TokenInterface , MemoryInterface, EventInterface, OneProtoData, OneProtoMultiData, OneInchData} from "../../common/interfaces.sol";
+import { Stores } from "../../common/stores.sol";
 import { OneInchInterace, OneProtoInterface, OneProtoMappingInterface } from "./interface.sol";
 import { Helpers } from "./helpers.sol";
 import { Events } from "./events.sol";
 
 
-contract OneProtoResolver is Helpers, Events {
+abstract contract OneProtoResolver is Helpers, Events {
 
     /**
      * @dev 1proto contract swap handler
@@ -84,7 +85,7 @@ contract OneProtoResolver is Helpers, Events {
     }
 }
 
-contract OneInchResolver is OneProtoResolver {
+abstract contract OneInchResolver is OneProtoResolver {
     /**
      * @dev 1inch swap uses `.call()`. This function restrict it to call only swap/trade functionality
      * @param callData - calldata to extract the first 4 bytes for checking function signature
@@ -128,7 +129,7 @@ contract OneInchResolver is OneProtoResolver {
 
 }
 
-contract OneProtoResolverHelpers is OneInchResolver {
+abstract contract OneProtoResolverHelpers is OneInchResolver {
 
     /**
      * @dev Gets the swapping data onchain for swaps and calls swap.
@@ -217,7 +218,7 @@ contract OneProtoResolverHelpers is OneInchResolver {
     }
 }
 
-contract OneInchResolverHelpers is OneProtoResolverHelpers {
+abstract contract OneInchResolverHelpers is OneProtoResolverHelpers {
 
     /**
      * @dev Gets the swapping data from 1inch's API.
@@ -246,7 +247,7 @@ contract OneInchResolverHelpers is OneProtoResolverHelpers {
     }
 }
 
-contract OneProto is OneInchResolverHelpers {
+abstract contract OneProto is OneInchResolverHelpers {
     /**
      * @dev Sell ETH/ERC20_Token using 1proto.
      * @param buyAddr buying token address.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
@@ -345,7 +346,7 @@ contract OneProto is OneInchResolverHelpers {
     }
 }
 
-contract OneInch is OneProto {
+abstract contract OneInch is OneProto {
     /**
      * @dev Sell ETH/ERC20_Token using 1inch.
      * @param buyAddr buying token address.(For ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
@@ -378,4 +379,6 @@ contract OneInch is OneProto {
 
 contract ConnectOne is OneInch {
     string public name = "1inch-1proto-v1";
+
+    constructor(uint256 _id) Stores(_id) public {}
 }
diff --git a/contracts/connectors/COMP/events.sol b/contracts/connectors/COMP/events.sol
index 759f6ca3..b0aa3256 100644
--- a/contracts/connectors/COMP/events.sol
+++ b/contracts/connectors/COMP/events.sol
@@ -1,8 +1,6 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
-import { Stores } from "../../common/stores.sol";
-
-contract Events is Stores {
+contract Events {
     event LogClaimedComp(uint256 compAmt, uint256 setId);
     event LogDelegate(address delegatee);
 }
diff --git a/contracts/connectors/COMP/helpers.sol b/contracts/connectors/COMP/helpers.sol
index 8fc9cff1..46cbc6e3 100644
--- a/contracts/connectors/COMP/helpers.sol
+++ b/contracts/connectors/COMP/helpers.sol
@@ -1,10 +1,10 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 import { InstaMapping } from "../../common/interfaces.sol";
 import { DSMath } from "../../common/math.sol";
 import { Basic } from "../../common/basic.sol";
 
-contract Helpers is DSMath, Basic {
+abstract contract Helpers is DSMath, Basic {
     /**
      * @dev Return Compound Comptroller Address
      */
diff --git a/contracts/connectors/COMP/interface.sol b/contracts/connectors/COMP/interface.sol
index 2d31284d..64555b33 100644
--- a/contracts/connectors/COMP/interface.sol
+++ b/contracts/connectors/COMP/interface.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 interface ComptrollerInterface {
     function claimComp(address holder) external;
diff --git a/contracts/connectors/COMP/main.sol b/contracts/connectors/COMP/main.sol
index 4096ca91..7200c951 100644
--- a/contracts/connectors/COMP/main.sol
+++ b/contracts/connectors/COMP/main.sol
@@ -1,11 +1,12 @@
-pragma solidity ^0.6.0;
+pragma solidity ^0.6.5;
 
 import { TokenInterface , MemoryInterface, EventInterface, InstaMapping } from "../../common/interfaces.sol";
+import { Stores } from "../../common/stores.sol";
 import { ComptrollerInterface, COMPInterface } from "./interface.sol";
 import { Helpers } from "./helpers.sol";
 import { Events } from "./events.sol";
 
-contract CompResolver is Events, Helpers {
+abstract contract CompResolver is Events, Helpers {
 
     /**
      * @dev Claim Accrued COMP Token.
@@ -101,4 +102,6 @@ contract CompResolver is Events, Helpers {
 
 contract ConnectCOMP is CompResolver {
     string public name = "COMP-v1";
+
+    constructor(uint256 _id) Stores(_id) public {}
 }
diff --git a/hardhat.config.js b/hardhat.config.js
index a336270a..6a6cb9b2 100644
--- a/hardhat.config.js
+++ b/hardhat.config.js
@@ -15,6 +15,9 @@ module.exports = {
       },
       {
         version: "0.6.2"
+      },
+      {
+        version: "0.6.5"
       }
     ]
   },