@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
JSON
{
"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