1// SPDX-License-Identifier: OTHER2// This code is automatically generated34pragma solidity >=0.8.0 <0.9.0;56// Anonymous struct7struct Tuple0 {8 uint256 field_0;9 string field_1;10}1112// Common stubs holder13contract Dummy {14 uint8 dummy;15 string stub_error = "this contract is implemented in native";16}1718contract ERC165 is Dummy {19 function supportsInterface(bytes4 interfaceID)20 external21 view22 returns (bool)23 {24 require(false, stub_error);25 interfaceID;26 return true;27 }28}2930// Inline31contract ERC721Events {32 event Transfer(33 address indexed from,34 address indexed to,35 uint256 indexed tokenId36 );37 event Approval(38 address indexed owner,39 address indexed approved,40 uint256 indexed tokenId41 );42 event ApprovalForAll(43 address indexed owner,44 address indexed operator,45 bool approved46 );47}4849// Inline50contract ERC721MintableEvents {51 event MintingFinished();52}5354// Selector: 4136937755contract TokenProperties is Dummy, ERC165 {56 // @notice Set permissions for token property.57 // @dev Throws error if `msg.sender` is not admin or owner of the collection.58 // @param key Property key.59 // @param is_mutable Permission to mutate property.60 // @param collection_admin Permission to mutate property by collection admin if property is mutable.61 // @param token_owner Permission to mutate property by token owner if property is mutable.62 //63 // Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa64 function setTokenPropertyPermission(65 string memory key,66 bool isMutable,67 bool collectionAdmin,68 bool tokenOwner69 ) public {70 require(false, stub_error);71 key;72 isMutable;73 collectionAdmin;74 tokenOwner;75 dummy = 0;76 }7778 // @notice Set token property value.79 // @dev Throws error if `msg.sender` has no permission to edit the property.80 // @param tokenId ID of the token.81 // @param key Property key.82 // @param value Property value.83 //84 // Selector: setProperty(uint256,string,bytes) 1752d67b85 function setProperty(86 uint256 tokenId,87 string memory key,88 bytes memory value89 ) public {90 require(false, stub_error);91 tokenId;92 key;93 value;94 dummy = 0;95 }9697 // @notice Delete token property value.98 // @dev Throws error if `msg.sender` has no permission to edit the property.99 // @param tokenId ID of the token.100 // @param key Property key.101 //102 // Selector: deleteProperty(uint256,string) 066111d1103 function deleteProperty(uint256 tokenId, string memory key) public {104 require(false, stub_error);105 tokenId;106 key;107 dummy = 0;108 }109110 // @notice Get token property value.111 // @dev Throws error if key not found112 // @param tokenId ID of the token.113 // @param key Property key.114 // @return Property value bytes115 //116 // Selector: property(uint256,string) 7228c327117 function property(uint256 tokenId, string memory key)118 public119 view120 returns (bytes memory)121 {122 require(false, stub_error);123 tokenId;124 key;125 dummy;126 return hex"";127 }128}129130// Selector: 42966c68131contract ERC721Burnable is Dummy, ERC165 {132 // @notice Burns a specific ERC721 token.133 // @dev Throws unless `msg.sender` is the current NFT owner, or an authorized134 // operator of the current owner.135 // @param tokenId The NFT to approve136 //137 // Selector: burn(uint256) 42966c68138 function burn(uint256 tokenId) public {139 require(false, stub_error);140 tokenId;141 dummy = 0;142 }143}144145// Selector: 58800161146contract ERC721 is Dummy, ERC165, ERC721Events {147 // @notice Count all NFTs assigned to an owner148 // @dev NFTs assigned to the zero address are considered invalid, and this149 // function throws for queries about the zero address.150 // @param owner An address for whom to query the balance151 // @return The number of NFTs owned by `owner`, possibly zero152 //153 // Selector: balanceOf(address) 70a08231154 function balanceOf(address owner) public view returns (uint256) {155 require(false, stub_error);156 owner;157 dummy;158 return 0;159 }160161 // @notice Find the owner of an NFT162 // @dev NFTs assigned to zero address are considered invalid, and queries163 // about them do throw.164 // @param tokenId The identifier for an NFT165 // @return The address of the owner of the NFT166 //167 // Selector: ownerOf(uint256) 6352211e168 function ownerOf(uint256 tokenId) public view returns (address) {169 require(false, stub_error);170 tokenId;171 dummy;172 return 0x0000000000000000000000000000000000000000;173 }174175 // @dev Not implemented176 //177 // Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672178 function safeTransferFromWithData(179 address from,180 address to,181 uint256 tokenId,182 bytes memory data183 ) public {184 require(false, stub_error);185 from;186 to;187 tokenId;188 data;189 dummy = 0;190 }191192 // @dev Not implemented193 //194 // Selector: safeTransferFrom(address,address,uint256) 42842e0e195 function safeTransferFrom(196 address from,197 address to,198 uint256 tokenId199 ) public {200 require(false, stub_error);201 from;202 to;203 tokenId;204 dummy = 0;205 }206207 // @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE208 // TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE209 // THEY MAY BE PERMANENTLY LOST210 // @dev Throws unless `msg.sender` is the current owner or an authorized211 // operator for this NFT. Throws if `from` is not the current owner. Throws212 // if `to` is the zero address. Throws if `tokenId` is not a valid NFT.213 // @param from The current owner of the NFT214 // @param to The new owner215 // @param tokenId The NFT to transfer216 // @param _value Not used for an NFT217 //218 // Selector: transferFrom(address,address,uint256) 23b872dd219 function transferFrom(220 address from,221 address to,222 uint256 tokenId223 ) public {224 require(false, stub_error);225 from;226 to;227 tokenId;228 dummy = 0;229 }230231 // @notice Set or reaffirm the approved address for an NFT232 // @dev The zero address indicates there is no approved address.233 // @dev Throws unless `msg.sender` is the current NFT owner, or an authorized234 // operator of the current owner.235 // @param approved The new approved NFT controller236 // @param tokenId The NFT to approve237 //238 // Selector: approve(address,uint256) 095ea7b3239 function approve(address approved, uint256 tokenId) public {240 require(false, stub_error);241 approved;242 tokenId;243 dummy = 0;244 }245246 // @dev Not implemented247 //248 // Selector: setApprovalForAll(address,bool) a22cb465249 function setApprovalForAll(address operator, bool approved) public {250 require(false, stub_error);251 operator;252 approved;253 dummy = 0;254 }255256 // @dev Not implemented257 //258 // Selector: getApproved(uint256) 081812fc259 function getApproved(uint256 tokenId) public view returns (address) {260 require(false, stub_error);261 tokenId;262 dummy;263 return 0x0000000000000000000000000000000000000000;264 }265266 // @dev Not implemented267 //268 // Selector: isApprovedForAll(address,address) e985e9c5269 function isApprovedForAll(address owner, address operator)270 public271 view272 returns (address)273 {274 require(false, stub_error);275 owner;276 operator;277 dummy;278 return 0x0000000000000000000000000000000000000000;279 }280}281282// Selector: 5b5e139f283contract ERC721Metadata is Dummy, ERC165 {284 // @notice A descriptive name for a collection of NFTs in this contract285 //286 // Selector: name() 06fdde03287 function name() public view returns (string memory) {288 require(false, stub_error);289 dummy;290 return "";291 }292293 // @notice An abbreviated name for NFTs in this contract294 //295 // Selector: symbol() 95d89b41296 function symbol() public view returns (string memory) {297 require(false, stub_error);298 dummy;299 return "";300 }301302 // @notice A distinct Uniform Resource Identifier (URI) for a given asset.303 //304 // @dev If the token has a `url` property and it is not empty, it is returned.305 // 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`.306 // If the collection property `baseURI` is empty or absent, return "" (empty string)307 // otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix308 // otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).309 //310 // @return token's const_metadata311 //312 // Selector: tokenURI(uint256) c87b56dd313 function tokenURI(uint256 tokenId) public view returns (string memory) {314 require(false, stub_error);315 tokenId;316 dummy;317 return "";318 }319}320321// Selector: 68ccfe89322contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {323 // Selector: mintingFinished() 05d2035b324 function mintingFinished() public view returns (bool) {325 require(false, stub_error);326 dummy;327 return false;328 }329330 // @notice Function to mint token.331 // @dev `tokenId` should be obtained with `nextTokenId` method,332 // unlike standard, you can't specify it manually333 // @param to The new owner334 // @param tokenId ID of the minted NFT335 //336 // Selector: mint(address,uint256) 40c10f19337 function mint(address to, uint256 tokenId) public returns (bool) {338 require(false, stub_error);339 to;340 tokenId;341 dummy = 0;342 return false;343 }344345 // @notice Function to mint token with the given tokenUri.346 // @dev `tokenId` should be obtained with `nextTokenId` method,347 // unlike standard, you can't specify it manually348 // @param to The new owner349 // @param tokenId ID of the minted NFT350 // @param tokenUri Token URI that would be stored in the NFT properties351 //352 // Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f353 function mintWithTokenURI(354 address to,355 uint256 tokenId,356 string memory tokenUri357 ) public returns (bool) {358 require(false, stub_error);359 to;360 tokenId;361 tokenUri;362 dummy = 0;363 return false;364 }365366 // @dev Not implemented367 //368 // Selector: finishMinting() 7d64bcb4369 function finishMinting() public returns (bool) {370 require(false, stub_error);371 dummy = 0;372 return false;373 }374}375376// Selector: 6cf113cd377contract Collection is Dummy, ERC165 {378 // Set collection property.379 //380 // @param key Property key.381 // @param value Propery value.382 //383 // Selector: setCollectionProperty(string,bytes) 2f073f66384 function setCollectionProperty(string memory key, bytes memory value)385 public386 {387 require(false, stub_error);388 key;389 value;390 dummy = 0;391 }392393 // Delete collection property.394 //395 // @param key Property key.396 //397 // Selector: deleteCollectionProperty(string) 7b7debce398 function deleteCollectionProperty(string memory key) public {399 require(false, stub_error);400 key;401 dummy = 0;402 }403404 // Get collection property.405 //406 // @dev Throws error if key not found.407 //408 // @param key Property key.409 // @return bytes The property corresponding to the key.410 //411 // Selector: collectionProperty(string) cf24fd6d412 function collectionProperty(string memory key)413 public414 view415 returns (bytes memory)416 {417 require(false, stub_error);418 key;419 dummy;420 return hex"";421 }422423 // Set the sponsor of the collection.424 //425 // @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.426 //427 // @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.428 //429 // Selector: setCollectionSponsor(address) 7623402e430 function setCollectionSponsor(address sponsor) public {431 require(false, stub_error);432 sponsor;433 dummy = 0;434 }435436 // Collection sponsorship confirmation.437 //438 // @dev After setting the sponsor for the collection, it must be confirmed with this function.439 //440 // Selector: confirmCollectionSponsorship() 3c50e97a441 function confirmCollectionSponsorship() public {442 require(false, stub_error);443 dummy = 0;444 }445446 // Set limits for the collection.447 // @dev Throws error if limit not found.448 // @param limit Name of the limit. Valid names:449 // "accountTokenOwnershipLimit",450 // "sponsoredDataSize",451 // "sponsoredDataRateLimit",452 // "tokenLimit",453 // "sponsorTransferTimeout",454 // "sponsorApproveTimeout"455 // @param value Value of the limit.456 //457 // Selector: setCollectionLimit(string,uint32) 6a3841db458 function setCollectionLimit(string memory limit, uint32 value) public {459 require(false, stub_error);460 limit;461 value;462 dummy = 0;463 }464465 // Set limits for the collection.466 // @dev Throws error if limit not found.467 // @param limit Name of the limit. Valid names:468 // "ownerCanTransfer",469 // "ownerCanDestroy",470 // "transfersEnabled"471 // @param value Value of the limit.472 //473 // Selector: setCollectionLimit(string,bool) 993b7fba474 function setCollectionLimit(string memory limit, bool value) public {475 require(false, stub_error);476 limit;477 value;478 dummy = 0;479 }480481 // Get contract address.482 //483 // Selector: contractAddress() f6b4dfb4484 function contractAddress() public view returns (address) {485 require(false, stub_error);486 dummy;487 return 0x0000000000000000000000000000000000000000;488 }489490 // Add collection admin by substrate address.491 // @param new_admin Substrate administrator address.492 //493 // Selector: addCollectionAdminSubstrate(uint256) 5730062b494 function addCollectionAdminSubstrate(uint256 newAdmin) public {495 require(false, stub_error);496 newAdmin;497 dummy = 0;498 }499500 // Remove collection admin by substrate address.501 // @param admin Substrate administrator address.502 //503 // Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9504 function removeCollectionAdminSubstrate(uint256 admin) public {505 require(false, stub_error);506 admin;507 dummy = 0;508 }509510 // Add collection admin.511 // @param new_admin Address of the added administrator.512 //513 // Selector: addCollectionAdmin(address) 92e462c7514 function addCollectionAdmin(address newAdmin) public {515 require(false, stub_error);516 newAdmin;517 dummy = 0;518 }519520 // Remove collection admin.521 //522 // @param new_admin Address of the removed administrator.523 //524 // Selector: removeCollectionAdmin(address) fafd7b42525 function removeCollectionAdmin(address admin) public {526 require(false, stub_error);527 admin;528 dummy = 0;529 }530531 // Toggle accessibility of collection nesting.532 //533 // @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'534 //535 // Selector: setCollectionNesting(bool) 112d4586536 function setCollectionNesting(bool enable) public {537 require(false, stub_error);538 enable;539 dummy = 0;540 }541542 // Toggle accessibility of collection nesting.543 //544 // @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'545 // @param collections Addresses of collections that will be available for nesting.546 //547 // Selector: setCollectionNesting(bool,address[]) 64872396548 function setCollectionNesting(bool enable, address[] memory collections)549 public550 {551 require(false, stub_error);552 enable;553 collections;554 dummy = 0;555 }556557 // Set the collection access method.558 // @param mode Access mode559 // 0 for Normal560 // 1 for AllowList561 //562 // Selector: setCollectionAccess(uint8) 41835d4c563 function setCollectionAccess(uint8 mode) public {564 require(false, stub_error);565 mode;566 dummy = 0;567 }568569 // Add the user to the allowed list.570 //571 // @param user Address of a trusted user.572 //573 // Selector: addToCollectionAllowList(address) 67844fe6574 function addToCollectionAllowList(address user) public {575 require(false, stub_error);576 user;577 dummy = 0;578 }579580 // Remove the user from the allowed list.581 //582 // @param user Address of a removed user.583 //584 // Selector: removeFromCollectionAllowList(address) 85c51acb585 function removeFromCollectionAllowList(address user) public {586 require(false, stub_error);587 user;588 dummy = 0;589 }590591 // Switch permission for minting.592 //593 // @param mode Enable if "true".594 //595 // Selector: setCollectionMintMode(bool) 00018e84596 function setCollectionMintMode(bool mode) public {597 require(false, stub_error);598 mode;599 dummy = 0;600 }601602 // Check that account is the owner or admin of the collection603 //604 // @param user account to verify605 // @return "true" if account is the owner or admin606 //607 // Selector: verifyOwnerOrAdmin(address) c2282493608 function verifyOwnerOrAdmin(address user) public view returns (bool) {609 require(false, stub_error);610 user;611 dummy;612 return false;613 }614615 // Returns collection type616 //617 // @return `Fungible` or `NFT` or `ReFungible`618 //619 // Selector: uniqueCollectionType() d34b55b8620 function uniqueCollectionType() public returns (string memory) {621 require(false, stub_error);622 dummy = 0;623 return "";624 }625}626627// Selector: 780e9d63628contract ERC721Enumerable is Dummy, ERC165 {629 // @notice Enumerate valid NFTs630 // @param index A counter less than `totalSupply()`631 // @return The token identifier for the `index`th NFT,632 // (sort order not specified)633 //634 // Selector: tokenByIndex(uint256) 4f6ccce7635 function tokenByIndex(uint256 index) public view returns (uint256) {636 require(false, stub_error);637 index;638 dummy;639 return 0;640 }641642 // @dev Not implemented643 //644 // Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59645 function tokenOfOwnerByIndex(address owner, uint256 index)646 public647 view648 returns (uint256)649 {650 require(false, stub_error);651 owner;652 index;653 dummy;654 return 0;655 }656657 // @notice Count NFTs tracked by this contract658 // @return A count of valid NFTs tracked by this contract, where each one of659 // them has an assigned and queryable owner not equal to the zero address660 //661 // Selector: totalSupply() 18160ddd662 function totalSupply() public view returns (uint256) {663 require(false, stub_error);664 dummy;665 return 0;666 }667}668669// Selector: d74d154f670contract ERC721UniqueExtensions is Dummy, ERC165 {671 // @notice Transfer ownership of an NFT672 // @dev Throws unless `msg.sender` is the current owner. Throws if `to`673 // is the zero address. Throws if `tokenId` is not a valid NFT.674 // @param to The new owner675 // @param tokenId The NFT to transfer676 // @param _value Not used for an NFT677 //678 // Selector: transfer(address,uint256) a9059cbb679 function transfer(address to, uint256 tokenId) public {680 require(false, stub_error);681 to;682 tokenId;683 dummy = 0;684 }685686 // @notice Burns a specific ERC721 token.687 // @dev Throws unless `msg.sender` is the current owner or an authorized688 // operator for this NFT. Throws if `from` is not the current owner. Throws689 // if `to` is the zero address. Throws if `tokenId` is not a valid NFT.690 // @param from The current owner of the NFT691 // @param tokenId The NFT to transfer692 // @param _value Not used for an NFT693 //694 // Selector: burnFrom(address,uint256) 79cc6790695 function burnFrom(address from, uint256 tokenId) public {696 require(false, stub_error);697 from;698 tokenId;699 dummy = 0;700 }701702 // @notice Returns next free NFT ID.703 //704 // Selector: nextTokenId() 75794a3c705 function nextTokenId() public view returns (uint256) {706 require(false, stub_error);707 dummy;708 return 0;709 }710711 // @notice Function to mint multiple tokens.712 // @dev `tokenIds` should be an array of consecutive numbers and first number713 // should be obtained with `nextTokenId` method714 // @param to The new owner715 // @param tokenIds IDs of the minted NFTs716 //717 // Selector: mintBulk(address,uint256[]) 44a9945e718 function mintBulk(address to, uint256[] memory tokenIds)719 public720 returns (bool)721 {722 require(false, stub_error);723 to;724 tokenIds;725 dummy = 0;726 return false;727 }728729 // @notice Function to mint multiple tokens with the given tokenUris.730 // @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive731 // numbers and first number should be obtained with `nextTokenId` method732 // @param to The new owner733 // @param tokens array of pairs of token ID and token URI for minted tokens734 //735 // Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006736 function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)737 public738 returns (bool)739 {740 require(false, stub_error);741 to;742 tokens;743 dummy = 0;744 return false;745 }746}747748contract UniqueNFT is749 Dummy,750 ERC165,751 ERC721,752 ERC721Metadata,753 ERC721Enumerable,754 ERC721UniqueExtensions,755 ERC721Mintable,756 ERC721Burnable,757 Collection,758 TokenProperties759{}