git.delta.rocks / unique-network / refs/commits / 6afd9fe97b2d

difftreelog

misk: update stubs

Trubnikov Sergey2022-10-25parent: #846b910.patch.diff
in: master

7 files changed

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -106,6 +106,7 @@
 /// @title A contract that allows you to work with collections.
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 /// @dev the ERC-165 identifier for this interface is 0xb3152af3
 =======
 /// @dev the ERC-165 identifier for this interface is 0x674be726
@@ -113,6 +114,9 @@
 =======
 /// @dev the ERC-165 identifier for this interface is 0x943ee094
 >>>>>>> fix: after rebase
+=======
+/// @dev the ERC-165 identifier for this interface is 0xefe988e0
+>>>>>>> misk: update stubs
 contract Collection is Dummy, ERC165 {
 	/// Set collection property.
 	///
@@ -130,7 +134,7 @@
 	/// Set collection properties.
 	///
 	/// @param properties Vector of properties key/value pair.
-	/// @dev EVM selector for this function is: 0xf90c1ce9,
+	/// @dev EVM selector for this function is: 0x50b26b2a,
 	///  or in textual repr: setCollectionProperties((string,bytes)[])
 	function setCollectionProperties(Tuple21[] memory properties) public {
 		require(false, stub_error);
@@ -152,7 +156,7 @@
 	/// Delete collection properties.
 	///
 	/// @param keys Properties keys.
-	/// @dev EVM selector for this function is: 0x56d4684a,
+	/// @dev EVM selector for this function is: 0xee206ee3,
 	///  or in textual repr: deleteCollectionProperties(string[])
 	function deleteCollectionProperties(string[] memory keys) public {
 		require(false, stub_error);
@@ -179,7 +183,7 @@
 	///
 	/// @param keys Properties keys. Empty keys for all propertyes.
 	/// @return Vector of properties key/value pairs.
-	/// @dev EVM selector for this function is: 0x5cad7311,
+	/// @dev EVM selector for this function is: 0x285fb8e6,
 	///  or in textual repr: collectionProperties(string[])
 	function collectionProperties(string[] memory keys) public view returns (Tuple21[] memory) {
 		require(false, stub_error);
@@ -206,9 +210,16 @@
 	/// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
 	///
 	/// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x403e96a7,
 	///  or in textual repr: setCollectionSponsorCross((address,uint256))
 	function setCollectionSponsorCross(Tuple6 memory sponsor) public {
+=======
+	/// @dev EVM selector for this function is: 0x84a1d5a8,
+	///  or in textual repr: setCollectionSponsorCross(EthCrossAccount)
+	///  or in the expanded repr: setCollectionSponsorCross((address,uint256))
+	function setCollectionSponsorCross(EthCrossAccount memory sponsor) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		sponsor;
 		dummy = 0;
@@ -248,6 +259,7 @@
 	///  or in textual repr: collectionSponsor()
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 	function collectionSponsor() public view returns (Tuple6 memory) {
 		require(false, stub_error);
 		dummy;
@@ -264,6 +276,12 @@
 		dummy;
 		return Tuple8(0x0000000000000000000000000000000000000000, 0);
 >>>>>>> feat: Add custum signature with unlimited nesting.
+=======
+	function collectionSponsor() public view returns (Tuple24 memory) {
+		require(false, stub_error);
+		dummy;
+		return Tuple24(0x0000000000000000000000000000000000000000, 0);
+>>>>>>> misk: update stubs
 	}
 
 	/// Set limits for the collection.
@@ -312,9 +330,16 @@
 
 	/// Add collection admin.
 	/// @param newAdmin Cross account administrator address.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x62e3c7c2,
 	///  or in textual repr: addCollectionAdminCross((address,uint256))
 	function addCollectionAdminCross(Tuple6 memory newAdmin) public {
+=======
+	/// @dev EVM selector for this function is: 0x859aa7d6,
+	///  or in textual repr: addCollectionAdminCross(EthCrossAccount)
+	///  or in the expanded repr: addCollectionAdminCross((address,uint256))
+	function addCollectionAdminCross(EthCrossAccount memory newAdmin) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		newAdmin;
 		dummy = 0;
@@ -322,9 +347,16 @@
 
 	/// Remove collection admin.
 	/// @param admin Cross account administrator address.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x810d1503,
 	///  or in textual repr: removeCollectionAdminCross((address,uint256))
 	function removeCollectionAdminCross(Tuple6 memory admin) public {
+=======
+	/// @dev EVM selector for this function is: 0x6c0cd173,
+	///  or in textual repr: removeCollectionAdminCross(EthCrossAccount)
+	///  or in the expanded repr: removeCollectionAdminCross((address,uint256))
+	function removeCollectionAdminCross(EthCrossAccount memory admin) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		admin;
 		dummy = 0;
@@ -366,7 +398,7 @@
 	///
 	/// @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.
-	/// @dev EVM selector for this function is: 0x112d4586,
+	/// @dev EVM selector for this function is: 0x64872396,
 	///  or in textual repr: setCollectionNesting(bool,address[])
 	function setCollectionNesting(bool enable, address[] memory collections) public {
 		require(false, stub_error);
@@ -413,9 +445,16 @@
 	/// Add user to allowed list.
 	///
 	/// @param user User cross account address.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0xf074da88,
 	///  or in textual repr: addToCollectionAllowListCross((address,uint256))
 	function addToCollectionAllowListCross(Tuple6 memory user) public {
+=======
+	/// @dev EVM selector for this function is: 0xa0184a3a,
+	///  or in textual repr: addToCollectionAllowListCross(EthCrossAccount)
+	///  or in the expanded repr: addToCollectionAllowListCross((address,uint256))
+	function addToCollectionAllowListCross(EthCrossAccount memory user) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		user;
 		dummy = 0;
@@ -435,9 +474,16 @@
 	/// Remove user from allowed list.
 	///
 	/// @param user User cross account address.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0xc00df45c,
 	///  or in textual repr: removeFromCollectionAllowListCross((address,uint256))
 	function removeFromCollectionAllowListCross(Tuple6 memory user) public {
+=======
+	/// @dev EVM selector for this function is: 0x09ba452a,
+	///  or in textual repr: removeFromCollectionAllowListCross(EthCrossAccount)
+	///  or in the expanded repr: removeFromCollectionAllowListCross((address,uint256))
+	function removeFromCollectionAllowListCross(EthCrossAccount memory user) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		user;
 		dummy = 0;
@@ -471,9 +517,16 @@
 	///
 	/// @param user User cross account to verify
 	/// @return "true" if account is the owner or admin
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x5aba3351,
 	///  or in textual repr: isOwnerOrAdminCross((address,uint256))
 	function isOwnerOrAdminCross(Tuple6 memory user) public view returns (bool) {
+=======
+	/// @dev EVM selector for this function is: 0x3e75a905,
+	///  or in textual repr: isOwnerOrAdminCross(EthCrossAccount)
+	///  or in the expanded repr: isOwnerOrAdminCross((address,uint256))
+	function isOwnerOrAdminCross(EthCrossAccount memory user) public view returns (bool) {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		user;
 		dummy;
@@ -499,6 +552,7 @@
 	///  or in textual repr: collectionOwner()
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 	function collectionOwner() public view returns (Tuple6 memory) {
 		require(false, stub_error);
 		dummy;
@@ -515,6 +569,12 @@
 		dummy;
 		return Tuple8(0x0000000000000000000000000000000000000000, 0);
 >>>>>>> feat: Add custum signature with unlimited nesting.
+=======
+	function collectionOwner() public view returns (EthCrossAccount memory) {
+		require(false, stub_error);
+		dummy;
+		return EthCrossAccount(0x0000000000000000000000000000000000000000, 0);
+>>>>>>> misk: update stubs
 	}
 
 	/// Changes collection owner to another account
@@ -535,19 +595,33 @@
 	/// If address is canonical then substrate mirror is zero and vice versa.
 	/// @dev EVM selector for this function is: 0x5813216b,
 	///  or in textual repr: collectionAdmins()
+<<<<<<< HEAD
 	function collectionAdmins() public view returns (Tuple6[] memory) {
 		require(false, stub_error);
 		dummy;
 		return new Tuple6[](0);
+=======
+	function collectionAdmins() public view returns (EthCrossAccount[] memory) {
+		require(false, stub_error);
+		dummy;
+		return new EthCrossAccount[](0);
+>>>>>>> misk: update stubs
 	}
 
 	/// Changes collection owner to another account
 	///
 	/// @dev Owner can be changed only by current owner
 	/// @param newOwner new owner cross account
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0xbdff793d,
 	///  or in textual repr: setOwnerCross((address,uint256))
 	function setOwnerCross(Tuple6 memory newOwner) public {
+=======
+	/// @dev EVM selector for this function is: 0xe5c9913f,
+	///  or in textual repr: setOwnerCross(EthCrossAccount)
+	///  or in the expanded repr: setOwnerCross((address,uint256))
+	function setOwnerCross(EthCrossAccount memory newOwner) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		newOwner;
 		dummy = 0;
@@ -556,12 +630,24 @@
 
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple19 {
+=======
+/// @dev Cross account struct
+struct EthCrossAccount {
+	address eth;
+	uint256 sub;
+}
+
+/// @dev anonymous struct
+struct Tuple24 {
+>>>>>>> misk: update stubs
 	address field_0;
 	uint256 field_1;
 }
 
+<<<<<<< HEAD
 /// @title ERC-721 Non-Fungible Token Standard, optional metadata extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
 /// @dev the ERC-165 identifier for this interface is 0x5b5e139f
@@ -608,6 +694,8 @@
 =======
 >>>>>>> feat: Add custum signature with unlimited nesting.
 =======
+=======
+>>>>>>> misk: update stubs
 /// @dev anonymous struct
 struct Tuple21 {
 	string field_0;
@@ -717,10 +805,14 @@
 
 /// @title Unique extensions for ERC721.
 <<<<<<< HEAD
+<<<<<<< HEAD
 /// @dev the ERC-165 identifier for this interface is 0x244543ee
 =======
 /// @dev the ERC-165 identifier for this interface is 0xcc97cb35
 >>>>>>> feat: Add custum signature with unlimited nesting.
+=======
+/// @dev the ERC-165 identifier for this interface is 0xb76006ac
+>>>>>>> misk: update stubs
 contract ERC721UniqueExtensions is Dummy, ERC165 {
 	/// @notice A descriptive name for a collection of NFTs in this contract
 	/// @dev EVM selector for this function is: 0x06fdde03,
@@ -746,9 +838,16 @@
 	///  operator of the current owner.
 	/// @param approved The new substrate address approved NFT controller
 	/// @param tokenId The NFT to approve
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x106fdb59,
 	///  or in textual repr: approveCross((address,uint256),uint256)
 	function approveCross(Tuple6 memory approved, uint256 tokenId) public {
+=======
+	/// @dev EVM selector for this function is: 0x0ecd0ab0,
+	///  or in textual repr: approveCross(EthCrossAccount,uint256)
+	///  or in the expanded repr: approveCross((address,uint256),uint256)
+	function approveCross(EthCrossAccount memory approved, uint256 tokenId) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		approved;
 		tokenId;
@@ -777,6 +876,7 @@
 	/// @param tokenId The NFT to transfer
 	/// @dev EVM selector for this function is: 0xd5cf430b,
 	///  or in textual repr: transferFromCross(EthCrossAccount,EthCrossAccount,uint256)
+	///  or in the expanded repr: transferFromCross((address,uint256),(address,uint256),uint256)
 	function transferFromCross(
 <<<<<<< HEAD
 		Tuple6 memory from,
@@ -815,9 +915,16 @@
 	///  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
 	/// @param from The current owner of the NFT
 	/// @param tokenId The NFT to transfer
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0xa8106d4a,
 	///  or in textual repr: burnFromCross((address,uint256),uint256)
 	function burnFromCross(Tuple6 memory from, uint256 tokenId) public {
+=======
+	/// @dev EVM selector for this function is: 0xbb2f5a58,
+	///  or in textual repr: burnFromCross(EthCrossAccount,uint256)
+	///  or in the expanded repr: burnFromCross((address,uint256),uint256)
+	function burnFromCross(EthCrossAccount memory from, uint256 tokenId) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		from;
 		tokenId;
@@ -873,7 +980,7 @@
 	///  should be obtained with `nextTokenId` method
 	/// @param to The new owner
 	/// @param tokenIds IDs of the minted NFTs
-	/// @dev EVM selector for this function is: 0xf9d9a5a3,
+	/// @dev EVM selector for this function is: 0x44a9945e,
 	///  or in textual repr: mintBulk(address,uint256[])
 	function mintBulk(address to, uint256[] memory tokenIds) public returns (bool) {
 		require(false, stub_error);
@@ -888,7 +995,7 @@
 	///  numbers and first number should be obtained with `nextTokenId` method
 	/// @param to The new owner
 	/// @param tokens array of pairs of token ID and token URI for minted tokens
-	/// @dev EVM selector for this function is: 0xfd4e2a99,
+	/// @dev EVM selector for this function is: 0x36543006,
 	///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
 	function mintBulkWithTokenURI(address to, Tuple12[] memory tokens) public returns (bool) {
 		require(false, stub_error);
@@ -907,6 +1014,7 @@
 }
 
 <<<<<<< HEAD
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple6 {
 	address field_0;
@@ -925,6 +1033,8 @@
 	uint256 field_1;
 }
 
+=======
+>>>>>>> misk: update stubs
 /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
 /// @dev the ERC-165 identifier for this interface is 0x780e9d63
modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -124,7 +124,7 @@
 	/// @param properties Vector of properties key/value pair.
 	/// @dev EVM selector for this function is: 0x50b26b2a,
 	///  or in textual repr: setCollectionProperties((string,bytes)[])
-	function setCollectionProperties(Tuple19[] memory properties) public {
+	function setCollectionProperties(Tuple20[] memory properties) public {
 		require(false, stub_error);
 		properties;
 		dummy = 0;
@@ -173,11 +173,11 @@
 	/// @return Vector of properties key/value pairs.
 	/// @dev EVM selector for this function is: 0x285fb8e6,
 	///  or in textual repr: collectionProperties(string[])
-	function collectionProperties(string[] memory keys) public view returns (Tuple19[] memory) {
+	function collectionProperties(string[] memory keys) public view returns (Tuple20[] memory) {
 		require(false, stub_error);
 		keys;
 		dummy;
-		return new Tuple19[](0);
+		return new Tuple20[](0);
 	}
 
 	/// Set the sponsor of the collection.
@@ -199,8 +199,14 @@
 	///
 	/// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.
 	/// @dev EVM selector for this function is: 0x84a1d5a8,
+<<<<<<< HEAD
 	///  or in textual repr: setCollectionSponsorCross((address,uint256))
 	function setCollectionSponsorCross(Tuple6 memory sponsor) public {
+=======
+	///  or in textual repr: setCollectionSponsorCross(EthCrossAccount)
+	///  or in the expanded repr: setCollectionSponsorCross((address,uint256))
+	function setCollectionSponsorCross(EthCrossAccount memory sponsor) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		sponsor;
 		dummy = 0;
@@ -238,10 +244,17 @@
 	/// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
 	/// @dev EVM selector for this function is: 0x6ec0a9f1,
 	///  or in textual repr: collectionSponsor()
+<<<<<<< HEAD
 	function collectionSponsor() public view returns (Tuple6 memory) {
 		require(false, stub_error);
 		dummy;
 		return Tuple6(0x0000000000000000000000000000000000000000, 0);
+=======
+	function collectionSponsor() public view returns (Tuple23 memory) {
+		require(false, stub_error);
+		dummy;
+		return Tuple23(0x0000000000000000000000000000000000000000, 0);
+>>>>>>> misk: update stubs
 	}
 
 	/// Set limits for the collection.
@@ -291,8 +304,14 @@
 	/// Add collection admin.
 	/// @param newAdmin Cross account administrator address.
 	/// @dev EVM selector for this function is: 0x859aa7d6,
+<<<<<<< HEAD
 	///  or in textual repr: addCollectionAdminCross((address,uint256))
 	function addCollectionAdminCross(Tuple6 memory newAdmin) public {
+=======
+	///  or in textual repr: addCollectionAdminCross(EthCrossAccount)
+	///  or in the expanded repr: addCollectionAdminCross((address,uint256))
+	function addCollectionAdminCross(EthCrossAccount memory newAdmin) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		newAdmin;
 		dummy = 0;
@@ -301,8 +320,14 @@
 	/// Remove collection admin.
 	/// @param admin Cross account administrator address.
 	/// @dev EVM selector for this function is: 0x6c0cd173,
+<<<<<<< HEAD
 	///  or in textual repr: removeCollectionAdminCross((address,uint256))
 	function removeCollectionAdminCross(Tuple6 memory admin) public {
+=======
+	///  or in textual repr: removeCollectionAdminCross(EthCrossAccount)
+	///  or in the expanded repr: removeCollectionAdminCross((address,uint256))
+	function removeCollectionAdminCross(EthCrossAccount memory admin) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		admin;
 		dummy = 0;
@@ -392,8 +417,14 @@
 	///
 	/// @param user User cross account address.
 	/// @dev EVM selector for this function is: 0xa0184a3a,
+<<<<<<< HEAD
 	///  or in textual repr: addToCollectionAllowListCross((address,uint256))
 	function addToCollectionAllowListCross(Tuple6 memory user) public {
+=======
+	///  or in textual repr: addToCollectionAllowListCross(EthCrossAccount)
+	///  or in the expanded repr: addToCollectionAllowListCross((address,uint256))
+	function addToCollectionAllowListCross(EthCrossAccount memory user) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		user;
 		dummy = 0;
@@ -414,8 +445,14 @@
 	///
 	/// @param user User cross account address.
 	/// @dev EVM selector for this function is: 0x09ba452a,
+<<<<<<< HEAD
 	///  or in textual repr: removeFromCollectionAllowListCross((address,uint256))
 	function removeFromCollectionAllowListCross(Tuple6 memory user) public {
+=======
+	///  or in textual repr: removeFromCollectionAllowListCross(EthCrossAccount)
+	///  or in the expanded repr: removeFromCollectionAllowListCross((address,uint256))
+	function removeFromCollectionAllowListCross(EthCrossAccount memory user) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		user;
 		dummy = 0;
@@ -450,8 +487,14 @@
 	/// @param user User cross account to verify
 	/// @return "true" if account is the owner or admin
 	/// @dev EVM selector for this function is: 0x3e75a905,
+<<<<<<< HEAD
 	///  or in textual repr: isOwnerOrAdminCross((address,uint256))
 	function isOwnerOrAdminCross(Tuple6 memory user) public view returns (bool) {
+=======
+	///  or in textual repr: isOwnerOrAdminCross(EthCrossAccount)
+	///  or in the expanded repr: isOwnerOrAdminCross((address,uint256))
+	function isOwnerOrAdminCross(EthCrossAccount memory user) public view returns (bool) {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		user;
 		dummy;
@@ -471,14 +514,21 @@
 
 	/// Get collection owner.
 	///
-	/// @return Tuble with sponsor address and his substrate mirror.
+	/// @return Tuple with sponsor address and his substrate mirror.
 	/// If address is canonical then substrate mirror is zero and vice versa.
 	/// @dev EVM selector for this function is: 0xdf727d3b,
 	///  or in textual repr: collectionOwner()
+<<<<<<< HEAD
 	function collectionOwner() public view returns (Tuple6 memory) {
 		require(false, stub_error);
 		dummy;
 		return Tuple6(0x0000000000000000000000000000000000000000, 0);
+=======
+	function collectionOwner() public view returns (EthCrossAccount memory) {
+		require(false, stub_error);
+		dummy;
+		return EthCrossAccount(0x0000000000000000000000000000000000000000, 0);
+>>>>>>> misk: update stubs
 	}
 
 	/// Changes collection owner to another account
@@ -499,10 +549,17 @@
 	/// If address is canonical then substrate mirror is zero and vice versa.
 	/// @dev EVM selector for this function is: 0x5813216b,
 	///  or in textual repr: collectionAdmins()
+<<<<<<< HEAD
 	function collectionAdmins() public view returns (Tuple6[] memory) {
 		require(false, stub_error);
 		dummy;
 		return new Tuple6[](0);
+=======
+	function collectionAdmins() public view returns (EthCrossAccount[] memory) {
+		require(false, stub_error);
+		dummy;
+		return new EthCrossAccount[](0);
+>>>>>>> misk: update stubs
 	}
 
 	/// Changes collection owner to another account
@@ -510,16 +567,34 @@
 	/// @dev Owner can be changed only by current owner
 	/// @param newOwner new owner cross account
 	/// @dev EVM selector for this function is: 0xe5c9913f,
+<<<<<<< HEAD
 	///  or in textual repr: setOwnerCross((address,uint256))
 	function setOwnerCross(Tuple6 memory newOwner) public {
+=======
+	///  or in textual repr: setOwnerCross(EthCrossAccount)
+	///  or in the expanded repr: setOwnerCross((address,uint256))
+	function setOwnerCross(EthCrossAccount memory newOwner) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		newOwner;
 		dummy = 0;
 	}
 }
 
+/// @dev Cross account struct
+struct EthCrossAccount {
+	address eth;
+	uint256 sub;
+}
+
+/// @dev anonymous struct
+struct Tuple23 {
+	address field_0;
+	uint256 field_1;
+}
+
 /// @dev anonymous struct
-struct Tuple19 {
+struct Tuple20 {
 	string field_0;
 	bytes field_1;
 }
@@ -708,10 +783,16 @@
 	/// @param to The new owner
 	/// @param tokenId The RFT to transfer
 	/// @dev EVM selector for this function is: 0xd5cf430b,
-	///  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)
+	///  or in textual repr: transferFromCross(EthCrossAccount,EthCrossAccount,uint256)
+	///  or in the expanded repr: transferFromCross((address,uint256),(address,uint256),uint256)
 	function transferFromCross(
+<<<<<<< HEAD
 		Tuple6 memory from,
 		Tuple6 memory to,
+=======
+		EthCrossAccount memory from,
+		EthCrossAccount memory to,
+>>>>>>> misk: update stubs
 		uint256 tokenId
 	) public {
 		require(false, stub_error);
@@ -745,8 +826,14 @@
 	/// @param from The current owner of the RFT
 	/// @param tokenId The RFT to transfer
 	/// @dev EVM selector for this function is: 0xbb2f5a58,
+<<<<<<< HEAD
 	///  or in textual repr: burnFromCross((address,uint256),uint256)
 	function burnFromCross(Tuple6 memory from, uint256 tokenId) public {
+=======
+	///  or in textual repr: burnFromCross(EthCrossAccount,uint256)
+	///  or in the expanded repr: burnFromCross((address,uint256),uint256)
+	function burnFromCross(EthCrossAccount memory from, uint256 tokenId) public {
+>>>>>>> misk: update stubs
 		require(false, stub_error);
 		from;
 		tokenId;
@@ -762,6 +849,7 @@
 		return 0;
 	}
 
+<<<<<<< HEAD
 	// /// @notice Function to mint multiple tokens.
 	// /// @dev `tokenIds` should be an array of consecutive numbers and first number
 	// ///  should be obtained with `nextTokenId` method
@@ -791,6 +879,37 @@
 	// 	dummy = 0;
 	// 	return false;
 	// }
+=======
+	/// @notice Function to mint multiple tokens.
+	/// @dev `tokenIds` should be an array of consecutive numbers and first number
+	///  should be obtained with `nextTokenId` method
+	/// @param to The new owner
+	/// @param tokenIds IDs of the minted RFTs
+	/// @dev EVM selector for this function is: 0x44a9945e,
+	///  or in textual repr: mintBulk(address,uint256[])
+	function mintBulk(address to, uint256[] memory tokenIds) public returns (bool) {
+		require(false, stub_error);
+		to;
+		tokenIds;
+		dummy = 0;
+		return false;
+	}
+
+	/// @notice Function to mint multiple tokens with the given tokenUris.
+	/// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+	///  numbers and first number should be obtained with `nextTokenId` method
+	/// @param to The new owner
+	/// @param tokens array of pairs of token ID and token URI for minted tokens
+	/// @dev EVM selector for this function is: 0x36543006,
+	///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
+	function mintBulkWithTokenURI(address to, Tuple11[] memory tokens) public returns (bool) {
+		require(false, stub_error);
+		to;
+		tokens;
+		dummy = 0;
+		return false;
+	}
+>>>>>>> misk: update stubs
 
 	/// Returns EVM address for refungible token
 	///
@@ -806,17 +925,24 @@
 }
 
 /// @dev anonymous struct
+<<<<<<< HEAD
 struct Tuple8 {
+=======
+struct Tuple11 {
+>>>>>>> misk: update stubs
 	uint256 field_0;
 	string field_1;
 }
 
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple6 {
 	address field_0;
 	uint256 field_1;
 }
 
+=======
+>>>>>>> misk: update stubs
 /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
 /// @dev the ERC-165 identifier for this interface is 0x780e9d63
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -72,6 +72,7 @@
 /// @title A contract that allows you to work with collections.
 <<<<<<< HEAD
 <<<<<<< HEAD
+<<<<<<< HEAD
 /// @dev the ERC-165 identifier for this interface is 0xb3152af3
 =======
 /// @dev the ERC-165 identifier for this interface is 0x674be726
@@ -79,6 +80,9 @@
 =======
 /// @dev the ERC-165 identifier for this interface is 0x943ee094
 >>>>>>> fix: after rebase
+=======
+/// @dev the ERC-165 identifier for this interface is 0xefe988e0
+>>>>>>> misk: update stubs
 interface Collection is Dummy, ERC165 {
 	/// Set collection property.
 	///
@@ -91,7 +95,7 @@
 	/// Set collection properties.
 	///
 	/// @param properties Vector of properties key/value pair.
-	/// @dev EVM selector for this function is: 0xf90c1ce9,
+	/// @dev EVM selector for this function is: 0x50b26b2a,
 	///  or in textual repr: setCollectionProperties((string,bytes)[])
 	function setCollectionProperties(Tuple21[] memory properties) external;
 
@@ -105,7 +109,7 @@
 	/// Delete collection properties.
 	///
 	/// @param keys Properties keys.
-	/// @dev EVM selector for this function is: 0x56d4684a,
+	/// @dev EVM selector for this function is: 0xee206ee3,
 	///  or in textual repr: deleteCollectionProperties(string[])
 	function deleteCollectionProperties(string[] memory keys) external;
 
@@ -123,7 +127,7 @@
 	///
 	/// @param keys Properties keys. Empty keys for all propertyes.
 	/// @return Vector of properties key/value pairs.
-	/// @dev EVM selector for this function is: 0x5cad7311,
+	/// @dev EVM selector for this function is: 0x285fb8e6,
 	///  or in textual repr: collectionProperties(string[])
 	function collectionProperties(string[] memory keys) external view returns (Tuple21[] memory);
 
@@ -141,9 +145,16 @@
 	/// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
 	///
 	/// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x403e96a7,
 	///  or in textual repr: setCollectionSponsorCross((address,uint256))
 	function setCollectionSponsorCross(Tuple6 memory sponsor) external;
+=======
+	/// @dev EVM selector for this function is: 0x84a1d5a8,
+	///  or in textual repr: setCollectionSponsorCross(EthCrossAccount)
+	///  or in the expanded repr: setCollectionSponsorCross((address,uint256))
+	function setCollectionSponsorCross(EthCrossAccount memory sponsor) external;
+>>>>>>> misk: update stubs
 
 	/// Whether there is a pending sponsor.
 	/// @dev EVM selector for this function is: 0x058ac185,
@@ -167,7 +178,7 @@
 	/// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
 	/// @dev EVM selector for this function is: 0x6ec0a9f1,
 	///  or in textual repr: collectionSponsor()
-	function collectionSponsor() external view returns (Tuple8 memory);
+	function collectionSponsor() external view returns (Tuple24 memory);
 
 	/// Set limits for the collection.
 	/// @dev Throws error if limit not found.
@@ -201,6 +212,7 @@
 
 	/// Add collection admin.
 	/// @param newAdmin Cross account administrator address.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x62e3c7c2,
 	///  or in textual repr: addCollectionAdminCross((address,uint256))
 	function addCollectionAdminCross(Tuple6 memory newAdmin) external;
@@ -210,6 +222,19 @@
 	/// @dev EVM selector for this function is: 0x810d1503,
 	///  or in textual repr: removeCollectionAdminCross((address,uint256))
 	function removeCollectionAdminCross(Tuple6 memory admin) external;
+=======
+	/// @dev EVM selector for this function is: 0x859aa7d6,
+	///  or in textual repr: addCollectionAdminCross(EthCrossAccount)
+	///  or in the expanded repr: addCollectionAdminCross((address,uint256))
+	function addCollectionAdminCross(EthCrossAccount memory newAdmin) external;
+
+	/// Remove collection admin.
+	/// @param admin Cross account administrator address.
+	/// @dev EVM selector for this function is: 0x6c0cd173,
+	///  or in textual repr: removeCollectionAdminCross(EthCrossAccount)
+	///  or in the expanded repr: removeCollectionAdminCross((address,uint256))
+	function removeCollectionAdminCross(EthCrossAccount memory admin) external;
+>>>>>>> misk: update stubs
 
 	/// Add collection admin.
 	/// @param newAdmin Address of the added administrator.
@@ -235,7 +260,7 @@
 	///
 	/// @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.
-	/// @dev EVM selector for this function is: 0x112d4586,
+	/// @dev EVM selector for this function is: 0x64872396,
 	///  or in textual repr: setCollectionNesting(bool,address[])
 	function setCollectionNesting(bool enable, address[] memory collections) external;
 
@@ -264,9 +289,16 @@
 	/// Add user to allowed list.
 	///
 	/// @param user User cross account address.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0xf074da88,
 	///  or in textual repr: addToCollectionAllowListCross((address,uint256))
 	function addToCollectionAllowListCross(Tuple6 memory user) external;
+=======
+	/// @dev EVM selector for this function is: 0xa0184a3a,
+	///  or in textual repr: addToCollectionAllowListCross(EthCrossAccount)
+	///  or in the expanded repr: addToCollectionAllowListCross((address,uint256))
+	function addToCollectionAllowListCross(EthCrossAccount memory user) external;
+>>>>>>> misk: update stubs
 
 	/// Remove the user from the allowed list.
 	///
@@ -278,9 +310,16 @@
 	/// Remove user from allowed list.
 	///
 	/// @param user User cross account address.
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0xc00df45c,
 	///  or in textual repr: removeFromCollectionAllowListCross((address,uint256))
 	function removeFromCollectionAllowListCross(Tuple6 memory user) external;
+=======
+	/// @dev EVM selector for this function is: 0x09ba452a,
+	///  or in textual repr: removeFromCollectionAllowListCross(EthCrossAccount)
+	///  or in the expanded repr: removeFromCollectionAllowListCross((address,uint256))
+	function removeFromCollectionAllowListCross(EthCrossAccount memory user) external;
+>>>>>>> misk: update stubs
 
 	/// Switch permission for minting.
 	///
@@ -301,9 +340,16 @@
 	///
 	/// @param user User cross account to verify
 	/// @return "true" if account is the owner or admin
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x5aba3351,
 	///  or in textual repr: isOwnerOrAdminCross((address,uint256))
 	function isOwnerOrAdminCross(Tuple6 memory user) external view returns (bool);
+=======
+	/// @dev EVM selector for this function is: 0x3e75a905,
+	///  or in textual repr: isOwnerOrAdminCross(EthCrossAccount)
+	///  or in the expanded repr: isOwnerOrAdminCross((address,uint256))
+	function isOwnerOrAdminCross(EthCrossAccount memory user) external view returns (bool);
+>>>>>>> misk: update stubs
 
 	/// Returns collection type
 	///
@@ -318,7 +364,7 @@
 	/// If address is canonical then substrate mirror is zero and vice versa.
 	/// @dev EVM selector for this function is: 0xdf727d3b,
 	///  or in textual repr: collectionOwner()
-	function collectionOwner() external view returns (Tuple8 memory);
+	function collectionOwner() external view returns (EthCrossAccount memory);
 
 	/// Changes collection owner to another account
 	///
@@ -334,15 +380,38 @@
 	/// If address is canonical then substrate mirror is zero and vice versa.
 	/// @dev EVM selector for this function is: 0x5813216b,
 	///  or in textual repr: collectionAdmins()
+<<<<<<< HEAD
 	function collectionAdmins() external view returns (Tuple6[] memory);
+=======
+	function collectionAdmins() external view returns (EthCrossAccount[] memory);
+>>>>>>> misk: update stubs
 
 	/// Changes collection owner to another account
 	///
 	/// @dev Owner can be changed only by current owner
 	/// @param newOwner new owner cross account
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0xbdff793d,
 	///  or in textual repr: setOwnerCross((address,uint256))
 	function setOwnerCross(Tuple6 memory newOwner) external;
+=======
+	/// @dev EVM selector for this function is: 0xe5c9913f,
+	///  or in textual repr: setOwnerCross(EthCrossAccount)
+	///  or in the expanded repr: setOwnerCross((address,uint256))
+	function setOwnerCross(EthCrossAccount memory newOwner) external;
+}
+
+/// @dev Cross account struct
+struct EthCrossAccount {
+	address eth;
+	uint256 sub;
+}
+
+/// @dev anonymous struct
+struct Tuple24 {
+	address field_0;
+	uint256 field_1;
+>>>>>>> misk: update stubs
 }
 
 <<<<<<< HEAD
@@ -459,10 +528,14 @@
 
 /// @title Unique extensions for ERC721.
 <<<<<<< HEAD
+<<<<<<< HEAD
 /// @dev the ERC-165 identifier for this interface is 0x244543ee
 =======
 /// @dev the ERC-165 identifier for this interface is 0xcc97cb35
 >>>>>>> feat: Add custum signature with unlimited nesting.
+=======
+/// @dev the ERC-165 identifier for this interface is 0xb76006ac
+>>>>>>> misk: update stubs
 interface ERC721UniqueExtensions is Dummy, ERC165 {
 	/// @notice A descriptive name for a collection of NFTs in this contract
 	/// @dev EVM selector for this function is: 0x06fdde03,
@@ -480,9 +553,16 @@
 	///  operator of the current owner.
 	/// @param approved The new substrate address approved NFT controller
 	/// @param tokenId The NFT to approve
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0x106fdb59,
 	///  or in textual repr: approveCross((address,uint256),uint256)
 	function approveCross(Tuple6 memory approved, uint256 tokenId) external;
+=======
+	/// @dev EVM selector for this function is: 0x0ecd0ab0,
+	///  or in textual repr: approveCross(EthCrossAccount,uint256)
+	///  or in the expanded repr: approveCross((address,uint256),uint256)
+	function approveCross(EthCrossAccount memory approved, uint256 tokenId) external;
+>>>>>>> misk: update stubs
 
 	/// @notice Transfer ownership of an NFT
 	/// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
@@ -501,6 +581,7 @@
 	/// @param tokenId The NFT to transfer
 	/// @dev EVM selector for this function is: 0xd5cf430b,
 	///  or in textual repr: transferFromCross(EthCrossAccount,EthCrossAccount,uint256)
+	///  or in the expanded repr: transferFromCross((address,uint256),(address,uint256),uint256)
 	function transferFromCross(
 <<<<<<< HEAD
 		Tuple6 memory from,
@@ -528,9 +609,16 @@
 	///  if `to` is the zero address. Throws if `tokenId` is not a valid NFT.
 	/// @param from The current owner of the NFT
 	/// @param tokenId The NFT to transfer
+<<<<<<< HEAD
 	/// @dev EVM selector for this function is: 0xa8106d4a,
 	///  or in textual repr: burnFromCross((address,uint256),uint256)
 	function burnFromCross(Tuple6 memory from, uint256 tokenId) external;
+=======
+	/// @dev EVM selector for this function is: 0xbb2f5a58,
+	///  or in textual repr: burnFromCross(EthCrossAccount,uint256)
+	///  or in the expanded repr: burnFromCross((address,uint256),uint256)
+	function burnFromCross(EthCrossAccount memory from, uint256 tokenId) external;
+>>>>>>> misk: update stubs
 
 	/// @notice Returns next free NFT ID.
 	/// @dev EVM selector for this function is: 0x75794a3c,
@@ -565,7 +653,7 @@
 	///  should be obtained with `nextTokenId` method
 	/// @param to The new owner
 	/// @param tokenIds IDs of the minted NFTs
-	/// @dev EVM selector for this function is: 0xf9d9a5a3,
+	/// @dev EVM selector for this function is: 0x44a9945e,
 	///  or in textual repr: mintBulk(address,uint256[])
 	function mintBulk(address to, uint256[] memory tokenIds) external returns (bool);
 
@@ -574,7 +662,7 @@
 	///  numbers and first number should be obtained with `nextTokenId` method
 	/// @param to The new owner
 	/// @param tokens array of pairs of token ID and token URI for minted tokens
-	/// @dev EVM selector for this function is: 0xfd4e2a99,
+	/// @dev EVM selector for this function is: 0x36543006,
 	///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
 	function mintBulkWithTokenURI(address to, Tuple12[] memory tokens) external returns (bool);
 }
@@ -586,6 +674,7 @@
 	string field_1;
 }
 
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple8 {
 	address field_0;
@@ -598,6 +687,8 @@
 	uint256 field_1;
 }
 
+=======
+>>>>>>> misk: update stubs
 /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
 /// @dev the ERC-165 identifier for this interface is 0x780e9d63
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -85,7 +85,7 @@
 	/// @param properties Vector of properties key/value pair.
 	/// @dev EVM selector for this function is: 0x50b26b2a,
 	///  or in textual repr: setCollectionProperties((string,bytes)[])
-	function setCollectionProperties(Tuple19[] memory properties) external;
+	function setCollectionProperties(Tuple20[] memory properties) external;
 
 	/// Delete collection property.
 	///
@@ -117,7 +117,7 @@
 	/// @return Vector of properties key/value pairs.
 	/// @dev EVM selector for this function is: 0x285fb8e6,
 	///  or in textual repr: collectionProperties(string[])
-	function collectionProperties(string[] memory keys) external view returns (Tuple19[] memory);
+	function collectionProperties(string[] memory keys) external view returns (Tuple20[] memory);
 
 	/// Set the sponsor of the collection.
 	///
@@ -134,8 +134,14 @@
 	///
 	/// @param sponsor Cross account address of the sponsor from whose account funds will be debited for operations with the contract.
 	/// @dev EVM selector for this function is: 0x84a1d5a8,
+<<<<<<< HEAD
 	///  or in textual repr: setCollectionSponsorCross((address,uint256))
 	function setCollectionSponsorCross(Tuple6 memory sponsor) external;
+=======
+	///  or in textual repr: setCollectionSponsorCross(EthCrossAccount)
+	///  or in the expanded repr: setCollectionSponsorCross((address,uint256))
+	function setCollectionSponsorCross(EthCrossAccount memory sponsor) external;
+>>>>>>> misk: update stubs
 
 	/// Whether there is a pending sponsor.
 	/// @dev EVM selector for this function is: 0x058ac185,
@@ -159,7 +165,11 @@
 	/// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
 	/// @dev EVM selector for this function is: 0x6ec0a9f1,
 	///  or in textual repr: collectionSponsor()
+<<<<<<< HEAD
 	function collectionSponsor() external view returns (Tuple6 memory);
+=======
+	function collectionSponsor() external view returns (Tuple23 memory);
+>>>>>>> misk: update stubs
 
 	/// Set limits for the collection.
 	/// @dev Throws error if limit not found.
@@ -194,14 +204,26 @@
 	/// Add collection admin.
 	/// @param newAdmin Cross account administrator address.
 	/// @dev EVM selector for this function is: 0x859aa7d6,
+<<<<<<< HEAD
 	///  or in textual repr: addCollectionAdminCross((address,uint256))
 	function addCollectionAdminCross(Tuple6 memory newAdmin) external;
+=======
+	///  or in textual repr: addCollectionAdminCross(EthCrossAccount)
+	///  or in the expanded repr: addCollectionAdminCross((address,uint256))
+	function addCollectionAdminCross(EthCrossAccount memory newAdmin) external;
+>>>>>>> misk: update stubs
 
 	/// Remove collection admin.
 	/// @param admin Cross account administrator address.
 	/// @dev EVM selector for this function is: 0x6c0cd173,
+<<<<<<< HEAD
 	///  or in textual repr: removeCollectionAdminCross((address,uint256))
 	function removeCollectionAdminCross(Tuple6 memory admin) external;
+=======
+	///  or in textual repr: removeCollectionAdminCross(EthCrossAccount)
+	///  or in the expanded repr: removeCollectionAdminCross((address,uint256))
+	function removeCollectionAdminCross(EthCrossAccount memory admin) external;
+>>>>>>> misk: update stubs
 
 	/// Add collection admin.
 	/// @param newAdmin Address of the added administrator.
@@ -257,8 +279,14 @@
 	///
 	/// @param user User cross account address.
 	/// @dev EVM selector for this function is: 0xa0184a3a,
+<<<<<<< HEAD
 	///  or in textual repr: addToCollectionAllowListCross((address,uint256))
 	function addToCollectionAllowListCross(Tuple6 memory user) external;
+=======
+	///  or in textual repr: addToCollectionAllowListCross(EthCrossAccount)
+	///  or in the expanded repr: addToCollectionAllowListCross((address,uint256))
+	function addToCollectionAllowListCross(EthCrossAccount memory user) external;
+>>>>>>> misk: update stubs
 
 	/// Remove the user from the allowed list.
 	///
@@ -271,8 +299,14 @@
 	///
 	/// @param user User cross account address.
 	/// @dev EVM selector for this function is: 0x09ba452a,
+<<<<<<< HEAD
 	///  or in textual repr: removeFromCollectionAllowListCross((address,uint256))
 	function removeFromCollectionAllowListCross(Tuple6 memory user) external;
+=======
+	///  or in textual repr: removeFromCollectionAllowListCross(EthCrossAccount)
+	///  or in the expanded repr: removeFromCollectionAllowListCross((address,uint256))
+	function removeFromCollectionAllowListCross(EthCrossAccount memory user) external;
+>>>>>>> misk: update stubs
 
 	/// Switch permission for minting.
 	///
@@ -294,8 +328,14 @@
 	/// @param user User cross account to verify
 	/// @return "true" if account is the owner or admin
 	/// @dev EVM selector for this function is: 0x3e75a905,
+<<<<<<< HEAD
 	///  or in textual repr: isOwnerOrAdminCross((address,uint256))
 	function isOwnerOrAdminCross(Tuple6 memory user) external view returns (bool);
+=======
+	///  or in textual repr: isOwnerOrAdminCross(EthCrossAccount)
+	///  or in the expanded repr: isOwnerOrAdminCross((address,uint256))
+	function isOwnerOrAdminCross(EthCrossAccount memory user) external view returns (bool);
+>>>>>>> misk: update stubs
 
 	/// Returns collection type
 	///
@@ -306,11 +346,15 @@
 
 	/// Get collection owner.
 	///
-	/// @return Tuble with sponsor address and his substrate mirror.
+	/// @return Tuple with sponsor address and his substrate mirror.
 	/// If address is canonical then substrate mirror is zero and vice versa.
 	/// @dev EVM selector for this function is: 0xdf727d3b,
 	///  or in textual repr: collectionOwner()
+<<<<<<< HEAD
 	function collectionOwner() external view returns (Tuple6 memory);
+=======
+	function collectionOwner() external view returns (EthCrossAccount memory);
+>>>>>>> misk: update stubs
 
 	/// Changes collection owner to another account
 	///
@@ -326,19 +370,41 @@
 	/// If address is canonical then substrate mirror is zero and vice versa.
 	/// @dev EVM selector for this function is: 0x5813216b,
 	///  or in textual repr: collectionAdmins()
+<<<<<<< HEAD
 	function collectionAdmins() external view returns (Tuple6[] memory);
+=======
+	function collectionAdmins() external view returns (EthCrossAccount[] memory);
+>>>>>>> misk: update stubs
 
 	/// Changes collection owner to another account
 	///
 	/// @dev Owner can be changed only by current owner
 	/// @param newOwner new owner cross account
 	/// @dev EVM selector for this function is: 0xe5c9913f,
+<<<<<<< HEAD
 	///  or in textual repr: setOwnerCross((address,uint256))
 	function setOwnerCross(Tuple6 memory newOwner) external;
+=======
+	///  or in textual repr: setOwnerCross(EthCrossAccount)
+	///  or in the expanded repr: setOwnerCross((address,uint256))
+	function setOwnerCross(EthCrossAccount memory newOwner) external;
+}
+
+/// @dev Cross account struct
+struct EthCrossAccount {
+	address eth;
+	uint256 sub;
+}
+
+/// @dev anonymous struct
+struct Tuple23 {
+	address field_0;
+	uint256 field_1;
+>>>>>>> misk: update stubs
 }
 
 /// @dev anonymous struct
-struct Tuple19 {
+struct Tuple20 {
 	string field_0;
 	bytes field_1;
 }
@@ -465,10 +531,16 @@
 	/// @param to The new owner
 	/// @param tokenId The RFT to transfer
 	/// @dev EVM selector for this function is: 0xd5cf430b,
-	///  or in textual repr: transferFromCross((address,uint256),(address,uint256),uint256)
+	///  or in textual repr: transferFromCross(EthCrossAccount,EthCrossAccount,uint256)
+	///  or in the expanded repr: transferFromCross((address,uint256),(address,uint256),uint256)
 	function transferFromCross(
+<<<<<<< HEAD
 		Tuple6 memory from,
 		Tuple6 memory to,
+=======
+		EthCrossAccount memory from,
+		EthCrossAccount memory to,
+>>>>>>> misk: update stubs
 		uint256 tokenId
 	) external;
 
@@ -491,14 +563,21 @@
 	/// @param from The current owner of the RFT
 	/// @param tokenId The RFT to transfer
 	/// @dev EVM selector for this function is: 0xbb2f5a58,
+<<<<<<< HEAD
 	///  or in textual repr: burnFromCross((address,uint256),uint256)
 	function burnFromCross(Tuple6 memory from, uint256 tokenId) external;
+=======
+	///  or in textual repr: burnFromCross(EthCrossAccount,uint256)
+	///  or in the expanded repr: burnFromCross((address,uint256),uint256)
+	function burnFromCross(EthCrossAccount memory from, uint256 tokenId) external;
+>>>>>>> misk: update stubs
 
 	/// @notice Returns next free RFT ID.
 	/// @dev EVM selector for this function is: 0x75794a3c,
 	///  or in textual repr: nextTokenId()
 	function nextTokenId() external view returns (uint256);
 
+<<<<<<< HEAD
 	// /// @notice Function to mint multiple tokens.
 	// /// @dev `tokenIds` should be an array of consecutive numbers and first number
 	// ///  should be obtained with `nextTokenId` method
@@ -516,6 +595,25 @@
 	// /// @dev EVM selector for this function is: 0x36543006,
 	// ///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
 	// function mintBulkWithTokenURI(address to, Tuple8[] memory tokens) external returns (bool);
+=======
+	/// @notice Function to mint multiple tokens.
+	/// @dev `tokenIds` should be an array of consecutive numbers and first number
+	///  should be obtained with `nextTokenId` method
+	/// @param to The new owner
+	/// @param tokenIds IDs of the minted RFTs
+	/// @dev EVM selector for this function is: 0x44a9945e,
+	///  or in textual repr: mintBulk(address,uint256[])
+	function mintBulk(address to, uint256[] memory tokenIds) external returns (bool);
+
+	/// @notice Function to mint multiple tokens with the given tokenUris.
+	/// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+	///  numbers and first number should be obtained with `nextTokenId` method
+	/// @param to The new owner
+	/// @param tokens array of pairs of token ID and token URI for minted tokens
+	/// @dev EVM selector for this function is: 0x36543006,
+	///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
+	function mintBulkWithTokenURI(address to, Tuple11[] memory tokens) external returns (bool);
+>>>>>>> misk: update stubs
 
 	/// Returns EVM address for refungible token
 	///
@@ -526,17 +624,24 @@
 }
 
 /// @dev anonymous struct
+<<<<<<< HEAD
 struct Tuple8 {
+=======
+struct Tuple11 {
+>>>>>>> misk: update stubs
 	uint256 field_0;
 	string field_1;
 }
 
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple6 {
 	address field_0;
 	uint256 field_1;
 }
 
+=======
+>>>>>>> misk: update stubs
 /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
 /// @dev the ERC-165 identifier for this interface is 0x780e9d63
modifiedtests/src/eth/fungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/fungibleAbi.json
+++ b/tests/src/eth/fungibleAbi.json
@@ -62,10 +62,15 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "newAdmin",
         "type": "tuple"
       }
@@ -88,10 +93,15 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "user",
         "type": "tuple"
       }
@@ -134,10 +144,15 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "spender",
         "type": "tuple"
       },
@@ -171,10 +186,15 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "from",
         "type": "tuple"
       },
@@ -182,6 +202,7 @@
     ],
     "name": "burnFromCross",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+<<<<<<< HEAD
     "stateMutability": "nonpayable",
     "type": "function"
   },
@@ -191,6 +212,8 @@
     ],
     "name": "changeCollectionOwner",
     "outputs": [],
+=======
+>>>>>>> misk: update stubs
     "stateMutability": "nonpayable",
     "type": "function"
   },
@@ -200,10 +223,15 @@
     "outputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6[]",
+        "internalType": "struct EthCrossAccount[]",
         "name": "",
         "type": "tuple[]"
       }
@@ -217,10 +245,15 @@
     "outputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "",
         "type": "tuple"
       }
@@ -239,7 +272,7 @@
           { "internalType": "string", "name": "field_0", "type": "string" },
           { "internalType": "bytes", "name": "field_1", "type": "bytes" }
         ],
-        "internalType": "struct Tuple10[]",
+        "internalType": "struct Tuple14[]",
         "name": "",
         "type": "tuple[]"
       }
@@ -263,7 +296,7 @@
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct Tuple8",
         "name": "",
         "type": "tuple"
       }
@@ -328,10 +361,15 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "user",
         "type": "tuple"
       }
@@ -358,7 +396,7 @@
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
-        "internalType": "struct Tuple6[]",
+        "internalType": "struct Tuple8[]",
         "name": "amounts",
         "type": "tuple[]"
       }
@@ -388,10 +426,15 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "admin",
         "type": "tuple"
       }
@@ -421,10 +464,15 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "user",
         "type": "tuple"
       }
@@ -496,7 +544,7 @@
           { "internalType": "string", "name": "field_0", "type": "string" },
           { "internalType": "bytes", "name": "field_1", "type": "bytes" }
         ],
-        "internalType": "struct Tuple10[]",
+        "internalType": "struct Tuple14[]",
         "name": "properties",
         "type": "tuple[]"
       }
@@ -529,10 +577,15 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "sponsor",
         "type": "tuple"
       }
@@ -544,12 +597,28 @@
   },
   {
     "inputs": [
+<<<<<<< HEAD
       {
         "components": [
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+      { "internalType": "address", "name": "newOwner", "type": "address" }
+    ],
+    "name": "setOwner",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      {
+        "components": [
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "newOwner",
         "type": "tuple"
       }
@@ -607,19 +676,29 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "from",
         "type": "tuple"
       },
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+>>>>>>> misk: update stubs
         ],
-        "internalType": "struct Tuple6",
+        "internalType": "struct EthCrossAccount",
         "name": "to",
         "type": "tuple"
       },
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
after · tests/src/eth/nonFungibleAbi.json
1[2  {3    "anonymous": false,4    "inputs": [5      {6        "indexed": true,7        "internalType": "address",8        "name": "owner",9        "type": "address"10      },11      {12        "indexed": true,13        "internalType": "address",14        "name": "approved",15        "type": "address"16      },17      {18        "indexed": true,19        "internalType": "uint256",20        "name": "tokenId",21        "type": "uint256"22      }23    ],24    "name": "Approval",25    "type": "event"26  },27  {28    "anonymous": false,29    "inputs": [30      {31        "indexed": true,32        "internalType": "address",33        "name": "owner",34        "type": "address"35      },36      {37        "indexed": true,38        "internalType": "address",39        "name": "operator",40        "type": "address"41      },42      {43        "indexed": false,44        "internalType": "bool",45        "name": "approved",46        "type": "bool"47      }48    ],49    "name": "ApprovalForAll",50    "type": "event"51  },52  {53    "anonymous": false,54    "inputs": [],55    "name": "MintingFinished",56    "type": "event"57  },58  {59    "anonymous": false,60    "inputs": [61      {62        "indexed": true,63        "internalType": "address",64        "name": "from",65        "type": "address"66      },67      {68        "indexed": true,69        "internalType": "address",70        "name": "to",71        "type": "address"72      },73      {74        "indexed": true,75        "internalType": "uint256",76        "name": "tokenId",77        "type": "uint256"78      }79    ],80    "name": "Transfer",81    "type": "event"82  },83  {84    "inputs": [85      { "internalType": "address", "name": "newAdmin", "type": "address" }86    ],87    "name": "addCollectionAdmin",88    "outputs": [],89    "stateMutability": "nonpayable",90    "type": "function"91  },92  {93    "inputs": [94      {95        "components": [96          { "internalType": "address", "name": "eth", "type": "address" },97          { "internalType": "uint256", "name": "sub", "type": "uint256" }98        ],99<<<<<<< HEAD100        "internalType": "struct Tuple6",101=======102        "internalType": "struct EthCrossAccount",103>>>>>>> misk: update stubs104        "name": "newAdmin",105        "type": "tuple"106      }107    ],108    "name": "addCollectionAdminCross",109    "outputs": [],110    "stateMutability": "nonpayable",111    "type": "function"112  },113  {114    "inputs": [115      { "internalType": "address", "name": "user", "type": "address" }116    ],117    "name": "addToCollectionAllowList",118    "outputs": [],119    "stateMutability": "nonpayable",120    "type": "function"121  },122  {123    "inputs": [124      {125        "components": [126          { "internalType": "address", "name": "eth", "type": "address" },127          { "internalType": "uint256", "name": "sub", "type": "uint256" }128        ],129<<<<<<< HEAD130        "internalType": "struct Tuple6",131=======132        "internalType": "struct EthCrossAccount",133>>>>>>> misk: update stubs134        "name": "user",135        "type": "tuple"136      }137    ],138    "name": "addToCollectionAllowListCross",139    "outputs": [],140    "stateMutability": "nonpayable",141    "type": "function"142  },143  {144    "inputs": [145      { "internalType": "address", "name": "user", "type": "address" }146    ],147    "name": "allowed",148    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],149    "stateMutability": "view",150    "type": "function"151  },152  {153    "inputs": [154      { "internalType": "address", "name": "approved", "type": "address" },155      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }156    ],157    "name": "approve",158    "outputs": [],159    "stateMutability": "nonpayable",160    "type": "function"161  },162  {163    "inputs": [164      {165        "components": [166          { "internalType": "address", "name": "eth", "type": "address" },167          { "internalType": "uint256", "name": "sub", "type": "uint256" }168        ],169<<<<<<< HEAD170        "internalType": "struct Tuple6",171=======172        "internalType": "struct EthCrossAccount",173>>>>>>> misk: update stubs174        "name": "approved",175        "type": "tuple"176      },177      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }178    ],179    "name": "approveCross",180    "outputs": [],181    "stateMutability": "nonpayable",182    "type": "function"183  },184  {185    "inputs": [186      { "internalType": "address", "name": "owner", "type": "address" }187    ],188    "name": "balanceOf",189    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],190    "stateMutability": "view",191    "type": "function"192  },193  {194    "inputs": [195      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }196    ],197    "name": "burn",198    "outputs": [],199    "stateMutability": "nonpayable",200    "type": "function"201  },202  {203    "inputs": [204      { "internalType": "address", "name": "from", "type": "address" },205      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }206    ],207    "name": "burnFrom",208    "outputs": [],209    "stateMutability": "nonpayable",210    "type": "function"211  },212  {213    "inputs": [214      {215        "components": [216          { "internalType": "address", "name": "eth", "type": "address" },217          { "internalType": "uint256", "name": "sub", "type": "uint256" }218        ],219<<<<<<< HEAD220        "internalType": "struct Tuple6",221=======222        "internalType": "struct EthCrossAccount",223>>>>>>> misk: update stubs224        "name": "from",225        "type": "tuple"226      },227      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }228    ],229    "name": "burnFromCross",230    "outputs": [],231    "stateMutability": "nonpayable",232    "type": "function"233  },234  {235    "inputs": [236      { "internalType": "address", "name": "newOwner", "type": "address" }237    ],238    "name": "changeCollectionOwner",239    "outputs": [],240    "stateMutability": "nonpayable",241    "type": "function"242  },243  {244    "inputs": [],245    "name": "collectionAdmins",246    "outputs": [247      {248        "components": [249          { "internalType": "address", "name": "eth", "type": "address" },250          { "internalType": "uint256", "name": "sub", "type": "uint256" }251        ],252<<<<<<< HEAD253        "internalType": "struct Tuple6[]",254=======255        "internalType": "struct EthCrossAccount[]",256>>>>>>> misk: update stubs257        "name": "",258        "type": "tuple[]"259      }260    ],261    "stateMutability": "view",262    "type": "function"263  },264  {265    "inputs": [],266    "name": "collectionOwner",267    "outputs": [268      {269        "components": [270          { "internalType": "address", "name": "eth", "type": "address" },271          { "internalType": "uint256", "name": "sub", "type": "uint256" }272        ],273<<<<<<< HEAD274<<<<<<< HEAD275<<<<<<< HEAD276        "internalType": "struct Tuple6",277=======278        "internalType": "struct Tuple19",279>>>>>>> feat: add `EthCrossAccount` type280=======281        "internalType": "struct Tuple8",282>>>>>>> feat: Add custum signature with unlimited nesting.283=======284        "internalType": "struct EthCrossAccount",285>>>>>>> misk: update stubs286        "name": "",287        "type": "tuple"288      }289    ],290    "stateMutability": "view",291    "type": "function"292  },293  {294<<<<<<< HEAD295<<<<<<< HEAD296=======297>>>>>>> fix: after rebase298    "inputs": [299      { "internalType": "string[]", "name": "keys", "type": "string[]" }300    ],301    "name": "collectionProperties",302    "outputs": [303      {304        "components": [305          { "internalType": "string", "name": "field_0", "type": "string" },306          { "internalType": "bytes", "name": "field_1", "type": "bytes" }307        ],308<<<<<<< HEAD309        "internalType": "struct Tuple19[]",310=======311        "internalType": "struct Tuple21[]",312>>>>>>> fix: after rebase313        "name": "",314        "type": "tuple[]"315      }316    ],317<<<<<<< HEAD318=======319    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],320    "name": "collectionProperty",321    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],322>>>>>>> feat: Add custum signature with unlimited nesting.323=======324>>>>>>> fix: after rebase325    "stateMutability": "view",326    "type": "function"327  },328  {329    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],330    "name": "collectionProperty",331    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],332    "stateMutability": "view",333    "type": "function"334  },335  {336    "inputs": [],337    "name": "collectionSponsor",338    "outputs": [339      {340        "components": [341          { "internalType": "address", "name": "field_0", "type": "address" },342          { "internalType": "uint256", "name": "field_1", "type": "uint256" }343        ],344<<<<<<< HEAD345<<<<<<< HEAD346<<<<<<< HEAD347        "internalType": "struct Tuple6",348=======349        "internalType": "struct Tuple19",350>>>>>>> feat: add `EthCrossAccount` type351=======352        "internalType": "struct Tuple8",353>>>>>>> feat: Add custum signature with unlimited nesting.354=======355        "internalType": "struct Tuple24",356>>>>>>> misk: update stubs357        "name": "",358        "type": "tuple"359      }360    ],361    "stateMutability": "view",362    "type": "function"363  },364  {365    "inputs": [],366    "name": "confirmCollectionSponsorship",367    "outputs": [],368    "stateMutability": "nonpayable",369    "type": "function"370  },371  {372    "inputs": [],373    "name": "contractAddress",374    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],375    "stateMutability": "view",376    "type": "function"377  },378  {379<<<<<<< HEAD380<<<<<<< HEAD381=======382>>>>>>> fix: after rebase383    "inputs": [384      { "internalType": "string[]", "name": "keys", "type": "string[]" }385    ],386    "name": "deleteCollectionProperties",387    "outputs": [],388    "stateMutability": "nonpayable",389    "type": "function"390  },391  {392<<<<<<< HEAD393=======394>>>>>>> feat: Add custum signature with unlimited nesting.395=======396>>>>>>> fix: after rebase397    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],398    "name": "deleteCollectionProperty",399    "outputs": [],400    "stateMutability": "nonpayable",401    "type": "function"402  },403  {404    "inputs": [405      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },406      { "internalType": "string", "name": "key", "type": "string" }407    ],408    "name": "deleteProperty",409    "outputs": [],410    "stateMutability": "nonpayable",411    "type": "function"412  },413  {414    "inputs": [],415    "name": "finishMinting",416    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],417    "stateMutability": "nonpayable",418    "type": "function"419  },420  {421    "inputs": [422      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }423    ],424    "name": "getApproved",425    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],426    "stateMutability": "view",427    "type": "function"428  },429  {430    "inputs": [],431    "name": "hasCollectionPendingSponsor",432    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],433    "stateMutability": "view",434    "type": "function"435  },436  {437    "inputs": [438      { "internalType": "address", "name": "owner", "type": "address" },439      { "internalType": "address", "name": "operator", "type": "address" }440    ],441    "name": "isApprovedForAll",442    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],443    "stateMutability": "view",444    "type": "function"445  },446  {447    "inputs": [448      { "internalType": "address", "name": "user", "type": "address" }449    ],450    "name": "isOwnerOrAdmin",451    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],452    "stateMutability": "view",453    "type": "function"454  },455  {456    "inputs": [457      {458        "components": [459          { "internalType": "address", "name": "eth", "type": "address" },460          { "internalType": "uint256", "name": "sub", "type": "uint256" }461        ],462<<<<<<< HEAD463        "internalType": "struct Tuple6",464=======465        "internalType": "struct EthCrossAccount",466>>>>>>> misk: update stubs467        "name": "user",468        "type": "tuple"469      }470    ],471    "name": "isOwnerOrAdminCross",472    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],473    "stateMutability": "view",474    "type": "function"475  },476  {477<<<<<<< HEAD478    "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],479    "name": "mint",480    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],481=======482    "inputs": [483      { "internalType": "address", "name": "to", "type": "address" },484      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }485    ],486    "name": "mint",487    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],488>>>>>>> feat: Add custum signature with unlimited nesting.489    "stateMutability": "nonpayable",490    "type": "function"491  },492  {493    "inputs": [494      { "internalType": "address", "name": "to", "type": "address" },495<<<<<<< HEAD496      { "internalType": "string", "name": "tokenUri", "type": "string" }497    ],498    "name": "mintWithTokenURI",499    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],500=======501      { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }502    ],503    "name": "mintBulk",504    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],505    "stateMutability": "nonpayable",506    "type": "function"507  },508  {509    "inputs": [510      { "internalType": "address", "name": "to", "type": "address" },511      {512        "components": [513          { "internalType": "uint256", "name": "field_0", "type": "uint256" },514          { "internalType": "string", "name": "field_1", "type": "string" }515        ],516        "internalType": "struct Tuple12[]",517        "name": "tokens",518        "type": "tuple[]"519      }520    ],521    "name": "mintBulkWithTokenURI",522    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],523    "stateMutability": "nonpayable",524    "type": "function"525  },526  {527    "inputs": [528      { "internalType": "address", "name": "to", "type": "address" },529      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },530      { "internalType": "string", "name": "tokenUri", "type": "string" }531    ],532    "name": "mintWithTokenURI",533    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],534>>>>>>> feat: Add custum signature with unlimited nesting.535    "stateMutability": "nonpayable",536    "type": "function"537  },538  {539    "inputs": [],540    "name": "mintingFinished",541    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],542    "stateMutability": "view",543    "type": "function"544  },545  {546    "inputs": [],547    "name": "name",548    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],549    "stateMutability": "view",550    "type": "function"551  },552  {553    "inputs": [],554    "name": "nextTokenId",555    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],556    "stateMutability": "view",557    "type": "function"558  },559  {560    "inputs": [561      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }562    ],563    "name": "ownerOf",564    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],565    "stateMutability": "view",566    "type": "function"567  },568  {569    "inputs": [570      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },571      { "internalType": "string", "name": "key", "type": "string" }572    ],573    "name": "property",574    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],575    "stateMutability": "view",576    "type": "function"577  },578  {579    "inputs": [580      { "internalType": "address", "name": "admin", "type": "address" }581    ],582    "name": "removeCollectionAdmin",583    "outputs": [],584    "stateMutability": "nonpayable",585    "type": "function"586  },587  {588    "inputs": [589      {590        "components": [591          { "internalType": "address", "name": "eth", "type": "address" },592          { "internalType": "uint256", "name": "sub", "type": "uint256" }593        ],594<<<<<<< HEAD595        "internalType": "struct Tuple6",596=======597        "internalType": "struct EthCrossAccount",598>>>>>>> misk: update stubs599        "name": "admin",600        "type": "tuple"601      }602    ],603    "name": "removeCollectionAdminCross",604    "outputs": [],605    "stateMutability": "nonpayable",606    "type": "function"607  },608  {609    "inputs": [],610    "name": "removeCollectionSponsor",611    "outputs": [],612    "stateMutability": "nonpayable",613    "type": "function"614  },615  {616    "inputs": [617      { "internalType": "address", "name": "user", "type": "address" }618    ],619    "name": "removeFromCollectionAllowList",620    "outputs": [],621    "stateMutability": "nonpayable",622    "type": "function"623  },624  {625    "inputs": [626      {627        "components": [628          { "internalType": "address", "name": "eth", "type": "address" },629          { "internalType": "uint256", "name": "sub", "type": "uint256" }630        ],631<<<<<<< HEAD632        "internalType": "struct Tuple6",633=======634        "internalType": "struct EthCrossAccount",635>>>>>>> misk: update stubs636        "name": "user",637        "type": "tuple"638      }639    ],640    "name": "removeFromCollectionAllowListCross",641    "outputs": [],642    "stateMutability": "nonpayable",643    "type": "function"644  },645  {646    "inputs": [647      { "internalType": "address", "name": "from", "type": "address" },648      { "internalType": "address", "name": "to", "type": "address" },649      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }650    ],651    "name": "safeTransferFrom",652    "outputs": [],653    "stateMutability": "nonpayable",654    "type": "function"655  },656  {657    "inputs": [658      { "internalType": "address", "name": "from", "type": "address" },659      { "internalType": "address", "name": "to", "type": "address" },660      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },661      { "internalType": "bytes", "name": "data", "type": "bytes" }662    ],663    "name": "safeTransferFrom",664    "outputs": [],665    "stateMutability": "nonpayable",666    "type": "function"667  },668  {669    "inputs": [670      { "internalType": "address", "name": "operator", "type": "address" },671      { "internalType": "bool", "name": "approved", "type": "bool" }672    ],673    "name": "setApprovalForAll",674    "outputs": [],675    "stateMutability": "nonpayable",676    "type": "function"677  },678  {679    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],680    "name": "setCollectionAccess",681    "outputs": [],682    "stateMutability": "nonpayable",683    "type": "function"684  },685  {686    "inputs": [687      { "internalType": "string", "name": "limit", "type": "string" },688      { "internalType": "uint32", "name": "value", "type": "uint32" }689    ],690    "name": "setCollectionLimit",691    "outputs": [],692    "stateMutability": "nonpayable",693    "type": "function"694  },695  {696    "inputs": [697      { "internalType": "string", "name": "limit", "type": "string" },698      { "internalType": "bool", "name": "value", "type": "bool" }699    ],700    "name": "setCollectionLimit",701    "outputs": [],702    "stateMutability": "nonpayable",703    "type": "function"704  },705  {706    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],707    "name": "setCollectionMintMode",708    "outputs": [],709    "stateMutability": "nonpayable",710    "type": "function"711  },712  {713    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],714    "name": "setCollectionNesting",715    "outputs": [],716    "stateMutability": "nonpayable",717    "type": "function"718  },719  {720    "inputs": [721      { "internalType": "bool", "name": "enable", "type": "bool" },722      {723        "internalType": "address[]",724        "name": "collections",725        "type": "address[]"726      }727    ],728    "name": "setCollectionNesting",729    "outputs": [],730    "stateMutability": "nonpayable",731    "type": "function"732  },733  {734    "inputs": [735<<<<<<< HEAD736<<<<<<< HEAD737=======738>>>>>>> fix: after rebase739      {740        "components": [741          { "internalType": "string", "name": "field_0", "type": "string" },742          { "internalType": "bytes", "name": "field_1", "type": "bytes" }743        ],744<<<<<<< HEAD745        "internalType": "struct Tuple19[]",746        "name": "properties",747        "type": "tuple[]"748      }749=======750      { "internalType": "string", "name": "key", "type": "string" },751      { "internalType": "bytes", "name": "value", "type": "bytes" }752>>>>>>> feat: Add custum signature with unlimited nesting.753=======754        "internalType": "struct Tuple21[]",755        "name": "properties",756        "type": "tuple[]"757      }758>>>>>>> fix: after rebase759    ],760    "name": "setCollectionProperties",761    "outputs": [],762    "stateMutability": "nonpayable",763    "type": "function"764  },765  {766    "inputs": [767      { "internalType": "string", "name": "key", "type": "string" },768      { "internalType": "bytes", "name": "value", "type": "bytes" }769    ],770    "name": "setCollectionProperty",771    "outputs": [],772    "stateMutability": "nonpayable",773    "type": "function"774  },775  {776    "inputs": [777      { "internalType": "address", "name": "sponsor", "type": "address" }778    ],779    "name": "setCollectionSponsor",780    "outputs": [],781    "stateMutability": "nonpayable",782    "type": "function"783  },784  {785    "inputs": [786      {787        "components": [788          { "internalType": "address", "name": "eth", "type": "address" },789          { "internalType": "uint256", "name": "sub", "type": "uint256" }790        ],791<<<<<<< HEAD792        "internalType": "struct Tuple6",793=======794        "internalType": "struct EthCrossAccount",795>>>>>>> misk: update stubs796        "name": "sponsor",797        "type": "tuple"798      }799    ],800    "name": "setCollectionSponsorCross",801    "outputs": [],802    "stateMutability": "nonpayable",803    "type": "function"804  },805  {806    "inputs": [807<<<<<<< HEAD808      {809        "components": [810          { "internalType": "address", "name": "field_0", "type": "address" },811          { "internalType": "uint256", "name": "field_1", "type": "uint256" }812        ],813        "internalType": "struct Tuple6",814        "name": "newOwner",815        "type": "tuple"816      }817=======818      { "internalType": "address", "name": "newOwner", "type": "address" }819>>>>>>> feat: Add custum signature with unlimited nesting.820    ],821    "name": "setOwnerCross",822    "outputs": [],823    "stateMutability": "nonpayable",824    "type": "function"825  },826  {827    "inputs": [828      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },829      {830        "components": [831<<<<<<< HEAD832<<<<<<< HEAD833          { "internalType": "string", "name": "field_0", "type": "string" },834          { "internalType": "bytes", "name": "field_1", "type": "bytes" }835=======836          { "internalType": "address", "name": "field_0", "type": "address" },837          { "internalType": "uint256", "name": "field_1", "type": "uint256" }838>>>>>>> feat: Add custum signature with unlimited nesting.839        ],840        "internalType": "struct Tuple19[]",841        "name": "properties",842        "type": "tuple[]"843=======844          { "internalType": "address", "name": "eth", "type": "address" },845          { "internalType": "uint256", "name": "sub", "type": "uint256" }846        ],847        "internalType": "struct EthCrossAccount",848        "name": "newOwner",849        "type": "tuple"850>>>>>>> misk: update stubs851      }852    ],853    "name": "setProperties",854    "outputs": [],855    "stateMutability": "nonpayable",856    "type": "function"857  },858  {859    "inputs": [860      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },861      { "internalType": "string", "name": "key", "type": "string" },862      { "internalType": "bytes", "name": "value", "type": "bytes" }863    ],864    "name": "setProperty",865    "outputs": [],866    "stateMutability": "nonpayable",867    "type": "function"868  },869  {870    "inputs": [871      { "internalType": "string", "name": "key", "type": "string" },872      { "internalType": "bool", "name": "isMutable", "type": "bool" },873      { "internalType": "bool", "name": "collectionAdmin", "type": "bool" },874      { "internalType": "bool", "name": "tokenOwner", "type": "bool" }875    ],876    "name": "setTokenPropertyPermission",877    "outputs": [],878    "stateMutability": "nonpayable",879    "type": "function"880  },881  {882    "inputs": [883      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }884    ],885    "name": "supportsInterface",886    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],887    "stateMutability": "view",888    "type": "function"889  },890  {891    "inputs": [],892    "name": "symbol",893    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],894    "stateMutability": "view",895    "type": "function"896  },897  {898    "inputs": [899      { "internalType": "uint256", "name": "index", "type": "uint256" }900    ],901    "name": "tokenByIndex",902    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],903    "stateMutability": "view",904    "type": "function"905  },906  {907    "inputs": [908      { "internalType": "address", "name": "owner", "type": "address" },909      { "internalType": "uint256", "name": "index", "type": "uint256" }910    ],911    "name": "tokenOfOwnerByIndex",912    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],913    "stateMutability": "view",914    "type": "function"915  },916  {917    "inputs": [918      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }919    ],920    "name": "tokenURI",921    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],922    "stateMutability": "view",923    "type": "function"924  },925  {926    "inputs": [],927    "name": "totalSupply",928    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],929    "stateMutability": "view",930    "type": "function"931  },932  {933    "inputs": [934      { "internalType": "address", "name": "to", "type": "address" },935      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }936    ],937    "name": "transfer",938    "outputs": [],939    "stateMutability": "nonpayable",940    "type": "function"941  },942  {943    "inputs": [944      { "internalType": "address", "name": "from", "type": "address" },945      { "internalType": "address", "name": "to", "type": "address" },946      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }947    ],948    "name": "transferFrom",949    "outputs": [],950    "stateMutability": "nonpayable",951    "type": "function"952  },953  {954    "inputs": [955      {956        "components": [957<<<<<<< HEAD958          { "internalType": "address", "name": "field_0", "type": "address" },959          { "internalType": "uint256", "name": "field_1", "type": "uint256" }960=======961          { "internalType": "address", "name": "eth", "type": "address" },962          { "internalType": "uint256", "name": "sub", "type": "uint256" }963>>>>>>> feat: Add custum signature with unlimited nesting.964        ],965<<<<<<< HEAD966        "internalType": "struct Tuple6",967=======968        "internalType": "struct EthCrossAccount",969>>>>>>> feat: add `EthCrossAccount` type970        "name": "from",971        "type": "tuple"972      },973      {974        "components": [975<<<<<<< HEAD976          { "internalType": "address", "name": "field_0", "type": "address" },977          { "internalType": "uint256", "name": "field_1", "type": "uint256" }978=======979          { "internalType": "address", "name": "eth", "type": "address" },980          { "internalType": "uint256", "name": "sub", "type": "uint256" }981>>>>>>> feat: Add custum signature with unlimited nesting.982        ],983<<<<<<< HEAD984        "internalType": "struct Tuple6",985=======986        "internalType": "struct EthCrossAccount",987>>>>>>> feat: add `EthCrossAccount` type988        "name": "to",989        "type": "tuple"990      },991      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }992    ],993    "name": "transferFromCross",994    "outputs": [],995    "stateMutability": "nonpayable",996    "type": "function"997  },998  {999    "inputs": [],1000    "name": "uniqueCollectionType",1001    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],1002    "stateMutability": "view",1003    "type": "function"1004  }1005]
modifiedtests/src/eth/reFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/reFungibleAbi.json
+++ b/tests/src/eth/reFungibleAbi.json
@@ -93,10 +93,17 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "newAdmin",
         "type": "tuple"
       }
