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 0x55dba91922contract 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 Set token properties value.65 /// @dev Throws error if `msg.sender` has no permission to edit the property.66 /// @param tokenId ID of the token.67 /// @param properties settable properties68 /// @dev EVM selector for this function is: 0x14ed3a6e,69 /// or in textual repr: setProperties(uint256,(string,bytes)[])70 function setProperties(uint256 tokenId, Tuple19[] memory properties) public {71 require(false, stub_error);72 tokenId;73 properties;74 dummy = 0;75 }7677 /// @notice Delete token property value.78 /// @dev Throws error if `msg.sender` has no permission to edit the property.79 /// @param tokenId ID of the token.80 /// @param key Property key.81 /// @dev EVM selector for this function is: 0x066111d1,82 /// or in textual repr: deleteProperty(uint256,string)83 function deleteProperty(uint256 tokenId, string memory key) public {84 require(false, stub_error);85 tokenId;86 key;87 dummy = 0;88 }8990 /// @notice Get token property value.91 /// @dev Throws error if key not found92 /// @param tokenId ID of the token.93 /// @param key Property key.94 /// @return Property value bytes95 /// @dev EVM selector for this function is: 0x7228c327,96 /// or in textual repr: property(uint256,string)97 function property(uint256 tokenId, string memory key) public view returns (bytes memory) {98 require(false, stub_error);99 tokenId;100 key;101 dummy;102 return hex"";103 }104}105106/// @title A contract that allows you to work with collections.107/// @dev the ERC-165 identifier for this interface is 0xb3152af3108contract Collection is Dummy, ERC165 {109 /// Set collection property.110 ///111 /// @param key Property key.112 /// @param value Propery value.113 /// @dev EVM selector for this function is: 0x2f073f66,114 /// or in textual repr: setCollectionProperty(string,bytes)115 function setCollectionProperty(string memory key, bytes memory value) public {116 require(false, stub_error);117 key;118 value;119 dummy = 0;120 }121122 /// Set collection properties.123 ///124 /// @param properties Vector of properties key/value pair.125 /// @dev EVM selector for this function is: 0x50b26b2a,126 /// or in textual repr: setCollectionProperties((string,bytes)[])127 function setCollectionProperties(Tuple20[] memory properties) public {128 require(false, stub_error);129 properties;130 dummy = 0;131 }132133 /// Delete collection property.134 ///135 /// @param key Property key.136 /// @dev EVM selector for this function is: 0x7b7debce,137 /// or in textual repr: deleteCollectionProperty(string)138 function deleteCollectionProperty(string memory key) public {139 require(false, stub_error);140 key;141 dummy = 0;142 }143144 /// Delete collection properties.145 ///146 /// @param keys Properties keys.147 /// @dev EVM selector for this function is: 0xee206ee3,148 /// or in textual repr: deleteCollectionProperties(string[])149 function deleteCollectionProperties(string[] memory keys) public {150 require(false, stub_error);151 keys;152 dummy = 0;153 }154155 /// Get collection property.156 ///157 /// @dev Throws error if key not found.158 ///159 /// @param key Property key.160 /// @return bytes The property corresponding to the key.161 /// @dev EVM selector for this function is: 0xcf24fd6d,162 /// or in textual repr: collectionProperty(string)163 function collectionProperty(string memory key) public view returns (bytes memory) {164 require(false, stub_error);165 key;166 dummy;167 return hex"";168 }169170 /// Get collection properties.171 ///172 /// @param keys Properties keys. Empty keys for all propertyes.173 /// @return Vector of properties key/value pairs.174 /// @dev EVM selector for this function is: 0x285fb8e6,175 /// or in textual repr: collectionProperties(string[])176 function collectionProperties(string[] memory keys) public view returns (Tuple20[] memory) {177 require(false, stub_error);178 keys;179 dummy;180 return new Tuple20[](0);181 }182183 /// Set the sponsor of the collection.184 ///185 /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.186 ///187 /// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.188 /// @dev EVM selector for this function is: 0x7623402e,189 /// or in textual repr: setCollectionSponsor(address)190 function setCollectionSponsor(address sponsor) public {191 require(false, stub_error);192 sponsor;193 dummy = 0;194 }195196 /// Set the sponsor of the collection.197 ///198 /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.199 ///200 /// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.201 /// @dev EVM selector for this function is: 0x84a1d5a8,202<<<<<<< HEAD203 /// or in textual repr: setCollectionSponsorCross((address,uint256))204 function setCollectionSponsorCross(Tuple6 memory sponsor) public {205=======206 /// or in textual repr: setCollectionSponsorCross(EthCrossAccount)207 /// or in the expanded repr: setCollectionSponsorCross((address,uint256))208 function setCollectionSponsorCross(EthCrossAccount memory sponsor) public {209>>>>>>> misk: update stubs210 require(false, stub_error);211 sponsor;212 dummy = 0;213 }214215 /// Whether there is a pending sponsor.216 /// @dev EVM selector for this function is: 0x058ac185,217 /// or in textual repr: hasCollectionPendingSponsor()218 function hasCollectionPendingSponsor() public view returns (bool) {219 require(false, stub_error);220 dummy;221 return false;222 }223224 /// Collection sponsorship confirmation.225 ///226 /// @dev After setting the sponsor for the collection, it must be confirmed with this function.227 /// @dev EVM selector for this function is: 0x3c50e97a,228 /// or in textual repr: confirmCollectionSponsorship()229 function confirmCollectionSponsorship() public {230 require(false, stub_error);231 dummy = 0;232 }233234 /// Remove collection sponsor.235 /// @dev EVM selector for this function is: 0x6e0326a3,236 /// or in textual repr: removeCollectionSponsor()237 function removeCollectionSponsor() public {238 require(false, stub_error);239 dummy = 0;240 }241242 /// Get current sponsor.243 ///244 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.245 /// @dev EVM selector for this function is: 0x6ec0a9f1,246 /// or in textual repr: collectionSponsor()247<<<<<<< HEAD248 function collectionSponsor() public view returns (Tuple6 memory) {249 require(false, stub_error);250 dummy;251 return Tuple6(0x0000000000000000000000000000000000000000, 0);252=======253 function collectionSponsor() public view returns (Tuple23 memory) {254 require(false, stub_error);255 dummy;256 return Tuple23(0x0000000000000000000000000000000000000000, 0);257>>>>>>> misk: update stubs258 }259260 /// Set limits for the collection.261 /// @dev Throws error if limit not found.262 /// @param limit Name of the limit. Valid names:263 /// "accountTokenOwnershipLimit",264 /// "sponsoredDataSize",265 /// "sponsoredDataRateLimit",266 /// "tokenLimit",267 /// "sponsorTransferTimeout",268 /// "sponsorApproveTimeout"269 /// @param value Value of the limit.270 /// @dev EVM selector for this function is: 0x6a3841db,271 /// or in textual repr: setCollectionLimit(string,uint32)272 function setCollectionLimit(string memory limit, uint32 value) public {273 require(false, stub_error);274 limit;275 value;276 dummy = 0;277 }278279 /// Set limits for the collection.280 /// @dev Throws error if limit not found.281 /// @param limit Name of the limit. Valid names:282 /// "ownerCanTransfer",283 /// "ownerCanDestroy",284 /// "transfersEnabled"285 /// @param value Value of the limit.286 /// @dev EVM selector for this function is: 0x993b7fba,287 /// or in textual repr: setCollectionLimit(string,bool)288 function setCollectionLimit(string memory limit, bool value) public {289 require(false, stub_error);290 limit;291 value;292 dummy = 0;293 }294295 /// Get contract address.296 /// @dev EVM selector for this function is: 0xf6b4dfb4,297 /// or in textual repr: contractAddress()298 function contractAddress() public view returns (address) {299 require(false, stub_error);300 dummy;301 return 0x0000000000000000000000000000000000000000;302 }303304 /// Add collection admin.305 /// @param newAdmin Cross account administrator address.306 /// @dev EVM selector for this function is: 0x859aa7d6,307<<<<<<< HEAD308 /// or in textual repr: addCollectionAdminCross((address,uint256))309 function addCollectionAdminCross(Tuple6 memory newAdmin) public {310=======311 /// or in textual repr: addCollectionAdminCross(EthCrossAccount)312 /// or in the expanded repr: addCollectionAdminCross((address,uint256))313 function addCollectionAdminCross(EthCrossAccount memory newAdmin) public {314>>>>>>> misk: update stubs315 require(false, stub_error);316 newAdmin;317 dummy = 0;318 }319320 /// Remove collection admin.321 /// @param admin Cross account administrator address.322 /// @dev EVM selector for this function is: 0x6c0cd173,323<<<<<<< HEAD324 /// or in textual repr: removeCollectionAdminCross((address,uint256))325 function removeCollectionAdminCross(Tuple6 memory admin) public {326=======327 /// or in textual repr: removeCollectionAdminCross(EthCrossAccount)328 /// or in the expanded repr: removeCollectionAdminCross((address,uint256))329 function removeCollectionAdminCross(EthCrossAccount memory admin) public {330>>>>>>> misk: update stubs331 require(false, stub_error);332 admin;333 dummy = 0;334 }335336 /// Add collection admin.337 /// @param newAdmin Address of the added administrator.338 /// @dev EVM selector for this function is: 0x92e462c7,339 /// or in textual repr: addCollectionAdmin(address)340 function addCollectionAdmin(address newAdmin) public {341 require(false, stub_error);342 newAdmin;343 dummy = 0;344 }345346 /// Remove collection admin.347 ///348 /// @param admin Address of the removed administrator.349 /// @dev EVM selector for this function is: 0xfafd7b42,350 /// or in textual repr: removeCollectionAdmin(address)351 function removeCollectionAdmin(address admin) public {352 require(false, stub_error);353 admin;354 dummy = 0;355 }356357 /// Toggle accessibility of collection nesting.358 ///359 /// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'360 /// @dev EVM selector for this function is: 0x112d4586,361 /// or in textual repr: setCollectionNesting(bool)362 function setCollectionNesting(bool enable) public {363 require(false, stub_error);364 enable;365 dummy = 0;366 }367368 /// Toggle accessibility of collection nesting.369 ///370 /// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'371 /// @param collections Addresses of collections that will be available for nesting.372 /// @dev EVM selector for this function is: 0x64872396,373 /// or in textual repr: setCollectionNesting(bool,address[])374 function setCollectionNesting(bool enable, address[] memory collections) public {375 require(false, stub_error);376 enable;377 collections;378 dummy = 0;379 }380381 /// Set the collection access method.382 /// @param mode Access mode383 /// 0 for Normal384 /// 1 for AllowList385 /// @dev EVM selector for this function is: 0x41835d4c,386 /// or in textual repr: setCollectionAccess(uint8)387 function setCollectionAccess(uint8 mode) public {388 require(false, stub_error);389 mode;390 dummy = 0;391 }392393 /// Checks that user allowed to operate with collection.394 ///395 /// @param user User address to check.396 /// @dev EVM selector for this function is: 0xd63a8e11,397 /// or in textual repr: allowed(address)398 function allowed(address user) public view returns (bool) {399 require(false, stub_error);400 user;401 dummy;402 return false;403 }404405 /// Add the user to the allowed list.406 ///407 /// @param user Address of a trusted user.408 /// @dev EVM selector for this function is: 0x67844fe6,409 /// or in textual repr: addToCollectionAllowList(address)410 function addToCollectionAllowList(address user) public {411 require(false, stub_error);412 user;413 dummy = 0;414 }415416 /// Add user to allowed list.417 ///418 /// @param user User cross account address.419 /// @dev EVM selector for this function is: 0xa0184a3a,420<<<<<<< HEAD421 /// or in textual repr: addToCollectionAllowListCross((address,uint256))422 function addToCollectionAllowListCross(Tuple6 memory user) public {423=======424 /// or in textual repr: addToCollectionAllowListCross(EthCrossAccount)425 /// or in the expanded repr: addToCollectionAllowListCross((address,uint256))426 function addToCollectionAllowListCross(EthCrossAccount memory user) public {427>>>>>>> misk: update stubs428 require(false, stub_error);429 user;430 dummy = 0;431 }432433 /// Remove the user from the allowed list.434 ///435 /// @param user Address of a removed user.436 /// @dev EVM selector for this function is: 0x85c51acb,437 /// or in textual repr: removeFromCollectionAllowList(address)438 function removeFromCollectionAllowList(address user) public {439 require(false, stub_error);440 user;441 dummy = 0;442 }443444 /// Remove user from allowed list.445 ///446 /// @param user User cross account address.447 /// @dev EVM selector for this function is: 0x09ba452a,448<<<<<<< HEAD449 /// or in textual repr: removeFromCollectionAllowListCross((address,uint256))450 function removeFromCollectionAllowListCross(Tuple6 memory user) public {451=======452 /// or in textual repr: removeFromCollectionAllowListCross(EthCrossAccount)453 /// or in the expanded repr: removeFromCollectionAllowListCross((address,uint256))454 function removeFromCollectionAllowListCross(EthCrossAccount memory user) public {455>>>>>>> misk: update stubs456 require(false, stub_error);457 user;458 dummy = 0;459 }460461 /// Switch permission for minting.462 ///463 /// @param mode Enable if "true".464 /// @dev EVM selector for this function is: 0x00018e84,465 /// or in textual repr: setCollectionMintMode(bool)466 function setCollectionMintMode(bool mode) public {467 require(false, stub_error);468 mode;469 dummy = 0;470 }471472 /// Check that account is the owner or admin of the collection473 ///474 /// @param user account to verify475 /// @return "true" if account is the owner or admin476 /// @dev EVM selector for this function is: 0x9811b0c7,477 /// or in textual repr: isOwnerOrAdmin(address)478 function isOwnerOrAdmin(address user) public view returns (bool) {479 require(false, stub_error);480 user;481 dummy;482 return false;483 }484485 /// Check that account is the owner or admin of the collection486 ///487 /// @param user User cross account to verify488 /// @return "true" if account is the owner or admin489 /// @dev EVM selector for this function is: 0x3e75a905,490<<<<<<< HEAD491 /// or in textual repr: isOwnerOrAdminCross((address,uint256))492 function isOwnerOrAdminCross(Tuple6 memory user) public view returns (bool) {493=======494 /// or in textual repr: isOwnerOrAdminCross(EthCrossAccount)495 /// or in the expanded repr: isOwnerOrAdminCross((address,uint256))496 function isOwnerOrAdminCross(EthCrossAccount memory user) public view returns (bool) {497>>>>>>> misk: update stubs498 require(false, stub_error);499 user;500 dummy;501 return false;502 }503504 /// Returns collection type505 ///506 /// @return `Fungible` or `NFT` or `ReFungible`507 /// @dev EVM selector for this function is: 0xd34b55b8,508 /// or in textual repr: uniqueCollectionType()509 function uniqueCollectionType() public view returns (string memory) {510 require(false, stub_error);511 dummy;512 return "";513 }514515 /// Get collection owner.516 ///517 /// @return Tuple with sponsor address and his substrate mirror.518 /// If address is canonical then substrate mirror is zero and vice versa.519 /// @dev EVM selector for this function is: 0xdf727d3b,520 /// or in textual repr: collectionOwner()521<<<<<<< HEAD522 function collectionOwner() public view returns (Tuple6 memory) {523 require(false, stub_error);524 dummy;525 return Tuple6(0x0000000000000000000000000000000000000000, 0);526=======527 function collectionOwner() public view returns (EthCrossAccount memory) {528 require(false, stub_error);529 dummy;530 return EthCrossAccount(0x0000000000000000000000000000000000000000, 0);531>>>>>>> misk: update stubs532 }533534 /// Changes collection owner to another account535 ///536 /// @dev Owner can be changed only by current owner537 /// @param newOwner new owner account538 /// @dev EVM selector for this function is: 0x4f53e226,539 /// or in textual repr: changeCollectionOwner(address)540 function changeCollectionOwner(address newOwner) public {541 require(false, stub_error);542 newOwner;543 dummy = 0;544 }545546 /// Get collection administrators547 ///548 /// @return Vector of tuples with admins address and his substrate mirror.549 /// If address is canonical then substrate mirror is zero and vice versa.550 /// @dev EVM selector for this function is: 0x5813216b,551 /// or in textual repr: collectionAdmins()552<<<<<<< HEAD553 function collectionAdmins() public view returns (Tuple6[] memory) {554 require(false, stub_error);555 dummy;556 return new Tuple6[](0);557=======558 function collectionAdmins() public view returns (EthCrossAccount[] memory) {559 require(false, stub_error);560 dummy;561 return new EthCrossAccount[](0);562>>>>>>> misk: update stubs563 }564565 /// Changes collection owner to another account566 ///567 /// @dev Owner can be changed only by current owner568 /// @param newOwner new owner cross account569 /// @dev EVM selector for this function is: 0xe5c9913f,570<<<<<<< HEAD571 /// or in textual repr: setOwnerCross((address,uint256))572 function setOwnerCross(Tuple6 memory newOwner) public {573=======574 /// or in textual repr: setOwnerCross(EthCrossAccount)575 /// or in the expanded repr: setOwnerCross((address,uint256))576 function setOwnerCross(EthCrossAccount memory newOwner) public {577>>>>>>> misk: update stubs578 require(false, stub_error);579 newOwner;580 dummy = 0;581 }582}583584/// @dev Cross account struct585struct EthCrossAccount {586 address eth;587 uint256 sub;588}589590/// @dev anonymous struct591struct Tuple23 {592 address field_0;593 uint256 field_1;594}595596/// @dev anonymous struct597struct Tuple20 {598 string field_0;599 bytes field_1;600}601602/// @dev the ERC-165 identifier for this interface is 0x5b5e139f603contract ERC721Metadata is Dummy, ERC165 {604 // /// @notice A descriptive name for a collection of NFTs in this contract605 // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`606 // /// @dev EVM selector for this function is: 0x06fdde03,607 // /// or in textual repr: name()608 // function name() public view returns (string memory) {609 // require(false, stub_error);610 // dummy;611 // return "";612 // }613614 // /// @notice An abbreviated name for NFTs in this contract615 // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`616 // /// @dev EVM selector for this function is: 0x95d89b41,617 // /// or in textual repr: symbol()618 // function symbol() public view returns (string memory) {619 // require(false, stub_error);620 // dummy;621 // return "";622 // }623624 /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.625 ///626 /// @dev If the token has a `url` property and it is not empty, it is returned.627 /// 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`.628 /// If the collection property `baseURI` is empty or absent, return "" (empty string)629 /// otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix630 /// otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).631 ///632 /// @return token's const_metadata633 /// @dev EVM selector for this function is: 0xc87b56dd,634 /// or in textual repr: tokenURI(uint256)635 function tokenURI(uint256 tokenId) public view returns (string memory) {636 require(false, stub_error);637 tokenId;638 dummy;639 return "";640 }641}642643/// @title ERC721 Token that can be irreversibly burned (destroyed).644/// @dev the ERC-165 identifier for this interface is 0x42966c68645contract ERC721Burnable is Dummy, ERC165 {646 /// @notice Burns a specific ERC721 token.647 /// @dev Throws unless `msg.sender` is the current RFT owner, or an authorized648 /// operator of the current owner.649 /// @param tokenId The RFT to approve650 /// @dev EVM selector for this function is: 0x42966c68,651 /// or in textual repr: burn(uint256)652 function burn(uint256 tokenId) public {653 require(false, stub_error);654 tokenId;655 dummy = 0;656 }657}658659/// @dev inlined interface660contract ERC721UniqueMintableEvents {661 event MintingFinished();662}663664/// @title ERC721 minting logic.665/// @dev the ERC-165 identifier for this interface is 0x476ff149666contract ERC721UniqueMintable is Dummy, ERC165, ERC721UniqueMintableEvents {667 /// @dev EVM selector for this function is: 0x05d2035b,668 /// or in textual repr: mintingFinished()669 function mintingFinished() public view returns (bool) {670 require(false, stub_error);671 dummy;672 return false;673 }674675 /// @notice Function to mint token.676 /// @param to The new owner677 /// @return uint256 The id of the newly minted token678 /// @dev EVM selector for this function is: 0x6a627842,679 /// or in textual repr: mint(address)680 function mint(address to) public returns (uint256) {681 require(false, stub_error);682 to;683 dummy = 0;684 return 0;685 }686687 // /// @notice Function to mint token.688 // /// @dev `tokenId` should be obtained with `nextTokenId` method,689 // /// unlike standard, you can't specify it manually690 // /// @param to The new owner691 // /// @param tokenId ID of the minted RFT692 // /// @dev EVM selector for this function is: 0x40c10f19,693 // /// or in textual repr: mint(address,uint256)694 // function mint(address to, uint256 tokenId) public returns (bool) {695 // require(false, stub_error);696 // to;697 // tokenId;698 // dummy = 0;699 // return false;700 // }701702 /// @notice Function to mint token with the given tokenUri.703 /// @param to The new owner704 /// @param tokenUri Token URI that would be stored in the NFT properties705 /// @return uint256 The id of the newly minted token706 /// @dev EVM selector for this function is: 0x45c17782,707 /// or in textual repr: mintWithTokenURI(address,string)708 function mintWithTokenURI(address to, string memory tokenUri) public returns (uint256) {709 require(false, stub_error);710 to;711 tokenUri;712 dummy = 0;713 return 0;714 }715716 // /// @notice Function to mint token with the given tokenUri.717 // /// @dev `tokenId` should be obtained with `nextTokenId` method,718 // /// unlike standard, you can't specify it manually719 // /// @param to The new owner720 // /// @param tokenId ID of the minted RFT721 // /// @param tokenUri Token URI that would be stored in the RFT properties722 // /// @dev EVM selector for this function is: 0x50bb4e7f,723 // /// or in textual repr: mintWithTokenURI(address,uint256,string)724 // function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) public returns (bool) {725 // require(false, stub_error);726 // to;727 // tokenId;728 // tokenUri;729 // dummy = 0;730 // return false;731 // }732733 /// @dev Not implemented734 /// @dev EVM selector for this function is: 0x7d64bcb4,735 /// or in textual repr: finishMinting()736 function finishMinting() public returns (bool) {737 require(false, stub_error);738 dummy = 0;739 return false;740 }741}742743/// @title Unique extensions for ERC721.744/// @dev the ERC-165 identifier for this interface is 0x81feb398745contract ERC721UniqueExtensions is Dummy, ERC165 {746 /// @notice A descriptive name for a collection of NFTs in this contract747 /// @dev EVM selector for this function is: 0x06fdde03,748 /// or in textual repr: name()749 function name() public view returns (string memory) {750 require(false, stub_error);751 dummy;752 return "";753 }754755 /// @notice An abbreviated name for NFTs in this contract756 /// @dev EVM selector for this function is: 0x95d89b41,757 /// or in textual repr: symbol()758 function symbol() public view returns (string memory) {759 require(false, stub_error);760 dummy;761 return "";762 }763764 /// @notice Transfer ownership of an RFT765 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`766 /// is the zero address. Throws if `tokenId` is not a valid RFT.767 /// Throws if RFT pieces have multiple owners.768 /// @param to The new owner769 /// @param tokenId The RFT to transfer770 /// @dev EVM selector for this function is: 0xa9059cbb,771 /// or in textual repr: transfer(address,uint256)772 function transfer(address to, uint256 tokenId) public {773 require(false, stub_error);774 to;775 tokenId;776 dummy = 0;777 }778779 /// @notice Transfer ownership of an RFT780 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`781 /// is the zero address. Throws if `tokenId` is not a valid RFT.782 /// Throws if RFT pieces have multiple owners.783 /// @param to The new owner784 /// @param tokenId The RFT to transfer785 /// @dev EVM selector for this function is: 0xd5cf430b,786 /// or in textual repr: transferFromCross(EthCrossAccount,EthCrossAccount,uint256)787 /// or in the expanded repr: transferFromCross((address,uint256),(address,uint256),uint256)788 function transferFromCross(789<<<<<<< HEAD790 Tuple6 memory from,791 Tuple6 memory to,792=======793 EthCrossAccount memory from,794 EthCrossAccount memory to,795>>>>>>> misk: update stubs796 uint256 tokenId797 ) public {798 require(false, stub_error);799 from;800 to;801 tokenId;802 dummy = 0;803 }804805 /// @notice Burns a specific ERC721 token.806 /// @dev Throws unless `msg.sender` is the current owner or an authorized807 /// operator for this RFT. Throws if `from` is not the current owner. Throws808 /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.809 /// Throws if RFT pieces have multiple owners.810 /// @param from The current owner of the RFT811 /// @param tokenId The RFT to transfer812 /// @dev EVM selector for this function is: 0x79cc6790,813 /// or in textual repr: burnFrom(address,uint256)814 function burnFrom(address from, uint256 tokenId) public {815 require(false, stub_error);816 from;817 tokenId;818 dummy = 0;819 }820821 /// @notice Burns a specific ERC721 token.822 /// @dev Throws unless `msg.sender` is the current owner or an authorized823 /// operator for this RFT. Throws if `from` is not the current owner. Throws824 /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.825 /// Throws if RFT pieces have multiple owners.826 /// @param from The current owner of the RFT827 /// @param tokenId The RFT to transfer828 /// @dev EVM selector for this function is: 0xbb2f5a58,829<<<<<<< HEAD830 /// or in textual repr: burnFromCross((address,uint256),uint256)831 function burnFromCross(Tuple6 memory from, uint256 tokenId) public {832=======833 /// or in textual repr: burnFromCross(EthCrossAccount,uint256)834 /// or in the expanded repr: burnFromCross((address,uint256),uint256)835 function burnFromCross(EthCrossAccount memory from, uint256 tokenId) public {836>>>>>>> misk: update stubs837 require(false, stub_error);838 from;839 tokenId;840 dummy = 0;841 }842843 /// @notice Returns next free RFT ID.844 /// @dev EVM selector for this function is: 0x75794a3c,845 /// or in textual repr: nextTokenId()846 function nextTokenId() public view returns (uint256) {847 require(false, stub_error);848 dummy;849 return 0;850 }851852<<<<<<< HEAD853 // /// @notice Function to mint multiple tokens.854 // /// @dev `tokenIds` should be an array of consecutive numbers and first number855 // /// should be obtained with `nextTokenId` method856 // /// @param to The new owner857 // /// @param tokenIds IDs of the minted RFTs858 // /// @dev EVM selector for this function is: 0x44a9945e,859 // /// or in textual repr: mintBulk(address,uint256[])860 // function mintBulk(address to, uint256[] memory tokenIds) public returns (bool) {861 // require(false, stub_error);862 // to;863 // tokenIds;864 // dummy = 0;865 // return false;866 // }867868 // /// @notice Function to mint multiple tokens with the given tokenUris.869 // /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive870 // /// numbers and first number should be obtained with `nextTokenId` method871 // /// @param to The new owner872 // /// @param tokens array of pairs of token ID and token URI for minted tokens873 // /// @dev EVM selector for this function is: 0x36543006,874 // /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])875 // function mintBulkWithTokenURI(address to, Tuple8[] memory tokens) public returns (bool) {876 // require(false, stub_error);877 // to;878 // tokens;879 // dummy = 0;880 // return false;881 // }882=======883 /// @notice Function to mint multiple tokens.884 /// @dev `tokenIds` should be an array of consecutive numbers and first number885 /// should be obtained with `nextTokenId` method886 /// @param to The new owner887 /// @param tokenIds IDs of the minted RFTs888 /// @dev EVM selector for this function is: 0x44a9945e,889 /// or in textual repr: mintBulk(address,uint256[])890 function mintBulk(address to, uint256[] memory tokenIds) public returns (bool) {891 require(false, stub_error);892 to;893 tokenIds;894 dummy = 0;895 return false;896 }897898 /// @notice Function to mint multiple tokens with the given tokenUris.899 /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive900 /// numbers and first number should be obtained with `nextTokenId` method901 /// @param to The new owner902 /// @param tokens array of pairs of token ID and token URI for minted tokens903 /// @dev EVM selector for this function is: 0x36543006,904 /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])905 function mintBulkWithTokenURI(address to, Tuple11[] memory tokens) public returns (bool) {906 require(false, stub_error);907 to;908 tokens;909 dummy = 0;910 return false;911 }912>>>>>>> misk: update stubs913914 /// Returns EVM address for refungible token915 ///916 /// @param token ID of the token917 /// @dev EVM selector for this function is: 0xab76fac6,918 /// or in textual repr: tokenContractAddress(uint256)919 function tokenContractAddress(uint256 token) public view returns (address) {920 require(false, stub_error);921 token;922 dummy;923 return 0x0000000000000000000000000000000000000000;924 }925}926927/// @dev anonymous struct928<<<<<<< HEAD929struct Tuple8 {930=======931struct Tuple11 {932>>>>>>> misk: update stubs933 uint256 field_0;934 string field_1;935}936937<<<<<<< HEAD938/// @dev anonymous struct939struct Tuple6 {940 address field_0;941 uint256 field_1;942}943944=======945>>>>>>> misk: update stubs946/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension947/// @dev See https://eips.ethereum.org/EIPS/eip-721948/// @dev the ERC-165 identifier for this interface is 0x780e9d63949contract ERC721Enumerable is Dummy, ERC165 {950 /// @notice Enumerate valid RFTs951 /// @param index A counter less than `totalSupply()`952 /// @return The token identifier for the `index`th NFT,953 /// (sort order not specified)954 /// @dev EVM selector for this function is: 0x4f6ccce7,955 /// or in textual repr: tokenByIndex(uint256)956 function tokenByIndex(uint256 index) public view returns (uint256) {957 require(false, stub_error);958 index;959 dummy;960 return 0;961 }962963 /// Not implemented964 /// @dev EVM selector for this function is: 0x2f745c59,965 /// or in textual repr: tokenOfOwnerByIndex(address,uint256)966 function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {967 require(false, stub_error);968 owner;969 index;970 dummy;971 return 0;972 }973974 /// @notice Count RFTs tracked by this contract975 /// @return A count of valid RFTs tracked by this contract, where each one of976 /// them has an assigned and queryable owner not equal to the zero address977 /// @dev EVM selector for this function is: 0x18160ddd,978 /// or in textual repr: totalSupply()979 function totalSupply() public view returns (uint256) {980 require(false, stub_error);981 dummy;982 return 0;983 }984}985986/// @dev inlined interface987contract ERC721Events {988 event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);989 event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);990 event ApprovalForAll(address indexed owner, address indexed operator, bool approved);991}992993/// @title ERC-721 Non-Fungible Token Standard994/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md995/// @dev the ERC-165 identifier for this interface is 0x58800161996contract ERC721 is Dummy, ERC165, ERC721Events {997 /// @notice Count all RFTs assigned to an owner998 /// @dev RFTs assigned to the zero address are considered invalid, and this999 /// function throws for queries about the zero address.1000 /// @param owner An address for whom to query the balance1001 /// @return The number of RFTs owned by `owner`, possibly zero1002 /// @dev EVM selector for this function is: 0x70a08231,1003 /// or in textual repr: balanceOf(address)1004 function balanceOf(address owner) public view returns (uint256) {1005 require(false, stub_error);1006 owner;1007 dummy;1008 return 0;1009 }10101011 /// @notice Find the owner of an RFT1012 /// @dev RFTs assigned to zero address are considered invalid, and queries1013 /// about them do throw.1014 /// Returns special 0xffffffffffffffffffffffffffffffffffffffff address for1015 /// the tokens that are partially owned.1016 /// @param tokenId The identifier for an RFT1017 /// @return The address of the owner of the RFT1018 /// @dev EVM selector for this function is: 0x6352211e,1019 /// or in textual repr: ownerOf(uint256)1020 function ownerOf(uint256 tokenId) public view returns (address) {1021 require(false, stub_error);1022 tokenId;1023 dummy;1024 return 0x0000000000000000000000000000000000000000;1025 }10261027 /// @dev Not implemented1028 /// @dev EVM selector for this function is: 0x60a11672,1029 /// or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)1030 function safeTransferFromWithData(1031 address from,1032 address to,1033 uint256 tokenId,1034 bytes memory data1035 ) public {1036 require(false, stub_error);1037 from;1038 to;1039 tokenId;1040 data;1041 dummy = 0;1042 }10431044 /// @dev Not implemented1045 /// @dev EVM selector for this function is: 0x42842e0e,1046 /// or in textual repr: safeTransferFrom(address,address,uint256)1047 function safeTransferFrom(1048 address from,1049 address to,1050 uint256 tokenId1051 ) public {1052 require(false, stub_error);1053 from;1054 to;1055 tokenId;1056 dummy = 0;1057 }10581059 /// @notice Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE1060 /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE1061 /// THEY MAY BE PERMANENTLY LOST1062 /// @dev Throws unless `msg.sender` is the current owner or an authorized1063 /// operator for this RFT. Throws if `from` is not the current owner. Throws1064 /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.1065 /// Throws if RFT pieces have multiple owners.1066 /// @param from The current owner of the NFT1067 /// @param to The new owner1068 /// @param tokenId The NFT to transfer1069 /// @dev EVM selector for this function is: 0x23b872dd,1070 /// or in textual repr: transferFrom(address,address,uint256)1071 function transferFrom(1072 address from,1073 address to,1074 uint256 tokenId1075 ) public {1076 require(false, stub_error);1077 from;1078 to;1079 tokenId;1080 dummy = 0;1081 }10821083 /// @dev Not implemented1084 /// @dev EVM selector for this function is: 0x095ea7b3,1085 /// or in textual repr: approve(address,uint256)1086 function approve(address approved, uint256 tokenId) public {1087 require(false, stub_error);1088 approved;1089 tokenId;1090 dummy = 0;1091 }10921093 /// @dev Not implemented1094 /// @dev EVM selector for this function is: 0xa22cb465,1095 /// or in textual repr: setApprovalForAll(address,bool)1096 function setApprovalForAll(address operator, bool approved) public {1097 require(false, stub_error);1098 operator;1099 approved;1100 dummy = 0;1101 }11021103 /// @dev Not implemented1104 /// @dev EVM selector for this function is: 0x081812fc,1105 /// or in textual repr: getApproved(uint256)1106 function getApproved(uint256 tokenId) public view returns (address) {1107 require(false, stub_error);1108 tokenId;1109 dummy;1110 return 0x0000000000000000000000000000000000000000;1111 }11121113 /// @dev Not implemented1114 /// @dev EVM selector for this function is: 0xe985e9c5,1115 /// or in textual repr: isApprovedForAll(address,address)1116 function isApprovedForAll(address owner, address operator) public view returns (address) {1117 require(false, stub_error);1118 owner;1119 operator;1120 dummy;1121 return 0x0000000000000000000000000000000000000000;1122 }1123}11241125contract UniqueRefungible is1126 Dummy,1127 ERC165,1128 ERC721,1129 ERC721Enumerable,1130 ERC721UniqueExtensions,1131 ERC721UniqueMintable,1132 ERC721Burnable,1133 ERC721Metadata,1134 Collection,1135 TokenProperties1136{}