{
  "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": {
    "42": "/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": [
        21652
      ]
    },
    "id": 21653,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21538,
        "literals": [
          "solidity",
          "0.8",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:22:42"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 21652,
        "linearizedBaseContracts": [
          21652
        ],
        "name": "IPool",
        "nameLocation": "73:5:42",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "id": 21550,
            "name": "LogRiskpoolRegistered",
            "nameLocation": "92:21:42",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 21549,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21540,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "131:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21550,
                  "src": "123:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21539,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "123:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21542,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "160:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21550,
                  "src": "152:14:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21541,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "152:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21544,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "erc20Token",
                  "nameLocation": "184:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21550,
                  "src": "176:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21543,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "176:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21546,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "collateralizationLevel",
                  "nameLocation": "213:22:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21550,
                  "src": "205:30:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21545,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "205:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21548,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sumOfSumInsuredCap",
                  "nameLocation": "254:18:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21550,
                  "src": "246:26:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21547,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "113:165:42"
            },
            "src": "86:193:42"
          },
          {
            "anonymous": false,
            "id": 21558,
            "name": "LogRiskpoolRequiredCollateral",
            "nameLocation": "295:29:42",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 21557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21552,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "333:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21558,
                  "src": "325:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21551,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "325:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21554,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sumInsured",
                  "nameLocation": "352:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21558,
                  "src": "344:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "344:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21556,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "collateral",
                  "nameLocation": "372:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21558,
                  "src": "364:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21555,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "364:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "324:59:42"
            },
            "src": "289:95:42"
          },
          {
            "anonymous": false,
            "id": 21566,
            "name": "LogRiskpoolCollateralizationFailed",
            "nameLocation": "395:34:42",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 21565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21560,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "438:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21566,
                  "src": "430:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21559,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "430:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21562,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "458:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21566,
                  "src": "450:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21561,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21564,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "477:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21566,
                  "src": "469:14:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21563,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "469:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "429:55:42"
            },
            "src": "389:96:42"
          },
          {
            "anonymous": false,
            "id": 21574,
            "name": "LogRiskpoolCollateralizationSucceeded",
            "nameLocation": "496:37:42",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 21573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21568,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "542:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21574,
                  "src": "534:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21567,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "534:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21570,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "562:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21574,
                  "src": "554:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21569,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21572,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "581:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21574,
                  "src": "573:14:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "573:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "533:55:42"
            },
            "src": "490:99:42"
          },
          {
            "anonymous": false,
            "id": 21582,
            "name": "LogRiskpoolCollateralReleased",
            "nameLocation": "600:29:42",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 21581,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21576,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "638:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21582,
                  "src": "630:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21575,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "630:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21578,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "658:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21582,
                  "src": "650:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21577,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "650:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21580,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "677:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21582,
                  "src": "669:14:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21579,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "669:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "629:55:42"
            },
            "src": "594:91:42"
          },
          {
            "canonicalName": "IPool.Pool",
            "id": 21605,
            "members": [
              {
                "constant": false,
                "id": 21584,
                "mutability": "mutable",
                "name": "id",
                "nameLocation": "721:2:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "713:10:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21583,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "713:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21586,
                "mutability": "mutable",
                "name": "wallet",
                "nameLocation": "777:6:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "769:14:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 21585,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "769:7:42",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21588,
                "mutability": "mutable",
                "name": "erc20Token",
                "nameLocation": "820:10:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "812:18:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 21587,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "812:7:42",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21590,
                "mutability": "mutable",
                "name": "collateralizationLevel",
                "nameLocation": "883:22:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "875:30:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21589,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "875:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21592,
                "mutability": "mutable",
                "name": "sumOfSumInsuredCap",
                "nameLocation": "982:18:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "974:26:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21591,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "974:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21594,
                "mutability": "mutable",
                "name": "sumOfSumInsuredAtRisk",
                "nameLocation": "1074:21:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "1066:29:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21593,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1066:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21596,
                "mutability": "mutable",
                "name": "capital",
                "nameLocation": "1164:7:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "1156:15:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21595,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1156:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21598,
                "mutability": "mutable",
                "name": "lockedCapital",
                "nameLocation": "1235:13:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "1227:21:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21597,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1227:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21600,
                "mutability": "mutable",
                "name": "balance",
                "nameLocation": "1347:7:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "1339:15:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21599,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1339:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21602,
                "mutability": "mutable",
                "name": "createdAt",
                "nameLocation": "1446:9:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "1438:17:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21601,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1438:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 21604,
                "mutability": "mutable",
                "name": "updatedAt",
                "nameLocation": "1473:9:42",
                "nodeType": "VariableDeclaration",
                "scope": 21605,
                "src": "1465:17:42",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21603,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1465:7:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Pool",
            "nameLocation": "698:4:42",
            "nodeType": "StructDefinition",
            "scope": 21652,
            "src": "691:798:42",
            "visibility": "public"
          },
          {
            "functionSelector": "57419e8f",
            "id": 21618,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "registerRiskpool",
            "nameLocation": "1504:16:42",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21607,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "1538:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21618,
                  "src": "1530:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21606,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1530:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21609,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "1567:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21618,
                  "src": "1559:14:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21608,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1559:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21611,
                  "mutability": "mutable",
                  "name": "erc20Token",
                  "nameLocation": "1591:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21618,
                  "src": "1583:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21610,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1583:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21613,
                  "mutability": "mutable",
                  "name": "collateralizationLevel",
                  "nameLocation": "1619:22:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21618,
                  "src": "1611:30:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1611:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21615,
                  "mutability": "mutable",
                  "name": "sumOfSumInsuredCap",
                  "nameLocation": "1660:18:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21618,
                  "src": "1652:26:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21614,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1652:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1520:164:42"
            },
            "returnParameters": {
              "id": 21617,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1693:0:42"
            },
            "scope": 21652,
            "src": "1495:199:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "f93b3673",
            "id": 21625,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setRiskpoolForProduct",
            "nameLocation": "1709:21:42",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21623,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21620,
                  "mutability": "mutable",
                  "name": "productId",
                  "nameLocation": "1739:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21625,
                  "src": "1731:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21619,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1731:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21622,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "1758:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21625,
                  "src": "1750:18:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21621,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1730:39:42"
            },
            "returnParameters": {
              "id": 21624,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1778:0:42"
            },
            "scope": 21652,
            "src": "1700:79:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1b07b17f",
            "id": 21632,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "underwrite",
            "nameLocation": "1794:10:42",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21627,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1813:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21632,
                  "src": "1805:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21626,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1805:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1804:19:42"
            },
            "returnParameters": {
              "id": 21631,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21630,
                  "mutability": "mutable",
                  "name": "success",
                  "nameLocation": "1846:7:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21632,
                  "src": "1841:12:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21629,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1841:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1840:14:42"
            },
            "scope": 21652,
            "src": "1785:70:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "02108268",
            "id": 21639,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "processPremium",
            "nameLocation": "1869:14:42",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21634,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1892:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21639,
                  "src": "1884:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21633,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1884:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21636,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1911:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21639,
                  "src": "1903:14:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21635,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1883:35:42"
            },
            "returnParameters": {
              "id": 21638,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1927:0:42"
            },
            "scope": 21652,
            "src": "1860:68:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "fe64372b",
            "id": 21646,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "processPayout",
            "nameLocation": "1942:13:42",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21644,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21641,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1964:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21646,
                  "src": "1956:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21640,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1956:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21643,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1983:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21646,
                  "src": "1975:14:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21642,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1955:35:42"
            },
            "returnParameters": {
              "id": 21645,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1999:0:42"
            },
            "scope": 21652,
            "src": "1933:67:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "67d42a8b",
            "id": 21651,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "release",
            "nameLocation": "2014:7:42",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21648,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "2030:9:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 21651,
                  "src": "2022:17:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21647,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2022:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2021:19:42"
            },
            "returnParameters": {
              "id": 21650,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2049:0:42"
            },
            "scope": 21652,
            "src": "2005:45:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 21653,
        "src": "63:1990:42"
      }
    ],
    "src": "39:2015:42"
  },
  "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"
}