@@ -119,10 +126,17 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "user",
         "type": "tuple"
       }
@@ -183,10 +197,17 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "from",
         "type": "tuple"
       },
@@ -212,10 +233,17 @@
     "outputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6[]",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount[]",
+>>>>>>> misk: update stubs
         "name": "",
         "type": "tuple[]"
       }
@@ -229,10 +257,17 @@
     "outputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "",
         "type": "tuple"
       }
@@ -251,7 +286,7 @@
           { "internalType": "string", "name": "field_0", "type": "string" },
           { "internalType": "bytes", "name": "field_1", "type": "bytes" }
         ],
-        "internalType": "struct Tuple19[]",
+        "internalType": "struct Tuple20[]",
         "name": "",
         "type": "tuple[]"
       }
@@ -275,7 +310,11 @@
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
+<<<<<<< HEAD
         "internalType": "struct Tuple6",
+=======
+        "internalType": "struct Tuple23",
+>>>>>>> misk: update stubs
         "name": "",
         "type": "tuple"
       }
@@ -369,10 +408,17 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "user",
         "type": "tuple"
       }
@@ -383,23 +429,68 @@
     "type": "function"
   },
   {
+<<<<<<< HEAD
     "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],
     "name": "mint",
     "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+=======
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
+    ],
+    "name": "mint",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+>>>>>>> misk: update stubs
     "stateMutability": "nonpayable",
     "type": "function"
   },
   {
     "inputs": [
       { "internalType": "address", "name": "to", "type": "address" },
+<<<<<<< HEAD
       { "internalType": "string", "name": "tokenUri", "type": "string" }
     ],
     "name": "mintWithTokenURI",
     "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
+=======
+      { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }
+    ],
+    "name": "mintBulk",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
     "stateMutability": "nonpayable",
     "type": "function"
   },
   {
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
+      {
+        "components": [
+          { "internalType": "uint256", "name": "field_0", "type": "uint256" },
+          { "internalType": "string", "name": "field_1", "type": "string" }
+        ],
+        "internalType": "struct Tuple11[]",
+        "name": "tokens",
+        "type": "tuple[]"
+      }
+    ],
+    "name": "mintBulkWithTokenURI",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+      { "internalType": "string", "name": "tokenUri", "type": "string" }
+    ],
+    "name": "mintWithTokenURI",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+>>>>>>> misk: update stubs
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
     "inputs": [],
     "name": "mintingFinished",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
