UNPKG

@etherisc/gif-contracts

Version:

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

1,487 lines 838 kB
{ "abi": [ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "allSourcePaths": { "17": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/ERC721.sol", "18": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721.sol", "19": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721Receiver.sol", "20": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/extensions/IERC721Metadata.sol", "21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol", "22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol", "24": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Strings.sol", "25": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/ERC165.sol", "26": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/IERC165.sol" }, "ast": { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/ERC721.sol", "exportedSymbols": { "Address": [ 26374 ], "Context": [ 24074 ], "ERC165": [ 26079 ], "ERC721": [ 24987 ], "IERC165": [ 27203 ], "IERC721": [ 23745 ], "IERC721Metadata": [ 27618 ], "IERC721Receiver": [ 27591 ], "Strings": [ 23075 ] }, "id": 24988, "license": "MIT", "nodeType": "SourceUnit", "nodes": [ { "id": 24122, "literals": [ "solidity", "^", "0.8", ".0" ], "nodeType": "PragmaDirective", "src": "107:23:17" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721.sol", "file": "./IERC721.sol", "id": 24123, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 24988, "sourceUnit": 23746, "src": "132:23:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721Receiver.sol", "file": "./IERC721Receiver.sol", "id": 24124, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 24988, "sourceUnit": 27592, "src": "156:31:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/extensions/IERC721Metadata.sol", "file": "./extensions/IERC721Metadata.sol", "id": 24125, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 24988, "sourceUnit": 27619, "src": "188:42:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol", "file": "../../utils/Address.sol", "id": 24126, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 24988, "sourceUnit": 26375, "src": "231:33:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol", "file": "../../utils/Context.sol", "id": 24127, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 24988, "sourceUnit": 24075, "src": "265:33:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Strings.sol", "file": "../../utils/Strings.sol", "id": 24128, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 24988, "sourceUnit": 23076, "src": "299:33:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/ERC165.sol", "file": "../../utils/introspection/ERC165.sol", "id": 24129, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 24988, "sourceUnit": 26080, "src": "333:46:17", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 24131, "name": "Context", "nodeType": "IdentifierPath", "referencedDeclaration": 24074, "src": "647:7:17" }, "id": 24132, "nodeType": "InheritanceSpecifier", "src": "647:7:17" }, { "baseName": { "id": 24133, "name": "ERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 26079, "src": "656:6:17" }, "id": 24134, "nodeType": "InheritanceSpecifier", "src": "656:6:17" }, { "baseName": { "id": 24135, "name": "IERC721", "nodeType": "IdentifierPath", "referencedDeclaration": 23745, "src": "664:7:17" }, "id": 24136, "nodeType": "InheritanceSpecifier", "src": "664:7:17" }, { "baseName": { "id": 24137, "name": "IERC721Metadata", "nodeType": "IdentifierPath", "referencedDeclaration": 27618, "src": "673:15:17" }, "id": 24138, "nodeType": "InheritanceSpecifier", "src": "673:15:17" } ], "contractDependencies": [ 23745, 24074, 26079, 27203, 27618 ], "contractKind": "contract", "documentation": { "id": 24130, "nodeType": "StructuredDocumentation", "src": "381:246:17", "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}." }, "fullyImplemented": true, "id": 24987, "linearizedBaseContracts": [ 24987, 27618, 23745, 26079, 27203, 24074 ], "name": "ERC721", "nameLocation": "637:6:17", "nodeType": "ContractDefinition", "nodes": [ { "id": 24141, "libraryName": { "id": 24139, "name": "Address", "nodeType": "IdentifierPath", "referencedDeclaration": 26374, "src": "701:7:17" }, "nodeType": "UsingForDirective", "src": "695:26:17", "typeName": { "id": 24140, "name": "address", "nodeType": "ElementaryTypeName", "src": "713:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, { "id": 24144, "libraryName": { "id": 24142, "name": "Strings", "nodeType": "IdentifierPath", "referencedDeclaration": 23075, "src": "732:7:17" }, "nodeType": "UsingForDirective", "src": "726:26:17", "typeName": { "id": 24143, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "744:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "id": 24146, "mutability": "mutable", "name": "_name", "nameLocation": "791:5:17", "nodeType": "VariableDeclaration", "scope": 24987, "src": "776:20:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 24145, "name": "string", "nodeType": "ElementaryTypeName", "src": "776:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "private" }, { "constant": false, "id": 24148, "mutability": "mutable", "name": "_symbol", "nameLocation": "838:7:17", "nodeType": "VariableDeclaration", "scope": 24987, "src": "823:22:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string" }, "typeName": { "id": 24147, "name": "string", "nodeType": "ElementaryTypeName", "src": "823:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "private" }, { "constant": false, "id": 24152, "mutability": "mutable", "name": "_owners", "nameLocation": "934:7:17", "nodeType": "VariableDeclaration", "scope": 24987, "src": "898:43:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 24151, "keyType": { "id": 24149, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "906:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "898:27:17", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 24150, "name": "address", "nodeType": "ElementaryTypeName", "src": "917:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "visibility": "private" }, { "constant": false, "id": 24156, "mutability": "mutable", "name": "_balances", "nameLocation": "1028:9:17", "nodeType": "VariableDeclaration", "scope": 24987, "src": "992:45:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 24155, "keyType": { "id": 24153, "name": "address", "nodeType": "ElementaryTypeName", "src": "1000:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "992:27:17", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 24154, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1011:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "visibility": "private" }, { "constant": false, "id": 24160, "mutability": "mutable", "name": "_tokenApprovals", "nameLocation": "1129:15:17", "nodeType": "VariableDeclaration", "scope": 24987, "src": "1093:51:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "typeName": { "id": 24159, "keyType": { "id": 24157, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1101:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Mapping", "src": "1093:27:17", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", "typeString": "mapping(uint256 => address)" }, "valueType": { "id": 24158, "name": "address", "nodeType": "ElementaryTypeName", "src": "1112:7:17", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "visibility": "private" }, { "constant": false, "id": 24166, "mutability": "mutable", "name": "_operatorApprovals", "nameLocation": "1252:18:17", "nodeType": "VariableDeclaration", "scope": 24987, "src": "1199:71:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "typeName": { "id": 24165, "keyType": { "id": 24161, "name": "address", "nodeType": "ElementaryTypeName", "src": "1207:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1199:44:17", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(address => mapping(address => bool))" }, "valueType": { "id": 24164, "keyType": { "id": 24162, "name": "address", "nodeType": "ElementaryTypeName", "src": "1226:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1218:24:17", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 24163, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1237:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } } }, "visibility": "private" }, { "body": { "id": 24182, "nodeType": "Block", "src": "1446:57:17", "statements": [ { "expression": { "id": 24176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 24174, "name": "_name", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24146, "src": "1456:5:17", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 24175, "name": "name_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24169, "src": "1464:5:17", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1456:13:17", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 24177, "nodeType": "ExpressionStatement", "src": "1456:13:17" }, { "expression": { "id": 24180, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 24178, "name": "_symbol", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24148, "src": "1479:7:17", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 24179, "name": "symbol_", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24171, "src": "1489:7:17", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" } }, "src": "1479:17:17", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" } }, "id": 24181, "nodeType": "ExpressionStatement", "src": "1479:17:17" } ] }, "documentation": { "id": 24167, "nodeType": "StructuredDocumentation", "src": "1277:108:17", "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection." }, "id": 24183, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { "id": 24172, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 24169, "mutability": "mutable", "name": "name_", "nameLocation": "1416:5:17", "nodeType": "VariableDeclaration", "scope": 24183, "src": "1402:19:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 24168, "name": "string", "nodeType": "ElementaryTypeName", "src": "1402:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" }, { "constant": false, "id": 24171, "mutability": "mutable", "name": "symbol_", "nameLocation": "1437:7:17", "nodeType": "VariableDeclaration", "scope": 24183, "src": "1423:21:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 24170, "name": "string", "nodeType": "ElementaryTypeName", "src": "1423:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "visibility": "internal" } ], "src": "1401:44:17" }, "returnParameters": { "id": 24173, "nodeType": "ParameterList", "parameters": [], "src": "1446:0:17" }, "scope": 24987, "src": "1390:113:17", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 26078, 27202 ], "body": { "id": 24213, "nodeType": "Block", "src": "1678:192:17", "statements": [ { "expression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 24211, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 24206, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 24199, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 24194, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24186, "src": "1707:11:17", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "arguments": [ { "id": 24196, "name": "IERC721", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 23745, "src": "1727:7:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721_$23745_$", "typeString": "type(contract IERC721)" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_contract$_IERC721_$23745_$", "typeString": "type(contract IERC721)" } ], "id": 24195, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1722:4:17", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 24197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1722:13:17", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$23745", "typeString": "type(contract IERC721)" } }, "id": 24198, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1722:25:17", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "1707:40:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "commonType": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "id": 24205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 24200, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24186, "src": "1763:11:17", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "expression": { "arguments": [ { "id": 24202, "name": "IERC721Metadata", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27618, "src": "1783:15:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$27618_$", "typeString": "type(contract IERC721Metadata)" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$27618_$", "typeString": "type(contract IERC721Metadata)" } ], "id": 24201, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "1778:4:17", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 24203, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1778:21:17", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$27618", "typeString": "type(contract IERC721Metadata)" } }, "id": 24204, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "interfaceId", "nodeType": "MemberAccess", "src": "1778:33:17", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "src": "1763:48:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1707:104:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "arguments": [ { "id": 24209, "name": "interfaceId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 24186, "src": "1851:11:17", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } ], "expression": { "id": 24207, "name": "super", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -25, "src": "1827:5:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_super$_ERC721_$24987_$", "typeString": "type(contract super ERC721)" } }, "id": 24208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 26078, "src": "1827:23:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)" } }, "id": 24210, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1827:36:17", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "1707:156:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "functionReturnParameters": 24193, "id": 24212, "nodeType": "Return", "src": "1688:175:17" } ] }, "documentation": { "id": 24184, "nodeType": "StructuredDocumentation", "src": "1509:56:17", "text": " @dev See {IERC165-supportsInterface}." }, "functionSelector": "01ffc9a7", "id": 24214, "implemented": true, "kind": "function", "modifiers": [], "name": "supportsInterface", "nameLocation": "1579:17:17", "nodeType": "FunctionDefinition", "overrides": { "id": 24190, "nodeType": "OverrideSpecifier", "overrides": [ { "id": 24188, "name": "ERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 26079, "src": "1646:6:17" }, { "id": 24189, "name": "IERC165", "nodeType": "IdentifierPath", "referencedDeclaration": 27203, "src": "1654:7:17" } ], "src": "1637:25:17" }, "parameters": { "id": 24187, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 24186, "mutability": "mutable", "name": "interfaceId", "nameLocation": "1604:11:17", "nodeType": "VariableDeclaration", "scope": 24214, "src": "1597:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" }, "typeName": { "id": 24185, "name": "bytes4", "nodeType": "ElementaryTypeName", "src": "1597:6:17", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" } }, "visibility": "internal" } ], "src": "1596:20:17" }, "returnParameters": { "id": 24193, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 24192, "mutability": "mutable", "name": "", "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 24214, "src": "1672:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 24191, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1672:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "1671:6:17" }, "scope": 24987, "src": "1570:300:17", "stateMutability": "view", "virtual": true, "visibility": "public" }, { "baseFunctions": [ 23670 ], "body": { "id": 24237, "nodeType": "Block", "src": "2010:123:17", "statements": [ { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 24229, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpres