git.delta.rocks / unique-network / refs/commits / 112c7ddd2d0a

difftreelog

chore return separate setOwner and isOwnerOrAdmin methods

Grigoriy Simonov2022-08-23parent: #c31f5c8.patch.diff
in: master

14 files changed

modifiedpallets/common/src/erc.rsdiffbeforeafterboth
--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -421,7 +421,6 @@
 	///
 	/// @param user account to verify
 	/// @return "true" if account is the owner or admin
-	#[solidity(rename_selector = "isOwnerOrAdmin")]
 	fn is_owner_or_admin_substrate(&self, user: uint256) -> Result<bool> {
 		let user = convert_substrate_address_to_cross_account_id::<T>(user);
 		Ok(self.is_owner_or_admin(&user))
@@ -454,7 +453,6 @@
 	///
 	/// @dev Owner can be changed only by current owner
 	/// @param newOwner new owner substrate account
-	#[solidity(rename_selector = "setOwner")]
 	fn set_owner_substrate(&mut self, caller: caller, new_owner: uint256) -> Result<void> {
 		let caller = T::CrossAccountId::from_eth(caller);
 		let new_owner = convert_substrate_address_to_cross_account_id::<T>(new_owner);
modifiedpallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth
--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -31,7 +31,103 @@
 	);
 }
 
