{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "riskpoolId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "processId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LogRiskpoolCollateralReleased",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "riskpoolId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "processId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LogRiskpoolCollateralizationFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "riskpoolId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "processId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LogRiskpoolCollateralizationSucceeded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "riskpoolId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "erc20Token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "collateralizationLevel",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "sumOfSumInsuredCap",
          "type": "uint256"
        }
      ],
      "name": "LogRiskpoolRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "processId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "sumInsured",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "collateral",
          "type": "uint256"
        }
      ],
      "name": "LogRiskpoolRequiredCollateral",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "processId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "processPayout",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "processId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "processPremium",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "riskpoolId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "erc20Token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "collateralizationLevel",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "sumOfSumInsuredCap",
          "type": "uint256"
        }
      ],
      "name": "registerRiskpool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "processId",
          "type": "bytes32"
        }
      ],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "productId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "riskpoolId",
          "type": "uint256"
        }
      ],
      "name": "setRiskpoolForProduct",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "processId",
          "type": "bytes32"
        }
      ],
      "name": "underwrite",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "37": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IPool.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IPool.sol",
    "exportedSymbols": {
      "IPool": [
        23131
      ]
    },
    "id": 23132,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 23017,
        "literals": [
          "solidity",
          "0.8",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:22:37"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 23131,
        "linearizedBaseContracts": [
          23131
        ],
        "name": "IPool",
        "nameLocation": "73:5:37",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "id": 23029,
            "name": "LogRiskpoolRegistered",
            "nameLocation": "92:21:37",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 23028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23019,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "131:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23029,
                  "src": "123:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23018,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "123:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23021,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "160:6:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23029,
                  "src": "152:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23020,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "152:7:37",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23023,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "erc20Token",
                  "nameLocation": "184:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23029,
                  "src": "176:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23022,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "176:7:37",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23025,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "collateralizationLevel",
                  "nameLocation": "213:22:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23029,
                  "src": "205:30:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23024,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "205:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23027,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sumOfSumInsuredCap",
                  "nameLocation": "254:18:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23029,
                  "src": "246:26:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23026,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "113:165:37"
            },
            "src": "86:193:37"
          },
          {
            "anonymous": false,
            "id": 23037,
            "name": "LogRiskpoolRequiredCollateral",
            "nameLocation": "295:29:37",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 23036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23031,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "333:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23037,
                  "src": "325:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23030,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "325:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23033,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sumInsured",
                  "nameLocation": "352:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23037,
                  "src": "344:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23032,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "344:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23035,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "collateral",
                  "nameLocation": "372:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23037,
                  "src": "364:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23034,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "364:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "324:59:37"
            },
            "src": "289:95:37"
          },
          {
            "anonymous": false,
            "id": 23045,
            "name": "LogRiskpoolCollateralizationFailed",
            "nameLocation": "395:34:37",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 23044,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23039,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "438:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23045,
                  "src": "430:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23038,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "430:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23041,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "458:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23045,
                  "src": "450:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23040,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23043,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "477:6:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23045,
                  "src": "469:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23042,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "469:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "429:55:37"
            },
            "src": "389:96:37"
          },
          {
            "anonymous": false,
            "id": 23053,
            "name": "LogRiskpoolCollateralizationSucceeded",
            "nameLocation": "496:37:37",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 23052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23047,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "542:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23053,
                  "src": "534:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23046,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "534:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23049,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "562:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23053,
                  "src": "554:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23048,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23051,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "581:6:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23053,
                  "src": "573:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23050,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "573:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "533:55:37"
            },
            "src": "490:99:37"
          },
          {
            "anonymous": false,
            "id": 23061,
            "name": "LogRiskpoolCollateralReleased",
            "nameLocation": "600:29:37",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 23060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23055,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "638:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23061,
                  "src": "630:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23054,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "630:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23057,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "658:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23061,
                  "src": "650:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23056,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "650:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23059,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "677:6:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23061,
                  "src": "669:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23058,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "669:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "629:55:37"
            },
            "src": "594:91:37"
          },
          {
            "canonicalName": "IPool.Pool",
            "id": 23084,
            "members": [
              {
                "constant": false,
                "id": 23063,
                "mutability": "mutable",
                "name": "id",
                "nameLocation": "721:2:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "713:10:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23062,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "713:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23065,
                "mutability": "mutable",
                "name": "wallet",
                "nameLocation": "777:6:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "769:14:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 23064,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "769:7:37",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23067,
                "mutability": "mutable",
                "name": "erc20Token",
                "nameLocation": "820:10:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "812:18:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 23066,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "812:7:37",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23069,
                "mutability": "mutable",
                "name": "collateralizationLevel",
                "nameLocation": "883:22:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "875:30:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23068,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "875:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23071,
                "mutability": "mutable",
                "name": "sumOfSumInsuredCap",
                "nameLocation": "982:18:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "974:26:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23070,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "974:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23073,
                "mutability": "mutable",
                "name": "sumOfSumInsuredAtRisk",
                "nameLocation": "1074:21:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "1066:29:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23072,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1066:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23075,
                "mutability": "mutable",
                "name": "capital",
                "nameLocation": "1164:7:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "1156:15:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23074,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1156:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23077,
                "mutability": "mutable",
                "name": "lockedCapital",
                "nameLocation": "1235:13:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "1227:21:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23076,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1227:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23079,
                "mutability": "mutable",
                "name": "balance",
                "nameLocation": "1347:7:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "1339:15:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23078,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1339:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23081,
                "mutability": "mutable",
                "name": "createdAt",
                "nameLocation": "1446:9:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "1438:17:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23080,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1438:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 23083,
                "mutability": "mutable",
                "name": "updatedAt",
                "nameLocation": "1473:9:37",
                "nodeType": "VariableDeclaration",
                "scope": 23084,
                "src": "1465:17:37",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 23082,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1465:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Pool",
            "nameLocation": "698:4:37",
            "nodeType": "StructDefinition",
            "scope": 23131,
            "src": "691:798:37",
            "visibility": "public"
          },
          {
            "functionSelector": "57419e8f",
            "id": 23097,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "registerRiskpool",
            "nameLocation": "1504:16:37",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23086,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "1538:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23097,
                  "src": "1530:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23085,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1530:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23088,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "1567:6:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23097,
                  "src": "1559:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23087,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1559:7:37",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23090,
                  "mutability": "mutable",
                  "name": "erc20Token",
                  "nameLocation": "1591:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23097,
                  "src": "1583:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23089,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1583:7:37",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23092,
                  "mutability": "mutable",
                  "name": "collateralizationLevel",
                  "nameLocation": "1619:22:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23097,
                  "src": "1611:30:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23091,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1611:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23094,
                  "mutability": "mutable",
                  "name": "sumOfSumInsuredCap",
                  "nameLocation": "1660:18:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23097,
                  "src": "1652:26:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23093,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1652:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1520:164:37"
            },
            "returnParameters": {
              "id": 23096,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1693:0:37"
            },
            "scope": 23131,
            "src": "1495:199:37",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "f93b3673",
            "id": 23104,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setRiskpoolForProduct",
            "nameLocation": "1709:21:37",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23099,
                  "mutability": "mutable",
                  "name": "productId",
                  "nameLocation": "1739:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23104,
                  "src": "1731:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23098,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1731:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23101,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "1758:10:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23104,
                  "src": "1750:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23100,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1730:39:37"
            },
            "returnParameters": {
              "id": 23103,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1778:0:37"
            },
            "scope": 23131,
            "src": "1700:79:37",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1b07b17f",
            "id": 23111,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "underwrite",
            "nameLocation": "1794:10:37",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23106,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1813:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23111,
                  "src": "1805:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23105,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1805:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1804:19:37"
            },
            "returnParameters": {
              "id": 23110,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23109,
                  "mutability": "mutable",
                  "name": "success",
                  "nameLocation": "1846:7:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23111,
                  "src": "1841:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23108,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1841:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1840:14:37"
            },
            "scope": 23131,
            "src": "1785:70:37",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "02108268",
            "id": 23118,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "processPremium",
            "nameLocation": "1869:14:37",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23113,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1892:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23118,
                  "src": "1884:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23112,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1884:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23115,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1911:6:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23118,
                  "src": "1903:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23114,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1883:35:37"
            },
            "returnParameters": {
              "id": 23117,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1927:0:37"
            },
            "scope": 23131,
            "src": "1860:68:37",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "fe64372b",
            "id": 23125,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "processPayout",
            "nameLocation": "1942:13:37",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23120,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1964:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23125,
                  "src": "1956:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23119,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1956:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23122,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1983:6:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23125,
                  "src": "1975:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23121,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1955:35:37"
            },
            "returnParameters": {
              "id": 23124,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1999:0:37"
            },
            "scope": 23131,
            "src": "1933:67:37",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "67d42a8b",
            "id": 23130,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "release",
            "nameLocation": "2014:7:37",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23128,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23127,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "2030:9:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 23130,
                  "src": "2022:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23126,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2022:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2021:19:37"
            },
            "returnParameters": {
              "id": 23129,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2049:0:37"
            },
            "scope": 23131,
            "src": "2005:45:37",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 23132,
        "src": "63:1990:37"
      }
    ],
    "src": "39:2015:37"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.2+commit.661d1103"
  },
  "contractName": "IPool",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    63,
    2053
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "b37fd46a2579ee14d8d851e9b8b8fe27d7d54c9f",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.2;\n\ninterface IPool {\n\n    event LogRiskpoolRegistered(\n        uint256 riskpoolId, \n        address wallet,\n        address erc20Token, \n        uint256 collateralizationLevel, \n        uint256 sumOfSumInsuredCap\n    );\n    \n    event LogRiskpoolRequiredCollateral(bytes32 processId, uint256 sumInsured, uint256 collateral);\n    event LogRiskpoolCollateralizationFailed(uint256 riskpoolId, bytes32 processId, uint256 amount);\n    event LogRiskpoolCollateralizationSucceeded(uint256 riskpoolId, bytes32 processId, uint256 amount);\n    event LogRiskpoolCollateralReleased(uint256 riskpoolId, bytes32 processId, uint256 amount);\n\n    struct Pool {\n        uint256 id; // matches component id of riskpool\n        address wallet; // riskpool wallet\n        address erc20Token; // the value token of the riskpool\n        uint256 collateralizationLevel; // required collateralization level to cover new policies \n        uint256 sumOfSumInsuredCap; // max sum of sum insured the pool is allowed to secure\n        uint256 sumOfSumInsuredAtRisk; // current sum of sum insured at risk in this pool\n        uint256 capital; // net investment capital amount (<= balance)\n        uint256 lockedCapital; // capital amount linked to collateralizaion of non-closed policies (<= capital)\n        uint256 balance; // total amount of funds: net investment capital + net premiums - payouts\n        uint256 createdAt;\n        uint256 updatedAt;\n    }\n\n    function registerRiskpool(\n        uint256 riskpoolId, \n        address wallet,\n        address erc20Token,\n        uint256 collateralizationLevel, \n        uint256 sumOfSumInsuredCap\n    ) external;\n\n    function setRiskpoolForProduct(uint256 productId, uint256 riskpoolId) external;\n\n    function underwrite(bytes32 processId) external returns(bool success);\n    function processPremium(bytes32 processId, uint256 amount) external;\n    function processPayout(bytes32 processId, uint256 amount) external;\n    function release(bytes32 processId) external; \n}\n",
  "sourceMap": "",
  "sourcePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IPool.sol",
  "type": "interface"
}