{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "LogComponentApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "LogComponentArchived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "componentName",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum IComponent.ComponentType",
          "name": "componentType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "componentAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "registryAddress",
          "type": "address"
        }
      ],
      "name": "LogComponentCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "LogComponentDeclined",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "LogComponentPaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "componentName",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "enum IComponent.ComponentType",
          "name": "componentType",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "componentAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "LogComponentProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "LogComponentResumed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "enum IComponent.ComponentState",
          "name": "stateOld",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "enum IComponent.ComponentState",
          "name": "stateNew",
          "type": "uint8"
        }
      ],
      "name": "LogComponentStateChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "LogComponentSuspended",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "LogComponentUnpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "componentId",
          "type": "uint256"
        }
      ],
      "name": "LogOracleApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oracleAddress",
          "type": "address"
        }
      ],
      "name": "LogOracleCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "componentId",
          "type": "uint256"
        }
      ],
      "name": "LogOracleDeclined",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "componentId",
          "type": "uint256"
        }
      ],
      "name": "LogOracleProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "approvalCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "archiveCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "requestId",
          "type": "uint256"
        }
      ],
      "name": "cancel",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "declineCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getName",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRegistry",
      "outputs": [
        {
          "internalType": "contract IRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getState",
      "outputs": [
        {
          "internalType": "enum IComponent.ComponentState",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getType",
      "outputs": [
        {
          "internalType": "enum IComponent.ComponentType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isOracle",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isProduct",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isRiskpool",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pauseCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposalCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "requestId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "input",
          "type": "bytes"
        }
      ],
      "name": "request",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "resumeCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "setId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "suspendCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpauseCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "13": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC20/IERC20.sol",
    "18": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721.sol",
    "22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol",
    "26": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/IERC165.sol",
    "29": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/Component.sol",
    "30": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/IComponent.sol",
    "31": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/IOracle.sol",
    "34": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/Oracle.sol",
    "37": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IAccess.sol",
    "39": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IComponentEvents.sol",
    "4": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/access/Ownable.sol",
    "44": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IRegistry.sol",
    "46": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/services/IComponentOwnerService.sol",
    "47": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/services/IInstanceOperatorService.sol",
    "48": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/services/IInstanceService.sol",
    "49": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/services/IOracleService.sol",
    "50": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/services/IProductService.sol",
    "51": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/services/IRiskpoolService.sol",
    "53": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/tokens/IBundleToken.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/Oracle.sol",
    "exportedSymbols": {
      "Component": [
        25407
      ],
      "Context": [
        24074
      ],
      "IAccess": [
        21938
      ],
      "IBundle": [
        20491
      ],
      "IBundleToken": [
        24052
      ],
      "IComponent": [
        22099
      ],
      "IComponentEvents": [
        22419
      ],
      "IComponentOwnerService": [
        23478
      ],
      "IERC165": [
        27203
      ],
      "IERC20": [
        18510
      ],
      "IERC721": [
        23745
      ],
      "IInstanceOperatorService": [
        23629
      ],
      "IInstanceService": [
        22849
      ],
      "IOracle": [
        22133
      ],
      "IOracleService": [
        23755
      ],
      "IPolicy": [
        20837
      ],
      "IPool": [
        21652
      ],
      "IProductService": [
        23900
      ],
      "IRegistry": [
        21750
      ],
      "IRiskpoolService": [
        24006
      ],
      "ITreasury": [
        23443
      ],
      "Oracle": [
        17368
      ],
      "Ownable": [
        20950
      ]
    },
    "id": 17369,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17268,
        "literals": [
          "solidity",
          "0.8",
          ".2"
        ],
        "nodeType": "PragmaDirective",
        "src": "40:22:34"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/IOracle.sol",
        "file": "./IOracle.sol",
        "id": 17269,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17369,
        "sourceUnit": 22134,
        "src": "66:23:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/Component.sol",
        "file": "./Component.sol",
        "id": 17270,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17369,
        "sourceUnit": 25408,
        "src": "91:25:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/IComponent.sol",
        "file": "./IComponent.sol",
        "id": 17271,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17369,
        "sourceUnit": 22100,
        "src": "118:26:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/services/IOracleService.sol",
        "file": "../services/IOracleService.sol",
        "id": 17272,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17369,
        "sourceUnit": 23756,
        "src": "146:40:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 17273,
              "name": "IOracle",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 22133,
              "src": "223:7:34"
            },
            "id": 17274,
            "nodeType": "InheritanceSpecifier",
            "src": "223:7:34"
          },
          {
            "baseName": {
              "id": 17275,
              "name": "Component",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 25407,
              "src": "238:9:34"
            },
            "id": 17276,
            "nodeType": "InheritanceSpecifier",
            "src": "238:9:34"
          }
        ],
        "contractDependencies": [
          20950,
          22099,
          22133,
          22419,
          24074,
          25407
        ],
        "contractKind": "contract",
        "fullyImplemented": false,
        "id": 17368,
        "linearizedBaseContracts": [
          17368,
          25407,
          20950,
          24074,
          22419,
          22133,
          22099
        ],
        "name": "Oracle",
        "nameLocation": "208:6:34",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 17279,
            "mutability": "mutable",
            "name": "_oracleService",
            "nameLocation": "283:14:34",
            "nodeType": "VariableDeclaration",
            "scope": 17368,
            "src": "260:37:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IOracleService_$23755",
              "typeString": "contract IOracleService"
            },
            "typeName": {
              "id": 17278,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 17277,
                "name": "IOracleService",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 23755,
                "src": "260:14:34"
              },
              "referencedDeclaration": 23755,
              "src": "260:14:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IOracleService_$23755",
                "typeString": "contract IOracleService"
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 17292,
              "nodeType": "Block",
              "src": "325:153:34",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 17287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 17282,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24064,
                            "src": "359:10:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                              "typeString": "function () view returns (address)"
                            }
                          },
                          "id": 17283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "359:12:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "5175657279",
                              "id": 17285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "395:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_de27146501ae3a78760bc5f3cf670e34e42f94d4009fee9f620352506ade7ceb",
                                "typeString": "literal_string \"Query\""
                              },
                              "value": "Query"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_de27146501ae3a78760bc5f3cf670e34e42f94d4009fee9f620352506ade7ceb",
                                "typeString": "literal_string \"Query\""
                              }
                            ],
                            "id": 17284,
                            "name": "_getContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25406,
                            "src": "375:19:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 17286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "375:28:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "359:44:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552524f523a4f52412d3030313a4143434553535f44454e494544",
                        "id": 17288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "418:29:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a3214b105f8e4fc42f2f6a7934ad3971d0ae822439cb6ceb58541fba4df7e8c0",
                          "typeString": "literal_string \"ERROR:ORA-001:ACCESS_DENIED\""
                        },
                        "value": "ERROR:ORA-001:ACCESS_DENIED"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a3214b105f8e4fc42f2f6a7934ad3971d0ae822439cb6ceb58541fba4df7e8c0",
                          "typeString": "literal_string \"ERROR:ORA-001:ACCESS_DENIED\""
                        }
                      ],
                      "id": 17281,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "336:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "336:122:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17290,
                  "nodeType": "ExpressionStatement",
                  "src": "336:122:34"
                },
                {
                  "id": 17291,
                  "nodeType": "PlaceholderStatement",
                  "src": "469:1:34"
                }
              ]
            },
            "id": 17293,
            "name": "onlyQuery",
            "nameLocation": "315:9:34",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 17280,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "325:0:34"
            },
            "src": "306:172:34",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17321,
              "nodeType": "Block",
              "src": "617:135:34",
              "statements": [
                {
                  "expression": {
                    "id": 17312,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17306,
                      "name": "_oracleService",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17279,
                      "src": "628:14:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IOracleService_$23755",
                        "typeString": "contract IOracleService"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "hexValue": "4f7261636c6553657276696365",
                              "id": 17309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "680:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b10ffebb48b8cc789ab1dfe7a210b91b4cf99b6d74d0c01c069195f8f6b41b06",
                                "typeString": "literal_string \"OracleService\""
                              },
                              "value": "OracleService"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_b10ffebb48b8cc789ab1dfe7a210b91b4cf99b6d74d0c01c069195f8f6b41b06",
                                "typeString": "literal_string \"OracleService\""
                              }
                            ],
                            "id": 17308,
                            "name": "_getContractAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25406,
                            "src": "660:19:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 17310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "660:36:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 17307,
                        "name": "IOracleService",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23755,
                        "src": "645:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IOracleService_$23755_$",
                          "typeString": "type(contract IOracleService)"
                        }
                      },
                      "id": 17311,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "645:52:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IOracleService_$23755",
                        "typeString": "contract IOracleService"
                      }
                    },
                    "src": "628:69:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IOracleService_$23755",
                      "typeString": "contract IOracleService"
                    }
                  },
                  "id": 17313,
                  "nodeType": "ExpressionStatement",
                  "src": "628:69:34"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 17317,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "738:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Oracle_$17368",
                              "typeString": "contract Oracle"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_Oracle_$17368",
                              "typeString": "contract Oracle"
                            }
                          ],
                          "id": 17316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "730:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 17315,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "730:7:34",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "730:13:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 17314,
                      "name": "LogOracleCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22108,
                      "src": "713:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 17319,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "713:31:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17320,
                  "nodeType": "EmitStatement",
                  "src": "708:36:34"
                }
              ]
            },
            "id": 17322,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 17300,
                    "name": "name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17295,
                    "src": "574:4:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  {
                    "expression": {
                      "id": 17301,
                      "name": "ComponentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22002,
                      "src": "580:13:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_enum$_ComponentType_$22002_$",
                        "typeString": "type(enum IComponent.ComponentType)"
                      }
                    },
                    "id": 17302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "memberName": "Oracle",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 21999,
                    "src": "580:20:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ComponentType_$22002",
                      "typeString": "enum IComponent.ComponentType"
                    }
                  },
                  {
                    "id": 17303,
                    "name": "registry",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17297,
                    "src": "602:8:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 17304,
                "modifierName": {
                  "id": 17299,
                  "name": "Component",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 25407,
                  "src": "564:9:34"
                },
                "nodeType": "ModifierInvocation",
                "src": "564:47:34"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17298,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17295,
                  "mutability": "mutable",
                  "name": "name",
                  "nameLocation": "516:4:34",
                  "nodeType": "VariableDeclaration",
                  "scope": 17322,
                  "src": "508:12:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17294,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "508:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17297,
                  "mutability": "mutable",
                  "name": "registry",
                  "nameLocation": "539:8:34",
                  "nodeType": "VariableDeclaration",
                  "scope": 17322,
                  "src": "531:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17296,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "531:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "497:57:34"
            },
            "returnParameters": {
              "id": 17305,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "617:0:34"
            },
            "scope": 17368,
            "src": "486:266:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              25330
            ],
            "body": {
              "id": 17331,
              "nodeType": "Block",
              "src": "853:52:34",
              "statements": [
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 17327,
                          "name": "getId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25160,
                          "src": "888:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 17328,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "888:7:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17326,
                      "name": "LogOracleApproved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22116,
                      "src": "870:17:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 17329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "870:26:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17330,
                  "nodeType": "EmitStatement",
                  "src": "865:31:34"
                }
              ]
            },
            "id": 17332,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterApprove",
            "nameLocation": "819:13:34",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17324,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "844:8:34"
            },
            "parameters": {
              "id": 17323,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "832:2:34"
            },
            "returnParameters": {
              "id": 17325,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "853:0:34"
            },
            "scope": 17368,
            "src": "810:95:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              25326
            ],
            "body": {
              "id": 17341,
              "nodeType": "Block",
              "src": "956:36:34",
              "statements": [
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 17337,
                          "name": "getId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25160,
                          "src": "981:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 17338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "981:7:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17336,
                      "name": "LogOracleProposed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22112,
                      "src": "963:17:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 17339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "963:26:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17340,
                  "nodeType": "EmitStatement",
                  "src": "958:31:34"
                }
              ]
            },
            "id": 17342,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterPropose",
            "nameLocation": "922:13:34",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17334,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "947:8:34"
            },
            "parameters": {
              "id": 17333,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "935:2:34"
            },
            "returnParameters": {
              "id": 17335,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "956:0:34"
            },
            "scope": 17368,
            "src": "913:79:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              25334
            ],
            "body": {
              "id": 17351,
              "nodeType": "Block",
              "src": "1041:36:34",
              "statements": [
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 17347,
                          "name": "getId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25160,
                          "src": "1066:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 17348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1066:7:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17346,
                      "name": "LogOracleDeclined",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 22120,
                      "src": "1048:17:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 17349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1048:26:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17350,
                  "nodeType": "EmitStatement",
                  "src": "1043:31:34"
                }
              ]
            },
            "id": 17352,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterDecline",
            "nameLocation": "1007:13:34",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 17344,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1032:8:34"
            },
            "parameters": {
              "id": 17343,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1020:2:34"
            },
            "returnParameters": {
              "id": 17345,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1041:0:34"
            },
            "scope": 17368,
            "src": "998:79:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17366,
              "nodeType": "Block",
              "src": "1150:58:34",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17362,
                        "name": "requestId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17354,
                        "src": "1184:9:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17363,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17356,
                        "src": "1195:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 17359,
                        "name": "_oracleService",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17279,
                        "src": "1161:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IOracleService_$23755",
                          "typeString": "contract IOracleService"
                        }
                      },
                      "id": 17361,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "respond",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 23754,
                      "src": "1161:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint256,bytes memory) external"
                      }
                    },
                    "id": 17364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1161:39:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17365,
                  "nodeType": "ExpressionStatement",
                  "src": "1161:39:34"
                }
              ]
            },
            "id": 17367,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_respond",
            "nameLocation": "1094:8:34",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17357,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17354,
                  "mutability": "mutable",
                  "name": "requestId",
                  "nameLocation": "1111:9:34",
                  "nodeType": "VariableDeclaration",
                  "scope": 17367,
                  "src": "1103:17:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17353,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1103:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17356,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "1135:4:34",
                  "nodeType": "VariableDeclaration",
                  "scope": 17367,
                  "src": "1122:17:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 17355,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1122:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1102:38:34"
            },
            "returnParameters": {
              "id": 17358,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1150:0:34"
            },
            "scope": 17368,
            "src": "1085:123:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 17369,
        "src": "190:1025:34"
      }
    ],
    "src": "40:1177:34"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.2+commit.661d1103"
  },
  "contractName": "Oracle",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [
    "etherisc/gif-interface@3b0002a/Component",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Context",
    "etherisc/gif-interface@3b0002a/IAccess",
    "etherisc/gif-interface@3b0002a/IBundleToken",
    "etherisc/gif-interface@3b0002a/IComponent",
    "etherisc/gif-interface@3b0002a/IComponentEvents",
    "etherisc/gif-interface@3b0002a/IComponentOwnerService",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC165",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC20",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC721",
    "etherisc/gif-interface@3b0002a/IInstanceOperatorService",
    "etherisc/gif-interface@3b0002a/IInstanceService",
    "etherisc/gif-interface@3b0002a/IOracle",
    "etherisc/gif-interface@3b0002a/IOracleService",
    "etherisc/gif-interface@3b0002a/IProductService",
    "etherisc/gif-interface@3b0002a/IRegistry",
    "etherisc/gif-interface@3b0002a/IRiskpoolService",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Ownable"
  ],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "offset": [
    190,
    1215
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "00244d47f3ed6cdafa2303f2d58e7f87413a254f",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.8.2;\n\nimport \"./IOracle.sol\";\nimport \"./Component.sol\";\nimport \"./IComponent.sol\";\nimport \"../services/IOracleService.sol\";\n\nabstract contract Oracle is\n    IOracle, \n    Component \n{   \n    IOracleService private _oracleService;\n\n    modifier onlyQuery {\n        require(\n             _msgSender() == _getContractAddress(\"Query\"),\n            \"ERROR:ORA-001:ACCESS_DENIED\"\n        );\n        _;\n    }\n\n    constructor(\n        bytes32 name,\n        address registry\n    )\n        Component(name, ComponentType.Oracle, registry)\n    {\n        _oracleService = IOracleService(_getContractAddress(\"OracleService\"));\n        emit LogOracleCreated(address(this));\n    }\n\n    // default callback function implementations\n    function _afterApprove() internal override { \n        emit LogOracleApproved(getId()); \n    }\n\n    function _afterPropose() internal override { emit LogOracleProposed(getId()); }\n    function _afterDecline() internal override { emit LogOracleDeclined(getId()); }\n\n    function _respond(uint256 requestId, bytes memory data) internal {\n        _oracleService.respond(requestId, data);\n    }    \n}\n",
  "sourceMap": "",
  "sourcePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/components/Oracle.sol",
  "type": "contract"
}