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
before · pallets/nonfungible/src/stubs/UniqueNFT.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 NFT owner, or an authorized422	//  operator of the current owner.423	// @param tokenId The NFT 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 NFTs assigned to an owner436	// @dev NFTs 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 NFTs 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 NFT450	// @dev NFTs assigned to zero address are considered invalid, and queries451	//  about them do throw.452	// @param tokenId The identifier for an NFT453	// @return The address of the owner of the NFT454	//455	// Selector: ownerOf(uint256) 6352211e456	function ownerOf(uint256 tokenId) public view returns (address) {457		require(false, stub_error);458		tokenId;459		dummy;460		return 0x0000000000000000000000000000000000000000;461	}462463	// @dev Not implemented464	//465	// Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672466	function safeTransferFromWithData(467		address from,468		address to,469		uint256 tokenId,470		bytes memory data471	) public {472		require(false, stub_error);473		from;474		to;475		tokenId;476		data;477		dummy = 0;478	}479480	// @dev Not implemented481	//482	// Selector: safeTransferFrom(address,address,uint256) 42842e0e483	function safeTransferFrom(484		address from,485		address to,486		uint256 tokenId487	) public {488		require(false, stub_error);489		from;490		to;491		tokenId;492		dummy = 0;493	}494495	// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE496	//  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE497	//  THEY MAY BE PERMANENTLY LOST498	// @dev Throws unless `msg.sender` is the current owner or an authorized499	//  operator for this NFT. Throws if `from` is not the current owner. Throws500	//  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.501	// @param from The current owner of the NFT502	// @param to The new owner503	// @param tokenId The NFT to transfer504	// @param _value Not used for an NFT505	//506	// Selector: transferFrom(address,address,uint256) 23b872dd507	function transferFrom(508		address from,509		address to,510		uint256 tokenId511	) public {512		require(false, stub_error);513		from;514		to;515		tokenId;516		dummy = 0;517	}518519	// @notice Set or reaffirm the approved address for an NFT520	// @dev The zero address indicates there is no approved address.521	// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized522	//  operator of the current owner.523	// @param approved The new approved NFT controller524	// @param tokenId The NFT to approve525	//526	// Selector: approve(address,uint256) 095ea7b3527	function approve(address approved, uint256 tokenId) public {528		require(false, stub_error);529		approved;530		tokenId;531		dummy = 0;532	}533534	// @dev Not implemented535	//536	// Selector: setApprovalForAll(address,bool) a22cb465537	function setApprovalForAll(address operator, bool approved) public {538		require(false, stub_error);539		operator;540		approved;541		dummy = 0;542	}543544	// @dev Not implemented545	//546	// Selector: getApproved(uint256) 081812fc547	function getApproved(uint256 tokenId) public view returns (address) {548		require(false, stub_error);549		tokenId;550		dummy;551		return 0x0000000000000000000000000000000000000000;552	}553554	// @dev Not implemented555	//556	// Selector: isApprovedForAll(address,address) e985e9c5557	function isApprovedForAll(address owner, address operator)558		public559		view560		returns (address)561	{562		require(false, stub_error);563		owner;564		operator;565		dummy;566		return 0x0000000000000000000000000000000000000000;567	}568}569570// Selector: 5b5e139f571contract ERC721Metadata is Dummy, ERC165 {572	// @notice A descriptive name for a collection of NFTs in this contract573	//574	// Selector: name() 06fdde03575	function name() public view returns (string memory) {576		require(false, stub_error);577		dummy;578		return "";579	}580581	// @notice An abbreviated name for NFTs in this contract582	//583	// Selector: symbol() 95d89b41584	function symbol() public view returns (string memory) {585		require(false, stub_error);586		dummy;587		return "";588	}589590	// @notice A distinct Uniform Resource Identifier (URI) for a given asset.591	//592	// @dev If the token has a `url` property and it is not empty, it is returned.593	//  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`.594	//  If the collection property `baseURI` is empty or absent, return "" (empty string)595	//  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix596	//  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).597	//598	// @return token's const_metadata599	//600	// Selector: tokenURI(uint256) c87b56dd601	function tokenURI(uint256 tokenId) public view returns (string memory) {602		require(false, stub_error);603		tokenId;604		dummy;605		return "";606	}607}608609// Selector: 68ccfe89610contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {611	// Selector: mintingFinished() 05d2035b612	function mintingFinished() public view returns (bool) {613		require(false, stub_error);614		dummy;615		return false;616	}617618	// @notice Function to mint token.619	// @dev `tokenId` should be obtained with `nextTokenId` method,620	//  unlike standard, you can't specify it manually621	// @param to The new owner622	// @param tokenId ID of the minted NFT623	//624	// Selector: mint(address,uint256) 40c10f19625	function mint(address to, uint256 tokenId) public returns (bool) {626		require(false, stub_error);627		to;628		tokenId;629		dummy = 0;630		return false;631	}632633	// @notice Function to mint token with the given tokenUri.634	// @dev `tokenId` should be obtained with `nextTokenId` method,635	//  unlike standard, you can't specify it manually636	// @param to The new owner637	// @param tokenId ID of the minted NFT638	// @param tokenUri Token URI that would be stored in the NFT properties639	//640	// Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f641	function mintWithTokenURI(642		address to,643		uint256 tokenId,644		string memory tokenUri645	) public returns (bool) {646		require(false, stub_error);647		to;648		tokenId;649		tokenUri;650		dummy = 0;651		return false;652	}653654	// @dev Not implemented655	//656	// Selector: finishMinting() 7d64bcb4657	function finishMinting() public returns (bool) {658		require(false, stub_error);659		dummy = 0;660		return false;661	}662}663664// Selector: 780e9d63665contract ERC721Enumerable is Dummy, ERC165 {666	// @notice Enumerate valid NFTs667	// @param index A counter less than `totalSupply()`668	// @return The token identifier for the `index`th NFT,669	//  (sort order not specified)670	//671	// Selector: tokenByIndex(uint256) 4f6ccce7672	function tokenByIndex(uint256 index) public view returns (uint256) {673		require(false, stub_error);674		index;675		dummy;676		return 0;677	}678679	// @dev Not implemented680	//681	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59682	function tokenOfOwnerByIndex(address owner, uint256 index)683		public684		view685		returns (uint256)686	{687		require(false, stub_error);688		owner;689		index;690		dummy;691		return 0;692	}693694	// @notice Count NFTs tracked by this contract695	// @return A count of valid NFTs tracked by this contract, where each one of696	//  them has an assigned and queryable owner not equal to the zero address697	//698	// Selector: totalSupply() 18160ddd699	function totalSupply() public view returns (uint256) {700		require(false, stub_error);701		dummy;702		return 0;703	}704}705706// Selector: d74d154f707contract ERC721UniqueExtensions is Dummy, ERC165 {708	// @notice Transfer ownership of an NFT709	// @dev Throws unless `msg.sender` is the current owner. Throws if `to`710	//  is the zero address. Throws if `tokenId` is not a valid NFT.711	// @param to The new owner712	// @param tokenId The NFT to transfer713	// @param _value Not used for an NFT714	//715	// Selector: transfer(address,uint256) a9059cbb716	function transfer(address to, uint256 tokenId) public {717		require(false, stub_error);718		to;719		tokenId;720		dummy = 0;721	}722723	// @notice Burns a specific ERC721 token.724	// @dev Throws unless `msg.sender` is the current owner or an authorized725	//  operator for this NFT. Throws if `from` is not the current owner. Throws726	//  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.727	// @param from The current owner of the NFT728	// @param tokenId The NFT to transfer729	// @param _value Not used for an NFT730	//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 NFT 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 NFTs753	//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	}783}784785contract UniqueNFT is786	Dummy,787	ERC165,788	ERC721,789	ERC721Metadata,790	ERC721Enumerable,791	ERC721UniqueExtensions,792	ERC721Mintable,793	ERC721Burnable,794	Collection,795	TokenProperties796{}
after · pallets/nonfungible/src/stubs/UniqueNFT.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 NFT owner, or an authorized134	//  operator of the current owner.135	// @param tokenId The NFT to approve136	//137	// Selector: burn(uint256) 42966c68138	function burn(uint256 tokenId) public {139		require(false, stub_error);140		tokenId;141		dummy = 0;142	}143}144145// Selector: 58800161146contract ERC721 is Dummy, ERC165, ERC721Events {147	// @notice Count all NFTs assigned to an owner148	// @dev NFTs assigned to the zero address are considered invalid, and this149	//  function throws for queries about the zero address.150	// @param owner An address for whom to query the balance151	// @return The number of NFTs owned by `owner`, possibly zero152	//153	// Selector: balanceOf(address) 70a08231154	function balanceOf(address owner) public view returns (uint256) {155		require(false, stub_error);156		owner;157		dummy;158		return 0;159	}160161	// @notice Find the owner of an NFT162	// @dev NFTs assigned to zero address are considered invalid, and queries163	//  about them do throw.164	// @param tokenId The identifier for an NFT165	// @return The address of the owner of the NFT166	//167	// Selector: ownerOf(uint256) 6352211e168	function ownerOf(uint256 tokenId) public view returns (address) {169		require(false, stub_error);170		tokenId;171		dummy;172		return 0x0000000000000000000000000000000000000000;173	}174175	// @dev Not implemented176	//177	// Selector: safeTransferFromWithData(address,address,uint256,bytes) 60a11672178	function safeTransferFromWithData(179		address from,180		address to,181		uint256 tokenId,182		bytes memory data183	) public {184		require(false, stub_error);185		from;186		to;187		tokenId;188		data;189		dummy = 0;190	}191192	// @dev Not implemented193	//194	// Selector: safeTransferFrom(address,address,uint256) 42842e0e195	function safeTransferFrom(196		address from,197		address to,198		uint256 tokenId199	) public {200		require(false, stub_error);201		from;202		to;203		tokenId;204		dummy = 0;205	}206207	// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE208	//  TO CONFIRM THAT `to` IS CAPABLE OF RECEIVING NFTS OR ELSE209	//  THEY MAY BE PERMANENTLY LOST210	// @dev Throws unless `msg.sender` is the current owner or an authorized211	//  operator for this NFT. Throws if `from` is not the current owner. Throws212	//  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.213	// @param from The current owner of the NFT214	// @param to The new owner215	// @param tokenId The NFT to transfer216	// @param _value Not used for an NFT217	//218	// Selector: transferFrom(address,address,uint256) 23b872dd219	function transferFrom(220		address from,221		address to,222		uint256 tokenId223	) public {224		require(false, stub_error);225		from;226		to;227		tokenId;228		dummy = 0;229	}230231	// @notice Set or reaffirm the approved address for an NFT232	// @dev The zero address indicates there is no approved address.233	// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized234	//  operator of the current owner.235	// @param approved The new approved NFT controller236	// @param tokenId The NFT to approve237	//238	// Selector: approve(address,uint256) 095ea7b3239	function approve(address approved, uint256 tokenId) public {240		require(false, stub_error);241		approved;242		tokenId;243		dummy = 0;244	}245246	// @dev Not implemented247	//248	// Selector: setApprovalForAll(address,bool) a22cb465249	function setApprovalForAll(address operator, bool approved) public {250		require(false, stub_error);251		operator;252		approved;253		dummy = 0;254	}255256	// @dev Not implemented257	//258	// Selector: getApproved(uint256) 081812fc259	function getApproved(uint256 tokenId) public view returns (address) {260		require(false, stub_error);261		tokenId;262		dummy;263		return 0x0000000000000000000000000000000000000000;264	}265266	// @dev Not implemented267	//268	// Selector: isApprovedForAll(address,address) e985e9c5269	function isApprovedForAll(address owner, address operator)270		public271		view272		returns (address)273	{274		require(false, stub_error);275		owner;276		operator;277		dummy;278		return 0x0000000000000000000000000000000000000000;279	}280}281282// Selector: 5b5e139f283contract ERC721Metadata is Dummy, ERC165 {284	// @notice A descriptive name for a collection of NFTs in this contract285	//286	// Selector: name() 06fdde03287	function name() public view returns (string memory) {288		require(false, stub_error);289		dummy;290		return "";291	}292293	// @notice An abbreviated name for NFTs in this contract294	//295	// Selector: symbol() 95d89b41296	function symbol() public view returns (string memory) {297		require(false, stub_error);298		dummy;299		return "";300	}301302	// @notice A distinct Uniform Resource Identifier (URI) for a given asset.303	//304	// @dev If the token has a `url` property and it is not empty, it is returned.305	//  Else If the collection does not have a property with key `schemaName` or its value is not equal to `ERC721Metadata`, it return an error `tokenURI not set`.306	//  If the collection property `baseURI` is empty or absent, return "" (empty string)307	//  otherwise, if token property `suffix` present and is non-empty, return concatenation of baseURI and suffix308	//  otherwise, return concatenation of `baseURI` and stringified token id (decimal stringifying, without paddings).309	//310	// @return token's const_metadata311	//312	// Selector: tokenURI(uint256) c87b56dd313	function tokenURI(uint256 tokenId) public view returns (string memory) {314		require(false, stub_error);315		tokenId;316		dummy;317		return "";318	}319}320321// Selector: 68ccfe89322contract ERC721Mintable is Dummy, ERC165, ERC721MintableEvents {323	// Selector: mintingFinished() 05d2035b324	function mintingFinished() public view returns (bool) {325		require(false, stub_error);326		dummy;327		return false;328	}329330	// @notice Function to mint token.331	// @dev `tokenId` should be obtained with `nextTokenId` method,332	//  unlike standard, you can't specify it manually333	// @param to The new owner334	// @param tokenId ID of the minted NFT335	//336	// Selector: mint(address,uint256) 40c10f19337	function mint(address to, uint256 tokenId) public returns (bool) {338		require(false, stub_error);339		to;340		tokenId;341		dummy = 0;342		return false;343	}344345	// @notice Function to mint token with the given tokenUri.346	// @dev `tokenId` should be obtained with `nextTokenId` method,347	//  unlike standard, you can't specify it manually348	// @param to The new owner349	// @param tokenId ID of the minted NFT350	// @param tokenUri Token URI that would be stored in the NFT properties351	//352	// Selector: mintWithTokenURI(address,uint256,string) 50bb4e7f353	function mintWithTokenURI(354		address to,355		uint256 tokenId,356		string memory tokenUri357	) public returns (bool) {358		require(false, stub_error);359		to;360		tokenId;361		tokenUri;362		dummy = 0;363		return false;364	}365366	// @dev Not implemented367	//368	// Selector: finishMinting() 7d64bcb4369	function finishMinting() public returns (bool) {370		require(false, stub_error);371		dummy = 0;372		return false;373	}374}375376// Selector: 780e9d63377contract ERC721Enumerable is Dummy, ERC165 {378	// @notice Enumerate valid NFTs379	// @param index A counter less than `totalSupply()`380	// @return The token identifier for the `index`th NFT,381	//  (sort order not specified)382	//383	// Selector: tokenByIndex(uint256) 4f6ccce7384	function tokenByIndex(uint256 index) public view returns (uint256) {385		require(false, stub_error);386		index;387		dummy;388		return 0;389	}390391	// @dev Not implemented392	//393	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59394	function tokenOfOwnerByIndex(address owner, uint256 index)395		public396		view397		returns (uint256)398	{399		require(false, stub_error);400		owner;401		index;402		dummy;403		return 0;404	}405406	// @notice Count NFTs tracked by this contract407	// @return A count of valid NFTs tracked by this contract, where each one of408	//  them has an assigned and queryable owner not equal to the zero address409	//410	// Selector: totalSupply() 18160ddd411	function totalSupply() public view returns (uint256) {412		require(false, stub_error);413		dummy;414		return 0;415	}416}417418// Selector: d74d154f419contract ERC721UniqueExtensions is Dummy, ERC165 {420	// @notice Transfer ownership of an NFT421	// @dev Throws unless `msg.sender` is the current owner. Throws if `to`422	//  is the zero address. Throws if `tokenId` is not a valid NFT.423	// @param to The new owner424	// @param tokenId The NFT to transfer425	// @param _value Not used for an NFT426	//427	// Selector: transfer(address,uint256) a9059cbb428	function transfer(address to, uint256 tokenId) public {429		require(false, stub_error);430		to;431		tokenId;432		dummy = 0;433	}434435	// @notice Burns a specific ERC721 token.436	// @dev Throws unless `msg.sender` is the current owner or an authorized437	//  operator for this NFT. Throws if `from` is not the current owner. Throws438	//  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.439	// @param from The current owner of the NFT440	// @param tokenId The NFT to transfer441	// @param _value Not used for an NFT442	//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 NFT 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 NFTs465	//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	}495}496497// Selector: ffe4da23498contract Collection is Dummy, ERC165 {499	// Set collection property.500	//501	// @param key Property key.502	// @param value Propery value.503	//504	// Selector: setCollectionProperty(string,bytes) 2f073f66505	function setCollectionProperty(string memory key, bytes memory value)506		public507	{508		require(false, stub_error);509		key;510		value;511		dummy = 0;512	}513514	// Delete collection property.515	//516	// @param key Property key.517	//518	// Selector: deleteCollectionProperty(string) 7b7debce519	function deleteCollectionProperty(string memory key) public {520		require(false, stub_error);521		key;522		dummy = 0;523	}524525	// Get collection property.526	//527	// @dev Throws error if key not found.528	//529	// @param key Property key.530	// @return bytes The property corresponding to the key.531	//532	// Selector: collectionProperty(string) cf24fd6d533	function collectionProperty(string memory key)534		public535		view536		returns (bytes memory)537	{538		require(false, stub_error);539		key;540		dummy;541		return hex"";542	}543544	// Set the sponsor of the collection.545	//546	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.547	//548	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.549	//550	// Selector: setCollectionSponsor(address) 7623402e551	function setCollectionSponsor(address sponsor) public {552		require(false, stub_error);553		sponsor;554		dummy = 0;555	}556557	// Collection sponsorship confirmation.558	//559	// @dev After setting the sponsor for the collection, it must be confirmed with this function.560	//561	// Selector: confirmCollectionSponsorship() 3c50e97a562	function confirmCollectionSponsorship() public {563		require(false, stub_error);564		dummy = 0;565	}566567	// Set limits for the collection.568	// @dev Throws error if limit not found.569	// @param limit Name of the limit. Valid names:570	// 	"accountTokenOwnershipLimit",571	// 	"sponsoredDataSize",572	// 	"sponsoredDataRateLimit",573	// 	"tokenLimit",574	// 	"sponsorTransferTimeout",575	// 	"sponsorApproveTimeout"576	// @param value Value of the limit.577	//578	// Selector: setCollectionLimit(string,uint32) 6a3841db579	function setCollectionLimit(string memory limit, uint32 value) public {580		require(false, stub_error);581		limit;582		value;583		dummy = 0;584	}585586	// Set limits for the collection.587	// @dev Throws error if limit not found.588	// @param limit Name of the limit. Valid names:589	// 	"ownerCanTransfer",590	// 	"ownerCanDestroy",591	// 	"transfersEnabled"592	// @param value Value of the limit.593	//594	// Selector: setCollectionLimit(string,bool) 993b7fba595	function setCollectionLimit(string memory limit, bool value) public {596		require(false, stub_error);597		limit;598		value;599		dummy = 0;600	}601602	// Get contract address.603	//604	// Selector: contractAddress() f6b4dfb4605	function contractAddress() public view returns (address) {606		require(false, stub_error);607		dummy;608		return 0x0000000000000000000000000000000000000000;609	}610611	// Add collection admin by substrate address.612	// @param new_admin Substrate administrator address.613	//614	// Selector: addCollectionAdminSubstrate(uint256) 5730062b615	function addCollectionAdminSubstrate(uint256 newAdmin) public {616		require(false, stub_error);617		newAdmin;618		dummy = 0;619	}620621	// Remove collection admin by substrate address.622	// @param admin Substrate administrator address.623	//624	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9625	function removeCollectionAdminSubstrate(uint256 admin) public {626		require(false, stub_error);627		admin;628		dummy = 0;629	}630631	// Add collection admin.632	// @param new_admin Address of the added administrator.633	//634	// Selector: addCollectionAdmin(address) 92e462c7635	function addCollectionAdmin(address newAdmin) public {636		require(false, stub_error);637		newAdmin;638		dummy = 0;639	}640641	// Remove collection admin.642	//643	// @param new_admin Address of the removed administrator.644	//645	// Selector: removeCollectionAdmin(address) fafd7b42646	function removeCollectionAdmin(address admin) public {647		require(false, stub_error);648		admin;649		dummy = 0;650	}651652	// Toggle accessibility of collection nesting.653	//654	// @param enable If "true" degenerates to nesting: 'Owner' else to nesting: 'Disabled'655	//656	// Selector: setCollectionNesting(bool) 112d4586657	function setCollectionNesting(bool enable) public {658		require(false, stub_error);659		enable;660		dummy = 0;661	}662663	// Toggle accessibility of collection nesting.664	//665	// @param enable If "true" degenerates to nesting: {OwnerRestricted: [1, 2, 3]} else to nesting: 'Disabled'666	// @param collections Addresses of collections that will be available for nesting.667	//668	// Selector: setCollectionNesting(bool,address[]) 64872396669	function setCollectionNesting(bool enable, address[] memory collections)670		public671	{672		require(false, stub_error);673		enable;674		collections;675		dummy = 0;676	}677678	// Set the collection access method.679	// @param mode Access mode680	// 	0 for Normal681	// 	1 for AllowList682	//683	// Selector: setCollectionAccess(uint8) 41835d4c684	function setCollectionAccess(uint8 mode) public {685		require(false, stub_error);686		mode;687		dummy = 0;688	}689690	// Add the user to the allowed list.691	//692	// @param user Address of a trusted user.693	//694	// Selector: addToCollectionAllowList(address) 67844fe6695	function addToCollectionAllowList(address user) public {696		require(false, stub_error);697		user;698		dummy = 0;699	}700701	// Remove the user from the allowed list.702	//703	// @param user Address of a removed user.704	//705	// Selector: removeFromCollectionAllowList(address) 85c51acb706	function removeFromCollectionAllowList(address user) public {707		require(false, stub_error);708		user;709		dummy = 0;710	}711712	// Switch permission for minting.713	//714	// @param mode Enable if "true".715	//716	// Selector: setCollectionMintMode(bool) 00018e84717	function setCollectionMintMode(bool mode) public {718		require(false, stub_error);719		mode;720		dummy = 0;721	}722723	// Check that account is the owner or admin of the collection724	//725	// @param user account to verify726	// @return "true" if account is the owner or admin727	//728	// Selector: isOwnerOrAdmin(address) 9811b0c7729	function isOwnerOrAdmin(address user) public view returns (bool) {730		require(false, stub_error);731		user;732		dummy;733		return false;734	}735736	// Check that substrate account is the owner or admin of the collection737	//738	// @param user account to verify739	// @return "true" if account is the owner or admin740	//741	// Selector: isOwnerOrAdminSubstrate(uint256) 68910e00742	function isOwnerOrAdminSubstrate(uint256 user) public view returns (bool) {743		require(false, stub_error);744		user;745		dummy;746		return false;747	}748749	// Returns collection type750	//751	// @return `Fungible` or `NFT` or `ReFungible`752	//753	// Selector: uniqueCollectionType() d34b55b8754	function uniqueCollectionType() public returns (string memory) {755		require(false, stub_error);756		dummy = 0;757		return "";758	}759760	// Changes collection owner to another account761	//762	// @dev Owner can be changed only by current owner763	// @param newOwner new owner account764	//765	// Selector: setOwner(address) 13af4035766	function setOwner(address newOwner) public {767		require(false, stub_error);768		newOwner;769		dummy = 0;770	}771772	// Changes collection owner to another substrate account773	//774	// @dev Owner can be changed only by current owner775	// @param newOwner new owner substrate account776	//777	// Selector: setOwnerSubstrate(uint256) b212138f778	function setOwnerSubstrate(uint256 newOwner) public {779		require(false, stub_error);780		newOwner;781		dummy = 0;782	}783}784785contract UniqueNFT is786	Dummy,787	ERC165,788	ERC721,789	ERC721Metadata,790	ERC721Enumerable,791	ERC721UniqueExtensions,792	ERC721Mintable,793	ERC721Burnable,794	Collection,795	TokenProperties796{}
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.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.
@@ -794,6 +506,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 UniqueRefungible is
 	Dummy,
 	ERC165,
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"