1// SPDX-License-Identifier: OTHER2// This code is automatically generated34pragma solidity >=0.8.0 <0.9.0;56/// @dev common stubs holder7contract Dummy {8 uint8 dummy;9 string stub_error = "this contract is implemented in native";10}1112contract ERC165 is Dummy {13 function supportsInterface(bytes4 interfaceID) external view returns (bool) {14 require(false, stub_error);15 interfaceID;16 return true;17 }18}1920/// @title A contract that allows to set and delete token properties and change token property permissions.21/// @dev the ERC-165 identifier for this interface is 0x4136937722contract TokenProperties is Dummy, ERC165 {23 /// @notice Set permissions for token property.24 /// @dev Throws error if `msg.sender` is not admin or owner of the collection.25 /// @param key Property key.26 /// @param isMutable Permission to mutate property.27 /// @param collectionAdmin Permission to mutate property by collection admin if property is mutable.28 /// @param tokenOwner Permission to mutate property by token owner if property is mutable.29 /// @dev EVM selector for this function is: 0x222d97fa,30 /// or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)31 function setTokenPropertyPermission(32 string memory key,33 bool isMutable,34 bool collectionAdmin,35 bool tokenOwner36 ) public {37 require(false, stub_error);38 key;39 isMutable;40 collectionAdmin;41 tokenOwner;42 dummy = 0;43 }4445 /// @notice Set token property value.46 /// @dev Throws error if `msg.sender` has no permission to edit the property.47 /// @param tokenId ID of the token.48 /// @param key Property key.49 /// @param value Property value.50 /// @dev EVM selector for this function is: 0x1752d67b,51 /// or in textual repr: setProperty(uint256,string,bytes)52 function setProperty(53 uint256 tokenId,54 string memory key,55 bytes memory value56 ) public {57 require(false, stub_error);58 tokenId;59 key;60 value;61 dummy = 0;62 }6364 /// @notice Delete token property value.65 /// @dev Throws error if `msg.sender` has no permission to edit the property.66 /// @param tokenId ID of the token.67 /// @param key Property key.68 /// @dev EVM selector for this function is: 0x066111d1,69 /// or in textual repr: deleteProperty(uint256,string)70 function deleteProperty(uint256 tokenId, string memory key) public {71 require(false, stub_error);72 tokenId;73 key;74 dummy = 0;75 }7677 /// @notice Get token property value.78 /// @dev Throws error if key not found79 /// @param tokenId ID of the token.80 /// @param key Property key.81 /// @return Property value bytes82 /// @dev EVM selector for this function is: 0x7228c327,83 /// or in textual repr: property(uint256,string)84 function property(uint256 tokenId, string memory key) public view returns (bytes memory) {85 require(false, stub_error);86 tokenId;87 key;88 dummy;89 return hex"";90 }91}9293/// @title A contract that allows you to work with collections.94/// @dev the ERC-165 identifier for this interface is 0x47dbc10595contract Collection is Dummy, ERC165 {96 /// Set collection property.97 ///98 /// @param key Property key.99 /// @param value Propery value.100 /// @dev EVM selector for this function is: 0x2f073f66,101 /// or in textual repr: setCollectionProperty(string,bytes)102 function setCollectionProperty(string memory key, bytes memory value) public {103 require(false, stub_error);104 key;105 value;106 dummy = 0;107 }108109 /// Delete collection property.110 ///111 /// @param key Property key.112 /// @dev EVM selector for this function is: 0x7b7debce,113 /// or in textual repr: deleteCollectionProperty(string)114 function deleteCollectionProperty(string memory key) public {115 require(false, stub_error);116 key;117 dummy = 0;118 }119120 /// Get collection property.121 ///122 /// @dev Throws error if key not found.123 ///124 /// @param key Property key.125 /// @return bytes The property corresponding to the key.126 /// @dev EVM selector for this function is: 0xcf24fd6d,127 /// or in textual repr: collectionProperty(string)128 function collectionProperty(string memory key) public view returns (bytes memory) {129 require(false, stub_error);130 key;131 dummy;132 return hex"";133 }134135 /// Set the sponsor of the collection.136 ///137 /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.138 ///139 /// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.140 /// @dev EVM selector for this function is: 0x7623402e,141 /// or in textual repr: setCollectionSponsor(address)142 function setCollectionSponsor(address sponsor) public {143 require(false, stub_error);144 sponsor;145 dummy = 0;146 }147148 /// Set the substrate sponsor of the collection.149 ///150 /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.151 ///152 /// @param sponsor Substrate address of the sponsor from whose account funds will be debited for operations with the contract.153 /// @dev EVM selector for this function is: 0xc74d6751,154 /// or in textual repr: setCollectionSponsorSubstrate(uint256)155 function setCollectionSponsorSubstrate(uint256 sponsor) public {156 require(false, stub_error);157 sponsor;158 dummy = 0;159 }160161 /// Whether there is a pending sponsor.162 /// @dev EVM selector for this function is: 0x058ac185,163 /// or in textual repr: hasCollectionPendingSponsor()164 function hasCollectionPendingSponsor() public view returns (bool) {165 require(false, stub_error);166 dummy;167 return false;168 }169170 /// Collection sponsorship confirmation.171 ///172 /// @dev After setting the sponsor for the collection, it must be confirmed with this function.173 /// @dev EVM selector for this function is: 0x3c50e97a,174 /// or in textual repr: confirmCollectionSponsorship()175 function confirmCollectionSponsorship() public {176 require(false, stub_error);177 dummy = 0;178 }179180 /// Remove collection sponsor.181 /// @dev EVM selector for this function is: 0x6e0326a3,182 /// or in textual repr: removeCollectionSponsor()183 function removeCollectionSponsor() public {184 require(false, stub_error);185 dummy = 0;186 }187188 /// Get current sponsor.189 ///190 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.191 /// @dev EVM selector for this function is: 0x6ec0a9f1,192 /// or in textual repr: collectionSponsor()193 function collectionSponsor() public view returns (Tuple17 memory) {194 require(false, stub_error);195 dummy;196 return Tuple17(0x0000000000000000000000000000000000000000, 0);197 }198199 /// Set limits for the collection.200 /// @dev Throws error if limit not found.201 /// @param limit Name of the limit. Valid names:202 /// "accountTokenOwnershipLimit",203 /// "sponsoredDataSize",204 /// "sponsoredDataRateLimit",205 /// "tokenLimit",206 /// "sponsorTransferTimeout",207 /// "sponsorApproveTimeout"208 /// @param value Value of the limit.209 /// @dev EVM selector for this function is: 0x6a3841db,210 /// or in textual repr: setCollectionLimit(string,uint32)211 function setCollectionLimit(string memory limit, uint32 value) public {212 require(false, stub_error);213 limit;214 value;215 dummy = 0;216 }217218 /// Set limits for the collection.219 /// @dev Throws error if limit not found.220 /// @param limit Name of the limit. Valid names:221 /// "ownerCanTransfer",222 /// "ownerCanDestroy",223 /// "transfersEnabled"224 /// @param value Value of the limit.225 /// @dev EVM selector for this function is: 0x993b7fba,226 /// or in textual repr: setCollectionLimit(string,bool)227 function setCollectionLimit(string memory limit, bool value) public {228 require(false, stub_error);229 limit;230 value;231 dummy = 0;232 }233234 /// Get contract address.235 /// @dev EVM selector for this function is: 0xf6b4dfb4,236 /// or in textual repr: contractAddress()237 function contractAddress() public view returns (address) {238 require(false, stub_error);239 dummy;240 return 0x0000000000000000000000000000000000000000;241 }242243 /// Add collection admin by substrate address.244 /// @param newAdmin Substrate administrator address.245 /// @dev EVM selector for this function is: 0x5730062b,246 /// or in textual repr: addCollectionAdminSubstrate(uint256)247 function addCollectionAdminSubstrate(uint256 newAdmin) public {248 require(false, stub_error);249 newAdmin;250 dummy = 0;251 }252253 /// Remove collection admin by substrate address.254 /// @param admin Substrate administrator address.255 /// @dev EVM selector for this function is: 0x4048fcf9,256 /// or in textual repr: removeCollectionAdminSubstrate(uint256)257 function removeCollectionAdminSubstrate(uint256 admin) public {258 require(false, stub_error);259 admin;260 dummy = 0;261 }262263 /// Add collection admin.264 /// @param newAdmin Address of the added administrator.265 /// @dev EVM selector for this function is: 0x92e462c7,266 /// or in textual repr: addCollectionAdmin(address)267 function addCollectionAdmin(address newAdmin) public {268 require(false, stub_error);269 newAdmin;270 dummy = 0;271 }272273 /// Remove collection admin.274 ///275 /// @param admin Address of the removed administrator.276 /// @dev EVM selector for this function is: 0xfafd7b42,277 /// or in textual repr: removeCollectionAdmin(address)278 function removeCollectionAdmin(address admin) public {279 require(false, stub_error);280 admin;281 dummy = 0;282 }283284 /// Toggle accessibility of collection nesting.285 ///286 /// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'287 /// @dev EVM selector for this function is: 0x112d4586,288 /// or in textual repr: setCollectionNesting(bool)289 function setCollectionNesting(bool enable) public {290 require(false, stub_error);291 enable;292 dummy = 0;293 }294295 /// Toggle accessibility of collection nesting.296 ///297 /// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'298 /// @param collections Addresses of collections that will be available for nesting.299 /// @dev EVM selector for this function is: 0x64872396,300 /// or in textual repr: setCollectionNesting(bool,address[])301 function setCollectionNesting(bool enable, address[] memory collections) public {302 require(false, stub_error);303 enable;304 collections;305 dummy = 0;306 }307308 /// Set the collection access method.309 /// @param mode Access mode310 /// 0 for Normal311 /// 1 for AllowList312 /// @dev EVM selector for this function is: 0x41835d4c,313 /// or in textual repr: setCollectionAccess(uint8)314 function setCollectionAccess(uint8 mode) public {315 require(false, stub_error);316 mode;317 dummy = 0;318 }319320 /// Checks that user allowed to operate with collection.321 ///322 /// @param user User address to check.323 /// @dev EVM selector for this function is: 0xd63a8e11,324 /// or in textual repr: allowed(address)325 function allowed(address user) public view returns (bool) {326 require(false, stub_error);327 user;328 dummy;329 return false;330 }331332 /// Add the user to the allowed list.333 ///334 /// @param user Address of a trusted user.335 /// @dev EVM selector for this function is: 0x67844fe6,336 /// or in textual repr: addToCollectionAllowList(address)337 function addToCollectionAllowList(address user) public {338 require(false, stub_error);339 user;340 dummy = 0;341 }342343 /// Add substrate user to allowed list.344 ///345 /// @param user User substrate address.346 /// @dev EVM selector for this function is: 0xd06ad267,347 /// or in textual repr: addToCollectionAllowListSubstrate(uint256)348 function addToCollectionAllowListSubstrate(uint256 user) public {349 require(false, stub_error);350 user;351 dummy = 0;352 }353354 /// Remove the user from the allowed list.355 ///356 /// @param user Address of a removed user.357 /// @dev EVM selector for this function is: 0x85c51acb,358 /// or in textual repr: removeFromCollectionAllowList(address)359 function removeFromCollectionAllowList(address user) public {360 require(false, stub_error);361 user;362 dummy = 0;363 }364365 /// Remove substrate user from allowed list.366 ///367 /// @param user User substrate address.368 /// @dev EVM selector for this function is: 0xa31913ed,369 /// or in textual repr: removeFromCollectionAllowListSubstrate(uint256)370 function removeFromCollectionAllowListSubstrate(uint256 user) public {371 require(false, stub_error);372 user;373 dummy = 0;374 }375376 /// Switch permission for minting.377 ///378 /// @param mode Enable if "true".379 /// @dev EVM selector for this function is: 0x00018e84,380 /// or in textual repr: setCollectionMintMode(bool)381 function setCollectionMintMode(bool mode) public {382 require(false, stub_error);383 mode;384 dummy = 0;385 }386387 /// Check that account is the owner or admin of the collection388 ///389 /// @param user account to verify390 /// @return "true" if account is the owner or admin391 /// @dev EVM selector for this function is: 0x9811b0c7,392 /// or in textual repr: isOwnerOrAdmin(address)393 function isOwnerOrAdmin(address user) public view returns (bool) {394 require(false, stub_error);395 user;396 dummy;397 return false;398 }399400 /// Check that substrate account is the owner or admin of the collection401 ///402 /// @param user account to verify403 /// @return "true" if account is the owner or admin404 /// @dev EVM selector for this function is: 0x68910e00,405 /// or in textual repr: isOwnerOrAdminSubstrate(uint256)406 function isOwnerOrAdminSubstrate(uint256 user) public view returns (bool) {407 require(false, stub_error);408 user;409 dummy;410 return false;411 }412413 /// Returns collection type414 ///415 /// @return `Fungible` or `NFT` or `ReFungible`416 /// @dev EVM selector for this function is: 0xd34b55b8,417 /// or in textual repr: uniqueCollectionType()418 function uniqueCollectionType() public view returns (string memory) {419 require(false, stub_error);420 dummy;421 return "";422 }423424 /// Get collection owner.425 ///426 /// @return Tuble with sponsor address and his substrate mirror.427 /// If address is canonical then substrate mirror is zero and vice versa.428 /// @dev EVM selector for this function is: 0xdf727d3b,429 /// or in textual repr: collectionOwner()430 function collectionOwner() public view returns (Tuple17 memory) {431 require(false, stub_error);432 dummy;433 return Tuple17(0x0000000000000000000000000000000000000000, 0);434 }435436 /// Changes collection owner to another account437 ///438 /// @dev Owner can be changed only by current owner439 /// @param newOwner new owner account440 /// @dev EVM selector for this function is: 0x13af4035,441 /// or in textual repr: setOwner(address)442 function setOwner(address newOwner) public {443 require(false, stub_error);444 newOwner;445 dummy = 0;446 }447448 /// Changes collection owner to another substrate account449 ///450 /// @dev Owner can be changed only by current owner451 /// @param newOwner new owner substrate account452 /// @dev EVM selector for this function is: 0xb212138f,453 /// or in textual repr: setOwnerSubstrate(uint256)454 function setOwnerSubstrate(uint256 newOwner) public {455 require(false, stub_error);456 newOwner;457 dummy = 0;458 }459}460461/// @dev anonymous struct462struct Tuple17 {463 address field_0;464 uint256 field_1;465}466467/// @title ERC721 Token that can be irreversibly burned (destroyed).468/// @dev the ERC-165 identifier for this interface is 0x42966c68469contract ERC721Burnable is Dummy, ERC165 {470 /// @notice Burns a specific ERC721 token.471 /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized472 /// operator of the current owner.473 /// @param tokenId The NFT to approve474 /// @dev EVM selector for this function is: 0x42966c68,475 /// or in textual repr: burn(uint256)476 function burn(uint256 tokenId) public {477 require(false, stub_error);478 tokenId;479 dummy = 0;480 }481}482483/// @dev inlined interface484contract ERC721MintableEvents {485 event MintingFinished();486}487488/// @title ERC721 minting logic.489/// @dev the ERC-165 identifier for this interface is 0x68ccfe89490contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {491 /// @dev EVM selector for this function is: 0x05d2035b,492 /// or in textual repr: mintingFinished()493 function mintingFinished() public view returns (bool) {494 require(false, stub_error);495 dummy;496 return false;497 }498499 /// @notice Function to mint token.500 /// @dev `tokenId` should be obtained with `nextTokenId` method,501 /// unlike standard, you can't specify it manually502 /// @param to The new owner503 /// @param tokenId ID of the minted NFT504 /// @dev EVM selector for this function is: 0x40c10f19,505 /// or in textual repr: mint(address,uint256)506 function mint(address to, uint256 tokenId) public returns (bool) {507 require(false, stub_error);508 to;509 tokenId;510 dummy = 0;511 return false;512 }513514 /// @notice Function to mint token with the given tokenUri.515 /// @dev `tokenId` should be obtained with `nextTokenId` method,516 /// unlike standard, you can't specify it manually517 /// @param to The new owner518 /// @param tokenId ID of the minted NFT519 /// @param tokenUri Token URI that would be stored in the NFT properties520 /// @dev EVM selector for this function is: 0x50bb4e7f,521 /// or in textual repr: mintWithTokenURI(address,uint256,string)522 function mintWithTokenURI(523 address to,524 uint256 tokenId,525 string memory tokenUri526 ) public returns (bool) {527 require(false, stub_error);528 to;529 tokenId;530 tokenUri;531 dummy = 0;532 return false;533 }534535 /// @dev Not implemented536 /// @dev EVM selector for this function is: 0x7d64bcb4,537 /// or in textual repr: finishMinting()538 function finishMinting() public returns (bool) {539 require(false, stub_error);540 dummy = 0;541 return false;542 }543}544545/// @title Unique extensions for ERC721.546/// @dev the ERC-165 identifier for this interface is 0xd74d154f547contract ERC721UniqueExtensions is Dummy, ERC165 {548 /// @notice Transfer ownership of an NFT549 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`550 /// is the zero address. Throws if `tokenId` is not a valid NFT.551 /// @param to The new owner552 /// @param tokenId The NFT to transfer553 /// @dev EVM selector for this function is: 0xa9059cbb,554 /// or in textual repr: transfer(address,uint256)555 function transfer(address to, uint256 tokenId) public {556 require(false, stub_error);557 to;558 tokenId;559 dummy = 0;560 }561562 /// @notice Burns a specific ERC721 token.563 /// @dev Throws unless `msg.sender` is the current owner or an authorized564 /// operator for this NFT. Throws if `from` is not the current owner. Throws565 /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.566 /// @param from The current owner of the NFT567 /// @param tokenId The NFT to transfer568 /// @dev EVM selector for this function is: 0x79cc6790,569 /// or in textual repr: burnFrom(address,uint256)570 function burnFrom(address from, uint256 tokenId) public {571 require(false, stub_error);572 from;573 tokenId;574 dummy = 0;575 }576577 /// @notice Returns next free NFT ID.578 /// @dev EVM selector for this function is: 0x75794a3c,579 /// or in textual repr: nextTokenId()580 function nextTokenId() public view returns (uint256) {581 require(false, stub_error);582 dummy;583 return 0;584 }585586 /// @notice Function to mint multiple tokens.587 /// @dev `tokenIds` should be an array of consecutive numbers and first number588 /// should be obtained with `nextTokenId` method589 /// @param to The new owner590 /// @param tokenIds IDs of the minted NFTs591 /// @dev EVM selector for this function is: 0x44a9945e,592 /// or in textual repr: mintBulk(address,uint256[])593 function mintBulk(address to, uint256[] memory tokenIds) public returns (bool) {594 require(false, stub_error);595 to;596 tokenIds;597 dummy = 0;598 return false;599 }600601 /// @notice Function to mint multiple tokens with the given tokenUris.602 /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive603 /// numbers and first number should be obtained with `nextTokenId` method604 /// @param to The new owner605 /// @param tokens array of pairs of token ID and token URI for minted tokens606 /// @dev EVM selector for this function is: 0x36543006,607 /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])608 function mintBulkWithTokenURI(address to, Tuple8[] memory tokens) public returns (bool) {609 require(false, stub_error);610 to;611 tokens;612 dummy = 0;613 return false;614 }615}616617/// @dev anonymous struct618struct Tuple8 {619 uint256 field_0;620 string field_1;621}622623/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension624/// @dev See https://eips.ethereum.org/EIPS/eip-721625/// @dev the ERC-165 identifier for this interface is 0x780e9d63626contract ERC721Enumerable is Dummy, ERC165 {627 /// @notice Enumerate valid NFTs628 /// @param index A counter less than `totalSupply()`629 /// @return The token identifier for the `index`th NFT,630 /// (sort order not specified)631 /// @dev EVM selector for this function is: 0x4f6ccce7,632 /// or in textual repr: tokenByIndex(uint256)633 function tokenByIndex(uint256 index) public view returns (uint256) {634 require(false, stub_error);635 index;636 dummy;637 return 0;638 }639640 /// @dev Not implemented641 /// @dev EVM selector for this function is: 0x2f745c59,642 /// or in textual repr: tokenOfOwnerByIndex(address,uint256)643 function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {644 require(false, stub_error);645 owner;646 index;647 dummy;648 return 0;649 }650651 /// @notice Count NFTs tracked by this contract652 /// @return A count of valid NFTs tracked by this contract, where each one of653 /// them has an assigned and queryable owner not equal to the zero address654 /// @dev EVM selector for this function is: 0x18160ddd,655 /// or in textual repr: totalSupply()656 function totalSupply() public view returns (uint256) {657 require(false, stub_error);658 dummy;659 return 0;660 }661}662663/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension664/// @dev See https://eips.ethereum.org/EIPS/eip-721665/// @dev the ERC-165 identifier for this interface is 0x5b5e139f666contract ERC721Metadata is Dummy, ERC165 {667 /// @notice A descriptive name for a collection of NFTs in this contract668 /// @dev EVM selector for this function is: 0x06fdde03,669 /// or in textual repr: name()670 function name() public view returns (string memory) {671 require(false, stub_error);672 dummy;673 return "";674 }675676 /// @notice An abbreviated name for NFTs in this contract677 /// @dev EVM selector for this function is: 0x95d89b41,678 /// or in textual repr: symbol()679 function symbol() public view returns (string memory) {680 require(false, stub_error);681 dummy;682 return "";683 }684685 /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.686 ///687 /// @dev If the token has a `url` property and it is not empty, it is returned.688 /// Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.689 /// If the collection property `baseURI` is empty or absent, return "" (empty string)690 /// otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix691 /// otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).692 ///693 /// @return token's const_metadata694 /// @dev EVM selector for this function is: 0xc87b56dd,695 /// or in textual repr: tokenURI(uint256)696 function tokenURI(uint256 tokenId) public view returns (string memory) {697 require(false, stub_error);698 tokenId;699 dummy;700 return "";701 }702}703704/// @dev inlined interface705contract ERC721Events {706 event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);707 event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);708 event ApprovalForAll(address indexed owner, address indexed operator, bool approved);709}710711/// @title ERC-721 Non-Fungible Token Standard712/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md713/// @dev the ERC-165 identifier for this interface is 0x80ac58cd714contract ERC721 is Dummy, ERC165, ERC721Events {715 /// @notice Count all NFTs assigned to an owner716 /// @dev NFTs assigned to the zero address are considered invalid, and this717 /// function throws for queries about the zero address.718 /// @param owner An address for whom to query the balance719 /// @return The number of NFTs owned by `owner`, possibly zero720 /// @dev EVM selector for this function is: 0x70a08231,721 /// or in textual repr: balanceOf(address)722 function balanceOf(address owner) public view returns (uint256) {723 require(false, stub_error);724 owner;725 dummy;726 return 0;727 }728729 /// @notice Find the owner of an NFT730 /// @dev NFTs assigned to zero address are considered invalid, and queries731 /// about them do throw.732 /// @param tokenId The identifier for an NFT733 /// @return The address of the owner of the NFT734 /// @dev EVM selector for this function is: 0x6352211e,735 /// or in textual repr: ownerOf(uint256)736 function ownerOf(uint256 tokenId) public view returns (address) {737 require(false, stub_error);738 tokenId;739 dummy;740 return 0x0000000000000000000000000000000000000000;741 }742743 /// @dev Not implemented744 /// @dev EVM selector for this function is: 0xb88d4fde,745 /// or in textual repr: safeTransferFrom(address,address,uint256,bytes)746 function safeTransferFrom(747 address from,748 address to,749 uint256 tokenId,750 bytes memory data751 ) public {752 require(false, stub_error);753 from;754 to;755 tokenId;756 data;757 dummy = 0;758 }759760 /// @dev Not implemented761 /// @dev EVM selector for this function is: 0x42842e0e,762 /// or in textual repr: safeTransferFrom(address,address,uint256)763 function safeTransferFrom(764 address from,765 address to,766 uint256 tokenId767 ) public {768 require(false, stub_error);769 from;770 to;771 tokenId;772 dummy = 0;773 }774775 /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE776 /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE777 /// THEY MAY BE PERMANENTLY LOST778 /// @dev Throws unless `msg.sender` is the current owner or an authorized779 /// operator for this NFT. Throws if `from` is not the current owner. Throws780 /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.781 /// @param from The current owner of the NFT782 /// @param to The new owner783 /// @param tokenId The NFT to transfer784 /// @dev EVM selector for this function is: 0x23b872dd,785 /// or in textual repr: transferFrom(address,address,uint256)786 function transferFrom(787 address from,788 address to,789 uint256 tokenId790 ) public {791 require(false, stub_error);792 from;793 to;794 tokenId;795 dummy = 0;796 }797798 /// @notice Set or reaffirm the approved address for an NFT799 /// @dev The zero address indicates there is no approved address.800 /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized801 /// operator of the current owner.802 /// @param approved The new approved NFT controller803 /// @param tokenId The NFT to approve804 /// @dev EVM selector for this function is: 0x095ea7b3,805 /// or in textual repr: approve(address,uint256)806 function approve(address approved, uint256 tokenId) public {807 require(false, stub_error);808 approved;809 tokenId;810 dummy = 0;811 }812813 /// @dev Not implemented814 /// @dev EVM selector for this function is: 0xa22cb465,815 /// or in textual repr: setApprovalForAll(address,bool)816 function setApprovalForAll(address operator, bool approved) public {817 require(false, stub_error);818 operator;819 approved;820 dummy = 0;821 }822823 /// @dev Not implemented824 /// @dev EVM selector for this function is: 0x081812fc,825 /// or in textual repr: getApproved(uint256)826 function getApproved(uint256 tokenId) public view returns (address) {827 require(false, stub_error);828 tokenId;829 dummy;830 return 0x0000000000000000000000000000000000000000;831 }832833 /// @dev Not implemented834 /// @dev EVM selector for this function is: 0xe985e9c5,835 /// or in textual repr: isApprovedForAll(address,address)836 function isApprovedForAll(address owner, address operator) public view returns (address) {837 require(false, stub_error);838 owner;839 operator;840 dummy;841 return 0x0000000000000000000000000000000000000000;842 }843}844845contract UniqueNFT is846 Dummy,847 ERC165,848 ERC721,849 ERC721Metadata,850 ERC721Enumerable,851 ERC721UniqueExtensions,852 ERC721Mintable,853 ERC721Burnable,854 Collection,855 TokenProperties856{}