{
  "contractName": "ITrustedIssuersRegistry",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "claimTopics",
          "type": "uint256[]"
        }
      ],
      "name": "ClaimTopicsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "claimTopics",
          "type": "uint256[]"
        }
      ],
      "name": "TrustedIssuerAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IClaimIssuer",
          "name": "trustedIssuer",
          "type": "address"
        }
      ],
      "name": "TrustedIssuerRemoved",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_claimTopics",
          "type": "uint256[]"
        }
      ],
      "name": "addTrustedIssuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        }
      ],
      "name": "removeTrustedIssuer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_claimTopics",
          "type": "uint256[]"
        }
      ],
      "name": "updateIssuerClaimTopics",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTrustedIssuers",
      "outputs": [
        {
          "internalType": "contract IClaimIssuer[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_issuer",
          "type": "address"
        }
      ],
      "name": "isTrustedIssuer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IClaimIssuer",
          "name": "_trustedIssuer",
          "type": "address"
        }
      ],
      "name": "getTrustedIssuerClaimTopics",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_issuer",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_claimTopic",
          "type": "uint256"
        }
      ],
      "name": "hasClaimTopic",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnershipOnIssuersRegistryContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IClaimIssuer\",\"name\":\"trustedIssuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"claimTopics\",\"type\":\"uint256[]\"}],\"name\":\"ClaimTopicsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IClaimIssuer\",\"name\":\"trustedIssuer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"claimTopics\",\"type\":\"uint256[]\"}],\"name\":\"TrustedIssuerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IClaimIssuer\",\"name\":\"trustedIssuer\",\"type\":\"address\"}],\"name\":\"TrustedIssuerRemoved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IClaimIssuer\",\"name\":\"_trustedIssuer\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_claimTopics\",\"type\":\"uint256[]\"}],\"name\":\"addTrustedIssuer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IClaimIssuer\",\"name\":\"_trustedIssuer\",\"type\":\"address\"}],\"name\":\"getTrustedIssuerClaimTopics\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTrustedIssuers\",\"outputs\":[{\"internalType\":\"contract IClaimIssuer[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_issuer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_claimTopic\",\"type\":\"uint256\"}],\"name\":\"hasClaimTopic\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_issuer\",\"type\":\"address\"}],\"name\":\"isTrustedIssuer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IClaimIssuer\",\"name\":\"_trustedIssuer\",\"type\":\"address\"}],\"name\":\"removeTrustedIssuer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnershipOnIssuersRegistryContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IClaimIssuer\",\"name\":\"_trustedIssuer\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"_claimTopics\",\"type\":\"uint256[]\"}],\"name\":\"updateIssuerClaimTopics\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addTrustedIssuer(address,uint256[])\":{\"details\":\"registers a ClaimIssuer contract as trusted claim issuer.  Requires that a ClaimIssuer contract doesn't already exist  Requires that the claimTopics set is not empty\",\"params\":{\"_claimTopics\":\"the set of claim topics that the trusted issuer is allowed to emit  This function can only be called by the owner of the Trusted Issuers Registry contract  emits a `TrustedIssuerAdded` event\",\"_trustedIssuer\":\"The ClaimIssuer contract address of the trusted claim issuer.\"}},\"getTrustedIssuerClaimTopics(address)\":{\"details\":\"Function for getting all the claim topic of trusted claim issuer  Requires the provided ClaimIssuer contract to be registered in the trusted issuers registry.\",\"params\":{\"_trustedIssuer\":\"the trusted issuer concerned.\"},\"returns\":{\"_0\":\"The set of claim topics that the trusted issuer is allowed to emit\"}},\"getTrustedIssuers()\":{\"details\":\"Function for getting all the trusted claim issuers stored.\",\"returns\":{\"_0\":\"array of all claim issuers registered.\"}},\"hasClaimTopic(address,uint256)\":{\"details\":\"Function for checking if the trusted claim issuer is allowed  to emit a certain claim topic\",\"params\":{\"_claimTopic\":\"the Claim Topic that has to be checked to know if the `issuer` is allowed to emit it\",\"_issuer\":\"the address of the trusted issuer's ClaimIssuer contract\"},\"returns\":{\"_0\":\"true if the issuer is trusted for this claim topic.\"}},\"isTrustedIssuer(address)\":{\"details\":\"Checks if the ClaimIssuer contract is trusted\",\"params\":{\"_issuer\":\"the address of the ClaimIssuer contract\"},\"returns\":{\"_0\":\"true if the issuer is trusted, false otherwise.\"}},\"removeTrustedIssuer(address)\":{\"details\":\"Removes the ClaimIssuer contract of a trusted claim issuer.  Requires that the claim issuer contract to be registered first\",\"params\":{\"_trustedIssuer\":\"the claim issuer to remove.  This function can only be called by the owner of the Trusted Issuers Registry contract  emits a `TrustedIssuerRemoved` event\"}},\"transferOwnershipOnIssuersRegistryContract(address)\":{\"details\":\"Transfers the Ownership of TrustedIssuersRegistry to a new Owner.\",\"params\":{\"_newOwner\":\"The new owner of this contract.  This function can only be called by the owner of the Trusted Issuers Registry contract  emits an `OwnershipTransferred` event\"}},\"updateIssuerClaimTopics(address,uint256[])\":{\"details\":\"Updates the set of claim topics that a trusted issuer is allowed to emit.  Requires that this ClaimIssuer contract already exists in the registry  Requires that the provided claimTopics set is not empty\",\"params\":{\"_claimTopics\":\"the set of claim topics that the trusted issuer is allowed to emit  This function can only be called by the owner of the Trusted Issuers Registry contract  emits a `ClaimTopicsUpdated` event\",\"_trustedIssuer\":\"the claim issuer to update.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"ClaimTopicsUpdated(address,uint256[])\":{\"notice\":\"this event is emitted when the set of claim topics is changed for a given trusted issuer.  the event is emitted by the updateIssuerClaimTopics function  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract  `claimTopics` is the set of claims that the trusted issuer is allowed to emit\"},\"TrustedIssuerAdded(address,uint256[])\":{\"notice\":\"this event is emitted when a trusted issuer is added in the registry.  the event is emitted by the addTrustedIssuer function  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract  `claimTopics` is the set of claims that the trusted issuer is allowed to emit\"},\"TrustedIssuerRemoved(address)\":{\"notice\":\"this event is emitted when a trusted issuer is removed from the registry.  the event is emitted by the removeTrustedIssuer function  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/registry/ITrustedIssuersRegistry.sol\":\"ITrustedIssuersRegistry\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10},\"remappings\":[]},\"sources\":{\"@onchain-id/solidity/contracts/interface/IClaimIssuer.sol\":{\"keccak256\":\"0xd0493be7cb7342962b46f8e2afdca4614ea0fe34a7f493b2da9db7d361a9042c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://105232aae24e3d0fcb4c80c00793b61b6019f6127c0ec6f9e3082ae01b2e778b\",\"dweb:/ipfs/QmV5C1wbq7H5H6DiakafSX5agAAP6rQSZ5qq7Qgq6VLkXo\"]},\"@onchain-id/solidity/contracts/interface/IERC734.sol\":{\"keccak256\":\"0x3302de9e9fe7a548cb7395b6fda38f952f6a6d1c599dfeee181a1ef80741fc1d\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://fc9f00e5b2f1523fecf52b1a833e9263a53edbebb7d1458f9004cfd41dd0402e\",\"dweb:/ipfs/QmWcNcVQrg66KeQz39jPgJun7jF3CbdJKHQa19q97n5Hzb\"]},\"@onchain-id/solidity/contracts/interface/IERC735.sol\":{\"keccak256\":\"0x3b77ce6012a96cf0075197cdeb1b98b66ca1722ef23241e40ba6185f03bf4584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://766e139f0c3cc0c6489561e75df0d8eab8c277f90009e4fa19add4f22bb40d82\",\"dweb:/ipfs/QmcbAReZn9nLcnYn9AHiDmcYJ42JqAU5QSy4dKhUcJUnjy\"]},\"@onchain-id/solidity/contracts/interface/IIdentity.sol\":{\"keccak256\":\"0xdcefbe2a850f9f43e959b9f7ed93fd5b35f29ff3dfbfaac7530af737c9eba7c6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://2e887c7cc67fdb2710c48bed22dbb27880f6dfb84ee93178ad4fcd659099cb96\",\"dweb:/ipfs/QmUuDEsZJC7uQQEErmuNJzePsNgHiTDdS2TuMzG1GRqrC3\"]},\"project:/contracts/registry/ITrustedIssuersRegistry.sol\":{\"keccak256\":\"0x01af20f2f537db3122c60b7c6e60e5036e07c673ef9762428b42129f65fcbc60\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://28f514b876c975777fe84bdb9f96ec5c687e4e4ff5d2b14961ba61affc57d46c\",\"dweb:/ipfs/QmdbVRsg1Q71PVHYxy1r7e5MeiMN5hHHDD8vRnXBSr8JiV\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: GPL-3.0\n/**\n *     NOTICE\n *\n *     The T-REX software is licensed under a proprietary license or the GPL v.3.\n *     If you choose to receive it under the GPL v.3 license, the following applies:\n *     T-REX is a suite of smart contracts developed by Tokeny to manage and transfer financial assets on the ethereum blockchain\n *\n *     Copyright (C) 2021, Tokeny sàrl.\n *\n *     This program is free software: you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation, either version 3 of the License, or\n *     (at your option) any later version.\n *\n *     This program is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n\npragma solidity ^0.8.0;\n\nimport '@onchain-id/solidity/contracts/interface/IClaimIssuer.sol';\n\ninterface ITrustedIssuersRegistry {\n    /**\n     *  this event is emitted when a trusted issuer is added in the registry.\n     *  the event is emitted by the addTrustedIssuer function\n     *  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract\n     *  `claimTopics` is the set of claims that the trusted issuer is allowed to emit\n     */\n    event TrustedIssuerAdded(IClaimIssuer indexed trustedIssuer, uint256[] claimTopics);\n\n    /**\n     *  this event is emitted when a trusted issuer is removed from the registry.\n     *  the event is emitted by the removeTrustedIssuer function\n     *  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract\n     */\n    event TrustedIssuerRemoved(IClaimIssuer indexed trustedIssuer);\n\n    /**\n     *  this event is emitted when the set of claim topics is changed for a given trusted issuer.\n     *  the event is emitted by the updateIssuerClaimTopics function\n     *  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract\n     *  `claimTopics` is the set of claims that the trusted issuer is allowed to emit\n     */\n    event ClaimTopicsUpdated(IClaimIssuer indexed trustedIssuer, uint256[] claimTopics);\n\n    /**\n     *  @dev registers a ClaimIssuer contract as trusted claim issuer.\n     *  Requires that a ClaimIssuer contract doesn't already exist\n     *  Requires that the claimTopics set is not empty\n     *  @param _trustedIssuer The ClaimIssuer contract address of the trusted claim issuer.\n     *  @param _claimTopics the set of claim topics that the trusted issuer is allowed to emit\n     *  This function can only be called by the owner of the Trusted Issuers Registry contract\n     *  emits a `TrustedIssuerAdded` event\n     */\n    function addTrustedIssuer(IClaimIssuer _trustedIssuer, uint256[] calldata _claimTopics) external;\n\n    /**\n     *  @dev Removes the ClaimIssuer contract of a trusted claim issuer.\n     *  Requires that the claim issuer contract to be registered first\n     *  @param _trustedIssuer the claim issuer to remove.\n     *  This function can only be called by the owner of the Trusted Issuers Registry contract\n     *  emits a `TrustedIssuerRemoved` event\n     */\n    function removeTrustedIssuer(IClaimIssuer _trustedIssuer) external;\n\n    /**\n     *  @dev Updates the set of claim topics that a trusted issuer is allowed to emit.\n     *  Requires that this ClaimIssuer contract already exists in the registry\n     *  Requires that the provided claimTopics set is not empty\n     *  @param _trustedIssuer the claim issuer to update.\n     *  @param _claimTopics the set of claim topics that the trusted issuer is allowed to emit\n     *  This function can only be called by the owner of the Trusted Issuers Registry contract\n     *  emits a `ClaimTopicsUpdated` event\n     */\n    function updateIssuerClaimTopics(IClaimIssuer _trustedIssuer, uint256[] calldata _claimTopics) external;\n\n    /**\n     *  @dev Function for getting all the trusted claim issuers stored.\n     *  @return array of all claim issuers registered.\n     */\n    function getTrustedIssuers() external view returns (IClaimIssuer[] memory);\n\n    /**\n     *  @dev Checks if the ClaimIssuer contract is trusted\n     *  @param _issuer the address of the ClaimIssuer contract\n     *  @return true if the issuer is trusted, false otherwise.\n     */\n    function isTrustedIssuer(address _issuer) external view returns (bool);\n\n    /**\n     *  @dev Function for getting all the claim topic of trusted claim issuer\n     *  Requires the provided ClaimIssuer contract to be registered in the trusted issuers registry.\n     *  @param _trustedIssuer the trusted issuer concerned.\n     *  @return The set of claim topics that the trusted issuer is allowed to emit\n     */\n    function getTrustedIssuerClaimTopics(IClaimIssuer _trustedIssuer) external view returns (uint256[] memory);\n\n    /**\n     *  @dev Function for checking if the trusted claim issuer is allowed\n     *  to emit a certain claim topic\n     *  @param _issuer the address of the trusted issuer's ClaimIssuer contract\n     *  @param _claimTopic the Claim Topic that has to be checked to know if the `issuer` is allowed to emit it\n     *  @return true if the issuer is trusted for this claim topic.\n     */\n    function hasClaimTopic(address _issuer, uint256 _claimTopic) external view returns (bool);\n\n    /**\n     *  @dev Transfers the Ownership of TrustedIssuersRegistry to a new Owner.\n     *  @param _newOwner The new owner of this contract.\n     *  This function can only be called by the owner of the Trusted Issuers Registry contract\n     *  emits an `OwnershipTransferred` event\n     */\n    function transferOwnershipOnIssuersRegistryContract(address _newOwner) external;\n}\n",
  "sourcePath": "/home/webxpert/workspace/shipfinex/latest-repos/tokenx_smartcontract/contracts/registry/ITrustedIssuersRegistry.sol",
  "ast": {
    "absolutePath": "project:/contracts/registry/ITrustedIssuersRegistry.sol",
    "exportedSymbols": {
      "IClaimIssuer": [
        1456
      ],
      "IERC734": [
        1609
      ],
      "IERC735": [
        1734
      ],
      "IIdentity": [
        1743
      ],
      "ITrustedIssuersRegistry": [
        6856
      ]
    },
    "id": 6857,
    "license": "GPL-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6761,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "1093:23:38"
      },
      {
        "absolutePath": "@onchain-id/solidity/contracts/interface/IClaimIssuer.sol",
        "file": "@onchain-id/solidity/contracts/interface/IClaimIssuer.sol",
        "id": 6762,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6857,
        "sourceUnit": 1457,
        "src": "1118:67:38",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "ITrustedIssuersRegistry",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 6856,
        "linearizedBaseContracts": [
          6856
        ],
        "name": "ITrustedIssuersRegistry",
        "nameLocation": "1197:23:38",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": {
              "id": 6763,
              "nodeType": "StructuredDocumentation",
              "src": "1227:321:38",
              "text": "  this event is emitted when a trusted issuer is added in the registry.\n  the event is emitted by the addTrustedIssuer function\n  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract\n  `claimTopics` is the set of claims that the trusted issuer is allowed to emit"
            },
            "eventSelector": "fedc33fd34859594822c0ff6f3f4f9fc279cc6d5cae53068f706a088e4500872",
            "id": 6771,
            "name": "TrustedIssuerAdded",
            "nameLocation": "1559:18:38",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6770,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6766,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "trustedIssuer",
                  "nameLocation": "1599:13:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6771,
                  "src": "1578:34:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 6765,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6764,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "1578:12:38"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "1578:12:38"
                    },
                    "referencedDeclaration": 1456,
                    "src": "1578:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6769,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "claimTopics",
                  "nameLocation": "1624:11:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6771,
                  "src": "1614:21:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6767,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1614:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6768,
                    "nodeType": "ArrayTypeName",
                    "src": "1614:9:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1577:59:38"
            },
            "src": "1553:84:38"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 6772,
              "nodeType": "StructuredDocumentation",
              "src": "1643:242:38",
              "text": "  this event is emitted when a trusted issuer is removed from the registry.\n  the event is emitted by the removeTrustedIssuer function\n  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract"
            },
            "eventSelector": "2214ded40113cc3fb63fc206cafee88270b0a903dac7245d54efdde30ebb0321",
            "id": 6777,
            "name": "TrustedIssuerRemoved",
            "nameLocation": "1896:20:38",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6776,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6775,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "trustedIssuer",
                  "nameLocation": "1938:13:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6777,
                  "src": "1917:34:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 6774,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6773,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "1917:12:38"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "1917:12:38"
                    },
                    "referencedDeclaration": 1456,
                    "src": "1917:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1916:36:38"
            },
            "src": "1890:63:38"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 6778,
              "nodeType": "StructuredDocumentation",
              "src": "1959:348:38",
              "text": "  this event is emitted when the set of claim topics is changed for a given trusted issuer.\n  the event is emitted by the updateIssuerClaimTopics function\n  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract\n  `claimTopics` is the set of claims that the trusted issuer is allowed to emit"
            },
            "eventSelector": "ec753cfc52044f61676f18a11e500093a9f2b1cd5e4942bc476f2b0438159bcf",
            "id": 6786,
            "name": "ClaimTopicsUpdated",
            "nameLocation": "2318:18:38",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6781,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "trustedIssuer",
                  "nameLocation": "2358:13:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6786,
                  "src": "2337:34:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 6780,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6779,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "2337:12:38"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "2337:12:38"
                    },
                    "referencedDeclaration": 1456,
                    "src": "2337:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6784,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "claimTopics",
                  "nameLocation": "2383:11:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6786,
                  "src": "2373:21:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6782,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2373:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6783,
                    "nodeType": "ArrayTypeName",
                    "src": "2373:9:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2336:59:38"
            },
            "src": "2312:84:38"
          },
          {
            "documentation": {
              "id": 6787,
              "nodeType": "StructuredDocumentation",
              "src": "2402:529:38",
              "text": "  @dev registers a ClaimIssuer contract as trusted claim issuer.\n  Requires that a ClaimIssuer contract doesn't already exist\n  Requires that the claimTopics set is not empty\n  @param _trustedIssuer The ClaimIssuer contract address of the trusted claim issuer.\n  @param _claimTopics the set of claim topics that the trusted issuer is allowed to emit\n  This function can only be called by the owner of the Trusted Issuers Registry contract\n  emits a `TrustedIssuerAdded` event"
            },
            "functionSelector": "9f63ea98",
            "id": 6796,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "addTrustedIssuer",
            "nameLocation": "2945:16:38",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6794,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6790,
                  "mutability": "mutable",
                  "name": "_trustedIssuer",
                  "nameLocation": "2975:14:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6796,
                  "src": "2962:27:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 6789,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6788,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "2962:12:38"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "2962:12:38"
                    },
                    "referencedDeclaration": 1456,
                    "src": "2962:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6793,
                  "mutability": "mutable",
                  "name": "_claimTopics",
                  "nameLocation": "3010:12:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6796,
                  "src": "2991:31:38",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6791,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2991:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6792,
                    "nodeType": "ArrayTypeName",
                    "src": "2991:9:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2961:62:38"
            },
            "returnParameters": {
              "id": 6795,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3032:0:38"
            },
            "scope": 6856,
            "src": "2936:97:38",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 6797,
              "nodeType": "StructuredDocumentation",
              "src": "3039:353:38",
              "text": "  @dev Removes the ClaimIssuer contract of a trusted claim issuer.\n  Requires that the claim issuer contract to be registered first\n  @param _trustedIssuer the claim issuer to remove.\n  This function can only be called by the owner of the Trusted Issuers Registry contract\n  emits a `TrustedIssuerRemoved` event"
            },
            "functionSelector": "b93d28eb",
            "id": 6803,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "removeTrustedIssuer",
            "nameLocation": "3406:19:38",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6801,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6800,
                  "mutability": "mutable",
                  "name": "_trustedIssuer",
                  "nameLocation": "3439:14:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6803,
                  "src": "3426:27:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 6799,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6798,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "3426:12:38"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "3426:12:38"
                    },
                    "referencedDeclaration": 1456,
                    "src": "3426:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3425:29:38"
            },
            "returnParameters": {
              "id": 6802,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3463:0:38"
            },
            "scope": 6856,
            "src": "3397:67:38",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 6804,
              "nodeType": "StructuredDocumentation",
              "src": "3470:532:38",
              "text": "  @dev Updates the set of claim topics that a trusted issuer is allowed to emit.\n  Requires that this ClaimIssuer contract already exists in the registry\n  Requires that the provided claimTopics set is not empty\n  @param _trustedIssuer the claim issuer to update.\n  @param _claimTopics the set of claim topics that the trusted issuer is allowed to emit\n  This function can only be called by the owner of the Trusted Issuers Registry contract\n  emits a `ClaimTopicsUpdated` event"
            },
            "functionSelector": "04bc7e84",
            "id": 6813,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "updateIssuerClaimTopics",
            "nameLocation": "4016:23:38",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6807,
                  "mutability": "mutable",
                  "name": "_trustedIssuer",
                  "nameLocation": "4053:14:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6813,
                  "src": "4040:27:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 6806,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6805,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "4040:12:38"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "4040:12:38"
                    },
                    "referencedDeclaration": 1456,
                    "src": "4040:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6810,
                  "mutability": "mutable",
                  "name": "_claimTopics",
                  "nameLocation": "4088:12:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6813,
                  "src": "4069:31:38",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6808,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4069:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6809,
                    "nodeType": "ArrayTypeName",
                    "src": "4069:9:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4039:62:38"
            },
            "returnParameters": {
              "id": 6812,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4110:0:38"
            },
            "scope": 6856,
            "src": "4007:104:38",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 6814,
              "nodeType": "StructuredDocumentation",
              "src": "4117:138:38",
              "text": "  @dev Function for getting all the trusted claim issuers stored.\n  @return array of all claim issuers registered."
            },
            "functionSelector": "d9dd24c5",
            "id": 6821,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getTrustedIssuers",
            "nameLocation": "4269:17:38",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6815,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4286:2:38"
            },
            "returnParameters": {
              "id": 6820,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6819,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6821,
                  "src": "4312:21:38",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IClaimIssuer_$1456_$dyn_memory_ptr",
                    "typeString": "contract IClaimIssuer[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6817,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6816,
                        "name": "IClaimIssuer",
                        "nameLocations": [
                          "4312:12:38"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1456,
                        "src": "4312:12:38"
                      },
                      "referencedDeclaration": 1456,
                      "src": "4312:12:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                        "typeString": "contract IClaimIssuer"
                      }
                    },
                    "id": 6818,
                    "nodeType": "ArrayTypeName",
                    "src": "4312:14:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IClaimIssuer_$1456_$dyn_storage_ptr",
                      "typeString": "contract IClaimIssuer[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4311:23:38"
            },
            "scope": 6856,
            "src": "4260:75:38",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 6822,
              "nodeType": "StructuredDocumentation",
              "src": "4341:197:38",
              "text": "  @dev Checks if the ClaimIssuer contract is trusted\n  @param _issuer the address of the ClaimIssuer contract\n  @return true if the issuer is trusted, false otherwise."
            },
            "functionSelector": "ef2ed1a4",
            "id": 6829,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "isTrustedIssuer",
            "nameLocation": "4552:15:38",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6824,
                  "mutability": "mutable",
                  "name": "_issuer",
                  "nameLocation": "4576:7:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6829,
                  "src": "4568:15:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6823,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4568:7:38",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4567:17:38"
            },
            "returnParameters": {
              "id": 6828,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6827,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6829,
                  "src": "4608:4:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6826,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4608:4:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4607:6:38"
            },
            "scope": 6856,
            "src": "4543:71:38",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 6830,
              "nodeType": "StructuredDocumentation",
              "src": "4620:333:38",
              "text": "  @dev Function for getting all the claim topic of trusted claim issuer\n  Requires the provided ClaimIssuer contract to be registered in the trusted issuers registry.\n  @param _trustedIssuer the trusted issuer concerned.\n  @return The set of claim topics that the trusted issuer is allowed to emit"
            },
            "functionSelector": "c28fb278",
            "id": 6839,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getTrustedIssuerClaimTopics",
            "nameLocation": "4967:27:38",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6834,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6833,
                  "mutability": "mutable",
                  "name": "_trustedIssuer",
                  "nameLocation": "5008:14:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6839,
                  "src": "4995:27:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                    "typeString": "contract IClaimIssuer"
                  },
                  "typeName": {
                    "id": 6832,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6831,
                      "name": "IClaimIssuer",
                      "nameLocations": [
                        "4995:12:38"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1456,
                      "src": "4995:12:38"
                    },
                    "referencedDeclaration": 1456,
                    "src": "4995:12:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IClaimIssuer_$1456",
                      "typeString": "contract IClaimIssuer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4994:29:38"
            },
            "returnParameters": {
              "id": 6838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6837,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6839,
                  "src": "5047:16:38",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6835,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5047:7:38",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6836,
                    "nodeType": "ArrayTypeName",
                    "src": "5047:9:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5046:18:38"
            },
            "scope": 6856,
            "src": "4958:107:38",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 6840,
              "nodeType": "StructuredDocumentation",
              "src": "5071:383:38",
              "text": "  @dev Function for checking if the trusted claim issuer is allowed\n  to emit a certain claim topic\n  @param _issuer the address of the trusted issuer's ClaimIssuer contract\n  @param _claimTopic the Claim Topic that has to be checked to know if the `issuer` is allowed to emit it\n  @return true if the issuer is trusted for this claim topic."
            },
            "functionSelector": "34a89987",
            "id": 6849,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "hasClaimTopic",
            "nameLocation": "5468:13:38",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6842,
                  "mutability": "mutable",
                  "name": "_issuer",
                  "nameLocation": "5490:7:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6849,
                  "src": "5482:15:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6841,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5482:7:38",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6844,
                  "mutability": "mutable",
                  "name": "_claimTopic",
                  "nameLocation": "5507:11:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6849,
                  "src": "5499:19:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6843,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5499:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5481:38:38"
            },
            "returnParameters": {
              "id": 6848,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6847,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6849,
                  "src": "5543:4:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6846,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5543:4:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5542:6:38"
            },
            "scope": 6856,
            "src": "5459:90:38",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 6850,
              "nodeType": "StructuredDocumentation",
              "src": "5555:288:38",
              "text": "  @dev Transfers the Ownership of TrustedIssuersRegistry to a new Owner.\n  @param _newOwner The new owner of this contract.\n  This function can only be called by the owner of the Trusted Issuers Registry contract\n  emits an `OwnershipTransferred` event"
            },
            "functionSelector": "e36dce28",
            "id": 6855,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferOwnershipOnIssuersRegistryContract",
            "nameLocation": "5857:42:38",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6853,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6852,
                  "mutability": "mutable",
                  "name": "_newOwner",
                  "nameLocation": "5908:9:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 6855,
                  "src": "5900:17:38",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6851,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5900:7:38",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5899:19:38"
            },
            "returnParameters": {
              "id": 6854,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5927:0:38"
            },
            "scope": 6856,
            "src": "5848:80:38",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6857,
        "src": "1187:4743:38",
        "usedErrors": []
      }
    ],
    "src": "1093:4838:38"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.17+commit.8df45f5f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.8",
  "updatedAt": "2022-12-08T12:51:01.371Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "addTrustedIssuer(address,uint256[])": {
        "details": "registers a ClaimIssuer contract as trusted claim issuer.  Requires that a ClaimIssuer contract doesn't already exist  Requires that the claimTopics set is not empty",
        "params": {
          "_claimTopics": "the set of claim topics that the trusted issuer is allowed to emit  This function can only be called by the owner of the Trusted Issuers Registry contract  emits a `TrustedIssuerAdded` event",
          "_trustedIssuer": "The ClaimIssuer contract address of the trusted claim issuer."
        }
      },
      "getTrustedIssuerClaimTopics(address)": {
        "details": "Function for getting all the claim topic of trusted claim issuer  Requires the provided ClaimIssuer contract to be registered in the trusted issuers registry.",
        "params": {
          "_trustedIssuer": "the trusted issuer concerned."
        },
        "returns": {
          "_0": "The set of claim topics that the trusted issuer is allowed to emit"
        }
      },
      "getTrustedIssuers()": {
        "details": "Function for getting all the trusted claim issuers stored.",
        "returns": {
          "_0": "array of all claim issuers registered."
        }
      },
      "hasClaimTopic(address,uint256)": {
        "details": "Function for checking if the trusted claim issuer is allowed  to emit a certain claim topic",
        "params": {
          "_claimTopic": "the Claim Topic that has to be checked to know if the `issuer` is allowed to emit it",
          "_issuer": "the address of the trusted issuer's ClaimIssuer contract"
        },
        "returns": {
          "_0": "true if the issuer is trusted for this claim topic."
        }
      },
      "isTrustedIssuer(address)": {
        "details": "Checks if the ClaimIssuer contract is trusted",
        "params": {
          "_issuer": "the address of the ClaimIssuer contract"
        },
        "returns": {
          "_0": "true if the issuer is trusted, false otherwise."
        }
      },
      "removeTrustedIssuer(address)": {
        "details": "Removes the ClaimIssuer contract of a trusted claim issuer.  Requires that the claim issuer contract to be registered first",
        "params": {
          "_trustedIssuer": "the claim issuer to remove.  This function can only be called by the owner of the Trusted Issuers Registry contract  emits a `TrustedIssuerRemoved` event"
        }
      },
      "transferOwnershipOnIssuersRegistryContract(address)": {
        "details": "Transfers the Ownership of TrustedIssuersRegistry to a new Owner.",
        "params": {
          "_newOwner": "The new owner of this contract.  This function can only be called by the owner of the Trusted Issuers Registry contract  emits an `OwnershipTransferred` event"
        }
      },
      "updateIssuerClaimTopics(address,uint256[])": {
        "details": "Updates the set of claim topics that a trusted issuer is allowed to emit.  Requires that this ClaimIssuer contract already exists in the registry  Requires that the provided claimTopics set is not empty",
        "params": {
          "_claimTopics": "the set of claim topics that the trusted issuer is allowed to emit  This function can only be called by the owner of the Trusted Issuers Registry contract  emits a `ClaimTopicsUpdated` event",
          "_trustedIssuer": "the claim issuer to update."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "events": {
      "ClaimTopicsUpdated(address,uint256[])": {
        "notice": "this event is emitted when the set of claim topics is changed for a given trusted issuer.  the event is emitted by the updateIssuerClaimTopics function  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract  `claimTopics` is the set of claims that the trusted issuer is allowed to emit"
      },
      "TrustedIssuerAdded(address,uint256[])": {
        "notice": "this event is emitted when a trusted issuer is added in the registry.  the event is emitted by the addTrustedIssuer function  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract  `claimTopics` is the set of claims that the trusted issuer is allowed to emit"
      },
      "TrustedIssuerRemoved(address)": {
        "notice": "this event is emitted when a trusted issuer is removed from the registry.  the event is emitted by the removeTrustedIssuer function  `trustedIssuer` is the address of the trusted issuer's ClaimIssuer contract"
      }
    },
    "kind": "user",
    "methods": {},
    "version": 1
  }
}