-// Selector: 2f4a7085
+// Selector: 79cc6790
+contract ERC20UniqueExtensions is Dummy, ERC165 {
+	// Selector: burnFrom(address,uint256) 79cc6790
+	function burnFrom(address from, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		from;
+		amount;
+		dummy = 0;
+		return false;
+	}
+}
+
+// Selector: 942e8b22
+contract ERC20 is Dummy, ERC165, ERC20Events {
+	// Selector: name() 06fdde03
+	function name() public view returns (string memory) {
+		require(false, stub_error);
+		dummy;
+		return "";
+	}
+
+	// Selector: symbol() 95d89b41
+	function symbol() public view returns (string memory) {
+		require(false, stub_error);
+		dummy;
+		return "";
+	}
+
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() public view returns (uint256) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+
+	// Selector: decimals() 313ce567
+	function decimals() public view returns (uint8) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+
+	// Selector: balanceOf(address) 70a08231
+	function balanceOf(address owner) public view returns (uint256) {
+		require(false, stub_error);
+		owner;
+		dummy;
+		return 0;
+	}
+
+	// Selector: transfer(address,uint256) a9059cbb
+	function transfer(address to, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		to;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: transferFrom(address,address,uint256) 23b872dd
+	function transferFrom(
+		address from,
+		address to,
+		uint256 amount
+	) public returns (bool) {
+		require(false, stub_error);
+		from;
+		to;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: approve(address,uint256) 095ea7b3
+	function approve(address spender, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		spender;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: allowance(address,address) dd62ed3e
+	function allowance(address owner, address spender)
+		public
+		view
+		returns (uint256)
+	{
+		require(false, stub_error);
+		owner;
+		spender;
+		dummy;
+		return 0;
+	}
+}
+
+// Selector: ffe4da23
 contract Collection is Dummy, ERC165 {
 	// Set collection property.
 	//
@@ -275,8 +371,8 @@
 	// @param user account to verify
 	// @return "true" if account is the owner or admin
 	//
-	// Selector: isOwnerOrAdmin(uint256) 8a6cfe67
-	function isOwnerOrAdmin(uint256 user) public view returns (bool) {
+	// Selector: isOwnerOrAdminSubstrate(uint256) 68910e00
+	function isOwnerOrAdminSubstrate(uint256 user) public view returns (bool) {
 		require(false, stub_error);
 		user;
 		dummy;
@@ -311,107 +407,11 @@
 	// @dev Owner can be changed only by current owner
 	// @param newOwner new owner substrate account
 	//
-	// Selector: setOwner(uint256) 8041494e
-	function setOwner(uint256 newOwner) public {
+	// Selector: setOwnerSubstrate(uint256) b212138f
+	function setOwnerSubstrate(uint256 newOwner) public {
 		require(false, stub_error);
 		newOwner;
-		dummy = 0;
-	}
-}
-
-// Selector: 79cc6790
-contract ERC20UniqueExtensions is Dummy, ERC165 {
-	// Selector: burnFrom(address,uint256) 79cc6790
-	function burnFrom(address from, uint256 amount) public returns (bool) {
-		require(false, stub_error);
-		from;
-		amount;
 		dummy = 0;
-		return false;
-	}
-}
-
-// Selector: 942e8b22
-contract ERC20 is Dummy, ERC165, ERC20Events {
-	// Selector: name() 06fdde03
-	function name() public view returns (string memory) {
-		require(false, stub_error);
-		dummy;
-		return "";
-	}
-
-	// Selector: symbol() 95d89b41
-	function symbol() public view returns (string memory) {
-		require(false, stub_error);
-		dummy;
-		return "";
-	}
-
-	// Selector: totalSupply() 18160ddd
-	function totalSupply() public view returns (uint256) {
-		require(false, stub_error);
-		dummy;
-		return 0;
-	}
-
-	// Selector: decimals() 313ce567
-	function decimals() public view returns (uint8) {
-		require(false, stub_error);
-		dummy;
-		return 0;
-	}
-
-	// Selector: balanceOf(address) 70a08231
-	function balanceOf(address owner) public view returns (uint256) {
-		require(false, stub_error);
-		owner;
-		dummy;
-		return 0;
-	}
-
-	// Selector: transfer(address,uint256) a9059cbb
-	function transfer(address to, uint256 amount) public returns (bool) {
-		require(false, stub_error);
-		to;
-		amount;
-		dummy = 0;
-		return false;
-	}
-
-	// Selector: transferFrom(address,address,uint256) 23b872dd
-	function transferFrom(
-		address from,
-		address to,
-		uint256 amount
-	) public returns (bool) {
-		require(false, stub_error);
-		from;
-		to;
-		amount;
-		dummy = 0;
-		return false;
-	}
-
-	// Selector: approve(address,uint256) 095ea7b3
-	function approve(address spender, uint256 amount) public returns (bool) {
-		require(false, stub_error);
-		spender;
-		amount;
-		dummy = 0;
-		return false;
-	}
-
-	// Selector: allowance(address,address) dd62ed3e
-	function allowance(address owner, address spender)
-		public
-		view
-		returns (uint256)
-	{
-		require(false, stub_error);
-		owner;
-		spender;
-		dummy;
-		return 0;
 	}
 }
 
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -51,294 +51,6 @@
 	event MintingFinished();
 }
 
-// Selector: 2f4a7085
-contract Collection is Dummy, ERC165 {
-	// Set collection property.
-	//
-	// @param key Property key.
-	// @param value Propery value.
-	//
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		public
-	{
-		require(false, stub_error);
-		key;
-		value;
-		dummy = 0;
-	}
-
-	// Delete collection property.
-	//
-	// @param key Property key.
-	//
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) public {
-		require(false, stub_error);
-		key;
-		dummy = 0;
-	}
-
-	// Get collection property.
-	//
-	// @dev Throws error if key not found.
-	//
-	// @param key Property key.
-	// @return bytes The property corresponding to the key.
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		public
-		view
-		returns (bytes memory)
-	{
-		require(false, stub_error);
-		key;
-		dummy;
-		return hex"";
-	}
-
-	// Set the sponsor of the collection.
-	//
-	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
-	//
-	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
-	//
-	// Selector: setCollectionSponsor(address) 7623402e
-	function setCollectionSponsor(address sponsor) public {
-		require(false, stub_error);
-		sponsor;
-		dummy = 0;
-	}
-
-	// Collection sponsorship confirmation.
-	//
-	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
-	//
-	// Selector: confirmCollectionSponsorship() 3c50e97a
-	function confirmCollectionSponsorship() public {
-		require(false, stub_error);
-		dummy = 0;
-	}
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"accountTokenOwnershipLimit",
-	// 	"sponsoredDataSize",
-	// 	"sponsoredDataRateLimit",
-	// 	"tokenLimit",
-	// 	"sponsorTransferTimeout",
-	// 	"sponsorApproveTimeout"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,uint32) 6a3841db
-	function setCollectionLimit(string memory limit, uint32 value) public {
-		require(false, stub_error);
-		limit;
-		value;
-		dummy = 0;
-	}
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"ownerCanTransfer",
-	// 	"ownerCanDestroy",
-	// 	"transfersEnabled"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,bool) 993b7fba
-	function setCollectionLimit(string memory limit, bool value) public {
-		require(false, stub_error);
-		limit;
-		value;
-		dummy = 0;
-	}
-
-	// Get contract address.
-	//
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() public view returns (address) {
-		require(false, stub_error);
-		dummy;
-		return 0x0000000000000000000000000000000000000000;
-	}
-
-	// Add collection admin by substrate address.
-	// @param new_admin Substrate administrator address.
-	//
-	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
-	function addCollectionAdminSubstrate(uint256 newAdmin) public {
-		require(false, stub_error);
-		newAdmin;
-		dummy = 0;
-	}
-
-	// Remove collection admin by substrate address.
-	// @param admin Substrate administrator address.
-	//
-	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
-	function removeCollectionAdminSubstrate(uint256 admin) public {
-		require(false, stub_error);
-		admin;
-		dummy = 0;
-	}
-
-	// Add collection admin.
-	// @param new_admin Address of the added administrator.
-	//
-	// Selector: addCollectionAdmin(address) 92e462c7
-	function addCollectionAdmin(address newAdmin) public {
-		require(false, stub_error);
-		newAdmin;
-		dummy = 0;
-	}
-
-	// Remove collection admin.
-	//
-	// @param new_admin Address of the removed administrator.
-	//
-	// Selector: removeCollectionAdmin(address) fafd7b42
-	function removeCollectionAdmin(address admin) public {
-		require(false, stub_error);
-		admin;
-		dummy = 0;
-	}
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
-	//
-	// Selector: setCollectionNesting(bool) 112d4586
-	function setCollectionNesting(bool enable) public {
-		require(false, stub_error);
-		enable;
-		dummy = 0;
-	}
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
-	// @param collections Addresses of collections that will be available for nesting.
-	//
-	// Selector: setCollectionNesting(bool,address[]) 64872396
-	function setCollectionNesting(bool enable, address[] memory collections)
-		public
-	{
-		require(false, stub_error);
-		enable;
-		collections;
-		dummy = 0;
-	}
-
-	// Set the collection access method.
-	// @param mode Access mode
-	// 	0 for Normal
-	// 	1 for AllowList
-	//
-	// Selector: setCollectionAccess(uint8) 41835d4c
-	function setCollectionAccess(uint8 mode) public {
-		require(false, stub_error);
-		mode;
-		dummy = 0;
-	}
-
-	// Add the user to the allowed list.
-	//
-	// @param user Address of a trusted user.
-	//
-	// Selector: addToCollectionAllowList(address) 67844fe6
-	function addToCollectionAllowList(address user) public {
-		require(false, stub_error);
-		user;
-		dummy = 0;
-	}
-
-	// Remove the user from the allowed list.
-	//
-	// @param user Address of a removed user.
-	//
-	// Selector: removeFromCollectionAllowList(address) 85c51acb
-	function removeFromCollectionAllowList(address user) public {
-		require(false, stub_error);
-		user;
-		dummy = 0;
-	}
-
-	// Switch permission for minting.
-	//
-	// @param mode Enable if "true".
-	//
-	// Selector: setCollectionMintMode(bool) 00018e84
-	function setCollectionMintMode(bool mode) public {
-		require(false, stub_error);
-		mode;
-		dummy = 0;
-	}
-
-	// Check that account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: isOwnerOrAdmin(address) 9811b0c7
-	function isOwnerOrAdmin(address user) public view returns (bool) {
-		require(false, stub_error);
-		user;
-		dummy;
-		return false;
-	}
-
-	// Check that substrate account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: isOwnerOrAdmin(uint256) 8a6cfe67
-	function isOwnerOrAdmin(uint256 user) public view returns (bool) {
-		require(false, stub_error);
-		user;
-		dummy;
-		return false;
-	}
-
-	// Returns collection type
-	//
-	// @return `Fungible` or `NFT` or `ReFungible`
-	//
-	// Selector: uniqueCollectionType() d34b55b8
-	function uniqueCollectionType() public returns (string memory) {
-		require(false, stub_error);
-		dummy = 0;
-		return "";
-	}
-
-	// Changes collection owner to another account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner account
-	//
-	// Selector: setOwner(address) 13af4035
-	function setOwner(address newOwner) public {
-		require(false, stub_error);
-		newOwner;
-		dummy = 0;
-	}
-
-	// Changes collection owner to another substrate account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner substrate account
-	//
-	// Selector: setOwner(uint256) 8041494e
-	function setOwner(uint256 newOwner) public {
-		require(false, stub_error);
-		newOwner;
-		dummy = 0;
-	}
-}
-
 // Selector: 41369377
 contract TokenProperties is Dummy, ERC165 {
 	// @notice Set permissions for token property.
@@ -782,6 +494,294 @@
 	}
 }
 
+// Selector: ffe4da23
+contract Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		public
+	{
+		require(false, stub_error);
+		key;
+		value;
+		dummy = 0;
+	}
+
+	// Delete collection property.
+	//
+	// @param key Property key.
+	//
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) public {
+		require(false, stub_error);
+		key;
+		dummy = 0;
+	}
+
+	// Get collection property.
+	//
+	// @dev Throws error if key not found.
+	//
+	// @param key Property key.
+	// @return bytes The property corresponding to the key.
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		public
+		view
+		returns (bytes memory)
+	{
+		require(false, stub_error);
+		key;
+		dummy;
+		return hex"";
+	}
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) public {
+		require(false, stub_error);
+		sponsor;
+		dummy = 0;
+	}
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() public {
+		require(false, stub_error);
+		dummy = 0;
+	}
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) public {
+		require(false, stub_error);
+		limit;
+		value;
+		dummy = 0;
+	}
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"ownerCanTransfer",
+	// 	"ownerCanDestroy",
+	// 	"transfersEnabled"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) public {
+		require(false, stub_error);
+		limit;
+		value;
+		dummy = 0;
+	}
+
+	// Get contract address.
+	//
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() public view returns (address) {
+		require(false, stub_error);
+		dummy;
+		return 0x0000000000000000000000000000000000000000;
+	}
+
+	// Add collection admin by substrate address.
+	// @param new_admin Substrate administrator address.
+	//
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) public {
+		require(false, stub_error);
+		newAdmin;
+		dummy = 0;
+	}
+
+	// Remove collection admin by substrate address.
+	// @param admin Substrate administrator address.
+	//
+	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+	function removeCollectionAdminSubstrate(uint256 admin) public {
+		require(false, stub_error);
+		admin;
+		dummy = 0;
+	}
+
+	// Add collection admin.
+	// @param new_admin Address of the added administrator.
+	//
+	// Selector: addCollectionAdmin(address) 92e462c7
+	function addCollectionAdmin(address newAdmin) public {
+		require(false, stub_error);
+		newAdmin;
+		dummy = 0;
+	}
+
+	// Remove collection admin.
+	//
+	// @param new_admin Address of the removed administrator.
+	//
+	// Selector: removeCollectionAdmin(address) fafd7b42
+	function removeCollectionAdmin(address admin) public {
+		require(false, stub_error);
+		admin;
+		dummy = 0;
+	}
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+	//
+	// Selector: setCollectionNesting(bool) 112d4586
+	function setCollectionNesting(bool enable) public {
+		require(false, stub_error);
+		enable;
+		dummy = 0;
+	}
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+	// @param collections Addresses of collections that will be available for nesting.
+	//
+	// Selector: setCollectionNesting(bool,address[]) 64872396
+	function setCollectionNesting(bool enable, address[] memory collections)
+		public
+	{
+		require(false, stub_error);
+		enable;
+		collections;
+		dummy = 0;
+	}
+
+	// Set the collection access method.
+	// @param mode Access mode
+	// 	0 for Normal
+	// 	1 for AllowList
+	//
+	// Selector: setCollectionAccess(uint8) 41835d4c
+	function setCollectionAccess(uint8 mode) public {
+		require(false, stub_error);
+		mode;
+		dummy = 0;
+	}
+
+	// Add the user to the allowed list.
+	//
+	// @param user Address of a trusted user.
+	//
+	// Selector: addToCollectionAllowList(address) 67844fe6
+	function addToCollectionAllowList(address user) public {
+		require(false, stub_error);
+		user;
+		dummy = 0;
+	}
+
+	// Remove the user from the allowed list.
+	//
+	// @param user Address of a removed user.
+	//
+	// Selector: removeFromCollectionAllowList(address) 85c51acb
+	function removeFromCollectionAllowList(address user) public {
+		require(false, stub_error);
+		user;
+		dummy = 0;
+	}
+
+	// Switch permission for minting.
+	//
+	// @param mode Enable if "true".
+	//
+	// Selector: setCollectionMintMode(bool) 00018e84
+	function setCollectionMintMode(bool mode) public {
+		require(false, stub_error);
+		mode;
+		dummy = 0;
+	}
+
+	// Check that account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: isOwnerOrAdmin(address) 9811b0c7
+	function isOwnerOrAdmin(address user) public view returns (bool) {
+		require(false, stub_error);
+		user;
+		dummy;
+		return false;
+	}
+
+	// Check that substrate account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: isOwnerOrAdminSubstrate(uint256) 68910e00
+	function isOwnerOrAdminSubstrate(uint256 user) public view returns (bool) {
+		require(false, stub_error);
+		user;
+		dummy;
+		return false;
+	}
+
+	// Returns collection type
+	//
+	// @return `Fungible` or `NFT` or `ReFungible`
+	//
+	// Selector: uniqueCollectionType() d34b55b8
+	function uniqueCollectionType() public returns (string memory) {
+		require(false, stub_error);
+		dummy = 0;
+		return "";
+	}
+
+	// Changes collection owner to another account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner account
+	//
+	// Selector: setOwner(address) 13af4035
+	function setOwner(address newOwner) public {
+		require(false, stub_error);
+		newOwner;
+		dummy = 0;
+	}
+
+	// Changes collection owner to another substrate account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner substrate account
+	//
+	// Selector: setOwnerSubstrate(uint256) b212138f
+	function setOwnerSubstrate(uint256 newOwner) public {
+		require(false, stub_error);
+		newOwner;
+		dummy = 0;
+	}
+}
+
 contract UniqueNFT is
 	Dummy,
 	ERC165,
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
before · pallets/refungible/src/stubs/UniqueRefungible.sol
1// SPDX-License-Identifier: OTHER2// This code is automatically generated34pragma solidity >=0.8.0 <0.9.0;56// Anonymous struct7struct Tuple0 {8	uint256 field_0;9	string field_1;10}1112// Common stubs holder13contract Dummy {14	uint8 dummy;15	string stub_error = "this contract is implemented in native";16}1718contract ERC165 is Dummy {19	function supportsInterface(bytes4 interfaceID)20		external21		view22		returns (bool)23	{24		require(false, stub_error);25		interfaceID;26		return true;27	}28}2930// Inline31contract ERC721Events {32	event Transfer(33		address indexed from,34		address indexed to,35		uint256 indexed tokenId36	);37	event Approval(38		address indexed owner,39		address indexed approved,40		uint256 indexed tokenId41	);42	event ApprovalForAll(43		address indexed owner,44		address indexed operator,45		bool approved46	);47}4849// Inline50contract ERC721MintableEvents {51	event MintingFinished();52}5354// Selector: 2f4a708555contract Collection is Dummy, ERC165 {56	// Set collection property.57	//58	// @param key Property key.59	// @param value Propery value.60	//61	// Selector: setCollectionProperty(string,bytes) 2f073f6662	function setCollectionProperty(string memory key, bytes memory value)63		public64	{65		require(false, stub_error);66		key;67		value;68		dummy = 0;69	}7071	// Delete collection property.72	//73	// @param key Property key.74	//75	// Selector: deleteCollectionProperty(string) 7b7debce76	function deleteCollectionProperty(string memory key) public {77		require(false, stub_error);78		key;79		dummy = 0;80	}8182	// Get collection property.83	//84	// @dev Throws error if key not found.85	//86	// @param key Property key.87	// @return bytes The property corresponding to the key.88	//89	// Selector: collectionProperty(string) cf24fd6d90	function collectionProperty(string memory key)91		public92		view93		returns (bytes memory)94	{95		require(false, stub_error);96		key;97		dummy;98		return hex"";99	}100101	// Set the sponsor of the collection.102	//103	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.104	//105	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.106	//107	// Selector: setCollectionSponsor(address) 7623402e108	function setCollectionSponsor(address sponsor) public {109		require(false, stub_error);110		sponsor;111		dummy = 0;112	}113114	// Collection sponsorship confirmation.115	//116	// @dev After setting the sponsor for the collection, it must be confirmed with this function.117	//118	// Selector: confirmCollectionSponsorship() 3c50e97a119	function confirmCollectionSponsorship() public {120		require(false, stub_error);121		dummy = 0;122	}123124	// Set limits for the collection.125	// @dev Throws error if limit not found.126	// @param limit Name of the limit. Valid names:127	// 	"accountTokenOwnershipLimit",128	// 	"sponsoredDataSize",129	// 	"sponsoredDataRateLimit",130	// 	"tokenLimit",131	// 	"sponsorTransferTimeout",132	// 	"sponsorApproveTimeout"133	// @param value Value of the limit.134	//135	// Selector: setCollectionLimit(string,uint32) 6a3841db136	function setCollectionLimit(string memory limit, uint32 value) public {137		require(false, stub_error);138		limit;139		value;140		dummy = 0;141	}142143	// Set limits for the collection.144	// @dev Throws error if limit not found.145	// @param limit Name of the limit. Valid names:146	// 	"ownerCanTransfer",147	// 	"ownerCanDestroy",148	// 	"transfersEnabled"149	// @param value Value of the limit.150	//151	// Selector: setCollectionLimit(string,bool) 993b7fba152	function setCollectionLimit(string memory limit, bool value) public {153		require(false, stub_error);154		limit;155		value;156		dummy = 0;157	}158159	// Get contract address.160	//161	// Selector: contractAddress() f6b4dfb4162	function contractAddress() public view returns (address) {163		require(false, stub_error);164		dummy;165		return 0x0000000000000000000000000000000000000000;166	}167168	// Add collection admin by substrate address.169	// @param new_admin Substrate administrator address.170	//171	// Selector: addCollectionAdminSubstrate(uint256) 5730062b172	function addCollectionAdminSubstrate(uint256 newAdmin) public {173		require(false, stub_error);174		newAdmin;175		dummy = 0;176	}177178	// Remove collection admin by substrate address.179	// @param admin Substrate administrator address.180	//181	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9182	function removeCollectionAdminSubstrate(uint256 admin) public {183		require(false, stub_error);184		admin;185		dummy = 0;186	}187188	// Add collection admin.189	// @param new_admin Address of the added administrator.190	//191	// Selector: addCollectionAdmin(address) 92e462c7192	function addCollectionAdmin(address newAdmin) public {193		require(false, stub_error);194		newAdmin;195		dummy = 0;196	}197198	// Remove collection admin.199	//200	// @param new_admin Address of the removed administrator.201	//202	// Selector: removeCollectionAdmin(address) fafd7b42203	function removeCollectionAdmin(address admin) public {204		require(false, stub_error);205		admin;206		dummy = 0;207	}208209	// Toggle accessibility of collection nesting.210	//211	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'212	//213	// Selector: setCollectionNesting(bool) 112d4586214	function setCollectionNesting(bool enable) public {215		require(false, stub_error);216		enable;217		dummy = 0;218	}219220	// Toggle accessibility of collection nesting.221	//222	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'223	// @param collections Addresses of collections that will be available for nesting.224	//225	// Selector: setCollectionNesting(bool,address[]) 64872396226	function setCollectionNesting(bool enable, address[] memory collections)227		public228	{229		require(false, stub_error);230		enable;231		collections;232		dummy = 0;233	}234235	// Set the collection access method.236	// @param mode Access mode237	// 	0 for Normal238	// 	1 for AllowList239	//240	// Selector: setCollectionAccess(uint8) 41835d4c241	function setCollectionAccess(uint8 mode) public {242		require(false, stub_error);243		mode;244		dummy = 0;245	}246247	// Add the user to the allowed list.248	//249	// @param user Address of a trusted user.250	//251	// Selector: addToCollectionAllowList(address) 67844fe6252	function addToCollectionAllowList(address user) public {253		require(false, stub_error);254		user;255		dummy = 0;256	}257258	// Remove the user from the allowed list.259	//260	// @param user Address of a removed user.261	//262	// Selector: removeFromCollectionAllowList(address) 85c51acb263	function removeFromCollectionAllowList(address user) public {264		require(false, stub_error);265		user;266		dummy = 0;267	}268269	// Switch permission for minting.270	//271	// @param mode Enable if "true".272	//273	// Selector: setCollectionMintMode(bool) 00018e84274	function setCollectionMintMode(bool mode) public {275		require(false, stub_error);276		mode;277		dummy = 0;278	}279280	// Check that account is the owner or admin of the collection281	//282	// @param user account to verify283	// @return "true" if account is the owner or admin284	//285	// Selector: isOwnerOrAdmin(address) 9811b0c7286	function isOwnerOrAdmin(address user) public view returns (bool) {287		require(false, stub_error);288		user;289		dummy;290		return false;291	}292293	// Check that substrate account is the owner or admin of the collection294	//295	// @param user account to verify296	// @return "true" if account is the owner or admin297	//298	// Selector: isOwnerOrAdmin(uint256) 8a6cfe67299	function isOwnerOrAdmin(uint256 user) public view returns (bool) {300		require(false, stub_error);301		user;302		dummy;303		return false;304	}305306	// Returns collection type307	//308	// @return `Fungible` or `NFT` or `ReFungible`309	//310	// Selector: uniqueCollectionType() d34b55b8311	function uniqueCollectionType() public returns (string memory) {312		require(false, stub_error);313		dummy = 0;314		return "";315	}316317	// Changes collection owner to another account318	//319	// @dev Owner can be changed only by current owner320	// @param newOwner new owner account321	//322	// Selector: setOwner(address) 13af4035323	function setOwner(address newOwner) public {324		require(false, stub_error);325		newOwner;326		dummy = 0;327	}328329	// Changes collection owner to another substrate account330	//331	// @dev Owner can be changed only by current owner332	// @param newOwner new owner substrate account333	//334	// Selector: setOwner(uint256) 8041494e335	function setOwner(uint256 newOwner) public {336		require(false, stub_error);337		newOwner;338		dummy = 0;339	}340}341342// Selector: 41369377343contract TokenProperties is Dummy, ERC165 {344	// @notice Set permissions for token property.345	// @dev Throws error if `msg.sender` is not admin or owner of the collection.346	// @param key Property key.347	// @param is_mutable Permission to mutate property.348	// @param collection_admin Permission to mutate property by collection admin if property is mutable.349	// @param token_owner Permission to mutate property by token owner if property is mutable.350	//351	// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa352	function setTokenPropertyPermission(353		string memory key,354		bool isMutable,355		bool collectionAdmin,356		bool tokenOwner357	) public {358		require(false, stub_error);359		key;360		isMutable;361		collectionAdmin;362		tokenOwner;363		dummy = 0;364	}365366	// @notice Set token property value.367	// @dev Throws error if `msg.sender` has no permission to edit the property.368	// @param tokenId ID of the token.369	// @param key Property key.370	// @param value Property value.371	//372	// Selector: setProperty(uint256,string,bytes) 1752d67b373	function setProperty(374		uint256 tokenId,375		string memory key,376		bytes memory value377	) public {378		require(false, stub_error);379		tokenId;380		key;381		value;382		dummy = 0;383	}384385	// @notice Delete token property value.386	// @dev Throws error if `msg.sender` has no permission to edit the property.387	// @param tokenId ID of the token.388	// @param key Property key.389	//390	// Selector: deleteProperty(uint256,string) 066111d1391	function deleteProperty(uint256 tokenId, string memory key) public {392		require(false, stub_error);393		tokenId;394		key;395		dummy = 0;396	}397398	// @notice Get token property value.399	// @dev Throws error if key not found400	// @param tokenId ID of the token.401	// @param key Property key.402	// @return Property value bytes403	//404	// Selector: property(uint256,string) 7228c327405	function property(uint256 tokenId, string memory key)406		public407		view408		returns (bytes memory)409	{410		require(false, stub_error);411		tokenId;412		key;413		dummy;414		return hex"";415	}416}417418// Selector: 42966c68419contract ERC721Burnable is Dummy, ERC165 {420	// @notice Burns a specific ERC721 token.421	// @dev Throws unless `msg.sender` is the current RFT owner, or an authorized422	//  operator of the current owner.423	// @param tokenId The RFT to approve424	//425	// Selector: burn(uint256) 42966c68426	function burn(uint256 tokenId) public {427		require(false, stub_error);428		tokenId;429		dummy = 0;430	}431}432433// Selector: 58800161434contract ERC721 is Dummy, ERC165, ERC721Events {435	// @notice Count all RFTs assigned to an owner436	// @dev RFTs assigned to the zero address are considered invalid, and this437	//  function throws for queries about the zero address.438	// @param owner An address for whom to query the balance439	// @return The number of RFTs owned by `owner`, possibly zero440	//441	// Selector: balanceOf(address) 70a08231442	function balanceOf(address owner) public view returns (uint256) {443		require(false, stub_error);444		owner;445		dummy;446		return 0;447	}448449	// @notice Find the owner of an RFT450	// @dev RFTs assigned to zero address are considered invalid, and queries451	//  about them do throw.452	//  Returns special 0xffffffffffffffffffffffffffffffffffffffff address for453	//  the tokens that are partially owned.454	// @param tokenId The identifier for an RFT455	// @return The address of the owner of the RFT456	//457	// Selector: ownerOf(uint256) 6352211e458	function ownerOf(uint256 tokenId) public view returns (address) {459		require(false, stub_error);460		tokenId;461		dummy;462		return 0x0000000000000000000000000000000000000000;463	}464465	// @dev Not implemented466	//467	// Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672468	function safeTransferFromWithData(469		address from,470		address to,471		uint256 tokenId,472		bytes memory data473	) public {474		require(false, stub_error);475		from;476		to;477		tokenId;478		data;479		dummy = 0;480	}481482	// @dev Not implemented483	//484	// Selector: safeTransferFrom(address,address,uint256) 42842e0e485	function safeTransferFrom(486		address from,487		address to,488		uint256 tokenId489	) public {490		require(false, stub_error);491		from;492		to;493		tokenId;494		dummy = 0;495	}496497	// @notice Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE498	//  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE499	//  THEY MAY BE PERMANENTLY LOST500	// @dev Throws unless `msg.sender` is the current owner or an authorized501	//  operator for this RFT. Throws if `from` is not the current owner. Throws502	//  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.503	//  Throws if RFT pieces have multiple owners.504	// @param from The current owner of the NFT505	// @param to The new owner506	// @param tokenId The NFT to transfer507	// @param _value Not used for an NFT508	//509	// Selector: transferFrom(address,address,uint256) 23b872dd510	function transferFrom(511		address from,512		address to,513		uint256 tokenId514	) public {515		require(false, stub_error);516		from;517		to;518		tokenId;519		dummy = 0;520	}521522	// @dev Not implemented523	//524	// Selector: approve(address,uint256) 095ea7b3525	function approve(address approved, uint256 tokenId) public {526		require(false, stub_error);527		approved;528		tokenId;529		dummy = 0;530	}531532	// @dev Not implemented533	//534	// Selector: setApprovalForAll(address,bool) a22cb465535	function setApprovalForAll(address operator, bool approved) public {536		require(false, stub_error);537		operator;538		approved;539		dummy = 0;540	}541542	// @dev Not implemented543	//544	// Selector: getApproved(uint256) 081812fc545	function getApproved(uint256 tokenId) public view returns (address) {546		require(false, stub_error);547		tokenId;548		dummy;549		return 0x0000000000000000000000000000000000000000;550	}551552	// @dev Not implemented553	//554	// Selector: isApprovedForAll(address,address) e985e9c5555	function isApprovedForAll(address owner, address operator)556		public557		view558		returns (address)559	{560		require(false, stub_error);561		owner;562		operator;563		dummy;564		return 0x0000000000000000000000000000000000000000;565	}566}567568// Selector: 5b5e139f569contract ERC721Metadata is Dummy, ERC165 {570	// @notice A descriptive name for a collection of RFTs in this contract571	//572	// Selector: name() 06fdde03573	function name() public view returns (string memory) {574		require(false, stub_error);575		dummy;576		return "";577	}578579	// @notice An abbreviated name for RFTs in this contract580	//581	// Selector: symbol() 95d89b41582	function symbol() public view returns (string memory) {583		require(false, stub_error);584		dummy;585		return "";586	}587588	// @notice A distinct Uniform Resource Identifier (URI) for a given asset.589	//590	// @dev If the token has a `url` property and it is not empty, it is returned.591	//  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`.592	//  If the collection property `baseURI` is empty or absent, return "" (empty string)593	//  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix594	//  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).595	//596	// @return token's const_metadata597	//598	// Selector: tokenURI(uint256) c87b56dd599	function tokenURI(uint256 tokenId) public view returns (string memory) {600		require(false, stub_error);601		tokenId;602		dummy;603		return "";604	}605}606607// Selector: 68ccfe89608contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {609	// Selector: mintingFinished() 05d2035b610	function mintingFinished() public view returns (bool) {611		require(false, stub_error);612		dummy;613		return false;614	}615616	// @notice Function to mint token.617	// @dev `tokenId` should be obtained with `nextTokenId` method,618	//  unlike standard, you can't specify it manually619	// @param to The new owner620	// @param tokenId ID of the minted RFT621	//622	// Selector: mint(address,uint256) 40c10f19623	function mint(address to, uint256 tokenId) public returns (bool) {624		require(false, stub_error);625		to;626		tokenId;627		dummy = 0;628		return false;629	}630631	// @notice Function to mint token with the given tokenUri.632	// @dev `tokenId` should be obtained with `nextTokenId` method,633	//  unlike standard, you can't specify it manually634	// @param to The new owner635	// @param tokenId ID of the minted RFT636	// @param tokenUri Token URI that would be stored in the RFT properties637	//638	// Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f639	function mintWithTokenURI(640		address to,641		uint256 tokenId,642		string memory tokenUri643	) public returns (bool) {644		require(false, stub_error);645		to;646		tokenId;647		tokenUri;648		dummy = 0;649		return false;650	}651652	// @dev Not implemented653	//654	// Selector: finishMinting() 7d64bcb4655	function finishMinting() public returns (bool) {656		require(false, stub_error);657		dummy = 0;658		return false;659	}660}661662// Selector: 780e9d63663contract ERC721Enumerable is Dummy, ERC165 {664	// @notice Enumerate valid RFTs665	// @param index A counter less than `totalSupply()`666	// @return The token identifier for the `index`th NFT,667	//  (sort order not specified)668	//669	// Selector: tokenByIndex(uint256) 4f6ccce7670	function tokenByIndex(uint256 index) public view returns (uint256) {671		require(false, stub_error);672		index;673		dummy;674		return 0;675	}676677	// Not implemented678	//679	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59680	function tokenOfOwnerByIndex(address owner, uint256 index)681		public682		view683		returns (uint256)684	{685		require(false, stub_error);686		owner;687		index;688		dummy;689		return 0;690	}691692	// @notice Count RFTs tracked by this contract693	// @return A count of valid RFTs tracked by this contract, where each one of694	//  them has an assigned and queryable owner not equal to the zero address695	//696	// Selector: totalSupply() 18160ddd697	function totalSupply() public view returns (uint256) {698		require(false, stub_error);699		dummy;700		return 0;701	}702}703704// Selector: 7c3bef89705contract ERC721UniqueExtensions is Dummy, ERC165 {706	// @notice Transfer ownership of an RFT707	// @dev Throws unless `msg.sender` is the current owner. Throws if `to`708	//  is the zero address. Throws if `tokenId` is not a valid RFT.709	//  Throws if RFT pieces have multiple owners.710	// @param to The new owner711	// @param tokenId The RFT to transfer712	// @param _value Not used for an RFT713	//714	// Selector: transfer(address,uint256) a9059cbb715	function transfer(address to, uint256 tokenId) public {716		require(false, stub_error);717		to;718		tokenId;719		dummy = 0;720	}721722	// @notice Burns a specific ERC721 token.723	// @dev Throws unless `msg.sender` is the current owner or an authorized724	//  operator for this RFT. Throws if `from` is not the current owner. Throws725	//  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.726	//  Throws if RFT pieces have multiple owners.727	// @param from The current owner of the RFT728	// @param tokenId The RFT to transfer729	// @param _value Not used for an RFT730	//731	// Selector: burnFrom(address,uint256) 79cc6790732	function burnFrom(address from, uint256 tokenId) public {733		require(false, stub_error);734		from;735		tokenId;736		dummy = 0;737	}738739	// @notice Returns next free RFT ID.740	//741	// Selector: nextTokenId() 75794a3c742	function nextTokenId() public view returns (uint256) {743		require(false, stub_error);744		dummy;745		return 0;746	}747748	// @notice Function to mint multiple tokens.749	// @dev `tokenIds` should be an array of consecutive numbers and first number750	//  should be obtained with `nextTokenId` method751	// @param to The new owner752	// @param tokenIds IDs of the minted RFTs753	//754	// Selector: mintBulk(address,uint256[]) 44a9945e755	function mintBulk(address to, uint256[] memory tokenIds)756		public757		returns (bool)758	{759		require(false, stub_error);760		to;761		tokenIds;762		dummy = 0;763		return false;764	}765766	// @notice Function to mint multiple tokens with the given tokenUris.767	// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive768	//  numbers and first number should be obtained with `nextTokenId` method769	// @param to The new owner770	// @param tokens array of pairs of token ID and token URI for minted tokens771	//772	// Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006773	function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)774		public775		returns (bool)776	{777		require(false, stub_error);778		to;779		tokens;780		dummy = 0;781		return false;782	}783784	// Returns EVM address for refungible token785	//786	// @param token ID of the token787	//788	// Selector: tokenContractAddress(uint256) ab76fac6789	function tokenContractAddress(uint256 token) public view returns (address) {790		require(false, stub_error);791		token;792		dummy;793		return 0x0000000000000000000000000000000000000000;794	}795}796797contract UniqueRefungible is798	Dummy,799	ERC165,800	ERC721,801	ERC721Metadata,802	ERC721Enumerable,803	ERC721UniqueExtensions,804	ERC721Mintable,805	ERC721Burnable,806	Collection,807	TokenProperties808{}
after · pallets/refungible/src/stubs/UniqueRefungible.sol
1// SPDX-License-Identifier: OTHER2// This code is automatically generated34pragma solidity >=0.8.0 <0.9.0;56// Anonymous struct7struct Tuple0 {8	uint256 field_0;9	string field_1;10}1112// Common stubs holder13contract Dummy {14	uint8 dummy;15	string stub_error = "this contract is implemented in native";16}1718contract ERC165 is Dummy {19	function supportsInterface(bytes4 interfaceID)20		external21		view22		returns (bool)23	{24		require(false, stub_error);25		interfaceID;26		return true;27	}28}2930// Inline31contract ERC721Events {32	event Transfer(33		address indexed from,34		address indexed to,35		uint256 indexed tokenId36	);37	event Approval(38		address indexed owner,39		address indexed approved,40		uint256 indexed tokenId41	);42	event ApprovalForAll(43		address indexed owner,44		address indexed operator,45		bool approved46	);47}4849// Inline50contract ERC721MintableEvents {51	event MintingFinished();52}5354// Selector: 4136937755contract TokenProperties is Dummy, ERC165 {56	// @notice Set permissions for token property.57	// @dev Throws error if `msg.sender` is not admin or owner of the collection.58	// @param key Property key.59	// @param is_mutable Permission to mutate property.60	// @param collection_admin Permission to mutate property by collection admin if property is mutable.61	// @param token_owner Permission to mutate property by token owner if property is mutable.62	//63	// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa64	function setTokenPropertyPermission(65		string memory key,66		bool isMutable,67		bool collectionAdmin,68		bool tokenOwner69	) public {70		require(false, stub_error);71		key;72		isMutable;73		collectionAdmin;74		tokenOwner;75		dummy = 0;76	}7778	// @notice Set token property value.79	// @dev Throws error if `msg.sender` has no permission to edit the property.80	// @param tokenId ID of the token.81	// @param key Property key.82	// @param value Property value.83	//84	// Selector: setProperty(uint256,string,bytes) 1752d67b85	function setProperty(86		uint256 tokenId,87		string memory key,88		bytes memory value89	) public {90		require(false, stub_error);91		tokenId;92		key;93		value;94		dummy = 0;95	}9697	// @notice Delete token property value.98	// @dev Throws error if `msg.sender` has no permission to edit the property.99	// @param tokenId ID of the token.100	// @param key Property key.101	//102	// Selector: deleteProperty(uint256,string) 066111d1103	function deleteProperty(uint256 tokenId, string memory key) public {104		require(false, stub_error);105		tokenId;106		key;107		dummy = 0;108	}109110	// @notice Get token property value.111	// @dev Throws error if key not found112	// @param tokenId ID of the token.113	// @param key Property key.114	// @return Property value bytes115	//116	// Selector: property(uint256,string) 7228c327117	function property(uint256 tokenId, string memory key)118		public119		view120		returns (bytes memory)121	{122		require(false, stub_error);123		tokenId;124		key;125		dummy;126		return hex"";127	}128}129130// Selector: 42966c68131contract ERC721Burnable is Dummy, ERC165 {132	// @notice Burns a specific ERC721 token.133	// @dev Throws unless `msg.sender` is the current RFT owner, or an authorized134	//  operator of the current owner.135	// @param tokenId The RFT to approve136	//137	// Selector: burn(uint256) 42966c68138	function burn(uint256 tokenId) public {139		require(false, stub_error);140		tokenId;141		dummy = 0;142	}143}144145// Selector: 58800161146contract ERC721 is Dummy, ERC165, ERC721Events {147	// @notice Count all RFTs assigned to an owner148	// @dev RFTs assigned to the zero address are considered invalid, and this149	//  function throws for queries about the zero address.150	// @param owner An address for whom to query the balance151	// @return The number of RFTs owned by `owner`, possibly zero152	//153	// Selector: balanceOf(address) 70a08231154	function balanceOf(address owner) public view returns (uint256) {155		require(false, stub_error);156		owner;157		dummy;158		return 0;159	}160161	// @notice Find the owner of an RFT162	// @dev RFTs assigned to zero address are considered invalid, and queries163	//  about them do throw.164	//  Returns special 0xffffffffffffffffffffffffffffffffffffffff address for165	//  the tokens that are partially owned.166	// @param tokenId The identifier for an RFT167	// @return The address of the owner of the RFT168	//169	// Selector: ownerOf(uint256) 6352211e170	function ownerOf(uint256 tokenId) public view returns (address) {171		require(false, stub_error);172		tokenId;173		dummy;174		return 0x0000000000000000000000000000000000000000;175	}176177	// @dev Not implemented178	//179	// Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672180	function safeTransferFromWithData(181		address from,182		address to,183		uint256 tokenId,184		bytes memory data185	) public {186		require(false, stub_error);187		from;188		to;189		tokenId;190		data;191		dummy = 0;192	}193194	// @dev Not implemented195	//196	// Selector: safeTransferFrom(address,address,uint256) 42842e0e197	function safeTransferFrom(198		address from,199		address to,200		uint256 tokenId201	) public {202		require(false, stub_error);203		from;204		to;205		tokenId;206		dummy = 0;207	}208209	// @notice Transfer ownership of an RFT -- THE CALLER IS RESPONSIBLE210	//  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE211	//  THEY MAY BE PERMANENTLY LOST212	// @dev Throws unless `msg.sender` is the current owner or an authorized213	//  operator for this RFT. Throws if `from` is not the current owner. Throws214	//  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.215	//  Throws if RFT pieces have multiple owners.216	// @param from The current owner of the NFT217	// @param to The new owner218	// @param tokenId The NFT to transfer219	// @param _value Not used for an NFT220	//221	// Selector: transferFrom(address,address,uint256) 23b872dd222	function transferFrom(223		address from,224		address to,225		uint256 tokenId226	) public {227		require(false, stub_error);228		from;229		to;230		tokenId;231		dummy = 0;232	}233234	// @dev Not implemented235	//236	// Selector: approve(address,uint256) 095ea7b3237	function approve(address approved, uint256 tokenId) public {238		require(false, stub_error);239		approved;240		tokenId;241		dummy = 0;242	}243244	// @dev Not implemented245	//246	// Selector: setApprovalForAll(address,bool) a22cb465247	function setApprovalForAll(address operator, bool approved) public {248		require(false, stub_error);249		operator;250		approved;251		dummy = 0;252	}253254	// @dev Not implemented255	//256	// Selector: getApproved(uint256) 081812fc257	function getApproved(uint256 tokenId) public view returns (address) {258		require(false, stub_error);259		tokenId;260		dummy;261		return 0x0000000000000000000000000000000000000000;262	}263264	// @dev Not implemented265	//266	// Selector: isApprovedForAll(address,address) e985e9c5267	function isApprovedForAll(address owner, address operator)268		public269		view270		returns (address)271	{272		require(false, stub_error);273		owner;274		operator;275		dummy;276		return 0x0000000000000000000000000000000000000000;277	}278}279280// Selector: 5b5e139f281contract ERC721Metadata is Dummy, ERC165 {282	// @notice A descriptive name for a collection of RFTs in this contract283	//284	// Selector: name() 06fdde03285	function name() public view returns (string memory) {286		require(false, stub_error);287		dummy;288		return "";289	}290291	// @notice An abbreviated name for RFTs in this contract292	//293	// Selector: symbol() 95d89b41294	function symbol() public view returns (string memory) {295		require(false, stub_error);296		dummy;297		return "";298	}299300	// @notice A distinct Uniform Resource Identifier (URI) for a given asset.301	//302	// @dev If the token has a `url` property and it is not empty, it is returned.303	//  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`.304	//  If the collection property `baseURI` is empty or absent, return "" (empty string)305	//  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix306	//  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).307	//308	// @return token's const_metadata309	//310	// Selector: tokenURI(uint256) c87b56dd311	function tokenURI(uint256 tokenId) public view returns (string memory) {312		require(false, stub_error);313		tokenId;314		dummy;315		return "";316	}317}318319// Selector: 68ccfe89320contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {321	// Selector: mintingFinished() 05d2035b322	function mintingFinished() public view returns (bool) {323		require(false, stub_error);324		dummy;325		return false;326	}327328	// @notice Function to mint token.329	// @dev `tokenId` should be obtained with `nextTokenId` method,330	//  unlike standard, you can't specify it manually331	// @param to The new owner332	// @param tokenId ID of the minted RFT333	//334	// Selector: mint(address,uint256) 40c10f19335	function mint(address to, uint256 tokenId) public returns (bool) {336		require(false, stub_error);337		to;338		tokenId;339		dummy = 0;340		return false;341	}342343	// @notice Function to mint token with the given tokenUri.344	// @dev `tokenId` should be obtained with `nextTokenId` method,345	//  unlike standard, you can't specify it manually346	// @param to The new owner347	// @param tokenId ID of the minted RFT348	// @param tokenUri Token URI that would be stored in the RFT properties349	//350	// Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f351	function mintWithTokenURI(352		address to,353		uint256 tokenId,354		string memory tokenUri355	) public returns (bool) {356		require(false, stub_error);357		to;358		tokenId;359		tokenUri;360		dummy = 0;361		return false;362	}363364	// @dev Not implemented365	//366	// Selector: finishMinting() 7d64bcb4367	function finishMinting() public returns (bool) {368		require(false, stub_error);369		dummy = 0;370		return false;371	}372}373374// Selector: 780e9d63375contract ERC721Enumerable is Dummy, ERC165 {376	// @notice Enumerate valid RFTs377	// @param index A counter less than `totalSupply()`378	// @return The token identifier for the `index`th NFT,379	//  (sort order not specified)380	//381	// Selector: tokenByIndex(uint256) 4f6ccce7382	function tokenByIndex(uint256 index) public view returns (uint256) {383		require(false, stub_error);384		index;385		dummy;386		return 0;387	}388389	// Not implemented390	//391	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59392	function tokenOfOwnerByIndex(address owner, uint256 index)393		public394		view395		returns (uint256)396	{397		require(false, stub_error);398		owner;399		index;400		dummy;401		return 0;402	}403404	// @notice Count RFTs tracked by this contract405	// @return A count of valid RFTs tracked by this contract, where each one of406	//  them has an assigned and queryable owner not equal to the zero address407	//408	// Selector: totalSupply() 18160ddd409	function totalSupply() public view returns (uint256) {410		require(false, stub_error);411		dummy;412		return 0;413	}414}415416// Selector: 7c3bef89417contract ERC721UniqueExtensions is Dummy, ERC165 {418	// @notice Transfer ownership of an RFT419	// @dev Throws unless `msg.sender` is the current owner. Throws if `to`420	//  is the zero address. Throws if `tokenId` is not a valid RFT.421	//  Throws if RFT pieces have multiple owners.422	// @param to The new owner423	// @param tokenId The RFT to transfer424	// @param _value Not used for an RFT425	//426	// Selector: transfer(address,uint256) a9059cbb427	function transfer(address to, uint256 tokenId) public {428		require(false, stub_error);429		to;430		tokenId;431		dummy = 0;432	}433434	// @notice Burns a specific ERC721 token.435	// @dev Throws unless `msg.sender` is the current owner or an authorized436	//  operator for this RFT. Throws if `from` is not the current owner. Throws437	//  if `to` is the zero address. Throws if `tokenId` is not a valid RFT.438	//  Throws if RFT pieces have multiple owners.439	// @param from The current owner of the RFT440	// @param tokenId The RFT to transfer441	// @param _value Not used for an RFT442	//443	// Selector: burnFrom(address,uint256) 79cc6790444	function burnFrom(address from, uint256 tokenId) public {445		require(false, stub_error);446		from;447		tokenId;448		dummy = 0;449	}450451	// @notice Returns next free RFT ID.452	//453	// Selector: nextTokenId() 75794a3c454	function nextTokenId() public view returns (uint256) {455		require(false, stub_error);456		dummy;457		return 0;458	}459460	// @notice Function to mint multiple tokens.461	// @dev `tokenIds` should be an array of consecutive numbers and first number462	//  should be obtained with `nextTokenId` method463	// @param to The new owner464	// @param tokenIds IDs of the minted RFTs465	//466	// Selector: mintBulk(address,uint256[]) 44a9945e467	function mintBulk(address to, uint256[] memory tokenIds)468		public469		returns (bool)470	{471		require(false, stub_error);472		to;473		tokenIds;474		dummy = 0;475		return false;476	}477478	// @notice Function to mint multiple tokens with the given tokenUris.479	// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive480	//  numbers and first number should be obtained with `nextTokenId` method481	// @param to The new owner482	// @param tokens array of pairs of token ID and token URI for minted tokens483	//484	// Selector: mintBulkWithTokenURI(address,(uint256,string)[]) 36543006485	function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)486		public487		returns (bool)488	{489		require(false, stub_error);490		to;491		tokens;492		dummy = 0;493		return false;494	}495496	// Returns EVM address for refungible token497	//498	// @param token ID of the token499	//500	// Selector: tokenContractAddress(uint256) ab76fac6501	function tokenContractAddress(uint256 token) public view returns (address) {502		require(false, stub_error);503		token;504		dummy;505		return 0x0000000000000000000000000000000000000000;506	}507}508509// Selector: ffe4da23510contract Collection is Dummy, ERC165 {511	// Set collection property.512	//513	// @param key Property key.514	// @param value Propery value.515	//516	// Selector: setCollectionProperty(string,bytes) 2f073f66517	function setCollectionProperty(string memory key, bytes memory value)518		public519	{520		require(false, stub_error);521		key;522		value;523		dummy = 0;524	}525526	// Delete collection property.527	//528	// @param key Property key.529	//530	// Selector: deleteCollectionProperty(string) 7b7debce531	function deleteCollectionProperty(string memory key) public {532		require(false, stub_error);533		key;534		dummy = 0;535	}536537	// Get collection property.538	//539	// @dev Throws error if key not found.540	//541	// @param key Property key.542	// @return bytes The property corresponding to the key.543	//544	// Selector: collectionProperty(string) cf24fd6d545	function collectionProperty(string memory key)546		public547		view548		returns (bytes memory)549	{550		require(false, stub_error);551		key;552		dummy;553		return hex"";554	}555556	// Set the sponsor of the collection.557	//558	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.559	//560	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.561	//562	// Selector: setCollectionSponsor(address) 7623402e563	function setCollectionSponsor(address sponsor) public {564		require(false, stub_error);565		sponsor;566		dummy = 0;567	}568569	// Collection sponsorship confirmation.570	//571	// @dev After setting the sponsor for the collection, it must be confirmed with this function.572	//573	// Selector: confirmCollectionSponsorship() 3c50e97a574	function confirmCollectionSponsorship() public {575		require(false, stub_error);576		dummy = 0;577	}578579	// Set limits for the collection.580	// @dev Throws error if limit not found.581	// @param limit Name of the limit. Valid names:582	// 	"accountTokenOwnershipLimit",583	// 	"sponsoredDataSize",584	// 	"sponsoredDataRateLimit",585	// 	"tokenLimit",586	// 	"sponsorTransferTimeout",587	// 	"sponsorApproveTimeout"588	// @param value Value of the limit.589	//590	// Selector: setCollectionLimit(string,uint32) 6a3841db591	function setCollectionLimit(string memory limit, uint32 value) public {592		require(false, stub_error);593		limit;594		value;595		dummy = 0;596	}597598	// Set limits for the collection.599	// @dev Throws error if limit not found.600	// @param limit Name of the limit. Valid names:601	// 	"ownerCanTransfer",602	// 	"ownerCanDestroy",603	// 	"transfersEnabled"604	// @param value Value of the limit.605	//606	// Selector: setCollectionLimit(string,bool) 993b7fba607	function setCollectionLimit(string memory limit, bool value) public {608		require(false, stub_error);609		limit;610		value;611		dummy = 0;612	}613614	// Get contract address.615	//616	// Selector: contractAddress() f6b4dfb4617	function contractAddress() public view returns (address) {618		require(false, stub_error);619		dummy;620		return 0x0000000000000000000000000000000000000000;621	}622623	// Add collection admin by substrate address.624	// @param new_admin Substrate administrator address.625	//626	// Selector: addCollectionAdminSubstrate(uint256) 5730062b627	function addCollectionAdminSubstrate(uint256 newAdmin) public {628		require(false, stub_error);629		newAdmin;630		dummy = 0;631	}632633	// Remove collection admin by substrate address.634	// @param admin Substrate administrator address.635	//636	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9637	function removeCollectionAdminSubstrate(uint256 admin) public {638		require(false, stub_error);639		admin;640		dummy = 0;641	}642643	// Add collection admin.644	// @param new_admin Address of the added administrator.645	//646	// Selector: addCollectionAdmin(address) 92e462c7647	function addCollectionAdmin(address newAdmin) public {648		require(false, stub_error);649		newAdmin;650		dummy = 0;651	}652653	// Remove collection admin.654	//655	// @param new_admin Address of the removed administrator.656	//657	// Selector: removeCollectionAdmin(address) fafd7b42658	function removeCollectionAdmin(address admin) public {659		require(false, stub_error);660		admin;661		dummy = 0;662	}663664	// Toggle accessibility of collection nesting.665	//666	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'667	//668	// Selector: setCollectionNesting(bool) 112d4586669	function setCollectionNesting(bool enable) public {670		require(false, stub_error);671		enable;672		dummy = 0;673	}674675	// Toggle accessibility of collection nesting.676	//677	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'678	// @param collections Addresses of collections that will be available for nesting.679	//680	// Selector: setCollectionNesting(bool,address[]) 64872396681	function setCollectionNesting(bool enable, address[] memory collections)682		public683	{684		require(false, stub_error);685		enable;686		collections;687		dummy = 0;688	}689690	// Set the collection access method.691	// @param mode Access mode692	// 	0 for Normal693	// 	1 for AllowList694	//695	// Selector: setCollectionAccess(uint8) 41835d4c696	function setCollectionAccess(uint8 mode) public {697		require(false, stub_error);698		mode;699		dummy = 0;700	}701702	// Add the user to the allowed list.703	//704	// @param user Address of a trusted user.705	//706	// Selector: addToCollectionAllowList(address) 67844fe6707	function addToCollectionAllowList(address user) public {708		require(false, stub_error);709		user;710		dummy = 0;711	}712713	// Remove the user from the allowed list.714	//715	// @param user Address of a removed user.716	//717	// Selector: removeFromCollectionAllowList(address) 85c51acb718	function removeFromCollectionAllowList(address user) public {719		require(false, stub_error);720		user;721		dummy = 0;722	}723724	// Switch permission for minting.725	//726	// @param mode Enable if "true".727	//728	// Selector: setCollectionMintMode(bool) 00018e84729	function setCollectionMintMode(bool mode) public {730		require(false, stub_error);731		mode;732		dummy = 0;733	}734735	// Check that account is the owner or admin of the collection736	//737	// @param user account to verify738	// @return "true" if account is the owner or admin739	//740	// Selector: isOwnerOrAdmin(address) 9811b0c7741	function isOwnerOrAdmin(address user) public view returns (bool) {742		require(false, stub_error);743		user;744		dummy;745		return false;746	}747748	// Check that substrate account is the owner or admin of the collection749	//750	// @param user account to verify751	// @return "true" if account is the owner or admin752	//753	// Selector: isOwnerOrAdminSubstrate(uint256) 68910e00754	function isOwnerOrAdminSubstrate(uint256 user) public view returns (bool) {755		require(false, stub_error);756		user;757		dummy;758		return false;759	}760761	// Returns collection type762	//763	// @return `Fungible` or `NFT` or `ReFungible`764	//765	// Selector: uniqueCollectionType() d34b55b8766	function uniqueCollectionType() public returns (string memory) {767		require(false, stub_error);768		dummy = 0;769		return "";770	}771772	// Changes collection owner to another account773	//774	// @dev Owner can be changed only by current owner775	// @param newOwner new owner account776	//777	// Selector: setOwner(address) 13af4035778	function setOwner(address newOwner) public {779		require(false, stub_error);780		newOwner;781		dummy = 0;782	}783784	// Changes collection owner to another substrate account785	//786	// @dev Owner can be changed only by current owner787	// @param newOwner new owner substrate account788	//789	// Selector: setOwnerSubstrate(uint256) b212138f790	function setOwnerSubstrate(uint256 newOwner) public {791		require(false, stub_error);792		newOwner;793		dummy = 0;794	}795}796797contract UniqueRefungible is798	Dummy,799	ERC165,800	ERC721,801	ERC721Metadata,802	ERC721Enumerable,803	ERC721UniqueExtensions,804	ERC721Mintable,805	ERC721Burnable,806	Collection,807	TokenProperties808{}
modifiedtests/src/eth/api/UniqueFungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -22,7 +22,50 @@
 	);
 }
 
