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)14 external15 view16 returns (bool)17 {18 require(false, stub_error);19 interfaceID;20 return true;21 }22}2324/// @title A contract that allows to set and delete token properties and change token property permissions.25/// @dev the ERC-165 identifier for this interface is 0x4136937726contract TokenProperties is Dummy, ERC165 {27 /// @notice Set permissions for token property.28 /// @dev Throws error if `msg.sender` is not admin or owner of the collection.29 /// @param key Property key.30 /// @param isMutable Permission to mutate property.31 /// @param collectionAdmin Permission to mutate property by collection admin if property is mutable.32 /// @param tokenOwner Permission to mutate property by token owner if property is mutable.33 /// @dev EVM selector for this function is: 0x222d97fa,34 /// or in textual repr: setTokenPropertyPermission(string,bool,bool,bool)35 function setTokenPropertyPermission(36 string memory key,37 bool isMutable,38 bool collectionAdmin,39 bool tokenOwner40 ) public {41 require(false, stub_error);42 key;43 isMutable;44 collectionAdmin;45 tokenOwner;46 dummy = 0;47 }4849 /// @notice Set token property value.50 /// @dev Throws error if `msg.sender` has no permission to edit the property.51 /// @param tokenId ID of the token.52 /// @param key Property key.53 /// @param value Property value.54 /// @dev EVM selector for this function is: 0x1752d67b,55 /// or in textual repr: setProperty(uint256,string,bytes)56 function setProperty(57 uint256 tokenId,58 string memory key,59 bytes memory value60 ) public {61 require(false, stub_error);62 tokenId;63 key;64 value;65 dummy = 0;66 }6768 /// @notice Delete token property value.69 /// @dev Throws error if `msg.sender` has no permission to edit the property.70 /// @param tokenId ID of the token.71 /// @param key Property key.72 /// @dev EVM selector for this function is: 0x066111d1,73 /// or in textual repr: deleteProperty(uint256,string)74 function deleteProperty(uint256 tokenId, string memory key) public {75 require(false, stub_error);76 tokenId;77 key;78 dummy = 0;79 }8081 /// @notice Get token property value.82 /// @dev Throws error if key not found83 /// @param tokenId ID of the token.84 /// @param key Property key.85 /// @return Property value bytes86 /// @dev EVM selector for this function is: 0x7228c327,87 /// or in textual repr: property(uint256,string)88 function property(uint256 tokenId, string memory key)89 public90 view91 returns (bytes memory)92 {93 require(false, stub_error);94 tokenId;95 key;96 dummy;97 return hex"";98 }99}100101/// @title A contract that allows you to work with collections.102/// @dev the ERC-165 identifier for this interface is 0x9f70d4e0103contract Collection is Dummy, ERC165 {104 /// Set collection property.105 ///106 /// @param key Property key.107 /// @param value Propery value.108 /// @dev EVM selector for this function is: 0x2f073f66,109 /// or in textual repr: setCollectionProperty(string,bytes)110 function setCollectionProperty(string memory key, bytes memory value)111 public112 {113 require(false, stub_error);114 key;115 value;116 dummy = 0;117 }118119 /// Delete collection property.120 ///121 /// @param key Property key.122 /// @dev EVM selector for this function is: 0x7b7debce,123 /// or in textual repr: deleteCollectionProperty(string)124 function deleteCollectionProperty(string memory key) public {125 require(false, stub_error);126 key;127 dummy = 0;128 }129130 /// Get collection property.131 ///132 /// @dev Throws error if key not found.133 ///134 /// @param key Property key.135 /// @return bytes The property corresponding to the key.136 /// @dev EVM selector for this function is: 0xcf24fd6d,137 /// or in textual repr: collectionProperty(string)138 function collectionProperty(string memory key)139 public140 view141 returns (bytes memory)142 {143 require(false, stub_error);144 key;145 dummy;146 return hex"";147 }148149 /// Set the sponsor of the collection.150 ///151 /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.152 ///153 /// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.154 /// @dev EVM selector for this function is: 0x7623402e,155 /// or in textual repr: setCollectionSponsor(address)156 function setCollectionSponsor(address sponsor) public {157 require(false, stub_error);158 sponsor;159 dummy = 0;160 }161162 /// Set the substrate sponsor of the collection.163 ///164 /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.165 ///166 /// @param sponsor Substrate address of the sponsor from whose account funds will be debited for operations with the contract.167 /// @dev EVM selector for this function is: 0xc74d6751,168 /// or in textual repr: setCollectionSponsorSubstrate(uint256)169 function setCollectionSponsorSubstrate(uint256 sponsor) public {170 require(false, stub_error);171 sponsor;172 dummy = 0;173 }174175 /// @dev EVM selector for this function is: 0x058ac185,176 /// or in textual repr: hasCollectionPendingSponsor()177 function hasCollectionPendingSponsor() public view returns (bool) {178 require(false, stub_error);179 dummy;180 return false;181 }182183 /// Collection sponsorship confirmation.184 ///185 /// @dev After setting the sponsor for the collection, it must be confirmed with this function.186 /// @dev EVM selector for this function is: 0x3c50e97a,187 /// or in textual repr: confirmCollectionSponsorship()188 function confirmCollectionSponsorship() public {189 require(false, stub_error);190 dummy = 0;191 }192193 /// Remove collection sponsor.194 /// @dev EVM selector for this function is: 0x6e0326a3,195 /// or in textual repr: removeCollectionSponsor()196 function removeCollectionSponsor() public {197 require(false, stub_error);198 dummy = 0;199 }200201 /// Get current sponsor.202 ///203 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.204 /// @dev EVM selector for this function is: 0xb66bbc14,205 /// or in textual repr: getCollectionSponsor()206 function getCollectionSponsor() public view returns (Tuple17 memory) {207 require(false, stub_error);208 dummy;209 return Tuple17(0x0000000000000000000000000000000000000000, 0);210 }211212 /// Set limits for the collection.213 /// @dev Throws error if limit not found.214 /// @param limit Name of the limit. Valid names:215 /// "accountTokenOwnershipLimit",216 /// "sponsoredDataSize",217 /// "sponsoredDataRateLimit",218 /// "tokenLimit",219 /// "sponsorTransferTimeout",220 /// "sponsorApproveTimeout"221 /// @param value Value of the limit.222 /// @dev EVM selector for this function is: 0x6a3841db,223 /// or in textual repr: setCollectionLimit(string,uint32)224 function setCollectionLimit(string memory limit, uint32 value) public {225 require(false, stub_error);226 limit;227 value;228 dummy = 0;229 }230231 /// Set limits for the collection.232 /// @dev Throws error if limit not found.233 /// @param limit Name of the limit. Valid names:234 /// "ownerCanTransfer",235 /// "ownerCanDestroy",236 /// "transfersEnabled"237 /// @param value Value of the limit.238 /// @dev EVM selector for this function is: 0x993b7fba,239 /// or in textual repr: setCollectionLimit(string,bool)240 function setCollectionLimit(string memory limit, bool value) public {241 require(false, stub_error);242 limit;243 value;244 dummy = 0;245 }246247 /// Get contract address.248 /// @dev EVM selector for this function is: 0xf6b4dfb4,249 /// or in textual repr: contractAddress()250 function contractAddress() public view returns (address) {251 require(false, stub_error);252 dummy;253 return 0x0000000000000000000000000000000000000000;254 }255256 /// Add collection admin by substrate address.257 /// @param newAdmin Substrate administrator address.258 /// @dev EVM selector for this function is: 0x5730062b,259 /// or in textual repr: addCollectionAdminSubstrate(uint256)260 function addCollectionAdminSubstrate(uint256 newAdmin) public {261 require(false, stub_error);262 newAdmin;263 dummy = 0;264 }265266 /// Remove collection admin by substrate address.267 /// @param admin Substrate administrator address.268 /// @dev EVM selector for this function is: 0x4048fcf9,269 /// or in textual repr: removeCollectionAdminSubstrate(uint256)270 function removeCollectionAdminSubstrate(uint256 admin) public {271 require(false, stub_error);272 admin;273 dummy = 0;274 }275276 /// Add collection admin.277 /// @param newAdmin Address of the added administrator.278 /// @dev EVM selector for this function is: 0x92e462c7,279 /// or in textual repr: addCollectionAdmin(address)280 function addCollectionAdmin(address newAdmin) public {281 require(false, stub_error);282 newAdmin;283 dummy = 0;284 }285286 /// Remove collection admin.287 ///288 /// @param admin Address of the removed administrator.289 /// @dev EVM selector for this function is: 0xfafd7b42,290 /// or in textual repr: removeCollectionAdmin(address)291 function removeCollectionAdmin(address admin) public {292 require(false, stub_error);293 admin;294 dummy = 0;295 }296297 /// Toggle accessibility of collection nesting.298 ///299 /// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'300 /// @dev EVM selector for this function is: 0x112d4586,301 /// or in textual repr: setCollectionNesting(bool)302 function setCollectionNesting(bool enable) public {303 require(false, stub_error);304 enable;305 dummy = 0;306 }307308 /// Toggle accessibility of collection nesting.309 ///310 /// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'311 /// @param collections Addresses of collections that will be available for nesting.312 /// @dev EVM selector for this function is: 0x64872396,313 /// or in textual repr: setCollectionNesting(bool,address[])314 function setCollectionNesting(bool enable, address[] memory collections)315 public316 {317 require(false, stub_error);318 enable;319 collections;320 dummy = 0;321 }322323 /// Set the collection access method.324 /// @param mode Access mode325 /// 0 for Normal326 /// 1 for AllowList327 /// @dev EVM selector for this function is: 0x41835d4c,328 /// or in textual repr: setCollectionAccess(uint8)329 function setCollectionAccess(uint8 mode) public {330 require(false, stub_error);331 mode;332 dummy = 0;333 }334335 /// Checks that user allowed to operate with collection.336 ///337 /// @param user User address to check.338 /// @dev EVM selector for this function is: 0xd63a8e11,339 /// or in textual repr: allowed(address)340 function allowed(address user) public view returns (bool) {341 require(false, stub_error);342 user;343 dummy;344 return false;345 }346347 /// Add the user to the allowed list.348 ///349 /// @param user Address of a trusted user.350 /// @dev EVM selector for this function is: 0x67844fe6,351 /// or in textual repr: addToCollectionAllowList(address)352 function addToCollectionAllowList(address user) public {353 require(false, stub_error);354 user;355 dummy = 0;356 }357358 /// Add substrate user to allowed list.359 ///360 /// @param user User substrate address.361 /// @dev EVM selector for this function is: 0xd06ad267,362 /// or in textual repr: addToCollectionAllowListSubstrate(uint256)363 function addToCollectionAllowListSubstrate(uint256 user) public {364 require(false, stub_error);365 user;366 dummy = 0;367 }368369 /// Remove the user from the allowed list.370 ///371 /// @param user Address of a removed user.372 /// @dev EVM selector for this function is: 0x85c51acb,373 /// or in textual repr: removeFromCollectionAllowList(address)374 function removeFromCollectionAllowList(address user) public {375 require(false, stub_error);376 user;377 dummy = 0;378 }379380 /// Remove substrate user from allowed list.381 ///382 /// @param user User substrate address.383 /// @dev EVM selector for this function is: 0xa31913ed,384 /// or in textual repr: removeFromCollectionAllowListSubstrate(uint256)385 function removeFromCollectionAllowListSubstrate(uint256 user) public {386 require(false, stub_error);387 user;388 dummy = 0;389 }390391 /// Switch permission for minting.392 ///393 /// @param mode Enable if "true".394 /// @dev EVM selector for this function is: 0x00018e84,395 /// or in textual repr: setCollectionMintMode(bool)396 function setCollectionMintMode(bool mode) public {397 require(false, stub_error);398 mode;399 dummy = 0;400 }401402 /// Check that account is the owner or admin of the collection403 ///404 /// @param user account to verify405 /// @return "true" if account is the owner or admin406 /// @dev EVM selector for this function is: 0x9811b0c7,407 /// or in textual repr: isOwnerOrAdmin(address)408 function isOwnerOrAdmin(address user) public view returns (bool) {409 require(false, stub_error);410 user;411 dummy;412 return false;413 }414415 /// Check that substrate account is the owner or admin of the collection416 ///417 /// @param user account to verify418 /// @return "true" if account is the owner or admin419 /// @dev EVM selector for this function is: 0x68910e00,420 /// or in textual repr: isOwnerOrAdminSubstrate(uint256)421 function isOwnerOrAdminSubstrate(uint256 user) public view returns (bool) {422 require(false, stub_error);423 user;424 dummy;425 return false;426 }427428 /// Returns collection type429 ///430 /// @return `Fungible` or `NFT` or `ReFungible`431 /// @dev EVM selector for this function is: 0xd34b55b8,432 /// or in textual repr: uniqueCollectionType()433 function uniqueCollectionType() public returns (string memory) {434 require(false, stub_error);435 dummy = 0;436 return "";437 }438439 /// Get collection owner.440 ///441 /// @return Tuble with sponsor address and his substrate mirror.442 /// If address is canonical then substrate mirror is zero and vice versa.443 /// @dev EVM selector for this function is: 0xdf727d3b,444 /// or in textual repr: collectionOwner()445 function collectionOwner() public view returns (Tuple17 memory) {446 require(false, stub_error);447 dummy;448 return Tuple17(0x0000000000000000000000000000000000000000, 0);449 }450451 /// Changes collection owner to another account452 ///453 /// @dev Owner can be changed only by current owner454 /// @param newOwner new owner account455 /// @dev EVM selector for this function is: 0x13af4035,456 /// or in textual repr: setOwner(address)457 function setOwner(address newOwner) public {458 require(false, stub_error);459 newOwner;460 dummy = 0;461 }462463 /// Changes collection owner to another substrate account464 ///465 /// @dev Owner can be changed only by current owner466 /// @param newOwner new owner substrate account467 /// @dev EVM selector for this function is: 0xb212138f,468 /// or in textual repr: setOwnerSubstrate(uint256)469 function setOwnerSubstrate(uint256 newOwner) public {470 require(false, stub_error);471 newOwner;472 dummy = 0;473 }474}475476/// @dev anonymous struct477struct Tuple17 {478 address field_0;479 uint256 field_1;480}481482/// @title ERC721 Token that can be irreversibly burned (destroyed).483/// @dev the ERC-165 identifier for this interface is 0x42966c68484contract ERC721Burnable is Dummy, ERC165 {485 /// @notice Burns a specific ERC721 token.486 /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized487 /// operator of the current owner.488 /// @param tokenId The NFT to approve489 /// @dev EVM selector for this function is: 0x42966c68,490 /// or in textual repr: burn(uint256)491 function burn(uint256 tokenId) public {492 require(false, stub_error);493 tokenId;494 dummy = 0;495 }496}497498/// @dev inlined interface499contract ERC721MintableEvents {500 event MintingFinished();501}502503/// @title ERC721 minting logic.504/// @dev the ERC-165 identifier for this interface is 0x68ccfe89505contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {506 /// @dev EVM selector for this function is: 0x05d2035b,507 /// or in textual repr: mintingFinished()508 function mintingFinished() public view returns (bool) {509 require(false, stub_error);510 dummy;511 return false;512 }513514 /// @notice Function to mint token.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 /// @dev EVM selector for this function is: 0x40c10f19,520 /// or in textual repr: mint(address,uint256)521 function mint(address to, uint256 tokenId) public returns (bool) {522 require(false, stub_error);523 to;524 tokenId;525 dummy = 0;526 return false;527 }528529 /// @notice Function to mint token with the given tokenUri.530 /// @dev `tokenId` should be obtained with `nextTokenId` method,531 /// unlike standard, you can't specify it manually532 /// @param to The new owner533 /// @param tokenId ID of the minted NFT534 /// @param tokenUri Token URI that would be stored in the NFT properties535 /// @dev EVM selector for this function is: 0x50bb4e7f,536 /// or in textual repr: mintWithTokenURI(address,uint256,string)537 function mintWithTokenURI(538 address to,539 uint256 tokenId,540 string memory tokenUri541 ) public returns (bool) {542 require(false, stub_error);543 to;544 tokenId;545 tokenUri;546 dummy = 0;547 return false;548 }549550 /// @dev Not implemented551 /// @dev EVM selector for this function is: 0x7d64bcb4,552 /// or in textual repr: finishMinting()553 function finishMinting() public returns (bool) {554 require(false, stub_error);555 dummy = 0;556 return false;557 }558}559560/// @title Unique extensions for ERC721.561/// @dev the ERC-165 identifier for this interface is 0xd74d154f562contract ERC721UniqueExtensions is Dummy, ERC165 {563 /// @notice Transfer ownership of an NFT564 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`565 /// is the zero address. Throws if `tokenId` is not a valid NFT.566 /// @param to The new owner567 /// @param tokenId The NFT to transfer568 /// @dev EVM selector for this function is: 0xa9059cbb,569 /// or in textual repr: transfer(address,uint256)570 function transfer(address to, uint256 tokenId) public {571 require(false, stub_error);572 to;573 tokenId;574 dummy = 0;575 }576577 /// @notice Burns a specific ERC721 token.578 /// @dev Throws unless `msg.sender` is the current owner or an authorized579 /// operator for this NFT. Throws if `from` is not the current owner. Throws580 /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.581 /// @param from The current owner of the NFT582 /// @param tokenId The NFT to transfer583 /// @dev EVM selector for this function is: 0x79cc6790,584 /// or in textual repr: burnFrom(address,uint256)585 function burnFrom(address from, uint256 tokenId) public {586 require(false, stub_error);587 from;588 tokenId;589 dummy = 0;590 }591592 /// @notice Returns next free NFT ID.593 /// @dev EVM selector for this function is: 0x75794a3c,594 /// or in textual repr: nextTokenId()595 function nextTokenId() public view returns (uint256) {596 require(false, stub_error);597 dummy;598 return 0;599 }600601 /// @notice Function to mint multiple tokens.602 /// @dev `tokenIds` should be an array of consecutive numbers and first number603 /// should be obtained with `nextTokenId` method604 /// @param to The new owner605 /// @param tokenIds IDs of the minted NFTs606 /// @dev EVM selector for this function is: 0x44a9945e,607 /// or in textual repr: mintBulk(address,uint256[])608 function mintBulk(address to, uint256[] memory tokenIds)609 public610 returns (bool)611 {612 require(false, stub_error);613 to;614 tokenIds;615 dummy = 0;616 return false;617 }618619 /// @notice Function to mint multiple tokens with the given tokenUris.620 /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive621 /// numbers and first number should be obtained with `nextTokenId` method622 /// @param to The new owner623 /// @param tokens array of pairs of token ID and token URI for minted tokens624 /// @dev EVM selector for this function is: 0x36543006,625 /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])626 function mintBulkWithTokenURI(address to, Tuple8[] memory tokens)627 public628 returns (bool)629 {630 require(false, stub_error);631 to;632 tokens;633 dummy = 0;634 return false;635 }636}637638/// @dev anonymous struct639struct Tuple8 {640 uint256 field_0;641 string field_1;642}643644/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension645/// @dev See https://eips.ethereum.org/EIPS/eip-721646/// @dev the ERC-165 identifier for this interface is 0x780e9d63647contract ERC721Enumerable is Dummy, ERC165 {648 /// @notice Enumerate valid NFTs649 /// @param index A counter less than `totalSupply()`650 /// @return The token identifier for the `index`th NFT,651 /// (sort order not specified)652 /// @dev EVM selector for this function is: 0x4f6ccce7,653 /// or in textual repr: tokenByIndex(uint256)654 function tokenByIndex(uint256 index) public view returns (uint256) {655 require(false, stub_error);656 index;657 dummy;658 return 0;659 }660661 /// @dev Not implemented662 /// @dev EVM selector for this function is: 0x2f745c59,663 /// or in textual repr: tokenOfOwnerByIndex(address,uint256)664 function tokenOfOwnerByIndex(address owner, uint256 index)665 public666 view667 returns (uint256)668 {669 require(false, stub_error);670 owner;671 index;672 dummy;673 return 0;674 }675676 /// @notice Count NFTs tracked by this contract677 /// @return A count of valid NFTs tracked by this contract, where each one of678 /// them has an assigned and queryable owner not equal to the zero address679 /// @dev EVM selector for this function is: 0x18160ddd,680 /// or in textual repr: totalSupply()681 function totalSupply() public view returns (uint256) {682 require(false, stub_error);683 dummy;684 return 0;685 }686}687688/// @title ERC-721 Non-Fungible Token Standard, optional metadata extension689/// @dev See https://eips.ethereum.org/EIPS/eip-721690/// @dev the ERC-165 identifier for this interface is 0x5b5e139f691contract ERC721Metadata is Dummy, ERC165 {692 /// @notice A descriptive name for a collection of NFTs in this contract693 /// @dev EVM selector for this function is: 0x06fdde03,694 /// or in textual repr: name()695 function name() public view returns (string memory) {696 require(false, stub_error);697 dummy;698 return "";699 }700701 /// @notice An abbreviated name for NFTs in this contract702 /// @dev EVM selector for this function is: 0x95d89b41,703 /// or in textual repr: symbol()704 function symbol() public view returns (string memory) {705 require(false, stub_error);706 dummy;707 return "";708 }709710 /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.711 ///712 /// @dev If the token has a `url` property and it is not empty, it is returned.713 /// 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`.714 /// If the collection property `baseURI` is empty or absent, return "" (empty string)715 /// otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix716 /// otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).717 ///718 /// @return token's const_metadata719 /// @dev EVM selector for this function is: 0xc87b56dd,720 /// or in textual repr: tokenURI(uint256)721 function tokenURI(uint256 tokenId) public view returns (string memory) {722 require(false, stub_error);723 tokenId;724 dummy;725 return "";726 }727}728729/// @dev inlined interface730contract ERC721Events {731 event Transfer(732 address indexed from,733 address indexed to,734 uint256 indexed tokenId735 );736 event Approval(737 address indexed owner,738 address indexed approved,739 uint256 indexed tokenId740 );741 event ApprovalForAll(742 address indexed owner,743 address indexed operator,744 bool approved745 );746}747748/// @title ERC-721 Non-Fungible Token Standard749/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md750/// @dev the ERC-165 identifier for this interface is 0x80ac58cd751contract ERC721 is Dummy, ERC165, ERC721Events {752 /// @notice Count all NFTs assigned to an owner753 /// @dev NFTs assigned to the zero address are considered invalid, and this754 /// function throws for queries about the zero address.755 /// @param owner An address for whom to query the balance756 /// @return The number of NFTs owned by `owner`, possibly zero757 /// @dev EVM selector for this function is: 0x70a08231,758 /// or in textual repr: balanceOf(address)759 function balanceOf(address owner) public view returns (uint256) {760 require(false, stub_error);761 owner;762 dummy;763 return 0;764 }765766 /// @notice Find the owner of an NFT767 /// @dev NFTs assigned to zero address are considered invalid, and queries768 /// about them do throw.769 /// @param tokenId The identifier for an NFT770 /// @return The address of the owner of the NFT771 /// @dev EVM selector for this function is: 0x6352211e,772 /// or in textual repr: ownerOf(uint256)773 function ownerOf(uint256 tokenId) public view returns (address) {774 require(false, stub_error);775 tokenId;776 dummy;777 return 0x0000000000000000000000000000000000000000;778 }779780 /// @dev Not implemented781 /// @dev EVM selector for this function is: 0xb88d4fde,782 /// or in textual repr: safeTransferFrom(address,address,uint256,bytes)783 function safeTransferFrom(784 address from,785 address to,786 uint256 tokenId,787 bytes memory data788 ) public {789 require(false, stub_error);790 from;791 to;792 tokenId;793 data;794 dummy = 0;795 }796797 /// @dev Not implemented798 /// @dev EVM selector for this function is: 0x42842e0e,799 /// or in textual repr: safeTransferFrom(address,address,uint256)800 function safeTransferFrom(801 address from,802 address to,803 uint256 tokenId804 ) public {805 require(false, stub_error);806 from;807 to;808 tokenId;809 dummy = 0;810 }811812 /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE813 /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE814 /// THEY MAY BE PERMANENTLY LOST815 /// @dev Throws unless `msg.sender` is the current owner or an authorized816 /// operator for this NFT. Throws if `from` is not the current owner. Throws817 /// if `to` is the zero address. Throws if `tokenId` is not a valid NFT.818 /// @param from The current owner of the NFT819 /// @param to The new owner820 /// @param tokenId The NFT to transfer821 /// @dev EVM selector for this function is: 0x23b872dd,822 /// or in textual repr: transferFrom(address,address,uint256)823 function transferFrom(824 address from,825 address to,826 uint256 tokenId827 ) public {828 require(false, stub_error);829 from;830 to;831 tokenId;832 dummy = 0;833 }834835 /// @notice Set or reaffirm the approved address for an NFT836 /// @dev The zero address indicates there is no approved address.837 /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized838 /// operator of the current owner.839 /// @param approved The new approved NFT controller840 /// @param tokenId The NFT to approve841 /// @dev EVM selector for this function is: 0x095ea7b3,842 /// or in textual repr: approve(address,uint256)843 function approve(address approved, uint256 tokenId) public {844 require(false, stub_error);845 approved;846 tokenId;847 dummy = 0;848 }849850 /// @dev Not implemented851 /// @dev EVM selector for this function is: 0xa22cb465,852 /// or in textual repr: setApprovalForAll(address,bool)853 function setApprovalForAll(address operator, bool approved) public {854 require(false, stub_error);855 operator;856 approved;857 dummy = 0;858 }859860 /// @dev Not implemented861 /// @dev EVM selector for this function is: 0x081812fc,862 /// or in textual repr: getApproved(uint256)863 function getApproved(uint256 tokenId) public view returns (address) {864 require(false, stub_error);865 tokenId;866 dummy;867 return 0x0000000000000000000000000000000000000000;868 }869870 /// @dev Not implemented871 /// @dev EVM selector for this function is: 0xe985e9c5,872 /// or in textual repr: isApprovedForAll(address,address)873 function isApprovedForAll(address owner, address operator)874 public875 view876 returns (address)877 {878 require(false, stub_error);879 owner;880 operator;881 dummy;882 return 0x0000000000000000000000000000000000000000;883 }884}885886contract UniqueNFT is887 Dummy,888 ERC165,889 ERC721,890 ERC721Metadata,891 ERC721Enumerable,892 ERC721UniqueExtensions,893 ERC721Mintable,894 ERC721Burnable,895 Collection,896 TokenProperties897{}