@@ -452,10 +543,17 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "admin",
         "type": "tuple"
       }
@@ -485,10 +583,17 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "user",
         "type": "tuple"
       }
@@ -593,7 +698,7 @@
           { "internalType": "string", "name": "field_0", "type": "string" },
           { "internalType": "bytes", "name": "field_1", "type": "bytes" }
         ],
-        "internalType": "struct Tuple19[]",
+        "internalType": "struct Tuple20[]",
         "name": "properties",
         "type": "tuple[]"
       }
@@ -626,10 +731,17 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "sponsor",
         "type": "tuple"
       }
@@ -641,6 +753,7 @@
   },
   {
     "inputs": [
+<<<<<<< HEAD
       {
         "components": [
           { "internalType": "address", "name": "field_0", "type": "address" },
@@ -650,6 +763,9 @@
         "name": "newOwner",
         "type": "tuple"
       }
+=======
+      { "internalType": "address", "name": "newOwner", "type": "address" }
+>>>>>>> misk: update stubs
     ],
     "name": "setOwnerCross",
     "outputs": [],
@@ -661,12 +777,21 @@
       { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "string", "name": "field_0", "type": "string" },
           { "internalType": "bytes", "name": "field_1", "type": "bytes" }
         ],
         "internalType": "struct Tuple19[]",
         "name": "properties",
         "type": "tuple[]"
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+        "name": "newOwner",
+        "type": "tuple"
+>>>>>>> misk: update stubs
       }
     ],
     "name": "setProperties",
@@ -782,19 +907,33 @@
     "inputs": [
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "from",
         "type": "tuple"
       },
       {
         "components": [
+<<<<<<< HEAD
           { "internalType": "address", "name": "field_0", "type": "address" },
           { "internalType": "uint256", "name": "field_1", "type": "uint256" }
         ],
         "internalType": "struct Tuple6",
+=======
+          { "internalType": "address", "name": "eth", "type": "address" },
+          { "internalType": "uint256", "name": "sub", "type": "uint256" }
+        ],
+        "internalType": "struct EthCrossAccount",
+>>>>>>> misk: update stubs
         "name": "to",
         "type": "tuple"
       },