1// SPDX-License-Identifier: OTHER23pragma solidity >=0.8.0 <0.9.0;45contract ERC721 {6 uint8 _dummy = 0;7 address _dummy_addr = 0x0000000000000000000000000000000000000000;8 string _dummy_string = "";9 string stub_error =10 "this contract does not exists, code for collections is implemented at pallet side";1112 event Transfer(13 address indexed from,14 address indexed to,15 uint256 indexed tokenId16 );1718 event Approval(19 address indexed owner,20 address indexed approved,21 uint256 indexed tokenId22 );2324 event ApprovalForAll(25 address indexed owner,26 address indexed operator,27 bool approved28 );2930 // 0x18160ddd31 function totalSupply() external view returns (uint256) {32 require(false, stub_error);33 return 0;34 }3536 function name() external view returns (string memory res_name) {37 require(false, stub_error);38 res_name = _dummy_string;39 }4041 function symbol() external view returns (string memory res_symbol) {42 require(false, stub_error);43 res_symbol = _dummy_string;44 }4546 function tokenURI(uint256 tokenId) external view returns (string memory) {47 require(false, stub_error);48 tokenId;49 return _dummy_string;50 }5152 function tokenByIndex(uint256 index) external view returns (uint256) {53 require(false, stub_error);54 index;55 return 0;56 }5758 function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256) {59 require(false, stub_error);60 owner;61 index;62 return 0;63 }6465 // 0x70a0823166 function balanceOf(address owner) external view returns (uint256) {67 require(false, stub_error);68 owner;69 return 0;70 }7172 // 0x6352211e73 function ownerOf(uint256 tokenId) external view returns (address) {74 require(false, stub_error);75 tokenId;76 return _dummy_addr;77 }7879 // 0xb88d4fde80 function safeTransferFrom(81 address from,82 address to,83 uint256 tokenId,84 bytes calldata data85 ) external payable {86 require(false, stub_error);87 from;88 to;89 tokenId;90 data;91 }9293 // 0x42842e0e94 function safeTransferFrom(95 address from,96 address to,97 uint256 tokenId98 ) external payable {99 require(false, stub_error);100 from;101 to;102 tokenId;103 }104105 // 0x23b872dd106 function transferFrom(107 address from,108 address to,109 uint256 tokenId110 ) external payable {111 require(false, stub_error);112 from;113 to;114 tokenId;115 }116117 // 0x095ea7b3118 function approve(address approved, uint256 tokenId) external payable {119 require(false, stub_error);120 approved;121 tokenId;122 }123124 // 0xa22cb465125 function setApprovalForAll(address operator, bool approved) external {126 require(false, stub_error);127 operator;128 approved;129 _dummy = 0;130 }131132 // 0x081812fc133 function getApproved(uint256 tokenId) external view returns (address) {134 require(false, stub_error);135 tokenId;136 return _dummy_addr;137 }138139 // 0xe985e9c5140 function isApprovedForAll(address owner, address operator)141 external142 view143 returns (bool)144 {145 require(false, stub_error);146 owner;147 operator;148 return false;149 }150151 // 0x01ffc9a7152 function supportsInterface(bytes4 interfaceID) public pure returns (bool) {153 return154 // ERC721155 interfaceID == 0x80ac58cd ||156 // ERC721Metadata157 interfaceID == 0x5b5e139f ||158 // ERC721Enumerable159 interfaceID == 0x780e9d63 ||160 // ERC165161 interfaceID == 0x01ffc9a7;162 }163}