{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SCRLocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestRate",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "SCRUnlocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "riskModule",
          "type": "address"
        },
        {
          "internalType": "uint40",
          "name": "policyExpiration",
          "type": "uint40"
        }
      ],
      "name": "accepts",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "positive",
          "type": "bool"
        }
      ],
      "name": "assetEarnings",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "positive",
          "type": "bool"
        }
      ],
      "name": "discreteEarning",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getInvestable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPoolLoan",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "fromOcean",
          "type": "bool"
        }
      ],
      "name": "lendToPool",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "policyInterestRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "scrAmount",
          "type": "uint256"
        }
      ],
      "name": "lockScr",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ocean",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oceanForNewScr",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "repayPoolLoan",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "scr",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalWithdrawable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "policyInterestRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "scrAmount",
          "type": "uint256"
        }
      ],
      "name": "unlockScr",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "ast": {
    "absolutePath": "interfaces/IEToken.sol",
    "exportedSymbols": {
      "IERC20": [
        648
      ],
      "IEToken": [
        132
      ]
    },
    "id": 133,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:23:3"
      },
      {
        "absolutePath": "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "id": 17,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 133,
        "sourceUnit": 649,
        "src": "64:70:3",
        "symbolAliases": [
          {
            "foreign": {
              "id": 16,
              "name": "IERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "72:6:3",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 19,
              "name": "IERC20",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 648,
              "src": "286:6:3"
            },
            "id": 20,
            "nodeType": "InheritanceSpecifier",
            "src": "286:6:3"
          }
        ],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": {
          "id": 18,
          "nodeType": "StructuredDocumentation",
          "src": "136:128:3",
          "text": " @title IEToken interface\n @dev Interface for EToken smart contracts, these are the capital pools.\n @author Ensuro"
        },
        "fullyImplemented": false,
        "id": 132,
        "linearizedBaseContracts": [
          132,
          648
        ],
        "name": "IEToken",
        "nameLocation": "275:7:3",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "id": 26,
            "name": "SCRLocked",
            "nameLocation": "303:9:3",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 25,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 22,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "interestRate",
                  "nameLocation": "321:12:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "313:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "313:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "343:5:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 26,
                  "src": "335:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "335:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "312:37:3"
            },
            "src": "297:53:3"
          },
          {
            "anonymous": false,
            "id": 32,
            "name": "SCRUnlocked",
            "nameLocation": "359:11:3",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 31,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "interestRate",
                  "nameLocation": "379:12:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 32,
                  "src": "371:20:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "371:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 30,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "401:5:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 32,
                  "src": "393:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "393:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "370:37:3"
            },
            "src": "353:55:3"
          },
          {
            "functionSelector": "a6ec335f",
            "id": 37,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "ocean",
            "nameLocation": "421:5:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 33,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "426:2:3"
            },
            "returnParameters": {
              "id": 36,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 35,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 37,
                  "src": "452:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 34,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "452:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "451:9:3"
            },
            "scope": 132,
            "src": "412:49:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "e5ae143f",
            "id": 42,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "oceanForNewScr",
            "nameLocation": "474:14:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 38,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "488:2:3"
            },
            "returnParameters": {
              "id": 41,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 42,
                  "src": "514:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 39,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "514:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "513:9:3"
            },
            "scope": 132,
            "src": "465:58:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "6c6f4542",
            "id": 47,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "scr",
            "nameLocation": "536:3:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 43,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "539:2:3"
            },
            "returnParameters": {
              "id": 46,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 47,
                  "src": "565:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "565:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "564:9:3"
            },
            "scope": 132,
            "src": "527:47:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "837c83a3",
            "id": 54,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "lockScr",
            "nameLocation": "587:7:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 52,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 49,
                  "mutability": "mutable",
                  "name": "policyInterestRate",
                  "nameLocation": "603:18:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 54,
                  "src": "595:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 48,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "595:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 51,
                  "mutability": "mutable",
                  "name": "scrAmount",
                  "nameLocation": "631:9:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 54,
                  "src": "623:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 50,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "623:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "594:47:3"
            },
            "returnParameters": {
              "id": 53,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "650:0:3"
            },
            "scope": 132,
            "src": "578:73:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "4438bcbb",
            "id": 61,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "unlockScr",
            "nameLocation": "664:9:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 59,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 56,
                  "mutability": "mutable",
                  "name": "policyInterestRate",
                  "nameLocation": "682:18:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 61,
                  "src": "674:26:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 55,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "674:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 58,
                  "mutability": "mutable",
                  "name": "scrAmount",
                  "nameLocation": "710:9:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 61,
                  "src": "702:17:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 57,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "702:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "673:47:3"
            },
            "returnParameters": {
              "id": 60,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "729:0:3"
            },
            "scope": 132,
            "src": "655:75:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "aa69d74b",
            "id": 68,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "discreteEarning",
            "nameLocation": "743:15:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 66,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 63,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "767:6:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 68,
                  "src": "759:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 62,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "759:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65,
                  "mutability": "mutable",
                  "name": "positive",
                  "nameLocation": "780:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 68,
                  "src": "775:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 64,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "775:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "758:31:3"
            },
            "returnParameters": {
              "id": 67,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "798:0:3"
            },
            "scope": 132,
            "src": "734:65:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "ab600169",
            "id": 75,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "assetEarnings",
            "nameLocation": "812:13:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 73,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 70,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "834:6:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 75,
                  "src": "826:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 69,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "826:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 72,
                  "mutability": "mutable",
                  "name": "positive",
                  "nameLocation": "847:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 75,
                  "src": "842:13:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 71,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "842:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "825:31:3"
            },
            "returnParameters": {
              "id": 74,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "865:0:3"
            },
            "scope": 132,
            "src": "803:63:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "47e7ef24",
            "id": 84,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "879:7:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 80,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 77,
                  "mutability": "mutable",
                  "name": "provider",
                  "nameLocation": "895:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 84,
                  "src": "887:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 76,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "887:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 79,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "913:6:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 84,
                  "src": "905:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 78,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "905:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "886:34:3"
            },
            "returnParameters": {
              "id": 83,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 82,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 84,
                  "src": "939:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 81,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "939:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "938:9:3"
            },
            "scope": 132,
            "src": "870:78:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "0600a865",
            "id": 89,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "totalWithdrawable",
            "nameLocation": "961:17:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 85,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "978:2:3"
            },
            "returnParameters": {
              "id": 88,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 87,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 89,
                  "src": "1004:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 86,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1004:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1003:9:3"
            },
            "scope": 132,
            "src": "952:61:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "f3fef3a3",
            "id": 98,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdraw",
            "nameLocation": "1026:8:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 94,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 91,
                  "mutability": "mutable",
                  "name": "provider",
                  "nameLocation": "1043:8:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 98,
                  "src": "1035:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 90,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1035:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 93,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1061:6:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 98,
                  "src": "1053:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 92,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1053:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1034:34:3"
            },
            "returnParameters": {
              "id": 97,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 96,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 98,
                  "src": "1087:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 95,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1087:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1086:9:3"
            },
            "scope": 132,
            "src": "1017:79:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "33487154",
            "id": 107,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "accepts",
            "nameLocation": "1109:7:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 103,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 100,
                  "mutability": "mutable",
                  "name": "riskModule",
                  "nameLocation": "1125:10:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 107,
                  "src": "1117:18:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 99,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1117:7:3",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 102,
                  "mutability": "mutable",
                  "name": "policyExpiration",
                  "nameLocation": "1144:16:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 107,
                  "src": "1137:23:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  },
                  "typeName": {
                    "id": 101,
                    "name": "uint40",
                    "nodeType": "ElementaryTypeName",
                    "src": "1137:6:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1116:45:3"
            },
            "returnParameters": {
              "id": 106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 105,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 107,
                  "src": "1185:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 104,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1185:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1184:6:3"
            },
            "scope": 132,
            "src": "1100:91:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "3073b294",
            "id": 116,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "lendToPool",
            "nameLocation": "1204:10:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 109,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1223:6:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 116,
                  "src": "1215:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 108,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1215:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 111,
                  "mutability": "mutable",
                  "name": "fromOcean",
                  "nameLocation": "1236:9:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 116,
                  "src": "1231:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 110,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1231:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1214:32:3"
            },
            "returnParameters": {
              "id": 115,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 114,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 116,
                  "src": "1265:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1265:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1264:9:3"
            },
            "scope": 132,
            "src": "1195:79:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1c0f4f81",
            "id": 121,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "repayPoolLoan",
            "nameLocation": "1287:13:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 118,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1309:6:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 121,
                  "src": "1301:14:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 117,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1300:16:3"
            },
            "returnParameters": {
              "id": 120,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1325:0:3"
            },
            "scope": 132,
            "src": "1278:48:3",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "52a2783b",
            "id": 126,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getPoolLoan",
            "nameLocation": "1339:11:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 122,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1350:2:3"
            },
            "returnParameters": {
              "id": 125,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 124,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 126,
                  "src": "1376:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 123,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1376:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1375:9:3"
            },
            "scope": 132,
            "src": "1330:55:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "65e29c7e",
            "id": 131,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getInvestable",
            "nameLocation": "1398:13:3",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 127,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1411:2:3"
            },
            "returnParameters": {
              "id": 130,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 129,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 131,
                  "src": "1437:7:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 128,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1437:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1436:9:3"
            },
            "scope": 132,
            "src": "1389:57:3",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 133,
        "src": "265:1183:3",
        "usedErrors": []
      }
    ],
    "src": "39:1410:3"
  },
  "contractName": "IEToken",
  "dependencies": [
    "IERC20"
  ],
  "offset": [
    265,
    1448
  ],
  "sha1": "b50c28a3b1800e3e03b5c62d3ac73fd0fb4f05b3",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.0;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title IEToken interface\n * @dev Interface for EToken smart contracts, these are the capital pools.\n * @author Ensuro\n */\ninterface IEToken is IERC20 {\n  event SCRLocked(uint256 interestRate, uint256 value);\n  event SCRUnlocked(uint256 interestRate, uint256 value);\n\n  function ocean() external view returns (uint256);\n\n  function oceanForNewScr() external view returns (uint256);\n\n  function scr() external view returns (uint256);\n\n  function lockScr(uint256 policyInterestRate, uint256 scrAmount) external;\n\n  function unlockScr(uint256 policyInterestRate, uint256 scrAmount) external;\n\n  function discreteEarning(uint256 amount, bool positive) external;\n\n  function assetEarnings(uint256 amount, bool positive) external;\n\n  function deposit(address provider, uint256 amount) external returns (uint256);\n\n  function totalWithdrawable() external view returns (uint256);\n\n  function withdraw(address provider, uint256 amount) external returns (uint256);\n\n  function accepts(address riskModule, uint40 policyExpiration) external view returns (bool);\n\n  function lendToPool(uint256 amount, bool fromOcean) external returns (uint256);\n\n  function repayPoolLoan(uint256 amount) external;\n\n  function getPoolLoan() external view returns (uint256);\n\n  function getInvestable() external view returns (uint256);\n}\n",
  "type": "interface"
}