-// Selector: 2f4a7085
+// Selector: 79cc6790
+interface ERC20UniqueExtensions is Dummy, ERC165 {
+	// Selector: burnFrom(address,uint256) 79cc6790
+	function burnFrom(address from, uint256 amount) external returns (bool);
+}
+
+// Selector: 942e8b22
+interface ERC20 is Dummy, ERC165, ERC20Events {
+	// Selector: name() 06fdde03
+	function name() external view returns (string memory);
+
+	// Selector: symbol() 95d89b41
+	function symbol() external view returns (string memory);
+
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() external view returns (uint256);
+
+	// Selector: decimals() 313ce567
+	function decimals() external view returns (uint8);
+
+	// Selector: balanceOf(address) 70a08231
+	function balanceOf(address owner) external view returns (uint256);
+
+	// Selector: transfer(address,uint256) a9059cbb
+	function transfer(address to, uint256 amount) external returns (bool);
+
+	// Selector: transferFrom(address,address,uint256) 23b872dd
+	function transferFrom(
+		address from,
+		address to,
+		uint256 amount
+	) external returns (bool);
+
+	// Selector: approve(address,uint256) 095ea7b3
+	function approve(address spender, uint256 amount) external returns (bool);
+
+	// Selector: allowance(address,address) dd62ed3e
+	function allowance(address owner, address spender)
+		external
+		view
+		returns (uint256);
+}
+
+// Selector: ffe4da23
 interface Collection is Dummy, ERC165 {
 	// Set collection property.
 	//
@@ -182,8 +225,8 @@
 	// @param user account to verify
 	// @return "true" if account is the owner or admin
 	//
-	// Selector: isOwnerOrAdmin(uint256) 8a6cfe67
-	function isOwnerOrAdmin(uint256 user) external view returns (bool);
+	// Selector: isOwnerOrAdminSubstrate(uint256) 68910e00
+	function isOwnerOrAdminSubstrate(uint256 user) external view returns (bool);
 
 	// Returns collection type
 	//
@@ -205,51 +248,8 @@
 	// @dev Owner can be changed only by current owner
 	// @param newOwner new owner substrate account
 	//
-	// Selector: setOwner(uint256) 8041494e
-	function setOwner(uint256 newOwner) external;
-}
-
-// Selector: 79cc6790
-interface ERC20UniqueExtensions is Dummy, ERC165 {
-	// Selector: burnFrom(address,uint256) 79cc6790
-	function burnFrom(address from, uint256 amount) external returns (bool);
-}
-
-// Selector: 942e8b22
-interface ERC20 is Dummy, ERC165, ERC20Events {
-	// Selector: name() 06fdde03
-	function name() external view returns (string memory);
-
-	// Selector: symbol() 95d89b41
-	function symbol() external view returns (string memory);
-
-	// Selector: totalSupply() 18160ddd
-	function totalSupply() external view returns (uint256);
-
-	// Selector: decimals() 313ce567
-	function decimals() external view returns (uint8);
-
-	// Selector: balanceOf(address) 70a08231
-	function balanceOf(address owner) external view returns (uint256);
-
-	// Selector: transfer(address,uint256) a9059cbb
-	function transfer(address to, uint256 amount) external returns (bool);
-
-	// Selector: transferFrom(address,address,uint256) 23b872dd
-	function transferFrom(
-		address from,
-		address to,
-		uint256 amount
-	) external returns (bool);
-
-	// Selector: approve(address,uint256) 095ea7b3
-	function approve(address spender, uint256 amount) external returns (bool);
-
-	// Selector: allowance(address,address) dd62ed3e
-	function allowance(address owner, address spender)
-		external
-		view
-		returns (uint256);
+	// Selector: setOwnerSubstrate(uint256) b212138f
+	function setOwnerSubstrate(uint256 newOwner) external;
 }
 
 interface UniqueFungible is
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -42,193 +42,6 @@
 	event MintingFinished();
 }
 
