{
  "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": {
    "19": "contracts/modules/IPool.sol"
  },
  "ast": {
    "absolutePath": "contracts/modules/IPool.sol",
    "exportedSymbols": {
      "IPool": [
        3373
      ]
    },
    "id": 3374,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3259,
        "literals": [
          "solidity",
          "0.8",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:22:19"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 3373,
        "linearizedBaseContracts": [
          3373
        ],
        "name": "IPool",
        "nameLocation": "73:5:19",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "id": 3271,
            "name": "LogRiskpoolRegistered",
            "nameLocation": "92:21:19",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3261,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "131:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3271,
                  "src": "123:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3260,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "123:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3263,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "160:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3271,
                  "src": "152:14:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3262,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "152:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3265,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "erc20Token",
                  "nameLocation": "184:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3271,
                  "src": "176:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3264,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "176:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3267,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "collateralizationLevel",
                  "nameLocation": "213:22:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3271,
                  "src": "205:30:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3266,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "205:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3269,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sumOfSumInsuredCap",
                  "nameLocation": "254:18:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3271,
                  "src": "246:26:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3268,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "246:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "113:165:19"
            },
            "src": "86:193:19"
          },
          {
            "anonymous": false,
            "id": 3279,
            "name": "LogRiskpoolRequiredCollateral",
            "nameLocation": "295:29:19",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3278,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3273,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "333:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3279,
                  "src": "325:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3272,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "325:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3275,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sumInsured",
                  "nameLocation": "352:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3279,
                  "src": "344:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3274,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "344:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3277,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "collateral",
                  "nameLocation": "372:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3279,
                  "src": "364:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3276,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "364:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "324:59:19"
            },
            "src": "289:95:19"
          },
          {
            "anonymous": false,
            "id": 3287,
            "name": "LogRiskpoolCollateralizationFailed",
            "nameLocation": "395:34:19",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3281,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "438:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3287,
                  "src": "430:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3280,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "430:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3283,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "458:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3287,
                  "src": "450:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3282,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3285,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "477:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3287,
                  "src": "469:14:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3284,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "469:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "429:55:19"
            },
            "src": "389:96:19"
          },
          {
            "anonymous": false,
            "id": 3295,
            "name": "LogRiskpoolCollateralizationSucceeded",
            "nameLocation": "496:37:19",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3294,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3289,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "542:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3295,
                  "src": "534:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3288,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "534:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3291,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "562:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3295,
                  "src": "554:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3290,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "554:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3293,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "581:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3295,
                  "src": "573:14:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3292,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "573:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "533:55:19"
            },
            "src": "490:99:19"
          },
          {
            "anonymous": false,
            "id": 3303,
            "name": "LogRiskpoolCollateralReleased",
            "nameLocation": "600:29:19",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3302,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3297,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "638:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3303,
                  "src": "630:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3296,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "630:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3299,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "658:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3303,
                  "src": "650:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3298,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "650:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3301,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "677:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3303,
                  "src": "669:14:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3300,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "669:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "629:55:19"
            },
            "src": "594:91:19"
          },
          {
            "canonicalName": "IPool.Pool",
            "id": 3326,
            "members": [
              {
                "constant": false,
                "id": 3305,
                "mutability": "mutable",
                "name": "id",
                "nameLocation": "721:2:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "713:10:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3304,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "713:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3307,
                "mutability": "mutable",
                "name": "wallet",
                "nameLocation": "777:6:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "769:14:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 3306,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "769:7:19",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3309,
                "mutability": "mutable",
                "name": "erc20Token",
                "nameLocation": "820:10:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "812:18:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 3308,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "812:7:19",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3311,
                "mutability": "mutable",
                "name": "collateralizationLevel",
                "nameLocation": "883:22:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "875:30:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3310,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "875:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3313,
                "mutability": "mutable",
                "name": "sumOfSumInsuredCap",
                "nameLocation": "982:18:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "974:26:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3312,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "974:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3315,
                "mutability": "mutable",
                "name": "sumOfSumInsuredAtRisk",
                "nameLocation": "1074:21:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "1066:29:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3314,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1066:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3317,
                "mutability": "mutable",
                "name": "capital",
                "nameLocation": "1164:7:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "1156:15:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3316,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1156:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3319,
                "mutability": "mutable",
                "name": "lockedCapital",
                "nameLocation": "1235:13:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "1227:21:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3318,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1227:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3321,
                "mutability": "mutable",
                "name": "balance",
                "nameLocation": "1347:7:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "1339:15:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3320,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1339:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3323,
                "mutability": "mutable",
                "name": "createdAt",
                "nameLocation": "1446:9:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "1438:17:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3322,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1438:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3325,
                "mutability": "mutable",
                "name": "updatedAt",
                "nameLocation": "1473:9:19",
                "nodeType": "VariableDeclaration",
                "scope": 3326,
                "src": "1465:17:19",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3324,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1465:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Pool",
            "nameLocation": "698:4:19",
            "nodeType": "StructDefinition",
            "scope": 3373,
            "src": "691:798:19",
            "visibility": "public"
          },
          {
            "functionSelector": "57419e8f",
            "id": 3339,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "registerRiskpool",
            "nameLocation": "1504:16:19",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3328,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "1538:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3339,
                  "src": "1530:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3327,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1530:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3330,
                  "mutability": "mutable",
                  "name": "wallet",
                  "nameLocation": "1567:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3339,
                  "src": "1559:14:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1559:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3332,
                  "mutability": "mutable",
                  "name": "erc20Token",
                  "nameLocation": "1591:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3339,
                  "src": "1583:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1583:7:19",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3334,
                  "mutability": "mutable",
                  "name": "collateralizationLevel",
                  "nameLocation": "1619:22:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3339,
                  "src": "1611:30:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3333,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1611:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3336,
                  "mutability": "mutable",
                  "name": "sumOfSumInsuredCap",
                  "nameLocation": "1660:18:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3339,
                  "src": "1652:26:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3335,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1652:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1520:164:19"
            },
            "returnParameters": {
              "id": 3338,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1693:0:19"
            },
            "scope": 3373,
            "src": "1495:199:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "f93b3673",
            "id": 3346,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setRiskpoolForProduct",
            "nameLocation": "1709:21:19",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3344,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3341,
                  "mutability": "mutable",
                  "name": "productId",
                  "nameLocation": "1739:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3346,
                  "src": "1731:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3340,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1731:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3343,
                  "mutability": "mutable",
                  "name": "riskpoolId",
                  "nameLocation": "1758:10:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3346,
                  "src": "1750:18:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3342,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1750:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1730:39:19"
            },
            "returnParameters": {
              "id": 3345,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1778:0:19"
            },
            "scope": 3373,
            "src": "1700:79:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1b07b17f",
            "id": 3353,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "underwrite",
            "nameLocation": "1794:10:19",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3349,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3348,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1813:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3353,
                  "src": "1805:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3347,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1805:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1804:19:19"
            },
            "returnParameters": {
              "id": 3352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3351,
                  "mutability": "mutable",
                  "name": "success",
                  "nameLocation": "1846:7:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3353,
                  "src": "1841:12:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3350,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1841:4:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1840:14:19"
            },
            "scope": 3373,
            "src": "1785:70:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "02108268",
            "id": 3360,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "processPremium",
            "nameLocation": "1869:14:19",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3355,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1892:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3360,
                  "src": "1884:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3354,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1884:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3357,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1911:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3360,
                  "src": "1903:14:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3356,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1883:35:19"
            },
            "returnParameters": {
              "id": 3359,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1927:0:19"
            },
            "scope": 3373,
            "src": "1860:68:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "fe64372b",
            "id": 3367,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "processPayout",
            "nameLocation": "1942:13:19",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3362,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "1964:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3367,
                  "src": "1956:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3361,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1956:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3364,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1983:6:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3367,
                  "src": "1975:14:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3363,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1975:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1955:35:19"
            },
            "returnParameters": {
              "id": 3366,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1999:0:19"
            },
            "scope": 3373,
            "src": "1933:67:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "67d42a8b",
            "id": 3372,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "release",
            "nameLocation": "2014:7:19",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3370,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3369,
                  "mutability": "mutable",
                  "name": "processId",
                  "nameLocation": "2030:9:19",
                  "nodeType": "VariableDeclaration",
                  "scope": 3372,
                  "src": "2022:17:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3368,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2022:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2021:19:19"
            },
            "returnParameters": {
              "id": 3371,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2049:0:19"
            },
            "scope": 3373,
            "src": "2005:45:19",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 3374,
        "src": "63:1990:19"
      }
    ],
    "src": "39:2015:19"
  },
  "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": "contracts/modules/IPool.sol",
  "type": "interface"
}