UNPKG

@etherisc/gif-contracts

Version:

This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.

1,264 lines (1,263 loc) 143 kB
{ "abi": [ { "inputs": [ { "internalType": "address", "name": "_registry", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "NAME", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_contractName", "type": "bytes32" } ], "name": "getContractFromRegistry", "outputs": [ { "internalType": "address", "name": "_addr", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "registry", "outputs": [ { "internalType": "contract IRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "allSourcePaths": { "22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol", "40": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/ILicense.sol", "44": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IRegistry.sol", "86": "contracts/services/ProductService.sol", "91": "contracts/shared/WithRegistry.sol" }, "ast": { "absolutePath": "contracts/services/ProductService.sol", "exportedSymbols": { "Context": [ 24074 ], "ILicense": [ 22433 ], "IRegistry": [ 21750 ], "ProductService": [ 14014 ], "WithRegistry": [ 15290 ] }, "id": 14015, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 13938, "literals": [ "solidity", "0.8", ".2" ], "nodeType": "PragmaDirective", "src": "39:22:86" }, { "absolutePath": "contracts/shared/WithRegistry.sol", "file": "../shared/WithRegistry.sol", "id": 13939, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 14015, "sourceUnit": 15291, "src": "63:36:86", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/ILicense.sol", "file": "@etherisc/gif-interface/contracts/modules/ILicense.sol", "id": 13940, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 14015, "sourceUnit": 22434, "src": "142:64:86", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol", "file": "@openzeppelin/contracts/utils/Context.sol", "id": 13941, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 14015, "sourceUnit": 24075, "src": "208:51:86", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 13942, "name": "WithRegistry", "nodeType": "IdentifierPath", "referencedDeclaration": 15290, "src": "292:12:86" }, "id": 13943, "nodeType": "InheritanceSpecifier", "src": "292:12:86" }, { "baseName": { "id": 13944, "name": "Context", "nodeType": "IdentifierPath", "referencedDeclaration": 24074, "src": "332:7:86" }, "id": 13945, "nodeType": "InheritanceSpecifier", "src": "332:7:86" } ], "contractDependencies": [ 15290, 24074 ], "contractKind": "contract", "fullyImplemented": true, "id": 14014, "linearizedBaseContracts": [ 14014, 24074, 15290 ], "name": "ProductService", "nameLocation": "270:14:86", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, "functionSelector": "a3f4df7e", "id": 13948, "mutability": "constant", "name": "NAME", "nameLocation": "371:4:86", "nodeType": "VariableDeclaration", "scope": 14014, "src": "347:47:86", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 13946, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "347:7:86", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": { "hexValue": "50726f6475637453657276696365", "id": 13947, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "378:16:86", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a0656cfcc1bc970b947aca201a5cc1b43cf3c3649a4b2d6f82968797074fe0b8", "typeString": "literal_string \"ProductService\"" }, "value": "ProductService" }, "visibility": "public" }, { "body": { "id": 13956, "nodeType": "Block", "src": "505:2:86", "statements": [] }, "id": 13957, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "id": 13953, "name": "_registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13950, "src": "494:9:86", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "id": 13954, "modifierName": { "id": 13952, "name": "WithRegistry", "nodeType": "IdentifierPath", "referencedDeclaration": 15290, "src": "481:12:86" }, "nodeType": "ModifierInvocation", "src": "481:23:86" } ], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { "id": 13951, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 13950, "mutability": "mutable", "name": "_registry", "nameLocation": "470:9:86", "nodeType": "VariableDeclaration", "scope": 13957, "src": "462:17:86", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 13949, "name": "address", "nodeType": "ElementaryTypeName", "src": "462:7:86", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "461:19:86" }, "returnParameters": { "id": 13955, "nodeType": "ParameterList", "parameters": [], "src": "505:0:86" }, "scope": 14014, "src": "450:57:86", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 13990, "nodeType": "Block", "src": "533:368:86", "statements": [ { "assignments": [ null, 13961, 13963 ], "declarations": [ null, { "constant": false, "id": 13961, "mutability": "mutable", "name": "isAuthorized", "nameLocation": "631:12:86", "nodeType": "VariableDeclaration", "scope": 13990, "src": "626:17:86", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 13960, "name": "bool", "nodeType": "ElementaryTypeName", "src": "626:4:86", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" }, { "constant": false, "id": 13963, "mutability": "mutable", "name": "policyFlow", "nameLocation": "653:10:86", "nodeType": "VariableDeclaration", "scope": 13990, "src": "645:18:86", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 13962, "name": "address", "nodeType": "ElementaryTypeName", "src": "645:7:86", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "id": 13970, "initialValue": { "arguments": [ { "arguments": [], "expression": { "argumentTypes": [], "id": 13967, "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24064, "src": "701:10:86", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" } }, "id": 13968, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "701:12:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 13964, "name": "_license", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14013, "src": "667:8:86", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_ILicense_$22433_$", "typeString": "function () view returns (contract ILicense)" } }, "id": 13965, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "667:10:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ILicense_$22433", "typeString": "contract ILicense" } }, "id": 13966, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getAuthorizationStatus", "nodeType": "MemberAccess", "referencedDeclaration": 22432, "src": "667:33:86", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$_t_bool_$_t_address_$", "typeString": "function (address) view external returns (uint256,bool,address)" } }, "id": 13969, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "667:47:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$_t_address_$", "typeString": "tuple(uint256,bool,address)" } }, "nodeType": "VariableDeclarationStatement", "src": "624:90:86" }, { "expression": { "arguments": [ { "id": 13972, "name": "isAuthorized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13961, "src": "733:12:86", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552524f523a5052532d3030313a4e4f545f415554484f52495a4544", "id": 13973, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "747:30:86", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2ea29d619e783380245e9479bc50992b7e9e66d498084c15d9aeb14649a09dc3", "typeString": "literal_string \"ERROR:PRS-001:NOT_AUTHORIZED\"" }, "value": "ERROR:PRS-001:NOT_AUTHORIZED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2ea29d619e783380245e9479bc50992b7e9e66d498084c15d9aeb14649a09dc3", "typeString": "literal_string \"ERROR:PRS-001:NOT_AUTHORIZED\"" } ], "id": 13971, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "725:7:86", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 13974, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "725:53:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 13975, "nodeType": "ExpressionStatement", "src": "725:53:86" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 13982, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 13977, "name": "policyFlow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13963, "src": "796:10:86", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "arguments": [ { "hexValue": "30", "id": 13980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "818:1:86", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 13979, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "810:7:86", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 13978, "name": "address", "nodeType": "ElementaryTypeName", "src": "810:7:86", "typeDescriptions": {} } }, "id": 13981, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "810:10:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "796:24:86", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "hexValue": "4552524f523a5052532d3030323a504f4c4943595f464c4f575f4e4f545f5245534f4c564544", "id": 13983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "821:40:86", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3481a442355178eff70c53b479d1406dd857fddda3e91ffea746909cf740d5cd", "typeString": "literal_string \"ERROR:PRS-002:POLICY_FLOW_NOT_RESOLVED\"" }, "value": "ERROR:PRS-002:POLICY_FLOW_NOT_RESOLVED" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_3481a442355178eff70c53b479d1406dd857fddda3e91ffea746909cf740d5cd", "typeString": "literal_string \"ERROR:PRS-002:POLICY_FLOW_NOT_RESOLVED\"" } ], "id": 13976, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "788:7:86", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 13984, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "788:74:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 13985, "nodeType": "ExpressionStatement", "src": "788:74:86" }, { "expression": { "arguments": [ { "id": 13987, "name": "policyFlow", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13963, "src": "883:10:86", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 13986, "name": "_delegate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13999, "src": "873:9:86", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 13988, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "873:21:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 13989, "nodeType": "ExpressionStatement", "src": "873:21:86" } ] }, "id": 13991, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { "id": 13958, "nodeType": "ParameterList", "parameters": [], "src": "521:2:86" }, "returnParameters": { "id": 13959, "nodeType": "ParameterList", "parameters": [], "src": "533:0:86" }, "scope": 14014, "src": "513:388:86", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "body": { "id": 13998, "nodeType": "Block", "src": "1314:835:86", "statements": [ { "AST": { "nodeType": "YulBlock", "src": "1333:810:86", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1586:1:86", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1589:1:86", "type": "", "value": "0" }, { "arguments": [], "functionName": { "name": "calldatasize", "nodeType": "YulIdentifier", "src": "1592:12:86" }, "nodeType": "YulFunctionCall", "src": "1592:14:86" } ], "functionName": { "name": "calldatacopy", "nodeType": "YulIdentifier", "src": "1573:12:86" }, "nodeType": "YulFunctionCall", "src": "1573:34:86" }, "nodeType": "YulExpressionStatement", "src": "1573:34:86" }, { "nodeType": "YulVariableDeclaration", "src": "1734:74:86", "value": { "arguments": [ { "arguments": [], "functionName": { "name": "gas", "nodeType": "YulIdentifier", "src": "1761:3:86" }, "nodeType": "YulFunctionCall", "src": "1761:5:86" }, { "name": "implementation", "nodeType": "YulIdentifier", "src": "1768:14:86" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1784:1:86", "type": "", "value": "0" }, { "arguments": [], "functionName": { "name": "calldatasize", "nodeType": "YulIdentifier", "src": "1787:12:86" }, "nodeType": "YulFunctionCall", "src": "1787:14:86" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1803:1:86", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1806:1:86", "type": "", "value": "0" } ], "functionName": { "name": "delegatecall", "nodeType": "YulIdentifier", "src": "1748:12:86" }, "nodeType": "YulFunctionCall", "src": "1748:60:86" }, "variables": [ { "name": "result", "nodeType": "YulTypedName", "src": "1738:6:86", "type": "" } ] }, { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "1876:1:86", "type": "", "value": "0" }, { "kind": "number", "nodeType": "YulLiteral", "src": "1879:1:86", "type": "", "value": "0" }, { "arguments": [], "functionName": { "name": "returndatasize", "nodeType": "YulIdentifier", "src": "1882:14:86" }, "nodeType": "YulFunctionCall", "src": "1882:16:86" } ], "functionName": { "name": "returndatacopy", "nodeType": "YulIdentifier", "src": "1861:14:86" }, "nodeType": "YulFunctionCall", "src": "1861:38:86" }, "nodeType": "YulExpressionStatement", "src": "1861:38:86" }, { "cases": [ { "body": { "nodeType": "YulBlock", "src": "1994:59:86", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "2019:1:86", "type": "", "value": "0" }, { "arguments": [], "functionName": { "name": "returndatasize", "nodeType": "YulIdentifier", "src": "2022:14:86" }, "nodeType": "YulFunctionCall", "src": "2022:16:86" } ], "functionName": { "name": "revert", "nodeType": "YulIdentifier", "src": "2012:6:86" }, "nodeType": "YulFunctionCall", "src": "2012:27:86" }, "nodeType": "YulExpressionStatement", "src": "2012:27:86" } ] }, "nodeType": "YulCase", "src": "1987:66:86", "value": { "kind": "number", "nodeType": "YulLiteral", "src": "1992:1:86", "type": "", "value": "0" } }, { "body": { "nodeType": "YulBlock", "src": "2074:59:86", "statements": [ { "expression": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "2099:1:86", "type": "", "value": "0" }, { "arguments": [], "functionName": { "name": "returndatasize", "nodeType": "YulIdentifier", "src": "2102:14:86" }, "nodeType": "YulFunctionCall", "src": "2102:16:86" } ], "functionName": { "name": "return", "nodeType": "YulIdentifier", "src": "2092:6:86" }, "nodeType": "YulFunctionCall", "src": "2092:27:86" }, "nodeType": "YulExpressionStatement", "src": "2092:27:86" } ] }, "nodeType": "YulCase", "src": "2066:67:86", "value": "default" } ], "expression": { "name": "result", "nodeType": "YulIdentifier", "src": "1920:6:86" }, "nodeType": "YulSwitch", "src": "1913:220:86" } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 13994, "isOffset": false, "isSlot": false, "src": "1768:14:86", "valueSize": 1 } ], "id": 13997, "nodeType": "InlineAssembly", "src": "1324:819:86" } ] }, "documentation": { "id": 13992, "nodeType": "StructuredDocumentation", "src": "908:349:86", "text": " @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller.\n This function is a 1:1 copy of _delegate from\n https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.6/contracts/proxy/Proxy.sol" }, "id": 13999, "implemented": true, "kind": "function", "modifiers": [], "name": "_delegate", "nameLocation": "1271:9:86", "nodeType": "FunctionDefinition", "parameters": { "id": 13995, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 13994, "mutability": "mutable", "name": "implementation", "nameLocation": "1289:14:86", "nodeType": "VariableDeclaration", "scope": 13999, "src": "1281:22:86", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 13993, "name": "address", "nodeType": "ElementaryTypeName", "src": "1281:7:86", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "1280:24:86" }, "returnParameters": { "id": 13996, "nodeType": "ParameterList", "parameters": [], "src": "1314:0:86" }, "scope": 14014, "src": "1262:887:86", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { "id": 14012, "nodeType": "Block", "src": "2208:65:86", "statements": [ { "expression": { "arguments": [ { "arguments": [ { "hexValue": "4c6963656e7365", "id": 14008, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2255:9:86", "typeDescriptions": { "typeIdentifier": "t_stringliteral_3b9d03c09d4e108ca3b630bc72507e91ae7da8eb1de63663acbce1d12cfbfb3a", "typeString": "literal_string \"License\"" }, "value": "License" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_3b9d03c09d4e108ca3b630bc72507e91ae7da8eb1de63663acbce1d12cfbfb3a", "typeString": "literal_string \"License\"" } ], "expression": { "id": 14006, "name": "registry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15176, "src": "2234:8:86", "typeDescriptions": { "typeIdentifier": "t_contract$_IRegistry_$21750", "typeString": "contract IRegistry" } }, "id": 14007, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getContract", "nodeType": "MemberAccess", "referencedDeclaration": 21723, "src": "2234:20:86", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32) view external returns (address)" } }, "id": 14009, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2234:31:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 14005, "name": "ILicense", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 22433, "src": "2225:8:86", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ILicense_$22433_$", "typeString": "type(contract ILicense)" } }, "id": 14010, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2225:41:86", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ILicense_$22433", "typeString": "contract ILicense" } }, "functionReturnParameters": 14004, "id": 14011, "nodeType": "Return", "src": "2218:48:86" } ] }, "id": 14013, "implemented": true, "kind": "function", "modifiers": [], "name": "_license", "nameLocation": "2164:8:86", "nodeType": "FunctionDefinition", "parameters": { "id": 14000,