-// Selector: 2f4a7085
-interface Collection is Dummy, ERC165 {
-	// Set collection property.
-	//
-	// @param key Property key.
-	// @param value Propery value.
-	//
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		external;
-
-	// Delete collection property.
-	//
-	// @param key Property key.
-	//
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) external;
-
-	// Get collection property.
-	//
-	// @dev Throws error if key not found.
-	//
-	// @param key Property key.
-	// @return bytes The property corresponding to the key.
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		external
-		view
-		returns (bytes memory);
-
-	// Set the sponsor of the collection.
-	//
-	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
-	//
-	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
-	//
-	// Selector: setCollectionSponsor(address) 7623402e
-	function setCollectionSponsor(address sponsor) external;
-
-	// Collection sponsorship confirmation.
-	//
-	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
-	//
-	// Selector: confirmCollectionSponsorship() 3c50e97a
-	function confirmCollectionSponsorship() external;
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"accountTokenOwnershipLimit",
-	// 	"sponsoredDataSize",
-	// 	"sponsoredDataRateLimit",
-	// 	"tokenLimit",
-	// 	"sponsorTransferTimeout",
-	// 	"sponsorApproveTimeout"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,uint32) 6a3841db
-	function setCollectionLimit(string memory limit, uint32 value) external;
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"ownerCanTransfer",
-	// 	"ownerCanDestroy",
-	// 	"transfersEnabled"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,bool) 993b7fba
-	function setCollectionLimit(string memory limit, bool value) external;
-
-	// Get contract address.
-	//
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() external view returns (address);
-
-	// Add collection admin by substrate address.
-	// @param new_admin Substrate administrator address.
-	//
-	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
-	function addCollectionAdminSubstrate(uint256 newAdmin) external;
-
-	// Remove collection admin by substrate address.
-	// @param admin Substrate administrator address.
-	//
-	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
-	function removeCollectionAdminSubstrate(uint256 admin) external;
-
-	// Add collection admin.
-	// @param new_admin Address of the added administrator.
-	//
-	// Selector: addCollectionAdmin(address) 92e462c7
-	function addCollectionAdmin(address newAdmin) external;
-
-	// Remove collection admin.
-	//
-	// @param new_admin Address of the removed administrator.
-	//
-	// Selector: removeCollectionAdmin(address) fafd7b42
-	function removeCollectionAdmin(address admin) external;
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
-	//
-	// Selector: setCollectionNesting(bool) 112d4586
-	function setCollectionNesting(bool enable) external;
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
-	// @param collections Addresses of collections that will be available for nesting.
-	//
-	// Selector: setCollectionNesting(bool,address[]) 64872396
-	function setCollectionNesting(bool enable, address[] memory collections)
-		external;
-
-	// Set the collection access method.
-	// @param mode Access mode
-	// 	0 for Normal
-	// 	1 for AllowList
-	//
-	// Selector: setCollectionAccess(uint8) 41835d4c
-	function setCollectionAccess(uint8 mode) external;
-
-	// Add the user to the allowed list.
-	//
-	// @param user Address of a trusted user.
-	//
-	// Selector: addToCollectionAllowList(address) 67844fe6
-	function addToCollectionAllowList(address user) external;
-
-	// Remove the user from the allowed list.
-	//
-	// @param user Address of a removed user.
-	//
-	// Selector: removeFromCollectionAllowList(address) 85c51acb
-	function removeFromCollectionAllowList(address user) external;
-
-	// Switch permission for minting.
-	//
-	// @param mode Enable if "true".
-	//
-	// Selector: setCollectionMintMode(bool) 00018e84
-	function setCollectionMintMode(bool mode) external;
-
-	// Check that account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: isOwnerOrAdmin(address) 9811b0c7
-	function isOwnerOrAdmin(address user) external view returns (bool);
-
-	// Check that substrate account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: isOwnerOrAdmin(uint256) 8a6cfe67
-	function isOwnerOrAdmin(uint256 user) external view returns (bool);
-
-	// Returns collection type
-	//
-	// @return `Fungible` or `NFT` or `ReFungible`
-	//
-	// Selector: uniqueCollectionType() d34b55b8
-	function uniqueCollectionType() external returns (string memory);
-
-	// Changes collection owner to another account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner account
-	//
-	// Selector: setOwner(address) 13af4035
-	function setOwner(address newOwner) external;
-
-	// Changes collection owner to another substrate account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner substrate account
-	//
-	// Selector: setOwner(uint256) 8041494e
-	function setOwner(uint256 newOwner) external;
-}
-
 // Selector: 41369377
 interface TokenProperties is Dummy, ERC165 {
 	// @notice Set permissions for token property.
@@ -514,6 +327,193 @@
 		returns (bool);
 }
 
