{ "abi": [ { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ], "bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, "deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} }, "methodIdentifiers": { "supportsInterface(bytes4)": "01ffc9a7" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.17+commit.8df45f5f" }, "language": "Solidity", "output": { "abi": [ { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "stateMutability": "view", "type": "function", "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] } ], "devdoc": { "kind": "dev", "methods": { "supportsInterface(bytes4)": { "details": "See {IERC165-supportsInterface}." } }, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "settings": { "remappings": [ ":@ensdomains/=node_modules/@ensdomains/", ":@openzeppelin/=node_modules/@openzeppelin/", ":ds-test/=lib/forge-std/lib/ds-test/src/", ":eth-gas-reporter/=node_modules/eth-gas-reporter/", ":forge-std/=lib/forge-std/src/", ":hardhat-deploy/=node_modules/hardhat-deploy/", ":hardhat/=node_modules/hardhat/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": "ERC165" }, "libraries": {}, "viaIR": true }, "sources": { "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b", "urls": [ "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d", "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43" ], "license": "MIT" }, "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": [ "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" ], "license": "MIT" } }, "version": 1 }, "ast": { "absolutePath": "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol", "id": 27553, "exportedSymbols": { "ERC165": [ 27552 ], "IERC165": [ 27564 ] }, "nodeType": "SourceUnit", "src": "99:888:27", "nodes": [ { "id": 27530, "nodeType": "PragmaDirective", "src": "99:23:27", "nodes": [], "literals": [ "solidity", "^", "0.8", ".0" ] }, { "id": 27531, "nodeType": "ImportDirective", "src": "124:23:27", "nodes": [], "absolutePath": "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol", "file": "./IERC165.sol", "nameLocation": "-1:-1:-1", "scope": 27553, "sourceUnit": 27565, "symbolAliases": [], "unitAlias": "" }, { "id": 27552, "nodeType": "ContractDefinition", "src": "726:260:27", "nodes": [ { "id": 27551, "nodeType": "FunctionDefinition", "src": "829:155:27", "nodes": [], "body": { "id": 27550, "nodeType": "Block", "src": "920:64:27", "nodes": [], "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 27548, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 27543, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27537, "src": "937:11:27", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "arguments": [ { "id": 27545, "name": "IERC165", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27564, "src": "957:7:27", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC165_$27564_$", "typeString": "type(contract IERC165)" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_contract$_IERC165_$27564_$", "typeString": "type(contract IERC165)" } ], "id": 27544, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "952:4:27", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 27546, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "952:13:27", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$27564", "typeString": "type(contract IERC165)" } }, "id": 27547, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "966:11:27", "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "952:25:27", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "937:40:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 27542, "id": 27549, "nodeType": "Return", "src": "930:47:27" } ] }, "baseFunctions": [ 27563 ], "documentation": { "id": 27535, "nodeType": "StructuredDocumentation", "src": "768:56:27", "text": " @dev See {IERC165-supportsInterface}." }, "functionSelector": "01ffc9a7", "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "838:17:27", "overrides": { "id": 27539, "nodeType": "OverrideSpecifier", "overrides": [], "src": "896:8:27" }, "parameters": { "id": 27538, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 27537, "mutability": "mutable", "name": "interfaceId", "nameLocation": "863:11:27", "nodeType": "VariableDeclaration", "scope": 27551, "src": "856:18:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 27536, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "856:6:27", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" } ], "src": "855:20:27" }, "returnParameters": { "id": 27542, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 27541, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 27551, "src": "914:4:27", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 27540, "name": "bool", "nodeType": "ElementaryTypeName", "src": "914:4:27", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "913:6:27" }, "scope": 27552, "stateMutability": "view", "virtual": true, "visibility": "public" } ], "abstract": true, "baseContracts": [ { "baseName": { "id": 27533, "name": "IERC165", "nameLocations": [ "754:7:27" ], "nodeType": "IdentifierPath", "referencedDeclaration": 27564, "src": "754:7:27" }, "id": 27534, "nodeType": "InheritanceSpecifier", "src": "754:7:27" } ], "canonicalName": "ERC165", "contractDependencies": [], "contractKind": "contract", "documentation": { "id": 27532, "nodeType": "StructuredDocumentation", "src": "149:576:27", "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation." }, "fullyImplemented": true, "linearizedBaseContracts": [ 27552, 27564 ], "name": "ERC165", "nameLocation": "744:6:27", "scope": 27553, "usedErrors": [] } ], "license": "MIT" }, "id": 27 }