difftreelog
chore generate stubs
in: master
11 files changed
pallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterbothbinary blob — no preview
pallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -487,15 +487,25 @@
uint256[] field_1;
}
+/// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
enum CollectionLimits {
+ /// @dev How many tokens can a user have on one account.
AccountTokenOwnership,
+ /// @dev How many bytes of data are available for sponsorship.
SponsoredDataSize,
+ /// @dev In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]
SponsoredDataRateLimit,
+ /// @dev How many tokens can be mined into this collection.
TokenLimit,
+ /// @dev Timeouts for transfer sponsoring.
SponsorTransferTimeout,
+ /// @dev Timeout for sponsoring an approval in passed blocks.
SponsorApproveTimeout,
+ /// @dev Whether the collection owner of the collection can send tokens (which belong to other users).
OwnerCanTransfer,
+ /// @dev Can the collection owner burn other people's tokens.
OwnerCanDestroy,
+ /// @dev Is it possible to send tokens from this collection between users.
TransferEnabled
}
pallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterbothbinary blob — no preview
pallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -42,18 +42,19 @@
/// @param permissions Permissions for keys.
/// @dev EVM selector for this function is: 0xbd92983a,
/// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
- function setTokenPropertyPermissions(Tuple48[] memory permissions) public {
+ function setTokenPropertyPermissions(Tuple59[] memory permissions) public {
require(false, stub_error);
permissions;
dummy = 0;
}
+ /// @notice Get permissions for token properties.
/// @dev EVM selector for this function is: 0xf23d7790,
/// or in textual repr: tokenPropertyPermissions()
- function tokenPropertyPermissions() public view returns (Tuple48[] memory) {
+ function tokenPropertyPermissions() public view returns (Tuple59[] memory) {
require(false, stub_error);
dummy;
- return new Tuple48[](0);
+ return new Tuple59[](0);
}
// /// @notice Set token property value.
@@ -132,20 +133,24 @@
bytes value;
}
+/// @dev Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
enum EthTokenPermissions {
+ /// @dev Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
Mutable,
+ /// @dev Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
TokenOwner,
+ /// @dev Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
CollectionAdmin
}
/// @dev anonymous struct
-struct Tuple48 {
+struct Tuple59 {
string field_0;
- Tuple46[] field_1;
+ Tuple57[] field_1;
}
/// @dev anonymous struct
-struct Tuple46 {
+struct Tuple57 {
EthTokenPermissions field_0;
bool field_1;
}
@@ -620,15 +625,25 @@
uint256[] field_1;
}
+/// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
enum CollectionLimits {
+ /// @dev How many tokens can a user have on one account.
AccountTokenOwnership,
+ /// @dev How many bytes of data are available for sponsorship.
SponsoredDataSize,
+ /// @dev In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]
SponsoredDataRateLimit,
+ /// @dev How many tokens can be mined into this collection.
TokenLimit,
+ /// @dev Timeouts for transfer sponsoring.
SponsorTransferTimeout,
+ /// @dev Timeout for sponsoring an approval in passed blocks.
SponsorApproveTimeout,
+ /// @dev Whether the collection owner of the collection can send tokens (which belong to other users).
OwnerCanTransfer,
+ /// @dev Can the collection owner burn other people's tokens.
OwnerCanDestroy,
+ /// @dev Is it possible to send tokens from this collection between users.
TransferEnabled
}
pallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterbothbinary blob — no preview
pallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth1// 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 0xde0695c222contract 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(string memory key, bool isMutable, bool collectionAdmin, bool tokenOwner) public {32 // require(false, stub_error);33 // key;34 // isMutable;35 // collectionAdmin;36 // tokenOwner;37 // dummy = 0;38 // }3940 /// @notice Set permissions for token property.41 /// @dev Throws error if `msg.sender` is not admin or owner of the collection.42 /// @param permissions Permissions for keys.43 /// @dev EVM selector for this function is: 0xbd92983a,44 /// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])45 function setTokenPropertyPermissions(Tuple53[] memory permissions) public {46 require(false, stub_error);47 permissions;48 dummy = 0;49 }5051 /// @notice Get permissions for token properties.52 /// @dev EVM selector for this function is: 0xf23d7790,53 /// or in textual repr: tokenPropertyPermissions()54 function tokenPropertyPermissions() public view returns (Tuple53[] memory) {55 require(false, stub_error);56 dummy;57 return new Tuple53[](0);58 }5960 // /// @notice Set token property value.61 // /// @dev Throws error if `msg.sender` has no permission to edit the property.62 // /// @param tokenId ID of the token.63 // /// @param key Property key.64 // /// @param value Property value.65 // /// @dev EVM selector for this function is: 0x1752d67b,66 // /// or in textual repr: setProperty(uint256,string,bytes)67 // function setProperty(uint256 tokenId, string memory key, bytes memory value) public {68 // require(false, stub_error);69 // tokenId;70 // key;71 // value;72 // dummy = 0;73 // }7475 /// @notice Set token properties value.76 /// @dev Throws error if `msg.sender` has no permission to edit the property.77 /// @param tokenId ID of the token.78 /// @param properties settable properties79 /// @dev EVM selector for this function is: 0x14ed3a6e,80 /// or in textual repr: setProperties(uint256,(string,bytes)[])81 function setProperties(uint256 tokenId, Property[] memory properties) public {82 require(false, stub_error);83 tokenId;84 properties;85 dummy = 0;86 }8788 // /// @notice Delete token property value.89 // /// @dev Throws error if `msg.sender` has no permission to edit the property.90 // /// @param tokenId ID of the token.91 // /// @param key Property key.92 // /// @dev EVM selector for this function is: 0x066111d1,93 // /// or in textual repr: deleteProperty(uint256,string)94 // function deleteProperty(uint256 tokenId, string memory key) public {95 // require(false, stub_error);96 // tokenId;97 // key;98 // dummy = 0;99 // }100101 /// @notice Delete token properties value.102 /// @dev Throws error if `msg.sender` has no permission to edit the property.103 /// @param tokenId ID of the token.104 /// @param keys Properties key.105 /// @dev EVM selector for this function is: 0xc472d371,106 /// or in textual repr: deleteProperties(uint256,string[])107 function deleteProperties(uint256 tokenId, string[] memory keys) public {108 require(false, stub_error);109 tokenId;110 keys;111 dummy = 0;112 }113114 /// @notice Get token property value.115 /// @dev Throws error if key not found116 /// @param tokenId ID of the token.117 /// @param key Property key.118 /// @return Property value bytes119 /// @dev EVM selector for this function is: 0x7228c327,120 /// or in textual repr: property(uint256,string)121 function property(uint256 tokenId, string memory key) public view returns (bytes memory) {122 require(false, stub_error);123 tokenId;124 key;125 dummy;126 return hex"";127 }128}129130/// @dev Property struct131struct Property {132 string key;133 bytes value;134}135136enum EthTokenPermissions {137 Mutable,138 TokenOwner,139 CollectionAdmin140}141142/// @dev anonymous struct143struct Tuple53 {144 string field_0;145 Tuple51[] field_1;146}147148/// @dev anonymous struct149struct Tuple51 {150 EthTokenPermissions field_0;151 bool field_1;152}153154/// @title A contract that allows you to work with collections.155/// @dev the ERC-165 identifier for this interface is 0x81172a75156contract Collection is Dummy, ERC165 {157 // /// Set collection property.158 // ///159 // /// @param key Property key.160 // /// @param value Propery value.161 // /// @dev EVM selector for this function is: 0x2f073f66,162 // /// or in textual repr: setCollectionProperty(string,bytes)163 // function setCollectionProperty(string memory key, bytes memory value) public {164 // require(false, stub_error);165 // key;166 // value;167 // dummy = 0;168 // }169170 /// Set collection properties.171 ///172 /// @param properties Vector of properties key/value pair.173 /// @dev EVM selector for this function is: 0x50b26b2a,174 /// or in textual repr: setCollectionProperties((string,bytes)[])175 function setCollectionProperties(Property[] memory properties) public {176 require(false, stub_error);177 properties;178 dummy = 0;179 }180181 // /// Delete collection property.182 // ///183 // /// @param key Property key.184 // /// @dev EVM selector for this function is: 0x7b7debce,185 // /// or in textual repr: deleteCollectionProperty(string)186 // function deleteCollectionProperty(string memory key) public {187 // require(false, stub_error);188 // key;189 // dummy = 0;190 // }191192 /// Delete collection properties.193 ///194 /// @param keys Properties keys.195 /// @dev EVM selector for this function is: 0xee206ee3,196 /// or in textual repr: deleteCollectionProperties(string[])197 function deleteCollectionProperties(string[] memory keys) public {198 require(false, stub_error);199 keys;200 dummy = 0;201 }202203 /// Get collection property.204 ///205 /// @dev Throws error if key not found.206 ///207 /// @param key Property key.208 /// @return bytes The property corresponding to the key.209 /// @dev EVM selector for this function is: 0xcf24fd6d,210 /// or in textual repr: collectionProperty(string)211 function collectionProperty(string memory key) public view returns (bytes memory) {212 require(false, stub_error);213 key;214 dummy;215 return hex"";216 }217218 /// Get collection properties.219 ///220 /// @param keys Properties keys. Empty keys for all propertyes.221 /// @return Vector of properties key/value pairs.222 /// @dev EVM selector for this function is: 0x285fb8e6,223 /// or in textual repr: collectionProperties(string[])224 function collectionProperties(string[] memory keys) public view returns (Property[] memory) {225 require(false, stub_error);226 keys;227 dummy;228 return new Property[](0);229 }230231 // /// Set the sponsor of the collection.232 // ///233 // /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.234 // ///235 // /// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.236 // /// @dev EVM selector for this function is: 0x7623402e,237 // /// or in textual repr: setCollectionSponsor(address)238 // function setCollectionSponsor(address sponsor) public {239 // require(false, stub_error);240 // sponsor;241 // dummy = 0;242 // }243244 /// Set the sponsor of the collection.245 ///246 /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.247 ///248 /// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.249 /// @dev EVM selector for this function is: 0x84a1d5a8,250 /// or in textual repr: setCollectionSponsorCross((address,uint256))251 function setCollectionSponsorCross(EthCrossAccount memory sponsor) public {252 require(false, stub_error);253 sponsor;254 dummy = 0;255 }256257 /// Whether there is a pending sponsor.258 /// @dev EVM selector for this function is: 0x058ac185,259 /// or in textual repr: hasCollectionPendingSponsor()260 function hasCollectionPendingSponsor() public view returns (bool) {261 require(false, stub_error);262 dummy;263 return false;264 }265266 /// Collection sponsorship confirmation.267 ///268 /// @dev After setting the sponsor for the collection, it must be confirmed with this function.269 /// @dev EVM selector for this function is: 0x3c50e97a,270 /// or in textual repr: confirmCollectionSponsorship()271 function confirmCollectionSponsorship() public {272 require(false, stub_error);273 dummy = 0;274 }275276 /// Remove collection sponsor.277 /// @dev EVM selector for this function is: 0x6e0326a3,278 /// or in textual repr: removeCollectionSponsor()279 function removeCollectionSponsor() public {280 require(false, stub_error);281 dummy = 0;282 }283284 /// Get current sponsor.285 ///286 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.287 /// @dev EVM selector for this function is: 0x6ec0a9f1,288 /// or in textual repr: collectionSponsor()289 function collectionSponsor() public view returns (Tuple29 memory) {290 require(false, stub_error);291 dummy;292 return Tuple29(0x0000000000000000000000000000000000000000, 0);293 }294295 /// Get current collection limits.296 ///297 /// @return Array of tuples (byte, bool, uint256) with limits and their values. Order of limits:298 /// "accountTokenOwnershipLimit",299 /// "sponsoredDataSize",300 /// "sponsoredDataRateLimit",301 /// "tokenLimit",302 /// "sponsorTransferTimeout",303 /// "sponsorApproveTimeout"304 /// "ownerCanTransfer",305 /// "ownerCanDestroy",306 /// "transfersEnabled"307 /// Return `false` if a limit not set.308 /// @dev EVM selector for this function is: 0xf63bc572,309 /// or in textual repr: collectionLimits()310 function collectionLimits() public view returns (Tuple32[] memory) {311 require(false, stub_error);312 dummy;313 return new Tuple32[](0);314 }315316 /// Set limits for the collection.317 /// @dev Throws error if limit not found.318 /// @param limit Name of the limit. Valid names:319 /// "accountTokenOwnershipLimit",320 /// "sponsoredDataSize",321 /// "sponsoredDataRateLimit",322 /// "tokenLimit",323 /// "sponsorTransferTimeout",324 /// "sponsorApproveTimeout"325 /// "ownerCanTransfer",326 /// "ownerCanDestroy",327 /// "transfersEnabled"328 /// @param status enable\disable limit. Works only with `true`.329 /// @param value Value of the limit.330 /// @dev EVM selector for this function is: 0x88150bd0,331 /// or in textual repr: setCollectionLimit(uint8,bool,uint256)332 function setCollectionLimit(333 CollectionLimits limit,334 bool status,335 uint256 value336 ) public {337 require(false, stub_error);338 limit;339 status;340 value;341 dummy = 0;342 }343344 /// Get contract address.345 /// @dev EVM selector for this function is: 0xf6b4dfb4,346 /// or in textual repr: contractAddress()347 function contractAddress() public view returns (address) {348 require(false, stub_error);349 dummy;350 return 0x0000000000000000000000000000000000000000;351 }352353 /// Add collection admin.354 /// @param newAdmin Cross account administrator address.355 /// @dev EVM selector for this function is: 0x859aa7d6,356 /// or in textual repr: addCollectionAdminCross((address,uint256))357 function addCollectionAdminCross(EthCrossAccount memory newAdmin) public {358 require(false, stub_error);359 newAdmin;360 dummy = 0;361 }362363 /// Remove collection admin.364 /// @param admin Cross account administrator address.365 /// @dev EVM selector for this function is: 0x6c0cd173,366 /// or in textual repr: removeCollectionAdminCross((address,uint256))367 function removeCollectionAdminCross(EthCrossAccount memory admin) public {368 require(false, stub_error);369 admin;370 dummy = 0;371 }372373 // /// Add collection admin.374 // /// @param newAdmin Address of the added administrator.375 // /// @dev EVM selector for this function is: 0x92e462c7,376 // /// or in textual repr: addCollectionAdmin(address)377 // function addCollectionAdmin(address newAdmin) public {378 // require(false, stub_error);379 // newAdmin;380 // dummy = 0;381 // }382383 // /// Remove collection admin.384 // ///385 // /// @param admin Address of the removed administrator.386 // /// @dev EVM selector for this function is: 0xfafd7b42,387 // /// or in textual repr: removeCollectionAdmin(address)388 // function removeCollectionAdmin(address admin) public {389 // require(false, stub_error);390 // admin;391 // dummy = 0;392 // }393394 /// Toggle accessibility of collection nesting.395 ///396 /// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'397 /// @dev EVM selector for this function is: 0x112d4586,398 /// or in textual repr: setCollectionNesting(bool)399 function setCollectionNesting(bool enable) public {400 require(false, stub_error);401 enable;402 dummy = 0;403 }404405 /// Toggle accessibility of collection nesting.406 ///407 /// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'408 /// @param collections Addresses of collections that will be available for nesting.409 /// @dev EVM selector for this function is: 0x64872396,410 /// or in textual repr: setCollectionNesting(bool,address[])411 function setCollectionNesting(bool enable, address[] memory collections) public {412 require(false, stub_error);413 enable;414 collections;415 dummy = 0;416 }417418 /// Returns nesting for a collection419 /// @dev EVM selector for this function is: 0x22d25bfe,420 /// or in textual repr: collectionNestingRestrictedCollectionIds()421 function collectionNestingRestrictedCollectionIds() public view returns (Tuple38 memory) {422 require(false, stub_error);423 dummy;424 return Tuple38(false, new uint256[](0));425 }426427 /// Returns permissions for a collection428 /// @dev EVM selector for this function is: 0x5b2eaf4b,429 /// or in textual repr: collectionNestingPermissions()430 function collectionNestingPermissions() public view returns (Tuple41[] memory) {431 require(false, stub_error);432 dummy;433 return new Tuple41[](0);434 }435436 /// Set the collection access method.437 /// @param mode Access mode438 /// 0 for Normal439 /// 1 for AllowList440 /// @dev EVM selector for this function is: 0x41835d4c,441 /// or in textual repr: setCollectionAccess(uint8)442 function setCollectionAccess(uint8 mode) public {443 require(false, stub_error);444 mode;445 dummy = 0;446 }447448 /// Checks that user allowed to operate with collection.449 ///450 /// @param user User address to check.451 /// @dev EVM selector for this function is: 0x91b6df49,452 /// or in textual repr: allowlistedCross((address,uint256))453 function allowlistedCross(EthCrossAccount memory user) public view returns (bool) {454 require(false, stub_error);455 user;456 dummy;457 return false;458 }459460 // /// Add the user to the allowed list.461 // ///462 // /// @param user Address of a trusted user.463 // /// @dev EVM selector for this function is: 0x67844fe6,464 // /// or in textual repr: addToCollectionAllowList(address)465 // function addToCollectionAllowList(address user) public {466 // require(false, stub_error);467 // user;468 // dummy = 0;469 // }470471 /// Add user to allowed list.472 ///473 /// @param user User cross account address.474 /// @dev EVM selector for this function is: 0xa0184a3a,475 /// or in textual repr: addToCollectionAllowListCross((address,uint256))476 function addToCollectionAllowListCross(EthCrossAccount memory user) public {477 require(false, stub_error);478 user;479 dummy = 0;480 }481482 // /// Remove the user from the allowed list.483 // ///484 // /// @param user Address of a removed user.485 // /// @dev EVM selector for this function is: 0x85c51acb,486 // /// or in textual repr: removeFromCollectionAllowList(address)487 // function removeFromCollectionAllowList(address user) public {488 // require(false, stub_error);489 // user;490 // dummy = 0;491 // }492493 /// Remove user from allowed list.494 ///495 /// @param user User cross account address.496 /// @dev EVM selector for this function is: 0x09ba452a,497 /// or in textual repr: removeFromCollectionAllowListCross((address,uint256))498 function removeFromCollectionAllowListCross(EthCrossAccount memory user) public {499 require(false, stub_error);500 user;501 dummy = 0;502 }503504 /// Switch permission for minting.505 ///506 /// @param mode Enable if "true".507 /// @dev EVM selector for this function is: 0x00018e84,508 /// or in textual repr: setCollectionMintMode(bool)509 function setCollectionMintMode(bool mode) public {510 require(false, stub_error);511 mode;512 dummy = 0;513 }514515 // /// Check that account is the owner or admin of the collection516 // ///517 // /// @param user account to verify518 // /// @return "true" if account is the owner or admin519 // /// @dev EVM selector for this function is: 0x9811b0c7,520 // /// or in textual repr: isOwnerOrAdmin(address)521 // function isOwnerOrAdmin(address user) public view returns (bool) {522 // require(false, stub_error);523 // user;524 // dummy;525 // return false;526 // }527528 /// Check that account is the owner or admin of the collection529 ///530 /// @param user User cross account to verify531 /// @return "true" if account is the owner or admin532 /// @dev EVM selector for this function is: 0x3e75a905,533 /// or in textual repr: isOwnerOrAdminCross((address,uint256))534 function isOwnerOrAdminCross(EthCrossAccount memory user) public view returns (bool) {535 require(false, stub_error);536 user;537 dummy;538 return false;539 }540541 /// Returns collection type542 ///543 /// @return `Fungible` or `NFT` or `ReFungible`544 /// @dev EVM selector for this function is: 0xd34b55b8,545 /// or in textual repr: uniqueCollectionType()546 function uniqueCollectionType() public view returns (string memory) {547 require(false, stub_error);548 dummy;549 return "";550 }551552 /// Get collection owner.553 ///554 /// @return Tuble with sponsor address and his substrate mirror.555 /// If address is canonical then substrate mirror is zero and vice versa.556 /// @dev EVM selector for this function is: 0xdf727d3b,557 /// or in textual repr: collectionOwner()558 function collectionOwner() public view returns (EthCrossAccount memory) {559 require(false, stub_error);560 dummy;561 return EthCrossAccount(0x0000000000000000000000000000000000000000, 0);562 }563564 // /// Changes collection owner to another account565 // ///566 // /// @dev Owner can be changed only by current owner567 // /// @param newOwner new owner account568 // /// @dev EVM selector for this function is: 0x4f53e226,569 // /// or in textual repr: changeCollectionOwner(address)570 // function changeCollectionOwner(address newOwner) public {571 // require(false, stub_error);572 // newOwner;573 // dummy = 0;574 // }575576 /// Get collection administrators577 ///578 /// @return Vector of tuples with admins address and his substrate mirror.579 /// If address is canonical then substrate mirror is zero and vice versa.580 /// @dev EVM selector for this function is: 0x5813216b,581 /// or in textual repr: collectionAdmins()582 function collectionAdmins() public view returns (EthCrossAccount[] memory) {583 require(false, stub_error);584 dummy;585 return new EthCrossAccount[](0);586 }587588 /// Changes collection owner to another account589 ///590 /// @dev Owner can be changed only by current owner591 /// @param newOwner new owner cross account592 /// @dev EVM selector for this function is: 0x6496c497,593 /// or in textual repr: changeCollectionOwnerCross((address,uint256))594 function changeCollectionOwnerCross(EthCrossAccount memory newOwner) public {595 require(false, stub_error);596 newOwner;597 dummy = 0;598 }599}600601/// @dev Cross account struct602struct EthCrossAccount {603 address eth;604 uint256 sub;605}606607enum CollectionPermissions {608 CollectionAdmin,609 TokenOwner610}611612/// @dev anonymous struct613struct Tuple41 {614 CollectionPermissions field_0;615 bool field_1;616}617618/// @dev anonymous struct619struct Tuple38 {620 bool field_0;621 uint256[] field_1;622}623624enum CollectionLimits {625 AccountTokenOwnership,626 SponsoredDataSize,627 SponsoredDataRateLimit,628 TokenLimit,629 SponsorTransferTimeout,630 SponsorApproveTimeout,631 OwnerCanTransfer,632 OwnerCanDestroy,633 TransferEnabled634}635636/// @dev anonymous struct637struct Tuple32 {638 CollectionLimits field_0;639 bool field_1;640 uint256 field_2;641}642643/// @dev anonymous struct644struct Tuple29 {645 address field_0;646 uint256 field_1;647}648649/// @dev the ERC-165 identifier for this interface is 0x5b5e139f650contract ERC721Metadata is Dummy, ERC165 {651 // /// @notice A descriptive name for a collection of NFTs in this contract652 // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`653 // /// @dev EVM selector for this function is: 0x06fdde03,654 // /// or in textual repr: name()655 // function name() public view returns (string memory) {656 // require(false, stub_error);657 // dummy;658 // return "";659 // }660661 // /// @notice An abbreviated name for NFTs in this contract662 // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`663 // /// @dev EVM selector for this function is: 0x95d89b41,664 // /// or in textual repr: symbol()665 // function symbol() public view returns (string memory) {666 // require(false, stub_error);667 // dummy;668 // return "";669 // }670671 /// @notice A distinct Uniform Resource Identifier (URI) for a given asset.672 ///673 /// @dev If the token has a `url` property and it is not empty, it is returned.674 /// 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`.675 /// If the collection property `baseURI` is empty or absent, return "" (empty string)676 /// otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix677 /// otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).678 ///679 /// @return token's const_metadata680 /// @dev EVM selector for this function is: 0xc87b56dd,681 /// or in textual repr: tokenURI(uint256)682 function tokenURI(uint256 tokenId) public view returns (string memory) {683 require(false, stub_error);684 tokenId;685 dummy;686 return "";687 }688}689690/// @title ERC721 Token that can be irreversibly burned (destroyed).691/// @dev the ERC-165 identifier for this interface is 0x42966c68692contract ERC721Burnable is Dummy, ERC165 {693 /// @notice Burns a specific ERC721 token.694 /// @dev Throws unless `msg.sender` is the current RFT owner, or an authorized695 /// operator of the current owner.696 /// @param tokenId The RFT to approve697 /// @dev EVM selector for this function is: 0x42966c68,698 /// or in textual repr: burn(uint256)699 function burn(uint256 tokenId) public {700 require(false, stub_error);701 tokenId;702 dummy = 0;703 }704}705706/// @dev inlined interface707contract ERC721UniqueMintableEvents {708 event MintingFinished();709}710711/// @title ERC721 minting logic.712/// @dev the ERC-165 identifier for this interface is 0x476ff149713contract ERC721UniqueMintable is Dummy, ERC165, ERC721UniqueMintableEvents {714 /// @dev EVM selector for this function is: 0x05d2035b,715 /// or in textual repr: mintingFinished()716 function mintingFinished() public view returns (bool) {717 require(false, stub_error);718 dummy;719 return false;720 }721722 /// @notice Function to mint token.723 /// @param to The new owner724 /// @return uint256 The id of the newly minted token725 /// @dev EVM selector for this function is: 0x6a627842,726 /// or in textual repr: mint(address)727 function mint(address to) public returns (uint256) {728 require(false, stub_error);729 to;730 dummy = 0;731 return 0;732 }733734 // /// @notice Function to mint token.735 // /// @dev `tokenId` should be obtained with `nextTokenId` method,736 // /// unlike standard, you can't specify it manually737 // /// @param to The new owner738 // /// @param tokenId ID of the minted RFT739 // /// @dev EVM selector for this function is: 0x40c10f19,740 // /// or in textual repr: mint(address,uint256)741 // function mint(address to, uint256 tokenId) public returns (bool) {742 // require(false, stub_error);743 // to;744 // tokenId;745 // dummy = 0;746 // return false;747 // }748749 /// @notice Function to mint token with the given tokenUri.750 /// @param to The new owner751 /// @param tokenUri Token URI that would be stored in the NFT properties752 /// @return uint256 The id of the newly minted token753 /// @dev EVM selector for this function is: 0x45c17782,754 /// or in textual repr: mintWithTokenURI(address,string)755 function mintWithTokenURI(address to, string memory tokenUri) public returns (uint256) {756 require(false, stub_error);757 to;758 tokenUri;759 dummy = 0;760 return 0;761 }762763 // /// @notice Function to mint token with the given tokenUri.764 // /// @dev `tokenId` should be obtained with `nextTokenId` method,765 // /// unlike standard, you can't specify it manually766 // /// @param to The new owner767 // /// @param tokenId ID of the minted RFT768 // /// @param tokenUri Token URI that would be stored in the RFT properties769 // /// @dev EVM selector for this function is: 0x50bb4e7f,770 // /// or in textual repr: mintWithTokenURI(address,uint256,string)771 // function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) public returns (bool) {772 // require(false, stub_error);773 // to;774 // tokenId;775 // tokenUri;776 // dummy = 0;777 // return false;778 // }779780 /// @dev Not implemented781 /// @dev EVM selector for this function is: 0x7d64bcb4,782 /// or in textual repr: finishMinting()783 function finishMinting() public returns (bool) {784 require(false, stub_error);785 dummy = 0;786 return false;787 }788}789790/// @title Unique extensions for ERC721.791/// @dev the ERC-165 identifier for this interface is 0x12f7d6c1792contract ERC721UniqueExtensions is Dummy, ERC165 {793 /// @notice A descriptive name for a collection of NFTs in this contract794 /// @dev EVM selector for this function is: 0x06fdde03,795 /// or in textual repr: name()796 function name() public view returns (string memory) {797 require(false, stub_error);798 dummy;799 return "";800 }801802 /// @notice An abbreviated name for NFTs in this contract803 /// @dev EVM selector for this function is: 0x95d89b41,804 /// or in textual repr: symbol()805 function symbol() public view returns (string memory) {806 require(false, stub_error);807 dummy;808 return "";809 }810811 /// @notice A description for the collection.812 /// @dev EVM selector for this function is: 0x7284e416,813 /// or in textual repr: description()814 function description() public view returns (string memory) {815 require(false, stub_error);816 dummy;817 return "";818 }819820 /// Returns the owner (in cross format) of the token.821 ///822 /// @param tokenId Id for the token.823 /// @dev EVM selector for this function is: 0x2b29dace,824 /// or in textual repr: crossOwnerOf(uint256)825 function crossOwnerOf(uint256 tokenId) public view returns (EthCrossAccount memory) {826 require(false, stub_error);827 tokenId;828 dummy;829 return EthCrossAccount(0x0000000000000000000000000000000000000000, 0);830 }831832 /// Returns the token properties.833 ///834 /// @param tokenId Id for the token.835 /// @param keys Properties keys. Empty keys for all propertyes.836 /// @return Vector of properties key/value pairs.837 /// @dev EVM selector for this function is: 0xe07ede7e,838 /// or in textual repr: properties(uint256,string[])839 function properties(uint256 tokenId, string[] memory keys) public view returns (Property[] memory) {840 require(false, stub_error);841 tokenId;842 keys;843 dummy;844 return new Property[](0);845 }846847 /// @notice Transfer ownership of an RFT848 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`849 /// is the zero address. Throws if `tokenId` is not a valid RFT.850 /// Throws if RFT pieces have multiple owners.851 /// @param to The new owner852 /// @param tokenId The RFT to transfer853 /// @dev EVM selector for this function is: 0xa9059cbb,854 /// or in textual repr: transfer(address,uint256)855 function transfer(address to, uint256 tokenId) public {856 require(false, stub_error);857 to;858 tokenId;859 dummy = 0;860 }861862 /// @notice Transfer ownership of an RFT863 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`864 /// is the zero address. Throws if `tokenId` is not a valid RFT.865 /// Throws if RFT pieces have multiple owners.866 /// @param to The new owner867 /// @param tokenId The RFT to transfer868 /// @dev EVM selector for this function is: 0x2ada85ff,869 /// or in textual repr: transferCross((address,uint256),uint256)870 function transferCross(EthCrossAccount memory to, uint256 tokenId) public {871 require(false, stub_error);872 to;873 tokenId;874 dummy = 0;875 }876877 /// @notice Transfer ownership of an RFT878 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`879 /// is the zero address. Throws if `tokenId` is not a valid RFT.880 /// Throws if RFT pieces have multiple owners.881 /// @param to The new owner882 /// @param tokenId The RFT to transfer883 /// @dev EVM selector for this function is: 0xd5cf430b,884 /// or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)885 function transferFromCross(886 EthCrossAccount memory from,887 EthCrossAccount memory to,888 uint256 tokenId889 ) public {890 require(false, stub_error);891 from;892 to;893 tokenId;894 dummy = 0;895 }896897 // /// @notice Burns a specific ERC721 token.898 // /// @dev Throws unless `msg.sender` is the current owner or an authorized899 // /// operator for this RFT. Throws if `from` is not the current owner. Throws900 // /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.901 // /// Throws if RFT pieces have multiple owners.902 // /// @param from The current owner of the RFT903 // /// @param tokenId The RFT to transfer904 // /// @dev EVM selector for this function is: 0x79cc6790,905 // /// or in textual repr: burnFrom(address,uint256)906 // function burnFrom(address from, uint256 tokenId) public {907 // require(false, stub_error);908 // from;909 // tokenId;910 // dummy = 0;911 // }912913 /// @notice Burns a specific ERC721 token.914 /// @dev Throws unless `msg.sender` is the current owner or an authorized915 /// operator for this RFT. Throws if `from` is not the current owner. Throws916 /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.917 /// Throws if RFT pieces have multiple owners.918 /// @param from The current owner of the RFT919 /// @param tokenId The RFT to transfer920 /// @dev EVM selector for this function is: 0xbb2f5a58,921 /// or in textual repr: burnFromCross((address,uint256),uint256)922 function burnFromCross(EthCrossAccount memory from, uint256 tokenId) public {923 require(false, stub_error);924 from;925 tokenId;926 dummy = 0;927 }928929 /// @notice Returns next free RFT ID.930 /// @dev EVM selector for this function is: 0x75794a3c,931 /// or in textual repr: nextTokenId()932 function nextTokenId() public view returns (uint256) {933 require(false, stub_error);934 dummy;935 return 0;936 }937938 // /// @notice Function to mint multiple tokens.939 // /// @dev `tokenIds` should be an array of consecutive numbers and first number940 // /// should be obtained with `nextTokenId` method941 // /// @param to The new owner942 // /// @param tokenIds IDs of the minted RFTs943 // /// @dev EVM selector for this function is: 0x44a9945e,944 // /// or in textual repr: mintBulk(address,uint256[])945 // function mintBulk(address to, uint256[] memory tokenIds) public returns (bool) {946 // require(false, stub_error);947 // to;948 // tokenIds;949 // dummy = 0;950 // return false;951 // }952953 // /// @notice Function to mint multiple tokens with the given tokenUris.954 // /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive955 // /// numbers and first number should be obtained with `nextTokenId` method956 // /// @param to The new owner957 // /// @param tokens array of pairs of token ID and token URI for minted tokens958 // /// @dev EVM selector for this function is: 0x36543006,959 // /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])960 // function mintBulkWithTokenURI(address to, Tuple14[] memory tokens) public returns (bool) {961 // require(false, stub_error);962 // to;963 // tokens;964 // dummy = 0;965 // return false;966 // }967968 /// Returns EVM address for refungible token969 ///970 /// @param token ID of the token971 /// @dev EVM selector for this function is: 0xab76fac6,972 /// or in textual repr: tokenContractAddress(uint256)973 function tokenContractAddress(uint256 token) public view returns (address) {974 require(false, stub_error);975 token;976 dummy;977 return 0x0000000000000000000000000000000000000000;978 }979}980981/// @dev anonymous struct982struct Tuple14 {983 uint256 field_0;984 string field_1;985}986987/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension988/// @dev See https://eips.ethereum.org/EIPS/eip-721989/// @dev the ERC-165 identifier for this interface is 0x780e9d63990contract ERC721Enumerable is Dummy, ERC165 {991 /// @notice Enumerate valid RFTs992 /// @param index A counter less than `totalSupply()`993 /// @return The token identifier for the `index`th NFT,994 /// (sort order not specified)995 /// @dev EVM selector for this function is: 0x4f6ccce7,996 /// or in textual repr: tokenByIndex(uint256)997 function tokenByIndex(uint256 index) public view returns (uint256) {998 require(false, stub_error);999 index;1000 dummy;1001 return 0;1002 }10031004 /// Not implemented1005 /// @dev EVM selector for this function is: 0x2f745c59,1006 /// or in textual repr: tokenOfOwnerByIndex(address,uint256)1007 function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {1008 require(false, stub_error);1009 owner;1010 index;1011 dummy;1012 return 0;1013 }10141015 /// @notice Count RFTs tracked by this contract1016 /// @return A count of valid RFTs tracked by this contract, where each one of1017 /// them has an assigned and queryable owner not equal to the zero address1018 /// @dev EVM selector for this function is: 0x18160ddd,1019 /// or in textual repr: totalSupply()1020 function totalSupply() public view returns (uint256) {1021 require(false, stub_error);1022 dummy;1023 return 0;1024 }1025}10261027/// @dev inlined interface1028contract ERC721Events {1029 event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);1030 event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);1031 event ApprovalForAll(address indexed owner, address indexed operator, bool approved);1032}10331034/// @title ERC-721 Non-Fungible Token Standard1035/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md1036/// @dev the ERC-165 identifier for this interface is 0x4016cd871037contract ERC721 is Dummy, ERC165, ERC721Events {1038 /// @notice Count all RFTs assigned to an owner1039 /// @dev RFTs assigned to the zero address are considered invalid, and this1040 /// function throws for queries about the zero address.1041 /// @param owner An address for whom to query the balance1042 /// @return The number of RFTs owned by `owner`, possibly zero1043 /// @dev EVM selector for this function is: 0x70a08231,1044 /// or in textual repr: balanceOf(address)1045 function balanceOf(address owner) public view returns (uint256) {1046 require(false, stub_error);1047 owner;1048 dummy;1049 return 0;1050 }10511052 /// @notice Find the owner of an RFT1053 /// @dev RFTs assigned to zero address are considered invalid, and queries1054 /// about them do throw.1055 /// Returns special 0xffffffffffffffffffffffffffffffffffffffff address for1056 /// the tokens that are partially owned.1057 /// @param tokenId The identifier for an RFT1058 /// @return The address of the owner of the RFT1059 /// @dev EVM selector for this function is: 0x6352211e,1060 /// or in textual repr: ownerOf(uint256)1061 function ownerOf(uint256 tokenId) public view returns (address) {1062 require(false, stub_error);1063 tokenId;1064 dummy;1065 return 0x0000000000000000000000000000000000000000;1066 }10671068 /// @dev Not implemented1069 /// @dev EVM selector for this function is: 0x60a11672,1070 /// or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)1071 function safeTransferFromWithData(1072 address from,1073 address to,1074 uint256 tokenId,1075 bytes memory data1076 ) public {1077 require(false, stub_error);1078 from;1079 to;1080 tokenId;1081 data;1082 dummy = 0;1083 }10841085 /// @dev Not implemented1086 /// @dev EVM selector for this function is: 0x42842e0e,1087 /// or in textual repr: safeTransferFrom(address,address,uint256)1088 function safeTransferFrom(1089 address from,1090 address to,1091 uint256 tokenId1092 ) public {1093 require(false, stub_error);1094 from;1095 to;1096 tokenId;1097 dummy = 0;1098 }10991100 /// @notice Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE1101 /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE1102 /// THEY MAY BE PERMANENTLY LOST1103 /// @dev Throws unless `msg.sender` is the current owner or an authorized1104 /// operator for this RFT. Throws if `from` is not the current owner. Throws1105 /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.1106 /// Throws if RFT pieces have multiple owners.1107 /// @param from The current owner of the NFT1108 /// @param to The new owner1109 /// @param tokenId The NFT to transfer1110 /// @dev EVM selector for this function is: 0x23b872dd,1111 /// or in textual repr: transferFrom(address,address,uint256)1112 function transferFrom(1113 address from,1114 address to,1115 uint256 tokenId1116 ) public {1117 require(false, stub_error);1118 from;1119 to;1120 tokenId;1121 dummy = 0;1122 }11231124 /// @dev Not implemented1125 /// @dev EVM selector for this function is: 0x095ea7b3,1126 /// or in textual repr: approve(address,uint256)1127 function approve(address approved, uint256 tokenId) public {1128 require(false, stub_error);1129 approved;1130 tokenId;1131 dummy = 0;1132 }11331134 /// @notice Sets or unsets the approval of a given operator.1135 /// The `operator` is allowed to transfer all token pieces of the `caller` on their behalf.1136 /// @param operator Operator1137 /// @param approved Should operator status be granted or revoked?1138 /// @dev EVM selector for this function is: 0xa22cb465,1139 /// or in textual repr: setApprovalForAll(address,bool)1140 function setApprovalForAll(address operator, bool approved) public {1141 require(false, stub_error);1142 operator;1143 approved;1144 dummy = 0;1145 }11461147 /// @dev Not implemented1148 /// @dev EVM selector for this function is: 0x081812fc,1149 /// or in textual repr: getApproved(uint256)1150 function getApproved(uint256 tokenId) public view returns (address) {1151 require(false, stub_error);1152 tokenId;1153 dummy;1154 return 0x0000000000000000000000000000000000000000;1155 }11561157 /// @notice Tells whether the given `owner` approves the `operator`.1158 /// @dev EVM selector for this function is: 0xe985e9c5,1159 /// or in textual repr: isApprovedForAll(address,address)1160 function isApprovedForAll(address owner, address operator) public view returns (bool) {1161 require(false, stub_error);1162 owner;1163 operator;1164 dummy;1165 return false;1166 }11671168 /// @notice Returns collection helper contract address1169 /// @dev EVM selector for this function is: 0x1896cce6,1170 /// or in textual repr: collectionHelperAddress()1171 function collectionHelperAddress() public view returns (address) {1172 require(false, stub_error);1173 dummy;1174 return 0x0000000000000000000000000000000000000000;1175 }1176}11771178contract UniqueRefungible is1179 Dummy,1180 ERC165,1181 ERC721,1182 ERC721Enumerable,1183 ERC721UniqueExtensions,1184 ERC721UniqueMintable,1185 ERC721Burnable,1186 ERC721Metadata,1187 Collection,1188 TokenProperties1189{}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 0xde0695c222contract 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(string memory key, bool isMutable, bool collectionAdmin, bool tokenOwner) public {32 // require(false, stub_error);33 // key;34 // isMutable;35 // collectionAdmin;36 // tokenOwner;37 // dummy = 0;38 // }3940 /// @notice Set permissions for token property.41 /// @dev Throws error if `msg.sender` is not admin or owner of the collection.42 /// @param permissions Permissions for keys.43 /// @dev EVM selector for this function is: 0xbd92983a,44 /// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])45 function setTokenPropertyPermissions(Tuple58[] memory permissions) public {46 require(false, stub_error);47 permissions;48 dummy = 0;49 }5051 /// @notice Get permissions for token properties.52 /// @dev EVM selector for this function is: 0xf23d7790,53 /// or in textual repr: tokenPropertyPermissions()54 function tokenPropertyPermissions() public view returns (Tuple58[] memory) {55 require(false, stub_error);56 dummy;57 return new Tuple58[](0);58 }5960 // /// @notice Set token property value.61 // /// @dev Throws error if `msg.sender` has no permission to edit the property.62 // /// @param tokenId ID of the token.63 // /// @param key Property key.64 // /// @param value Property value.65 // /// @dev EVM selector for this function is: 0x1752d67b,66 // /// or in textual repr: setProperty(uint256,string,bytes)67 // function setProperty(uint256 tokenId, string memory key, bytes memory value) public {68 // require(false, stub_error);69 // tokenId;70 // key;71 // value;72 // dummy = 0;73 // }7475 /// @notice Set token properties value.76 /// @dev Throws error if `msg.sender` has no permission to edit the property.77 /// @param tokenId ID of the token.78 /// @param properties settable properties79 /// @dev EVM selector for this function is: 0x14ed3a6e,80 /// or in textual repr: setProperties(uint256,(string,bytes)[])81 function setProperties(uint256 tokenId, Property[] memory properties) public {82 require(false, stub_error);83 tokenId;84 properties;85 dummy = 0;86 }8788 // /// @notice Delete token property value.89 // /// @dev Throws error if `msg.sender` has no permission to edit the property.90 // /// @param tokenId ID of the token.91 // /// @param key Property key.92 // /// @dev EVM selector for this function is: 0x066111d1,93 // /// or in textual repr: deleteProperty(uint256,string)94 // function deleteProperty(uint256 tokenId, string memory key) public {95 // require(false, stub_error);96 // tokenId;97 // key;98 // dummy = 0;99 // }100101 /// @notice Delete token properties value.102 /// @dev Throws error if `msg.sender` has no permission to edit the property.103 /// @param tokenId ID of the token.104 /// @param keys Properties key.105 /// @dev EVM selector for this function is: 0xc472d371,106 /// or in textual repr: deleteProperties(uint256,string[])107 function deleteProperties(uint256 tokenId, string[] memory keys) public {108 require(false, stub_error);109 tokenId;110 keys;111 dummy = 0;112 }113114 /// @notice Get token property value.115 /// @dev Throws error if key not found116 /// @param tokenId ID of the token.117 /// @param key Property key.118 /// @return Property value bytes119 /// @dev EVM selector for this function is: 0x7228c327,120 /// or in textual repr: property(uint256,string)121 function property(uint256 tokenId, string memory key) public view returns (bytes memory) {122 require(false, stub_error);123 tokenId;124 key;125 dummy;126 return hex"";127 }128}129130/// @dev Property struct131struct Property {132 string key;133 bytes value;134}135136/// @dev Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.137enum EthTokenPermissions {138 /// @dev Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]139 Mutable,140 /// @dev Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]141 TokenOwner,142 /// @dev Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]143 CollectionAdmin144}145146/// @dev anonymous struct147struct Tuple58 {148 string field_0;149 Tuple56[] field_1;150}151152/// @dev anonymous struct153struct Tuple56 {154 EthTokenPermissions field_0;155 bool field_1;156}157158/// @title A contract that allows you to work with collections.159/// @dev the ERC-165 identifier for this interface is 0x81172a75160contract Collection is Dummy, ERC165 {161 // /// Set collection property.162 // ///163 // /// @param key Property key.164 // /// @param value Propery value.165 // /// @dev EVM selector for this function is: 0x2f073f66,166 // /// or in textual repr: setCollectionProperty(string,bytes)167 // function setCollectionProperty(string memory key, bytes memory value) public {168 // require(false, stub_error);169 // key;170 // value;171 // dummy = 0;172 // }173174 /// Set collection properties.175 ///176 /// @param properties Vector of properties key/value pair.177 /// @dev EVM selector for this function is: 0x50b26b2a,178 /// or in textual repr: setCollectionProperties((string,bytes)[])179 function setCollectionProperties(Property[] memory properties) public {180 require(false, stub_error);181 properties;182 dummy = 0;183 }184185 // /// Delete collection property.186 // ///187 // /// @param key Property key.188 // /// @dev EVM selector for this function is: 0x7b7debce,189 // /// or in textual repr: deleteCollectionProperty(string)190 // function deleteCollectionProperty(string memory key) public {191 // require(false, stub_error);192 // key;193 // dummy = 0;194 // }195196 /// Delete collection properties.197 ///198 /// @param keys Properties keys.199 /// @dev EVM selector for this function is: 0xee206ee3,200 /// or in textual repr: deleteCollectionProperties(string[])201 function deleteCollectionProperties(string[] memory keys) public {202 require(false, stub_error);203 keys;204 dummy = 0;205 }206207 /// Get collection property.208 ///209 /// @dev Throws error if key not found.210 ///211 /// @param key Property key.212 /// @return bytes The property corresponding to the key.213 /// @dev EVM selector for this function is: 0xcf24fd6d,214 /// or in textual repr: collectionProperty(string)215 function collectionProperty(string memory key) public view returns (bytes memory) {216 require(false, stub_error);217 key;218 dummy;219 return hex"";220 }221222 /// Get collection properties.223 ///224 /// @param keys Properties keys. Empty keys for all propertyes.225 /// @return Vector of properties key/value pairs.226 /// @dev EVM selector for this function is: 0x285fb8e6,227 /// or in textual repr: collectionProperties(string[])228 function collectionProperties(string[] memory keys) public view returns (Property[] memory) {229 require(false, stub_error);230 keys;231 dummy;232 return new Property[](0);233 }234235 // /// Set the sponsor of the collection.236 // ///237 // /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.238 // ///239 // /// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.240 // /// @dev EVM selector for this function is: 0x7623402e,241 // /// or in textual repr: setCollectionSponsor(address)242 // function setCollectionSponsor(address sponsor) public {243 // require(false, stub_error);244 // sponsor;245 // dummy = 0;246 // }247248 /// Set the sponsor of the collection.249 ///250 /// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.251 ///252 /// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.253 /// @dev EVM selector for this function is: 0x84a1d5a8,254 /// or in textual repr: setCollectionSponsorCross((address,uint256))255 function setCollectionSponsorCross(EthCrossAccount memory sponsor) public {256 require(false, stub_error);257 sponsor;258 dummy = 0;259 }260261 /// Whether there is a pending sponsor.262 /// @dev EVM selector for this function is: 0x058ac185,263 /// or in textual repr: hasCollectionPendingSponsor()264 function hasCollectionPendingSponsor() public view returns (bool) {265 require(false, stub_error);266 dummy;267 return false;268 }269270 /// Collection sponsorship confirmation.271 ///272 /// @dev After setting the sponsor for the collection, it must be confirmed with this function.273 /// @dev EVM selector for this function is: 0x3c50e97a,274 /// or in textual repr: confirmCollectionSponsorship()275 function confirmCollectionSponsorship() public {276 require(false, stub_error);277 dummy = 0;278 }279280 /// Remove collection sponsor.281 /// @dev EVM selector for this function is: 0x6e0326a3,282 /// or in textual repr: removeCollectionSponsor()283 function removeCollectionSponsor() public {284 require(false, stub_error);285 dummy = 0;286 }287288 /// Get current sponsor.289 ///290 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.291 /// @dev EVM selector for this function is: 0x6ec0a9f1,292 /// or in textual repr: collectionSponsor()293 function collectionSponsor() public view returns (Tuple29 memory) {294 require(false, stub_error);295 dummy;296 return Tuple29(0x0000000000000000000000000000000000000000, 0);297 }298299 /// Get current collection limits.300 ///301 /// @return Array of tuples (byte, bool, uint256) with limits and their values. Order of limits:302 /// "accountTokenOwnershipLimit",303 /// "sponsoredDataSize",304 /// "sponsoredDataRateLimit",305 /// "tokenLimit",306 /// "sponsorTransferTimeout",307 /// "sponsorApproveTimeout"308 /// "ownerCanTransfer",309 /// "ownerCanDestroy",310 /// "transfersEnabled"311 /// Return `false` if a limit not set.312 /// @dev EVM selector for this function is: 0xf63bc572,313 /// or in textual repr: collectionLimits()314 function collectionLimits() public view returns (Tuple32[] memory) {315 require(false, stub_error);316 dummy;317 return new Tuple32[](0);318 }319320 /// Set limits for the collection.321 /// @dev Throws error if limit not found.322 /// @param limit Name of the limit. Valid names:323 /// "accountTokenOwnershipLimit",324 /// "sponsoredDataSize",325 /// "sponsoredDataRateLimit",326 /// "tokenLimit",327 /// "sponsorTransferTimeout",328 /// "sponsorApproveTimeout"329 /// "ownerCanTransfer",330 /// "ownerCanDestroy",331 /// "transfersEnabled"332 /// @param status enable\disable limit. Works only with `true`.333 /// @param value Value of the limit.334 /// @dev EVM selector for this function is: 0x88150bd0,335 /// or in textual repr: setCollectionLimit(uint8,bool,uint256)336 function setCollectionLimit(337 CollectionLimits limit,338 bool status,339 uint256 value340 ) public {341 require(false, stub_error);342 limit;343 status;344 value;345 dummy = 0;346 }347348 /// Get contract address.349 /// @dev EVM selector for this function is: 0xf6b4dfb4,350 /// or in textual repr: contractAddress()351 function contractAddress() public view returns (address) {352 require(false, stub_error);353 dummy;354 return 0x0000000000000000000000000000000000000000;355 }356357 /// Add collection admin.358 /// @param newAdmin Cross account administrator address.359 /// @dev EVM selector for this function is: 0x859aa7d6,360 /// or in textual repr: addCollectionAdminCross((address,uint256))361 function addCollectionAdminCross(EthCrossAccount memory newAdmin) public {362 require(false, stub_error);363 newAdmin;364 dummy = 0;365 }366367 /// Remove collection admin.368 /// @param admin Cross account administrator address.369 /// @dev EVM selector for this function is: 0x6c0cd173,370 /// or in textual repr: removeCollectionAdminCross((address,uint256))371 function removeCollectionAdminCross(EthCrossAccount memory admin) public {372 require(false, stub_error);373 admin;374 dummy = 0;375 }376377 // /// Add collection admin.378 // /// @param newAdmin Address of the added administrator.379 // /// @dev EVM selector for this function is: 0x92e462c7,380 // /// or in textual repr: addCollectionAdmin(address)381 // function addCollectionAdmin(address newAdmin) public {382 // require(false, stub_error);383 // newAdmin;384 // dummy = 0;385 // }386387 // /// Remove collection admin.388 // ///389 // /// @param admin Address of the removed administrator.390 // /// @dev EVM selector for this function is: 0xfafd7b42,391 // /// or in textual repr: removeCollectionAdmin(address)392 // function removeCollectionAdmin(address admin) public {393 // require(false, stub_error);394 // admin;395 // dummy = 0;396 // }397398 /// Toggle accessibility of collection nesting.399 ///400 /// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'401 /// @dev EVM selector for this function is: 0x112d4586,402 /// or in textual repr: setCollectionNesting(bool)403 function setCollectionNesting(bool enable) public {404 require(false, stub_error);405 enable;406 dummy = 0;407 }408409 /// Toggle accessibility of collection nesting.410 ///411 /// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'412 /// @param collections Addresses of collections that will be available for nesting.413 /// @dev EVM selector for this function is: 0x64872396,414 /// or in textual repr: setCollectionNesting(bool,address[])415 function setCollectionNesting(bool enable, address[] memory collections) public {416 require(false, stub_error);417 enable;418 collections;419 dummy = 0;420 }421422 /// Returns nesting for a collection423 /// @dev EVM selector for this function is: 0x22d25bfe,424 /// or in textual repr: collectionNestingRestrictedCollectionIds()425 function collectionNestingRestrictedCollectionIds() public view returns (Tuple38 memory) {426 require(false, stub_error);427 dummy;428 return Tuple38(false, new uint256[](0));429 }430431 /// Returns permissions for a collection432 /// @dev EVM selector for this function is: 0x5b2eaf4b,433 /// or in textual repr: collectionNestingPermissions()434 function collectionNestingPermissions() public view returns (Tuple41[] memory) {435 require(false, stub_error);436 dummy;437 return new Tuple41[](0);438 }439440 /// Set the collection access method.441 /// @param mode Access mode442 /// 0 for Normal443 /// 1 for AllowList444 /// @dev EVM selector for this function is: 0x41835d4c,445 /// or in textual repr: setCollectionAccess(uint8)446 function setCollectionAccess(uint8 mode) public {447 require(false, stub_error);448 mode;449 dummy = 0;450 }451452 /// Checks that user allowed to operate with collection.453 ///454 /// @param user User address to check.455 /// @dev EVM selector for this function is: 0x91b6df49,456 /// or in textual repr: allowlistedCross((address,uint256))457 function allowlistedCross(EthCrossAccount memory user) public view returns (bool) {458 require(false, stub_error);459 user;460 dummy;461 return false;462 }463464 // /// Add the user to the allowed list.465 // ///466 // /// @param user Address of a trusted user.467 // /// @dev EVM selector for this function is: 0x67844fe6,468 // /// or in textual repr: addToCollectionAllowList(address)469 // function addToCollectionAllowList(address user) public {470 // require(false, stub_error);471 // user;472 // dummy = 0;473 // }474475 /// Add user to allowed list.476 ///477 /// @param user User cross account address.478 /// @dev EVM selector for this function is: 0xa0184a3a,479 /// or in textual repr: addToCollectionAllowListCross((address,uint256))480 function addToCollectionAllowListCross(EthCrossAccount memory user) public {481 require(false, stub_error);482 user;483 dummy = 0;484 }485486 // /// Remove the user from the allowed list.487 // ///488 // /// @param user Address of a removed user.489 // /// @dev EVM selector for this function is: 0x85c51acb,490 // /// or in textual repr: removeFromCollectionAllowList(address)491 // function removeFromCollectionAllowList(address user) public {492 // require(false, stub_error);493 // user;494 // dummy = 0;495 // }496497 /// Remove user from allowed list.498 ///499 /// @param user User cross account address.500 /// @dev EVM selector for this function is: 0x09ba452a,501 /// or in textual repr: removeFromCollectionAllowListCross((address,uint256))502 function removeFromCollectionAllowListCross(EthCrossAccount memory user) public {503 require(false, stub_error);504 user;505 dummy = 0;506 }507508 /// Switch permission for minting.509 ///510 /// @param mode Enable if "true".511 /// @dev EVM selector for this function is: 0x00018e84,512 /// or in textual repr: setCollectionMintMode(bool)513 function setCollectionMintMode(bool mode) public {514 require(false, stub_error);515 mode;516 dummy = 0;517 }518519 // /// Check that account is the owner or admin of the collection520 // ///521 // /// @param user account to verify522 // /// @return "true" if account is the owner or admin523 // /// @dev EVM selector for this function is: 0x9811b0c7,524 // /// or in textual repr: isOwnerOrAdmin(address)525 // function isOwnerOrAdmin(address user) public view returns (bool) {526 // require(false, stub_error);527 // user;528 // dummy;529 // return false;530 // }531532 /// Check that account is the owner or admin of the collection533 ///534 /// @param user User cross account to verify535 /// @return "true" if account is the owner or admin536 /// @dev EVM selector for this function is: 0x3e75a905,537 /// or in textual repr: isOwnerOrAdminCross((address,uint256))538 function isOwnerOrAdminCross(EthCrossAccount memory user) public view returns (bool) {539 require(false, stub_error);540 user;541 dummy;542 return false;543 }544545 /// Returns collection type546 ///547 /// @return `Fungible` or `NFT` or `ReFungible`548 /// @dev EVM selector for this function is: 0xd34b55b8,549 /// or in textual repr: uniqueCollectionType()550 function uniqueCollectionType() public view returns (string memory) {551 require(false, stub_error);552 dummy;553 return "";554 }555556 /// Get collection owner.557 ///558 /// @return Tuble with sponsor address and his substrate mirror.559 /// If address is canonical then substrate mirror is zero and vice versa.560 /// @dev EVM selector for this function is: 0xdf727d3b,561 /// or in textual repr: collectionOwner()562 function collectionOwner() public view returns (EthCrossAccount memory) {563 require(false, stub_error);564 dummy;565 return EthCrossAccount(0x0000000000000000000000000000000000000000, 0);566 }567568 // /// Changes collection owner to another account569 // ///570 // /// @dev Owner can be changed only by current owner571 // /// @param newOwner new owner account572 // /// @dev EVM selector for this function is: 0x4f53e226,573 // /// or in textual repr: changeCollectionOwner(address)574 // function changeCollectionOwner(address newOwner) public {575 // require(false, stub_error);576 // newOwner;577 // dummy = 0;578 // }579580 /// Get collection administrators581 ///582 /// @return Vector of tuples with admins address and his substrate mirror.583 /// If address is canonical then substrate mirror is zero and vice versa.584 /// @dev EVM selector for this function is: 0x5813216b,585 /// or in textual repr: collectionAdmins()586 function collectionAdmins() public view returns (EthCrossAccount[] memory) {587 require(false, stub_error);588 dummy;589 return new EthCrossAccount[](0);590 }591592 /// Changes collection owner to another account593 ///594 /// @dev Owner can be changed only by current owner595 /// @param newOwner new owner cross account596 /// @dev EVM selector for this function is: 0x6496c497,597 /// or in textual repr: changeCollectionOwnerCross((address,uint256))598 function changeCollectionOwnerCross(EthCrossAccount memory newOwner) public {599 require(false, stub_error);600 newOwner;601 dummy = 0;602 }603}604605/// @dev Cross account struct606struct EthCrossAccount {607 address eth;608 uint256 sub;609}610611enum CollectionPermissions {612 CollectionAdmin,613 TokenOwner614}615616/// @dev anonymous struct617struct Tuple41 {618 CollectionPermissions field_0;619 bool field_1;620}621622/// @dev anonymous struct623struct Tuple38 {624 bool field_0;625 uint256[] field_1;626}627628/// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.629enum CollectionLimits {630 /// @dev How many tokens can a user have on one account.631 AccountTokenOwnership,632 /// @dev How many bytes of data are available for sponsorship.633 SponsoredDataSize,634 /// @dev In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]635 SponsoredDataRateLimit,636 /// @dev How many tokens can be mined into this collection.637 TokenLimit,638 /// @dev Timeouts for transfer sponsoring.639 SponsorTransferTimeout,640 /// @dev Timeout for sponsoring an approval in passed blocks.641 SponsorApproveTimeout,642 /// @dev Whether the collection owner of the collection can send tokens (which belong to other users).643 OwnerCanTransfer,644 /// @dev Can the collection owner burn other people's tokens.645 OwnerCanDestroy,646 /// @dev Is it possible to send tokens from this collection between users.647 TransferEnabled648}649650/// @dev anonymous struct651struct Tuple32 {652 CollectionLimits field_0;653 bool field_1;654 uint256 field_2;655}656657/// @dev anonymous struct658struct Tuple29 {659 address field_0;660 uint256 field_1;661}662663/// @dev the ERC-165 identifier for this interface is 0x5b5e139f664contract ERC721Metadata is Dummy, ERC165 {665 // /// @notice A descriptive name for a collection of NFTs in this contract666 // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`667 // /// @dev EVM selector for this function is: 0x06fdde03,668 // /// or in textual repr: name()669 // function name() public view returns (string memory) {670 // require(false, stub_error);671 // dummy;672 // return "";673 // }674675 // /// @notice An abbreviated name for NFTs in this contract676 // /// @dev real implementation of this function lies in `ERC721UniqueExtensions`677 // /// @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/// @title ERC721 Token that can be irreversibly burned (destroyed).705/// @dev the ERC-165 identifier for this interface is 0x42966c68706contract ERC721Burnable is Dummy, ERC165 {707 /// @notice Burns a specific ERC721 token.708 /// @dev Throws unless `msg.sender` is the current RFT owner, or an authorized709 /// operator of the current owner.710 /// @param tokenId The RFT to approve711 /// @dev EVM selector for this function is: 0x42966c68,712 /// or in textual repr: burn(uint256)713 function burn(uint256 tokenId) public {714 require(false, stub_error);715 tokenId;716 dummy = 0;717 }718}719720/// @dev inlined interface721contract ERC721UniqueMintableEvents {722 event MintingFinished();723}724725/// @title ERC721 minting logic.726/// @dev the ERC-165 identifier for this interface is 0x476ff149727contract ERC721UniqueMintable is Dummy, ERC165, ERC721UniqueMintableEvents {728 /// @dev EVM selector for this function is: 0x05d2035b,729 /// or in textual repr: mintingFinished()730 function mintingFinished() public view returns (bool) {731 require(false, stub_error);732 dummy;733 return false;734 }735736 /// @notice Function to mint token.737 /// @param to The new owner738 /// @return uint256 The id of the newly minted token739 /// @dev EVM selector for this function is: 0x6a627842,740 /// or in textual repr: mint(address)741 function mint(address to) public returns (uint256) {742 require(false, stub_error);743 to;744 dummy = 0;745 return 0;746 }747748 // /// @notice Function to mint token.749 // /// @dev `tokenId` should be obtained with `nextTokenId` method,750 // /// unlike standard, you can't specify it manually751 // /// @param to The new owner752 // /// @param tokenId ID of the minted RFT753 // /// @dev EVM selector for this function is: 0x40c10f19,754 // /// or in textual repr: mint(address,uint256)755 // function mint(address to, uint256 tokenId) public returns (bool) {756 // require(false, stub_error);757 // to;758 // tokenId;759 // dummy = 0;760 // return false;761 // }762763 /// @notice Function to mint token with the given tokenUri.764 /// @param to The new owner765 /// @param tokenUri Token URI that would be stored in the NFT properties766 /// @return uint256 The id of the newly minted token767 /// @dev EVM selector for this function is: 0x45c17782,768 /// or in textual repr: mintWithTokenURI(address,string)769 function mintWithTokenURI(address to, string memory tokenUri) public returns (uint256) {770 require(false, stub_error);771 to;772 tokenUri;773 dummy = 0;774 return 0;775 }776777 // /// @notice Function to mint token with the given tokenUri.778 // /// @dev `tokenId` should be obtained with `nextTokenId` method,779 // /// unlike standard, you can't specify it manually780 // /// @param to The new owner781 // /// @param tokenId ID of the minted RFT782 // /// @param tokenUri Token URI that would be stored in the RFT properties783 // /// @dev EVM selector for this function is: 0x50bb4e7f,784 // /// or in textual repr: mintWithTokenURI(address,uint256,string)785 // function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) public returns (bool) {786 // require(false, stub_error);787 // to;788 // tokenId;789 // tokenUri;790 // dummy = 0;791 // return false;792 // }793794 /// @dev Not implemented795 /// @dev EVM selector for this function is: 0x7d64bcb4,796 /// or in textual repr: finishMinting()797 function finishMinting() public returns (bool) {798 require(false, stub_error);799 dummy = 0;800 return false;801 }802}803804/// @title Unique extensions for ERC721.805/// @dev the ERC-165 identifier for this interface is 0x12f7d6c1806contract ERC721UniqueExtensions is Dummy, ERC165 {807 /// @notice A descriptive name for a collection of NFTs in this contract808 /// @dev EVM selector for this function is: 0x06fdde03,809 /// or in textual repr: name()810 function name() public view returns (string memory) {811 require(false, stub_error);812 dummy;813 return "";814 }815816 /// @notice An abbreviated name for NFTs in this contract817 /// @dev EVM selector for this function is: 0x95d89b41,818 /// or in textual repr: symbol()819 function symbol() public view returns (string memory) {820 require(false, stub_error);821 dummy;822 return "";823 }824825 /// @notice A description for the collection.826 /// @dev EVM selector for this function is: 0x7284e416,827 /// or in textual repr: description()828 function description() public view returns (string memory) {829 require(false, stub_error);830 dummy;831 return "";832 }833834 /// Returns the owner (in cross format) of the token.835 ///836 /// @param tokenId Id for the token.837 /// @dev EVM selector for this function is: 0x2b29dace,838 /// or in textual repr: crossOwnerOf(uint256)839 function crossOwnerOf(uint256 tokenId) public view returns (EthCrossAccount memory) {840 require(false, stub_error);841 tokenId;842 dummy;843 return EthCrossAccount(0x0000000000000000000000000000000000000000, 0);844 }845846 /// Returns the token properties.847 ///848 /// @param tokenId Id for the token.849 /// @param keys Properties keys. Empty keys for all propertyes.850 /// @return Vector of properties key/value pairs.851 /// @dev EVM selector for this function is: 0xe07ede7e,852 /// or in textual repr: properties(uint256,string[])853 function properties(uint256 tokenId, string[] memory keys) public view returns (Property[] memory) {854 require(false, stub_error);855 tokenId;856 keys;857 dummy;858 return new Property[](0);859 }860861 /// @notice Transfer ownership of an RFT862 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`863 /// is the zero address. Throws if `tokenId` is not a valid RFT.864 /// Throws if RFT pieces have multiple owners.865 /// @param to The new owner866 /// @param tokenId The RFT to transfer867 /// @dev EVM selector for this function is: 0xa9059cbb,868 /// or in textual repr: transfer(address,uint256)869 function transfer(address to, uint256 tokenId) public {870 require(false, stub_error);871 to;872 tokenId;873 dummy = 0;874 }875876 /// @notice Transfer ownership of an RFT877 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`878 /// is the zero address. Throws if `tokenId` is not a valid RFT.879 /// Throws if RFT pieces have multiple owners.880 /// @param to The new owner881 /// @param tokenId The RFT to transfer882 /// @dev EVM selector for this function is: 0x2ada85ff,883 /// or in textual repr: transferCross((address,uint256),uint256)884 function transferCross(EthCrossAccount memory to, uint256 tokenId) public {885 require(false, stub_error);886 to;887 tokenId;888 dummy = 0;889 }890891 /// @notice Transfer ownership of an RFT892 /// @dev Throws unless `msg.sender` is the current owner. Throws if `to`893 /// is the zero address. Throws if `tokenId` is not a valid RFT.894 /// Throws if RFT pieces have multiple owners.895 /// @param to The new owner896 /// @param tokenId The RFT to transfer897 /// @dev EVM selector for this function is: 0xd5cf430b,898 /// or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)899 function transferFromCross(900 EthCrossAccount memory from,901 EthCrossAccount memory to,902 uint256 tokenId903 ) public {904 require(false, stub_error);905 from;906 to;907 tokenId;908 dummy = 0;909 }910911 // /// @notice Burns a specific ERC721 token.912 // /// @dev Throws unless `msg.sender` is the current owner or an authorized913 // /// operator for this RFT. Throws if `from` is not the current owner. Throws914 // /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.915 // /// Throws if RFT pieces have multiple owners.916 // /// @param from The current owner of the RFT917 // /// @param tokenId The RFT to transfer918 // /// @dev EVM selector for this function is: 0x79cc6790,919 // /// or in textual repr: burnFrom(address,uint256)920 // function burnFrom(address from, uint256 tokenId) public {921 // require(false, stub_error);922 // from;923 // tokenId;924 // dummy = 0;925 // }926927 /// @notice Burns a specific ERC721 token.928 /// @dev Throws unless `msg.sender` is the current owner or an authorized929 /// operator for this RFT. Throws if `from` is not the current owner. Throws930 /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.931 /// Throws if RFT pieces have multiple owners.932 /// @param from The current owner of the RFT933 /// @param tokenId The RFT to transfer934 /// @dev EVM selector for this function is: 0xbb2f5a58,935 /// or in textual repr: burnFromCross((address,uint256),uint256)936 function burnFromCross(EthCrossAccount memory from, uint256 tokenId) public {937 require(false, stub_error);938 from;939 tokenId;940 dummy = 0;941 }942943 /// @notice Returns next free RFT ID.944 /// @dev EVM selector for this function is: 0x75794a3c,945 /// or in textual repr: nextTokenId()946 function nextTokenId() public view returns (uint256) {947 require(false, stub_error);948 dummy;949 return 0;950 }951952 // /// @notice Function to mint multiple tokens.953 // /// @dev `tokenIds` should be an array of consecutive numbers and first number954 // /// should be obtained with `nextTokenId` method955 // /// @param to The new owner956 // /// @param tokenIds IDs of the minted RFTs957 // /// @dev EVM selector for this function is: 0x44a9945e,958 // /// or in textual repr: mintBulk(address,uint256[])959 // function mintBulk(address to, uint256[] memory tokenIds) public returns (bool) {960 // require(false, stub_error);961 // to;962 // tokenIds;963 // dummy = 0;964 // return false;965 // }966967 // /// @notice Function to mint multiple tokens with the given tokenUris.968 // /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive969 // /// numbers and first number should be obtained with `nextTokenId` method970 // /// @param to The new owner971 // /// @param tokens array of pairs of token ID and token URI for minted tokens972 // /// @dev EVM selector for this function is: 0x36543006,973 // /// or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])974 // function mintBulkWithTokenURI(address to, Tuple14[] memory tokens) public returns (bool) {975 // require(false, stub_error);976 // to;977 // tokens;978 // dummy = 0;979 // return false;980 // }981982 /// Returns EVM address for refungible token983 ///984 /// @param token ID of the token985 /// @dev EVM selector for this function is: 0xab76fac6,986 /// or in textual repr: tokenContractAddress(uint256)987 function tokenContractAddress(uint256 token) public view returns (address) {988 require(false, stub_error);989 token;990 dummy;991 return 0x0000000000000000000000000000000000000000;992 }993}994995/// @dev anonymous struct996struct Tuple14 {997 uint256 field_0;998 string field_1;999}10001001/// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension1002/// @dev See https://eips.ethereum.org/EIPS/eip-7211003/// @dev the ERC-165 identifier for this interface is 0x780e9d631004contract ERC721Enumerable is Dummy, ERC165 {1005 /// @notice Enumerate valid RFTs1006 /// @param index A counter less than `totalSupply()`1007 /// @return The token identifier for the `index`th NFT,1008 /// (sort order not specified)1009 /// @dev EVM selector for this function is: 0x4f6ccce7,1010 /// or in textual repr: tokenByIndex(uint256)1011 function tokenByIndex(uint256 index) public view returns (uint256) {1012 require(false, stub_error);1013 index;1014 dummy;1015 return 0;1016 }10171018 /// Not implemented1019 /// @dev EVM selector for this function is: 0x2f745c59,1020 /// or in textual repr: tokenOfOwnerByIndex(address,uint256)1021 function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) {1022 require(false, stub_error);1023 owner;1024 index;1025 dummy;1026 return 0;1027 }10281029 /// @notice Count RFTs tracked by this contract1030 /// @return A count of valid RFTs tracked by this contract, where each one of1031 /// them has an assigned and queryable owner not equal to the zero address1032 /// @dev EVM selector for this function is: 0x18160ddd,1033 /// or in textual repr: totalSupply()1034 function totalSupply() public view returns (uint256) {1035 require(false, stub_error);1036 dummy;1037 return 0;1038 }1039}10401041/// @dev inlined interface1042contract ERC721Events {1043 event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);1044 event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);1045 event ApprovalForAll(address indexed owner, address indexed operator, bool approved);1046}10471048/// @title ERC-721 Non-Fungible Token Standard1049/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md1050/// @dev the ERC-165 identifier for this interface is 0x4016cd871051contract ERC721 is Dummy, ERC165, ERC721Events {1052 /// @notice Count all RFTs assigned to an owner1053 /// @dev RFTs assigned to the zero address are considered invalid, and this1054 /// function throws for queries about the zero address.1055 /// @param owner An address for whom to query the balance1056 /// @return The number of RFTs owned by `owner`, possibly zero1057 /// @dev EVM selector for this function is: 0x70a08231,1058 /// or in textual repr: balanceOf(address)1059 function balanceOf(address owner) public view returns (uint256) {1060 require(false, stub_error);1061 owner;1062 dummy;1063 return 0;1064 }10651066 /// @notice Find the owner of an RFT1067 /// @dev RFTs assigned to zero address are considered invalid, and queries1068 /// about them do throw.1069 /// Returns special 0xffffffffffffffffffffffffffffffffffffffff address for1070 /// the tokens that are partially owned.1071 /// @param tokenId The identifier for an RFT1072 /// @return The address of the owner of the RFT1073 /// @dev EVM selector for this function is: 0x6352211e,1074 /// or in textual repr: ownerOf(uint256)1075 function ownerOf(uint256 tokenId) public view returns (address) {1076 require(false, stub_error);1077 tokenId;1078 dummy;1079 return 0x0000000000000000000000000000000000000000;1080 }10811082 /// @dev Not implemented1083 /// @dev EVM selector for this function is: 0x60a11672,1084 /// or in textual repr: safeTransferFromWithData(address,address,uint256,bytes)1085 function safeTransferFromWithData(1086 address from,1087 address to,1088 uint256 tokenId,1089 bytes memory data1090 ) public {1091 require(false, stub_error);1092 from;1093 to;1094 tokenId;1095 data;1096 dummy = 0;1097 }10981099 /// @dev Not implemented1100 /// @dev EVM selector for this function is: 0x42842e0e,1101 /// or in textual repr: safeTransferFrom(address,address,uint256)1102 function safeTransferFrom(1103 address from,1104 address to,1105 uint256 tokenId1106 ) public {1107 require(false, stub_error);1108 from;1109 to;1110 tokenId;1111 dummy = 0;1112 }11131114 /// @notice Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE1115 /// TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE1116 /// THEY MAY BE PERMANENTLY LOST1117 /// @dev Throws unless `msg.sender` is the current owner or an authorized1118 /// operator for this RFT. Throws if `from` is not the current owner. Throws1119 /// if `to` is the zero address. Throws if `tokenId` is not a valid RFT.1120 /// Throws if RFT pieces have multiple owners.1121 /// @param from The current owner of the NFT1122 /// @param to The new owner1123 /// @param tokenId The NFT to transfer1124 /// @dev EVM selector for this function is: 0x23b872dd,1125 /// or in textual repr: transferFrom(address,address,uint256)1126 function transferFrom(1127 address from,1128 address to,1129 uint256 tokenId1130 ) public {1131 require(false, stub_error);1132 from;1133 to;1134 tokenId;1135 dummy = 0;1136 }11371138 /// @dev Not implemented1139 /// @dev EVM selector for this function is: 0x095ea7b3,1140 /// or in textual repr: approve(address,uint256)1141 function approve(address approved, uint256 tokenId) public {1142 require(false, stub_error);1143 approved;1144 tokenId;1145 dummy = 0;1146 }11471148 /// @notice Sets or unsets the approval of a given operator.1149 /// The `operator` is allowed to transfer all token pieces of the `caller` on their behalf.1150 /// @param operator Operator1151 /// @param approved Should operator status be granted or revoked?1152 /// @dev EVM selector for this function is: 0xa22cb465,1153 /// or in textual repr: setApprovalForAll(address,bool)1154 function setApprovalForAll(address operator, bool approved) public {1155 require(false, stub_error);1156 operator;1157 approved;1158 dummy = 0;1159 }11601161 /// @dev Not implemented1162 /// @dev EVM selector for this function is: 0x081812fc,1163 /// or in textual repr: getApproved(uint256)1164 function getApproved(uint256 tokenId) public view returns (address) {1165 require(false, stub_error);1166 tokenId;1167 dummy;1168 return 0x0000000000000000000000000000000000000000;1169 }11701171 /// @notice Tells whether the given `owner` approves the `operator`.1172 /// @dev EVM selector for this function is: 0xe985e9c5,1173 /// or in textual repr: isApprovedForAll(address,address)1174 function isApprovedForAll(address owner, address operator) public view returns (bool) {1175 require(false, stub_error);1176 owner;1177 operator;1178 dummy;1179 return false;1180 }11811182 /// @notice Returns collection helper contract address1183 /// @dev EVM selector for this function is: 0x1896cce6,1184 /// or in textual repr: collectionHelperAddress()1185 function collectionHelperAddress() public view returns (address) {1186 require(false, stub_error);1187 dummy;1188 return 0x0000000000000000000000000000000000000000;1189 }1190}11911192contract UniqueRefungible is1193 Dummy,1194 ERC165,1195 ERC721,1196 ERC721Enumerable,1197 ERC721UniqueExtensions,1198 ERC721UniqueMintable,1199 ERC721Burnable,1200 ERC721Metadata,1201 Collection,1202 TokenProperties1203{}tests/src/eth/abi/nonFungible.jsondiffbeforeafterboth--- a/tests/src/eth/abi/nonFungible.json
+++ b/tests/src/eth/abi/nonFungible.json
@@ -736,12 +736,12 @@
},
{ "internalType": "bool", "name": "field_1", "type": "bool" }
],
- "internalType": "struct Tuple46[]",
+ "internalType": "struct Tuple57[]",
"name": "field_1",
"type": "tuple[]"
}
],
- "internalType": "struct Tuple48[]",
+ "internalType": "struct Tuple59[]",
"name": "permissions",
"type": "tuple[]"
}
@@ -802,12 +802,12 @@
},
{ "internalType": "bool", "name": "field_1", "type": "bool" }
],
- "internalType": "struct Tuple46[]",
+ "internalType": "struct Tuple57[]",
"name": "field_1",
"type": "tuple[]"
}
],
- "internalType": "struct Tuple48[]",
+ "internalType": "struct Tuple59[]",
"name": "",
"type": "tuple[]"
}
tests/src/eth/abi/reFungible.jsondiffbeforeafterboth--- a/tests/src/eth/abi/reFungible.json
+++ b/tests/src/eth/abi/reFungible.json
@@ -718,12 +718,12 @@
},
{ "internalType": "bool", "name": "field_1", "type": "bool" }
],
- "internalType": "struct Tuple51[]",
+ "internalType": "struct Tuple56[]",
"name": "field_1",
"type": "tuple[]"
}
],
- "internalType": "struct Tuple53[]",
+ "internalType": "struct Tuple58[]",
"name": "permissions",
"type": "tuple[]"
}
@@ -793,12 +793,12 @@
},
{ "internalType": "bool", "name": "field_1", "type": "bool" }
],
- "internalType": "struct Tuple51[]",
+ "internalType": "struct Tuple56[]",
"name": "field_1",
"type": "tuple[]"
}
],
- "internalType": "struct Tuple53[]",
+ "internalType": "struct Tuple58[]",
"name": "",
"type": "tuple[]"
}
tests/src/eth/api/UniqueFungible.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -327,15 +327,25 @@
uint256[] field_1;
}
+/// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
enum CollectionLimits {
+ /// @dev How many tokens can a user have on one account.
AccountTokenOwnership,
+ /// @dev How many bytes of data are available for sponsorship.
SponsoredDataSize,
+ /// @dev In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]
SponsoredDataRateLimit,
+ /// @dev How many tokens can be mined into this collection.
TokenLimit,
+ /// @dev Timeouts for transfer sponsoring.
SponsorTransferTimeout,
+ /// @dev Timeout for sponsoring an approval in passed blocks.
SponsorApproveTimeout,
+ /// @dev Whether the collection owner of the collection can send tokens (which belong to other users).
OwnerCanTransfer,
+ /// @dev Can the collection owner burn other people's tokens.
OwnerCanDestroy,
+ /// @dev Is it possible to send tokens from this collection between users.
TransferEnabled
}
tests/src/eth/api/UniqueNFT.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -30,11 +30,12 @@
/// @param permissions Permissions for keys.
/// @dev EVM selector for this function is: 0xbd92983a,
/// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
- function setTokenPropertyPermissions(Tuple43[] memory permissions) external;
+ function setTokenPropertyPermissions(Tuple52[] memory permissions) external;
+ /// @notice Get permissions for token properties.
/// @dev EVM selector for this function is: 0xf23d7790,
/// or in textual repr: tokenPropertyPermissions()
- function tokenPropertyPermissions() external view returns (Tuple43[] memory);
+ function tokenPropertyPermissions() external view returns (Tuple52[] memory);
// /// @notice Set token property value.
// /// @dev Throws error if `msg.sender` has no permission to edit the property.
@@ -85,20 +86,24 @@
bytes value;
}
+/// @dev Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
enum EthTokenPermissions {
+ /// @dev Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
Mutable,
+ /// @dev Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
TokenOwner,
+ /// @dev Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
CollectionAdmin
}
/// @dev anonymous struct
-struct Tuple43 {
+struct Tuple52 {
string field_0;
- Tuple41[] field_1;
+ Tuple50[] field_1;
}
/// @dev anonymous struct
-struct Tuple41 {
+struct Tuple50 {
EthTokenPermissions field_0;
bool field_1;
}
@@ -418,15 +423,25 @@
uint256[] field_1;
}
+/// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
enum CollectionLimits {
+ /// @dev How many tokens can a user have on one account.
AccountTokenOwnership,
+ /// @dev How many bytes of data are available for sponsorship.
SponsoredDataSize,
+ /// @dev In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]
SponsoredDataRateLimit,
+ /// @dev How many tokens can be mined into this collection.
TokenLimit,
+ /// @dev Timeouts for transfer sponsoring.
SponsorTransferTimeout,
+ /// @dev Timeout for sponsoring an approval in passed blocks.
SponsorApproveTimeout,
+ /// @dev Whether the collection owner of the collection can send tokens (which belong to other users).
OwnerCanTransfer,
+ /// @dev Can the collection owner burn other people's tokens.
OwnerCanDestroy,
+ /// @dev Is it possible to send tokens from this collection between users.
TransferEnabled
}
tests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -30,12 +30,12 @@
/// @param permissions Permissions for keys.
/// @dev EVM selector for this function is: 0xbd92983a,
/// or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
- function setTokenPropertyPermissions(Tuple47[] memory permissions) external;
+ function setTokenPropertyPermissions(Tuple51[] memory permissions) external;
/// @notice Get permissions for token properties.
/// @dev EVM selector for this function is: 0xf23d7790,
/// or in textual repr: tokenPropertyPermissions()
- function tokenPropertyPermissions() external view returns (Tuple47[] memory);
+ function tokenPropertyPermissions() external view returns (Tuple51[] memory);
// /// @notice Set token property value.
// /// @dev Throws error if `msg.sender` has no permission to edit the property.
@@ -86,20 +86,24 @@
bytes value;
}
+/// @dev Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
enum EthTokenPermissions {
+ /// @dev Permission to change the property and property permission. See [`up_data_structs::PropertyPermission::mutable`]
Mutable,
+ /// @dev Change permission for the collection administrator. See [`up_data_structs::PropertyPermission::token_owner`]
TokenOwner,
+ /// @dev Permission to change the property for the owner of the token. See [`up_data_structs::PropertyPermission::collection_admin`]
CollectionAdmin
}
/// @dev anonymous struct
-struct Tuple47 {
+struct Tuple51 {
string field_0;
- Tuple45[] field_1;
+ Tuple49[] field_1;
}
/// @dev anonymous struct
-struct Tuple45 {
+struct Tuple49 {
EthTokenPermissions field_0;
bool field_1;
}
@@ -419,15 +423,25 @@
uint256[] field_1;
}
+/// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
enum CollectionLimits {
+ /// @dev How many tokens can a user have on one account.
AccountTokenOwnership,
+ /// @dev How many bytes of data are available for sponsorship.
SponsoredDataSize,
+ /// @dev In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]
SponsoredDataRateLimit,
+ /// @dev How many tokens can be mined into this collection.
TokenLimit,
+ /// @dev Timeouts for transfer sponsoring.
SponsorTransferTimeout,
+ /// @dev Timeout for sponsoring an approval in passed blocks.
SponsorApproveTimeout,
+ /// @dev Whether the collection owner of the collection can send tokens (which belong to other users).
OwnerCanTransfer,
+ /// @dev Can the collection owner burn other people's tokens.
OwnerCanDestroy,
+ /// @dev Is it possible to send tokens from this collection between users.
TransferEnabled
}