+// Selector: ffe4da23
+interface Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+
+	// Delete collection property.
+	//
+	// @param key Property key.
+	//
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) external;
+
+	// Get collection property.
+	//
+	// @dev Throws error if key not found.
+	//
+	// @param key Property key.
+	// @return bytes The property corresponding to the key.
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		external
+		view
+		returns (bytes memory);
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) external;
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"ownerCanTransfer",
+	// 	"ownerCanDestroy",
+	// 	"transfersEnabled"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) external;
+
+	// Get contract address.
+	//
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() external view returns (address);
+
+	// Add collection admin by substrate address.
+	// @param new_admin Substrate administrator address.
+	//
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) external;
+
+	// Remove collection admin by substrate address.
+	// @param admin Substrate administrator address.
+	//
+	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+	function removeCollectionAdminSubstrate(uint256 admin) external;
+
+	// Add collection admin.
+	// @param new_admin Address of the added administrator.
+	//
+	// Selector: addCollectionAdmin(address) 92e462c7
+	function addCollectionAdmin(address newAdmin) external;
+
+	// Remove collection admin.
+	//
+	// @param new_admin Address of the removed administrator.
+	//
+	// Selector: removeCollectionAdmin(address) fafd7b42
+	function removeCollectionAdmin(address admin) external;
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+	//
+	// Selector: setCollectionNesting(bool) 112d4586
+	function setCollectionNesting(bool enable) external;
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+	// @param collections Addresses of collections that will be available for nesting.
+	//
+	// Selector: setCollectionNesting(bool,address[]) 64872396
+	function setCollectionNesting(bool enable, address[] memory collections)
+		external;
+
+	// Set the collection access method.
+	// @param mode Access mode
+	// 	0 for Normal
+	// 	1 for AllowList
+	//
+	// Selector: setCollectionAccess(uint8) 41835d4c
+	function setCollectionAccess(uint8 mode) external;
+
+	// Add the user to the allowed list.
+	//
+	// @param user Address of a trusted user.
+	//
+	// Selector: addToCollectionAllowList(address) 67844fe6
+	function addToCollectionAllowList(address user) external;
+
+	// Remove the user from the allowed list.
+	//
+	// @param user Address of a removed user.
+	//
+	// Selector: removeFromCollectionAllowList(address) 85c51acb
+	function removeFromCollectionAllowList(address user) external;
+
+	// Switch permission for minting.
+	//
+	// @param mode Enable if "true".
+	//
+	// Selector: setCollectionMintMode(bool) 00018e84
+	function setCollectionMintMode(bool mode) external;
+
+	// Check that account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: isOwnerOrAdmin(address) 9811b0c7
+	function isOwnerOrAdmin(address user) external view returns (bool);
+
+	// Check that substrate account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: isOwnerOrAdminSubstrate(uint256) 68910e00
+	function isOwnerOrAdminSubstrate(uint256 user) external view returns (bool);
+
+	// Returns collection type
+	//
+	// @return `Fungible` or `NFT` or `ReFungible`
+	//
+	// Selector: uniqueCollectionType() d34b55b8
+	function uniqueCollectionType() external returns (string memory);
+
+	// Changes collection owner to another account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner account
+	//
+	// Selector: setOwner(address) 13af4035
+	function setOwner(address newOwner) external;
+
+	// Changes collection owner to another substrate account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner substrate account
+	//
+	// Selector: setOwnerSubstrate(uint256) b212138f
+	function setOwnerSubstrate(uint256 newOwner) external;
+}
+
 interface UniqueNFT is
 	Dummy,
 	ERC165,
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -42,193 +42,6 @@
 	event MintingFinished();
 }
 
-// Selector: 2f4a7085
-interface Collection is Dummy, ERC165 {
-	// Set collection property.
-	//
-	// @param key Property key.
-	// @param value Propery value.
-	//
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		external;
-
-	// Delete collection property.
-	//
-	// @param key Property key.
-	//
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) external;
-
-	// Get collection property.
-	//
-	// @dev Throws error if key not found.
-	//
-	// @param key Property key.
-	// @return bytes The property corresponding to the key.
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		external
-		view
-		returns (bytes memory);
-
-	// Set the sponsor of the collection.
-	//
-	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
-	//
-	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
-	//
-	// Selector: setCollectionSponsor(address) 7623402e
-	function setCollectionSponsor(address sponsor) external;
-
-	// Collection sponsorship confirmation.
-	//
-	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
-	//
-	// Selector: confirmCollectionSponsorship() 3c50e97a
-	function confirmCollectionSponsorship() external;
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"accountTokenOwnershipLimit",
-	// 	"sponsoredDataSize",
-	// 	"sponsoredDataRateLimit",
-	// 	"tokenLimit",
-	// 	"sponsorTransferTimeout",
-	// 	"sponsorApproveTimeout"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,uint32) 6a3841db
-	function setCollectionLimit(string memory limit, uint32 value) external;
-
-	// Set limits for the collection.
-	// @dev Throws error if limit not found.
-	// @param limit Name of the limit. Valid names:
-	// 	"ownerCanTransfer",
-	// 	"ownerCanDestroy",
-	// 	"transfersEnabled"
-	// @param value Value of the limit.
-	//
-	// Selector: setCollectionLimit(string,bool) 993b7fba
-	function setCollectionLimit(string memory limit, bool value) external;
-
-	// Get contract address.
-	//
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() external view returns (address);
-
-	// Add collection admin by substrate address.
-	// @param new_admin Substrate administrator address.
-	//
-	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
-	function addCollectionAdminSubstrate(uint256 newAdmin) external;
-
-	// Remove collection admin by substrate address.
-	// @param admin Substrate administrator address.
-	//
-	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
-	function removeCollectionAdminSubstrate(uint256 admin) external;
-
-	// Add collection admin.
-	// @param new_admin Address of the added administrator.
-	//
-	// Selector: addCollectionAdmin(address) 92e462c7
-	function addCollectionAdmin(address newAdmin) external;
-
-	// Remove collection admin.
-	//
-	// @param new_admin Address of the removed administrator.
-	//
-	// Selector: removeCollectionAdmin(address) fafd7b42
-	function removeCollectionAdmin(address admin) external;
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
-	//
-	// Selector: setCollectionNesting(bool) 112d4586
-	function setCollectionNesting(bool enable) external;
-
-	// Toggle accessibility of collection nesting.
-	//
-	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
-	// @param collections Addresses of collections that will be available for nesting.
-	//
-	// Selector: setCollectionNesting(bool,address[]) 64872396
-	function setCollectionNesting(bool enable, address[] memory collections)
-		external;
-
-	// Set the collection access method.
-	// @param mode Access mode
-	// 	0 for Normal
-	// 	1 for AllowList
-	//
-	// Selector: setCollectionAccess(uint8) 41835d4c
-	function setCollectionAccess(uint8 mode) external;
-
-	// Add the user to the allowed list.
-	//
-	// @param user Address of a trusted user.
-	//
-	// Selector: addToCollectionAllowList(address) 67844fe6
-	function addToCollectionAllowList(address user) external;
-
-	// Remove the user from the allowed list.
-	//
-	// @param user Address of a removed user.
-	//
-	// Selector: removeFromCollectionAllowList(address) 85c51acb
-	function removeFromCollectionAllowList(address user) external;
-
-	// Switch permission for minting.
-	//
-	// @param mode Enable if "true".
-	//
-	// Selector: setCollectionMintMode(bool) 00018e84
-	function setCollectionMintMode(bool mode) external;
-
-	// Check that account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: isOwnerOrAdmin(address) 9811b0c7
-	function isOwnerOrAdmin(address user) external view returns (bool);
-
-	// Check that substrate account is the owner or admin of the collection
-	//
-	// @param user account to verify
-	// @return "true" if account is the owner or admin
-	//
-	// Selector: isOwnerOrAdmin(uint256) 8a6cfe67
-	function isOwnerOrAdmin(uint256 user) external view returns (bool);
-
-	// Returns collection type
-	//
-	// @return `Fungible` or `NFT` or `ReFungible`
-	//
-	// Selector: uniqueCollectionType() d34b55b8
-	function uniqueCollectionType() external returns (string memory);
-
-	// Changes collection owner to another account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner account
-	//
-	// Selector: setOwner(address) 13af4035
-	function setOwner(address newOwner) external;
-
-	// Changes collection owner to another substrate account
-	//
-	// @dev Owner can be changed only by current owner
-	// @param newOwner new owner substrate account
-	//
-	// Selector: setOwner(uint256) 8041494e
-	function setOwner(uint256 newOwner) external;
-}
-
 // Selector: 41369377
 interface TokenProperties is Dummy, ERC165 {
 	// @notice Set permissions for token property.
@@ -524,6 +337,193 @@
 		returns (address);
 }
 
+// Selector: ffe4da23
+interface Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+
+	// Delete collection property.
+	//
+	// @param key Property key.
+	//
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) external;
+
+	// Get collection property.
+	//
+	// @dev Throws error if key not found.
+	//
+	// @param key Property key.
+	// @return bytes The property corresponding to the key.
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		external
+		view
+		returns (bytes memory);
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) external;
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"ownerCanTransfer",
+	// 	"ownerCanDestroy",
+	// 	"transfersEnabled"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) external;
+
+	// Get contract address.
+	//
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() external view returns (address);
+
+	// Add collection admin by substrate address.
+	// @param new_admin Substrate administrator address.
+	//
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) external;
+
+	// Remove collection admin by substrate address.
+	// @param admin Substrate administrator address.
+	//
+	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+	function removeCollectionAdminSubstrate(uint256 admin) external;
+
+	// Add collection admin.
+	// @param new_admin Address of the added administrator.
+	//
+	// Selector: addCollectionAdmin(address) 92e462c7
+	function addCollectionAdmin(address newAdmin) external;
+
+	// Remove collection admin.
+	//
+	// @param new_admin Address of the removed administrator.
+	//
+	// Selector: removeCollectionAdmin(address) fafd7b42
+	function removeCollectionAdmin(address admin) external;
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'
+	//
+	// Selector: setCollectionNesting(bool) 112d4586
+	function setCollectionNesting(bool enable) external;
+
+	// Toggle accessibility of collection nesting.
+	//
+	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'
+	// @param collections Addresses of collections that will be available for nesting.
+	//
+	// Selector: setCollectionNesting(bool,address[]) 64872396
+	function setCollectionNesting(bool enable, address[] memory collections)
+		external;
+
+	// Set the collection access method.
+	// @param mode Access mode
+	// 	0 for Normal
+	// 	1 for AllowList
+	//
+	// Selector: setCollectionAccess(uint8) 41835d4c
+	function setCollectionAccess(uint8 mode) external;
+
+	// Add the user to the allowed list.
+	//
+	// @param user Address of a trusted user.
+	//
+	// Selector: addToCollectionAllowList(address) 67844fe6
+	function addToCollectionAllowList(address user) external;
+
+	// Remove the user from the allowed list.
+	//
+	// @param user Address of a removed user.
+	//
+	// Selector: removeFromCollectionAllowList(address) 85c51acb
+	function removeFromCollectionAllowList(address user) external;
+
+	// Switch permission for minting.
+	//
+	// @param mode Enable if "true".
+	//
+	// Selector: setCollectionMintMode(bool) 00018e84
+	function setCollectionMintMode(bool mode) external;
+
+	// Check that account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: isOwnerOrAdmin(address) 9811b0c7
+	function isOwnerOrAdmin(address user) external view returns (bool);
+
+	// Check that substrate account is the owner or admin of the collection
+	//
+	// @param user account to verify
+	// @return "true" if account is the owner or admin
+	//
+	// Selector: isOwnerOrAdminSubstrate(uint256) 68910e00
+	function isOwnerOrAdminSubstrate(uint256 user) external view returns (bool);
+
+	// Returns collection type
+	//
+	// @return `Fungible` or `NFT` or `ReFungible`
+	//
+	// Selector: uniqueCollectionType() d34b55b8
+	function uniqueCollectionType() external returns (string memory);
+
+	// Changes collection owner to another account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner account
+	//
+	// Selector: setOwner(address) 13af4035
+	function setOwner(address newOwner) external;
+
+	// Changes collection owner to another substrate account
+	//
+	// @dev Owner can be changed only by current owner
+	// @param newOwner new owner substrate account
+	//
+	// Selector: setOwnerSubstrate(uint256) b212138f
+	function setOwnerSubstrate(uint256 newOwner) external;
+}
+
 interface UniqueRefungible is
 	Dummy,
 	ERC165,
modifiedtests/src/eth/collectionAdmin.test.tsdiffbeforeafterboth
--- a/tests/src/eth/collectionAdmin.test.ts
+++ b/tests/src/eth/collectionAdmin.test.ts
@@ -373,11 +373,12 @@
     const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
   
     expect(await collectionEvm.methods.isOwnerOrAdmin(owner).call()).to.be.true;
-    expect(await collectionEvm.methods['isOwnerOrAdmin(uint256)'](newOwner.addressRaw).call()).to.be.false;
-    await collectionEvm.methods['setOwner(uint256)'](newOwner.addressRaw).send();
+    expect(await collectionEvm.methods.isOwnerOrAdminSubstrate(newOwner.addressRaw).call()).to.be.false;
+    
+    await collectionEvm.methods.setOwnerSubstrate(newOwner.addressRaw).send();
   
     expect(await collectionEvm.methods.isOwnerOrAdmin(owner).call()).to.be.false;
-    expect(await collectionEvm.methods['isOwnerOrAdmin(uint256)'](newOwner.addressRaw).call()).to.be.true;
+    expect(await collectionEvm.methods.isOwnerOrAdminSubstrate(newOwner.addressRaw).call()).to.be.true;
   });
 
   itWeb3('change owner call fee', async ({web3, api, privateKeyWrapper}) => {
@@ -390,7 +391,7 @@
     const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);
     const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
 
-    const cost = await recordEthFee(api, owner, () => collectionEvm.methods['setOwner(uint256)'](newOwner.addressRaw).send());
+    const cost = await recordEthFee(api, owner, () => collectionEvm.methods.setOwnerSubstrate(newOwner.addressRaw).send());
     expect(cost < BigInt(0.2 * Number(UNIQUE)));
     expect(cost > 0);
   });
@@ -406,7 +407,7 @@
     const {collectionIdAddress} = await getCollectionAddressFromResult(api, result);
     const collectionEvm = evmCollection(web3, owner, collectionIdAddress);
   
-    await expect(collectionEvm.methods['setOwner(uint256)'](newOwner.addressRaw).send({from: otherReceiver})).to.be.rejected;
-    expect(await collectionEvm.methods['isOwnerOrAdmin(uint256)'](newOwner.addressRaw).call()).to.be.false;
+    await expect(collectionEvm.methods.setOwnerSubstrate(newOwner.addressRaw).send({from: otherReceiver})).to.be.rejected;
+    expect(await collectionEvm.methods.isOwnerOrAdminSubstrate(newOwner.addressRaw).call()).to.be.false;
   });
 });
\ No newline at end of file
modifiedtests/src/eth/fungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/fungibleAbi.json
+++ b/tests/src/eth/fungibleAbi.json
@@ -152,7 +152,7 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "user", "type": "uint256" }
+      { "internalType": "address", "name": "user", "type": "address" }
     ],
     "name": "isOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
@@ -161,9 +161,9 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "user", "type": "address" }
+      { "internalType": "uint256", "name": "user", "type": "uint256" }
     ],
-    "name": "isOwnerOrAdmin",
+    "name": "isOwnerOrAdminSubstrate",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
     "stateMutability": "view",
     "type": "function"
@@ -289,7 +289,7 @@
     "inputs": [
       { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
     ],
-    "name": "setOwner",
+    "name": "setOwnerSubstrate",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/nonFungibleAbi.json
+++ b/tests/src/eth/nonFungibleAbi.json
@@ -211,7 +211,7 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "user", "type": "uint256" }
+      { "internalType": "address", "name": "user", "type": "address" }
     ],
     "name": "isOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
@@ -220,9 +220,9 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "user", "type": "address" }
+      { "internalType": "uint256", "name": "user", "type": "uint256" }
     ],
-    "name": "isOwnerOrAdmin",
+    "name": "isOwnerOrAdminSubstrate",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
     "stateMutability": "view",
     "type": "function"
@@ -463,7 +463,7 @@
     "inputs": [
       { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
     ],
-    "name": "setOwner",
+    "name": "setOwnerSubstrate",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
modifiedtests/src/eth/reFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/reFungibleAbi.json
+++ b/tests/src/eth/reFungibleAbi.json
@@ -211,7 +211,7 @@
   },
   {
     "inputs": [
-      { "internalType": "uint256", "name": "user", "type": "uint256" }
+      { "internalType": "address", "name": "user", "type": "address" }
     ],
     "name": "isOwnerOrAdmin",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
@@ -220,9 +220,9 @@
   },
   {
     "inputs": [
-      { "internalType": "address", "name": "user", "type": "address" }
+      { "internalType": "uint256", "name": "user", "type": "uint256" }
     ],
-    "name": "isOwnerOrAdmin",
+    "name": "isOwnerOrAdminSubstrate",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
     "stateMutability": "view",
     "type": "function"
@@ -463,7 +463,7 @@
     "inputs": [
       { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
     ],
-    "name": "setOwner",
+    "name": "setOwnerSubstrate",
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"