git.delta.rocks / unique-network / refs/commits / 9e7b960e54f6

difftreelog

chore generate stubs & fix docs

PraetorP2022-12-16parent: #e624910.patch.diff
in: master

13 files changed

modifiedpallets/common/src/eth.rsdiffbeforeafterboth
--- a/pallets/common/src/eth.rs
+++ b/pallets/common/src/eth.rs
@@ -147,29 +147,41 @@
 	/// How many tokens can a user have on one account.
 	#[default]
 	AccountTokenOwnership,
+
 	/// How many bytes of data are available for sponsorship.
 	SponsoredDataSize,
+
 	/// In any case, chain default: [`SponsoringRateLimit::SponsoringDisabled`]
 	SponsoredDataRateLimit,
+
 	/// How many tokens can be mined into this collection.
 	TokenLimit,
+
 	/// Timeouts for transfer sponsoring.
 	SponsorTransferTimeout,
+
 	/// Timeout for sponsoring an approval in passed blocks.
 	SponsorApproveTimeout,
+
 	/// Whether the collection owner of the collection can send tokens (which belong to other users).
 	OwnerCanTransfer,
+
 	/// Can the collection owner burn other people's tokens.
 	OwnerCanDestroy,
+
 	/// Is it possible to send tokens from this collection between users.
 	TransferEnabled,
 }
+/// Ethereum representation of `NestingPermissions` (see [`up_data_structs::NestingPermissions`]) fields as an enumeration.
 #[derive(Default, Debug, Clone, Copy, AbiCoder)]
 #[repr(u8)]
 pub enum CollectionPermissions {
+	/// Owner of token can nest tokens under it.
 	#[default]
-	CollectionAdmin,
 	TokenOwner,
+
+	/// Admin of token collection can nest tokens under token.
+	CollectionAdmin,
 }
 
 /// Ethereum representation of TokenPermissions (see [`up_data_structs::PropertyPermission`]) fields as an enumeration.
modifiedpallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth
--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -173,10 +173,10 @@
 	/// Return `false` if a limit not set.
 	/// @dev EVM selector for this function is: 0xf63bc572,
 	///  or in textual repr: collectionLimits()
-	function collectionLimits() public view returns (Tuple20[] memory) {
+	function collectionLimits() public view returns (Tuple23[] memory) {
 		require(false, stub_error);
 		dummy;
-		return new Tuple20[](0);
+		return new Tuple23[](0);
 	}
 
 	/// Set limits for the collection.
@@ -284,33 +284,19 @@
 	/// Returns nesting for a collection
 	/// @dev EVM selector for this function is: 0x22d25bfe,
 	///  or in textual repr: collectionNestingRestrictedCollectionIds()
-<<<<<<< HEAD
-	function collectionNestingRestrictedCollectionIds() public view returns (Tuple26 memory) {
+	function collectionNestingRestrictedCollectionIds() public view returns (Tuple29 memory) {
 		require(false, stub_error);
 		dummy;
-		return Tuple26(false, new uint256[](0));
-=======
-	function collectionNestingRestrictedCollectionIds() public view returns (Tuple24 memory) {
-		require(false, stub_error);
-		dummy;
-		return Tuple24(false, new uint256[](0));
->>>>>>> 09f69700... chore: generate stubs
+		return Tuple29(false, new uint256[](0));
 	}
 
 	/// Returns permissions for a collection
 	/// @dev EVM selector for this function is: 0x5b2eaf4b,
 	///  or in textual repr: collectionNestingPermissions()
-<<<<<<< HEAD
-	function collectionNestingPermissions() public view returns (Tuple29[] memory) {
+	function collectionNestingPermissions() public view returns (Tuple32[] memory) {
 		require(false, stub_error);
 		dummy;
-		return new Tuple29[](0);
-=======
-	function collectionNestingPermissions() public view returns (Tuple27[] memory) {
-		require(false, stub_error);
-		dummy;
-		return new Tuple27[](0);
->>>>>>> 09f69700... chore: generate stubs
+		return new Tuple32[](0);
 	}
 
 	/// Set the collection access method.
@@ -490,21 +476,13 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple29 {
-=======
-struct Tuple27 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple32 {
 	CollectionPermissions field_0;
 	bool field_1;
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple26 {
-=======
-struct Tuple24 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple29 {
 	bool field_0;
 	uint256[] field_1;
 }
@@ -532,7 +510,7 @@
 }
 
 /// @dev anonymous struct
-struct Tuple20 {
+struct Tuple23 {
 	CollectionLimits field_0;
 	bool field_1;
 	uint256 field_2;
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -42,11 +42,7 @@
 	/// @param permissions Permissions for keys.
 	/// @dev EVM selector for this function is: 0xbd92983a,
 	///  or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
-<<<<<<< HEAD
-	function setTokenPropertyPermissions(Tuple59[] memory permissions) public {
-=======
-	function setTokenPropertyPermissions(Tuple56[] memory permissions) public {
->>>>>>> 9e929f90... chore: generate stubs & types
+	function setTokenPropertyPermissions(Tuple61[] memory permissions) public {
 		require(false, stub_error);
 		permissions;
 		dummy = 0;
@@ -55,17 +51,10 @@
 	/// @notice Get permissions for token properties.
 	/// @dev EVM selector for this function is: 0xf23d7790,
 	///  or in textual repr: tokenPropertyPermissions()
-<<<<<<< HEAD
-	function tokenPropertyPermissions() public view returns (Tuple59[] memory) {
-		require(false, stub_error);
-		dummy;
-		return new Tuple59[](0);
-=======
-	function tokenPropertyPermissions() public view returns (Tuple56[] memory) {
+	function tokenPropertyPermissions() public view returns (Tuple61[] memory) {
 		require(false, stub_error);
 		dummy;
-		return new Tuple56[](0);
->>>>>>> 9e929f90... chore: generate stubs & types
+		return new Tuple61[](0);
 	}
 
 	// /// @notice Set token property value.
@@ -155,23 +144,13 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple59 {
+struct Tuple61 {
 	string field_0;
-	Tuple57[] field_1;
+	Tuple59[] field_1;
 }
 
 /// @dev anonymous struct
-struct Tuple57 {
-=======
-struct Tuple56 {
-	string field_0;
-	Tuple54[] field_1;
-}
-
-/// @dev anonymous struct
-struct Tuple54 {
->>>>>>> 9e929f90... chore: generate stubs & types
+struct Tuple59 {
 	EthTokenPermissions field_0;
 	bool field_1;
 }
@@ -332,10 +311,10 @@
 	/// Return `false` if a limit not set.
 	/// @dev EVM selector for this function is: 0xf63bc572,
 	///  or in textual repr: collectionLimits()
-	function collectionLimits() public view returns (Tuple33[] memory) {
+	function collectionLimits() public view returns (Tuple35[] memory) {
 		require(false, stub_error);
 		dummy;
-		return new Tuple33[](0);
+		return new Tuple35[](0);
 	}
 
 	/// Set limits for the collection.
@@ -443,33 +422,19 @@
 	/// Returns nesting for a collection
 	/// @dev EVM selector for this function is: 0x22d25bfe,
 	///  or in textual repr: collectionNestingRestrictedCollectionIds()
-<<<<<<< HEAD
-	function collectionNestingRestrictedCollectionIds() public view returns (Tuple39 memory) {
+	function collectionNestingRestrictedCollectionIds() public view returns (Tuple41 memory) {
 		require(false, stub_error);
 		dummy;
-		return Tuple39(false, new uint256[](0));
-=======
-	function collectionNestingRestrictedCollectionIds() public view returns (Tuple36 memory) {
-		require(false, stub_error);
-		dummy;
-		return Tuple36(false, new uint256[](0));
->>>>>>> 09f69700... chore: generate stubs
+		return Tuple41(false, new uint256[](0));
 	}
 
 	/// Returns permissions for a collection
 	/// @dev EVM selector for this function is: 0x5b2eaf4b,
 	///  or in textual repr: collectionNestingPermissions()
-<<<<<<< HEAD
-	function collectionNestingPermissions() public view returns (Tuple42[] memory) {
-		require(false, stub_error);
-		dummy;
-		return new Tuple42[](0);
-=======
-	function collectionNestingPermissions() public view returns (Tuple39[] memory) {
+	function collectionNestingPermissions() public view returns (Tuple44[] memory) {
 		require(false, stub_error);
 		dummy;
-		return new Tuple39[](0);
->>>>>>> 09f69700... chore: generate stubs
+		return new Tuple44[](0);
 	}
 
 	/// Set the collection access method.
@@ -649,26 +614,17 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple42 {
-=======
-struct Tuple39 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple44 {
 	CollectionPermissions field_0;
 	bool field_1;
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple39 {
-=======
-struct Tuple36 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple41 {
 	bool field_0;
 	uint256[] field_1;
 }
 
-<<<<<<< HEAD
 /// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
 enum CollectionLimits {
 	/// @dev How many tokens can a user have on one account.
@@ -692,22 +648,12 @@
 }
 
 /// @dev anonymous struct
-struct Tuple33 {
+struct Tuple35 {
 	CollectionLimits field_0;
 	bool field_1;
 	uint256 field_2;
 }
 
-/// @dev anonymous struct
-struct Tuple32 {
-	address field_0;
-	uint256 field_1;
-}
-
-=======
->>>>>>> 0bf15e6f... fixed tests&tuple instead of struct, refactored `refungible` pallet
-=======
->>>>>>> 09f69700... chore: generate stubs
 /// @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
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -42,11 +42,7 @@
 	/// @param permissions Permissions for keys.
 	/// @dev EVM selector for this function is: 0xbd92983a,
 	///  or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
-<<<<<<< HEAD
-	function setTokenPropertyPermissions(Tuple58[] memory permissions) public {
-=======
-	function setTokenPropertyPermissions(Tuple55[] memory permissions) public {
->>>>>>> 9e929f90... chore: generate stubs & types
+	function setTokenPropertyPermissions(Tuple60[] memory permissions) public {
 		require(false, stub_error);
 		permissions;
 		dummy = 0;
@@ -55,17 +51,10 @@
 	/// @notice Get permissions for token properties.
 	/// @dev EVM selector for this function is: 0xf23d7790,
 	///  or in textual repr: tokenPropertyPermissions()
-<<<<<<< HEAD
-	function tokenPropertyPermissions() public view returns (Tuple58[] memory) {
-		require(false, stub_error);
-		dummy;
-		return new Tuple58[](0);
-=======
-	function tokenPropertyPermissions() public view returns (Tuple55[] memory) {
+	function tokenPropertyPermissions() public view returns (Tuple60[] memory) {
 		require(false, stub_error);
 		dummy;
-		return new Tuple55[](0);
->>>>>>> 9e929f90... chore: generate stubs & types
+		return new Tuple60[](0);
 	}
 
 	// /// @notice Set token property value.
@@ -155,23 +144,13 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple58 {
-	string field_0;
-	Tuple56[] field_1;
-}
-
-/// @dev anonymous struct
-struct Tuple56 {
-=======
-struct Tuple55 {
+struct Tuple60 {
 	string field_0;
-	Tuple53[] field_1;
+	Tuple58[] field_1;
 }
 
 /// @dev anonymous struct
-struct Tuple53 {
->>>>>>> 9e929f90... chore: generate stubs & types
+struct Tuple58 {
 	EthTokenPermissions field_0;
 	bool field_1;
 }
@@ -332,10 +311,10 @@
 	/// Return `false` if a limit not set.
 	/// @dev EVM selector for this function is: 0xf63bc572,
 	///  or in textual repr: collectionLimits()
-	function collectionLimits() public view returns (Tuple32[] memory) {
+	function collectionLimits() public view returns (Tuple34[] memory) {
 		require(false, stub_error);
 		dummy;
-		return new Tuple32[](0);
+		return new Tuple34[](0);
 	}
 
 	/// Set limits for the collection.
@@ -443,33 +422,19 @@
 	/// Returns nesting for a collection
 	/// @dev EVM selector for this function is: 0x22d25bfe,
 	///  or in textual repr: collectionNestingRestrictedCollectionIds()
-<<<<<<< HEAD
-	function collectionNestingRestrictedCollectionIds() public view returns (Tuple38 memory) {
+	function collectionNestingRestrictedCollectionIds() public view returns (Tuple40 memory) {
 		require(false, stub_error);
 		dummy;
-		return Tuple38(false, new uint256[](0));
-=======
-	function collectionNestingRestrictedCollectionIds() public view returns (Tuple35 memory) {
-		require(false, stub_error);
-		dummy;
-		return Tuple35(false, new uint256[](0));
->>>>>>> 09f69700... chore: generate stubs
+		return Tuple40(false, new uint256[](0));
 	}
 
 	/// Returns permissions for a collection
 	/// @dev EVM selector for this function is: 0x5b2eaf4b,
 	///  or in textual repr: collectionNestingPermissions()
-<<<<<<< HEAD
-	function collectionNestingPermissions() public view returns (Tuple41[] memory) {
-		require(false, stub_error);
-		dummy;
-		return new Tuple41[](0);
-=======
-	function collectionNestingPermissions() public view returns (Tuple38[] memory) {
+	function collectionNestingPermissions() public view returns (Tuple43[] memory) {
 		require(false, stub_error);
 		dummy;
-		return new Tuple38[](0);
->>>>>>> 09f69700... chore: generate stubs
+		return new Tuple43[](0);
 	}
 
 	/// Set the collection access method.
@@ -649,26 +614,17 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple41 {
-=======
-struct Tuple38 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple43 {
 	CollectionPermissions field_0;
 	bool field_1;
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple38 {
-=======
-struct Tuple35 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple40 {
 	bool field_0;
 	uint256[] field_1;
 }
 
-<<<<<<< HEAD
 /// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
 enum CollectionLimits {
 	/// @dev How many tokens can a user have on one account.
@@ -692,20 +648,12 @@
 }
 
 /// @dev anonymous struct
-struct Tuple32 {
+struct Tuple34 {
 	CollectionLimits field_0;
 	bool field_1;
 	uint256 field_2;
-}
-
-/// @dev anonymous struct
-struct Tuple31 {
-	address field_0;
-	uint256 field_1;
 }
 
-=======
->>>>>>> 09f69700... chore: generate stubs
 /// @dev the ERC-165 identifier for this interface is 0x5b5e139f
 contract ERC721Metadata is Dummy, ERC165 {
 	// /// @notice A descriptive name for a collection of NFTs in this contract
modifiedtests/src/eth/abi/fungible.jsondiffbeforeafterboth
--- a/tests/src/eth/abi/fungible.json
+++ b/tests/src/eth/abi/fungible.json
@@ -220,7 +220,7 @@
           { "internalType": "bool", "name": "field_1", "type": "bool" },
           { "internalType": "uint256", "name": "field_2", "type": "uint256" }
         ],
-        "internalType": "struct Tuple20[]",
+        "internalType": "struct Tuple23[]",
         "name": "",
         "type": "tuple[]"
       }
@@ -241,11 +241,7 @@
           },
           { "internalType": "bool", "name": "field_1", "type": "bool" }
         ],
-<<<<<<< HEAD
-        "internalType": "struct Tuple29[]",
-=======
-        "internalType": "struct Tuple27[]",
->>>>>>> 09f69700... chore: generate stubs
+        "internalType": "struct Tuple32[]",
         "name": "",
         "type": "tuple[]"
       }
@@ -266,11 +262,7 @@
             "type": "uint256[]"
           }
         ],
-<<<<<<< HEAD
-        "internalType": "struct Tuple26",
-=======
-        "internalType": "struct Tuple24",
->>>>>>> 09f69700... chore: generate stubs
+        "internalType": "struct Tuple29",
         "name": "",
         "type": "tuple"
       }
modifiedtests/src/eth/abi/nonFungible.jsondiffbeforeafterboth
--- a/tests/src/eth/abi/nonFungible.json
+++ b/tests/src/eth/abi/nonFungible.json
@@ -250,7 +250,7 @@
           { "internalType": "bool", "name": "field_1", "type": "bool" },
           { "internalType": "uint256", "name": "field_2", "type": "uint256" }
         ],
-        "internalType": "struct Tuple33[]",
+        "internalType": "struct Tuple35[]",
         "name": "",
         "type": "tuple[]"
       }
@@ -271,11 +271,7 @@
           },
           { "internalType": "bool", "name": "field_1", "type": "bool" }
         ],
-<<<<<<< HEAD
-        "internalType": "struct Tuple42[]",
-=======
-        "internalType": "struct Tuple39[]",
->>>>>>> 09f69700... chore: generate stubs
+        "internalType": "struct Tuple44[]",
         "name": "",
         "type": "tuple[]"
       }
@@ -296,11 +292,7 @@
             "type": "uint256[]"
           }
         ],
-<<<<<<< HEAD
-        "internalType": "struct Tuple39",
-=======
-        "internalType": "struct Tuple36",
->>>>>>> 09f69700... chore: generate stubs
+        "internalType": "struct Tuple41",
         "name": "",
         "type": "tuple"
       }
@@ -770,20 +762,12 @@
               },
               { "internalType": "bool", "name": "field_1", "type": "bool" }
             ],
-<<<<<<< HEAD
-            "internalType": "struct Tuple57[]",
-=======
-            "internalType": "struct Tuple54[]",
->>>>>>> 9e929f90... chore: generate stubs & types
+            "internalType": "struct Tuple59[]",
             "name": "field_1",
             "type": "tuple[]"
           }
         ],
-<<<<<<< HEAD
-        "internalType": "struct Tuple59[]",
-=======
-        "internalType": "struct Tuple56[]",
->>>>>>> 9e929f90... chore: generate stubs & types
+        "internalType": "struct Tuple61[]",
         "name": "permissions",
         "type": "tuple[]"
       }
@@ -844,20 +828,12 @@
               },
               { "internalType": "bool", "name": "field_1", "type": "bool" }
             ],
-<<<<<<< HEAD
-            "internalType": "struct Tuple57[]",
-=======
-            "internalType": "struct Tuple54[]",
->>>>>>> 9e929f90... chore: generate stubs & types
+            "internalType": "struct Tuple59[]",
             "name": "field_1",
             "type": "tuple[]"
           }
         ],
-<<<<<<< HEAD
-        "internalType": "struct Tuple59[]",
-=======
-        "internalType": "struct Tuple56[]",
->>>>>>> 9e929f90... chore: generate stubs & types
+        "internalType": "struct Tuple61[]",
         "name": "",
         "type": "tuple[]"
       }
modifiedtests/src/eth/abi/reFungible.jsondiffbeforeafterboth
before · tests/src/eth/abi/reFungible.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      {86        "components": [87          { "internalType": "address", "name": "eth", "type": "address" },88          { "internalType": "uint256", "name": "sub", "type": "uint256" }89        ],90        "internalType": "struct EthCrossAccount",91        "name": "newAdmin",92        "type": "tuple"93      }94    ],95    "name": "addCollectionAdminCross",96    "outputs": [],97    "stateMutability": "nonpayable",98    "type": "function"99  },100  {101    "inputs": [102      {103        "components": [104          { "internalType": "address", "name": "eth", "type": "address" },105          { "internalType": "uint256", "name": "sub", "type": "uint256" }106        ],107        "internalType": "struct EthCrossAccount",108        "name": "user",109        "type": "tuple"110      }111    ],112    "name": "addToCollectionAllowListCross",113    "outputs": [],114    "stateMutability": "nonpayable",115    "type": "function"116  },117  {118    "inputs": [119      {120        "components": [121          { "internalType": "address", "name": "eth", "type": "address" },122          { "internalType": "uint256", "name": "sub", "type": "uint256" }123        ],124        "internalType": "struct EthCrossAccount",125        "name": "user",126        "type": "tuple"127      }128    ],129    "name": "allowlistedCross",130    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],131    "stateMutability": "view",132    "type": "function"133  },134  {135    "inputs": [136      { "internalType": "address", "name": "approved", "type": "address" },137      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }138    ],139    "name": "approve",140    "outputs": [],141    "stateMutability": "nonpayable",142    "type": "function"143  },144  {145    "inputs": [146      { "internalType": "address", "name": "owner", "type": "address" }147    ],148    "name": "balanceOf",149    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],150    "stateMutability": "view",151    "type": "function"152  },153  {154    "inputs": [155      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }156    ],157    "name": "burn",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        "internalType": "struct EthCrossAccount",170        "name": "from",171        "type": "tuple"172      },173      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }174    ],175    "name": "burnFromCross",176    "outputs": [],177    "stateMutability": "nonpayable",178    "type": "function"179  },180  {181    "inputs": [182      {183        "components": [184          { "internalType": "address", "name": "eth", "type": "address" },185          { "internalType": "uint256", "name": "sub", "type": "uint256" }186        ],187        "internalType": "struct EthCrossAccount",188        "name": "newOwner",189        "type": "tuple"190      }191    ],192    "name": "changeCollectionOwnerCross",193    "outputs": [],194    "stateMutability": "nonpayable",195    "type": "function"196  },197  {198    "inputs": [],199    "name": "collectionAdmins",200    "outputs": [201      {202        "components": [203          { "internalType": "address", "name": "eth", "type": "address" },204          { "internalType": "uint256", "name": "sub", "type": "uint256" }205        ],206        "internalType": "struct EthCrossAccount[]",207        "name": "",208        "type": "tuple[]"209      }210    ],211    "stateMutability": "view",212    "type": "function"213  },214  {215    "inputs": [],216    "name": "collectionHelperAddress",217    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],218    "stateMutability": "view",219    "type": "function"220  },221  {222    "inputs": [],223    "name": "collectionLimits",224    "outputs": [225      {226        "components": [227          {228            "internalType": "enum CollectionLimits",229            "name": "field_0",230            "type": "uint8"231          },232          { "internalType": "bool", "name": "field_1", "type": "bool" },233          { "internalType": "uint256", "name": "field_2", "type": "uint256" }234        ],235        "internalType": "struct Tuple32[]",236        "name": "",237        "type": "tuple[]"238      }239    ],240    "stateMutability": "view",241    "type": "function"242  },243  {244    "inputs": [],245    "name": "collectionNestingPermissions",246    "outputs": [247      {248        "components": [249          {250            "internalType": "enum CollectionPermissions",251            "name": "field_0",252            "type": "uint8"253          },254          { "internalType": "bool", "name": "field_1", "type": "bool" }255        ],256<<<<<<< HEAD257        "internalType": "struct Tuple41[]",258=======259        "internalType": "struct Tuple38[]",260>>>>>>> 09f69700... chore: generate stubs261        "name": "",262        "type": "tuple[]"263      }264    ],265    "stateMutability": "view",266    "type": "function"267  },268  {269    "inputs": [],270    "name": "collectionNestingRestrictedCollectionIds",271    "outputs": [272      {273        "components": [274          { "internalType": "bool", "name": "field_0", "type": "bool" },275          {276            "internalType": "uint256[]",277            "name": "field_1",278            "type": "uint256[]"279          }280        ],281<<<<<<< HEAD282        "internalType": "struct Tuple38",283=======284        "internalType": "struct Tuple35",285>>>>>>> 09f69700... chore: generate stubs286        "name": "",287        "type": "tuple"288      }289    ],290    "stateMutability": "view",291    "type": "function"292  },293  {294    "inputs": [],295    "name": "collectionOwner",296    "outputs": [297      {298        "components": [299          { "internalType": "address", "name": "eth", "type": "address" },300          { "internalType": "uint256", "name": "sub", "type": "uint256" }301        ],302        "internalType": "struct EthCrossAccount",303        "name": "",304        "type": "tuple"305      }306    ],307    "stateMutability": "view",308    "type": "function"309  },310  {311    "inputs": [312      { "internalType": "string[]", "name": "keys", "type": "string[]" }313    ],314    "name": "collectionProperties",315    "outputs": [316      {317        "components": [318          { "internalType": "string", "name": "key", "type": "string" },319          { "internalType": "bytes", "name": "value", "type": "bytes" }320        ],321        "internalType": "struct Property[]",322        "name": "",323        "type": "tuple[]"324      }325    ],326    "stateMutability": "view",327    "type": "function"328  },329  {330    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],331    "name": "collectionProperty",332    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],333    "stateMutability": "view",334    "type": "function"335  },336  {337    "inputs": [],338    "name": "collectionSponsor",339    "outputs": [340      {341        "components": [342          { "internalType": "address", "name": "eth", "type": "address" },343          { "internalType": "uint256", "name": "sub", "type": "uint256" }344        ],345        "internalType": "struct EthCrossAccount",346        "name": "",347        "type": "tuple"348      }349    ],350    "stateMutability": "view",351    "type": "function"352  },353  {354    "inputs": [],355    "name": "confirmCollectionSponsorship",356    "outputs": [],357    "stateMutability": "nonpayable",358    "type": "function"359  },360  {361    "inputs": [],362    "name": "contractAddress",363    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],364    "stateMutability": "view",365    "type": "function"366  },367  {368    "inputs": [369      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }370    ],371    "name": "crossOwnerOf",372    "outputs": [373      {374        "components": [375          { "internalType": "address", "name": "eth", "type": "address" },376          { "internalType": "uint256", "name": "sub", "type": "uint256" }377        ],378        "internalType": "struct EthCrossAccount",379        "name": "",380        "type": "tuple"381      }382    ],383    "stateMutability": "view",384    "type": "function"385  },386  {387    "inputs": [388      { "internalType": "string[]", "name": "keys", "type": "string[]" }389    ],390    "name": "deleteCollectionProperties",391    "outputs": [],392    "stateMutability": "nonpayable",393    "type": "function"394  },395  {396    "inputs": [397      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },398      { "internalType": "string[]", "name": "keys", "type": "string[]" }399    ],400    "name": "deleteProperties",401    "outputs": [],402    "stateMutability": "nonpayable",403    "type": "function"404  },405  {406    "inputs": [],407    "name": "description",408    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],409    "stateMutability": "view",410    "type": "function"411  },412  {413    "inputs": [],414    "name": "finishMinting",415    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],416    "stateMutability": "nonpayable",417    "type": "function"418  },419  {420    "inputs": [421      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }422    ],423    "name": "getApproved",424    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],425    "stateMutability": "view",426    "type": "function"427  },428  {429    "inputs": [],430    "name": "hasCollectionPendingSponsor",431    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],432    "stateMutability": "view",433    "type": "function"434  },435  {436    "inputs": [437      { "internalType": "address", "name": "owner", "type": "address" },438      { "internalType": "address", "name": "operator", "type": "address" }439    ],440    "name": "isApprovedForAll",441    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],442    "stateMutability": "view",443    "type": "function"444  },445  {446    "inputs": [447      {448        "components": [449          { "internalType": "address", "name": "eth", "type": "address" },450          { "internalType": "uint256", "name": "sub", "type": "uint256" }451        ],452        "internalType": "struct EthCrossAccount",453        "name": "user",454        "type": "tuple"455      }456    ],457    "name": "isOwnerOrAdminCross",458    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],459    "stateMutability": "view",460    "type": "function"461  },462  {463    "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],464    "name": "mint",465    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],466    "stateMutability": "nonpayable",467    "type": "function"468  },469  {470    "inputs": [471      {472        "components": [473          { "internalType": "address", "name": "eth", "type": "address" },474          { "internalType": "uint256", "name": "sub", "type": "uint256" }475        ],476        "internalType": "struct EthCrossAccount",477        "name": "to",478        "type": "tuple"479      },480      {481        "components": [482          { "internalType": "string", "name": "key", "type": "string" },483          { "internalType": "bytes", "name": "value", "type": "bytes" }484        ],485        "internalType": "struct Property[]",486        "name": "properties",487        "type": "tuple[]"488      }489    ],490    "name": "mintCross",491    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],492    "stateMutability": "nonpayable",493    "type": "function"494  },495  {496    "inputs": [497      { "internalType": "address", "name": "to", "type": "address" },498      { "internalType": "string", "name": "tokenUri", "type": "string" }499    ],500    "name": "mintWithTokenURI",501    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],502    "stateMutability": "nonpayable",503    "type": "function"504  },505  {506    "inputs": [],507    "name": "mintingFinished",508    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],509    "stateMutability": "view",510    "type": "function"511  },512  {513    "inputs": [],514    "name": "name",515    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],516    "stateMutability": "view",517    "type": "function"518  },519  {520    "inputs": [],521    "name": "nextTokenId",522    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],523    "stateMutability": "view",524    "type": "function"525  },526  {527    "inputs": [528      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }529    ],530    "name": "ownerOf",531    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],532    "stateMutability": "view",533    "type": "function"534  },535  {536    "inputs": [537      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },538      { "internalType": "string[]", "name": "keys", "type": "string[]" }539    ],540    "name": "properties",541    "outputs": [542      {543        "components": [544          { "internalType": "string", "name": "key", "type": "string" },545          { "internalType": "bytes", "name": "value", "type": "bytes" }546        ],547        "internalType": "struct Property[]",548        "name": "",549        "type": "tuple[]"550      }551    ],552    "stateMutability": "view",553    "type": "function"554  },555  {556    "inputs": [557      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },558      { "internalType": "string", "name": "key", "type": "string" }559    ],560    "name": "property",561    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],562    "stateMutability": "view",563    "type": "function"564  },565  {566    "inputs": [567      {568        "components": [569          { "internalType": "address", "name": "eth", "type": "address" },570          { "internalType": "uint256", "name": "sub", "type": "uint256" }571        ],572        "internalType": "struct EthCrossAccount",573        "name": "admin",574        "type": "tuple"575      }576    ],577    "name": "removeCollectionAdminCross",578    "outputs": [],579    "stateMutability": "nonpayable",580    "type": "function"581  },582  {583    "inputs": [],584    "name": "removeCollectionSponsor",585    "outputs": [],586    "stateMutability": "nonpayable",587    "type": "function"588  },589  {590    "inputs": [591      {592        "components": [593          { "internalType": "address", "name": "eth", "type": "address" },594          { "internalType": "uint256", "name": "sub", "type": "uint256" }595        ],596        "internalType": "struct EthCrossAccount",597        "name": "user",598        "type": "tuple"599      }600    ],601    "name": "removeFromCollectionAllowListCross",602    "outputs": [],603    "stateMutability": "nonpayable",604    "type": "function"605  },606  {607    "inputs": [608      { "internalType": "address", "name": "from", "type": "address" },609      { "internalType": "address", "name": "to", "type": "address" },610      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }611    ],612    "name": "safeTransferFrom",613    "outputs": [],614    "stateMutability": "nonpayable",615    "type": "function"616  },617  {618    "inputs": [619      { "internalType": "address", "name": "from", "type": "address" },620      { "internalType": "address", "name": "to", "type": "address" },621      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },622      { "internalType": "bytes", "name": "data", "type": "bytes" }623    ],624    "name": "safeTransferFromWithData",625    "outputs": [],626    "stateMutability": "nonpayable",627    "type": "function"628  },629  {630    "inputs": [631      { "internalType": "address", "name": "operator", "type": "address" },632      { "internalType": "bool", "name": "approved", "type": "bool" }633    ],634    "name": "setApprovalForAll",635    "outputs": [],636    "stateMutability": "nonpayable",637    "type": "function"638  },639  {640    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],641    "name": "setCollectionAccess",642    "outputs": [],643    "stateMutability": "nonpayable",644    "type": "function"645  },646  {647    "inputs": [648      {649        "internalType": "enum CollectionLimits",650        "name": "limit",651        "type": "uint8"652      },653      { "internalType": "bool", "name": "status", "type": "bool" },654      { "internalType": "uint256", "name": "value", "type": "uint256" }655    ],656    "name": "setCollectionLimit",657    "outputs": [],658    "stateMutability": "nonpayable",659    "type": "function"660  },661  {662    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],663    "name": "setCollectionMintMode",664    "outputs": [],665    "stateMutability": "nonpayable",666    "type": "function"667  },668  {669    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],670    "name": "setCollectionNesting",671    "outputs": [],672    "stateMutability": "nonpayable",673    "type": "function"674  },675  {676    "inputs": [677      { "internalType": "bool", "name": "enable", "type": "bool" },678      {679        "internalType": "address[]",680        "name": "collections",681        "type": "address[]"682      }683    ],684    "name": "setCollectionNesting",685    "outputs": [],686    "stateMutability": "nonpayable",687    "type": "function"688  },689  {690    "inputs": [691      {692        "components": [693          { "internalType": "string", "name": "key", "type": "string" },694          { "internalType": "bytes", "name": "value", "type": "bytes" }695        ],696        "internalType": "struct Property[]",697        "name": "properties",698        "type": "tuple[]"699      }700    ],701    "name": "setCollectionProperties",702    "outputs": [],703    "stateMutability": "nonpayable",704    "type": "function"705  },706  {707    "inputs": [708      {709        "components": [710          { "internalType": "address", "name": "eth", "type": "address" },711          { "internalType": "uint256", "name": "sub", "type": "uint256" }712        ],713        "internalType": "struct EthCrossAccount",714        "name": "sponsor",715        "type": "tuple"716      }717    ],718    "name": "setCollectionSponsorCross",719    "outputs": [],720    "stateMutability": "nonpayable",721    "type": "function"722  },723  {724    "inputs": [725      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },726      {727        "components": [728          { "internalType": "string", "name": "key", "type": "string" },729          { "internalType": "bytes", "name": "value", "type": "bytes" }730        ],731        "internalType": "struct Property[]",732        "name": "properties",733        "type": "tuple[]"734      }735    ],736    "name": "setProperties",737    "outputs": [],738    "stateMutability": "nonpayable",739    "type": "function"740  },741  {742    "inputs": [743      {744        "components": [745          { "internalType": "string", "name": "field_0", "type": "string" },746          {747            "components": [748              {749                "internalType": "enum EthTokenPermissions",750                "name": "field_0",751                "type": "uint8"752              },753              { "internalType": "bool", "name": "field_1", "type": "bool" }754            ],755<<<<<<< HEAD756            "internalType": "struct Tuple56[]",757=======758            "internalType": "struct Tuple53[]",759>>>>>>> 9e929f90... chore: generate stubs & types760            "name": "field_1",761            "type": "tuple[]"762          }763        ],764<<<<<<< HEAD765        "internalType": "struct Tuple58[]",766=======767        "internalType": "struct Tuple55[]",768>>>>>>> 9e929f90... chore: generate stubs & types769        "name": "permissions",770        "type": "tuple[]"771      }772    ],773    "name": "setTokenPropertyPermissions",774    "outputs": [],775    "stateMutability": "nonpayable",776    "type": "function"777  },778  {779    "inputs": [780      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }781    ],782    "name": "supportsInterface",783    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],784    "stateMutability": "view",785    "type": "function"786  },787  {788    "inputs": [],789    "name": "symbol",790    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],791    "stateMutability": "view",792    "type": "function"793  },794  {795    "inputs": [796      { "internalType": "uint256", "name": "index", "type": "uint256" }797    ],798    "name": "tokenByIndex",799    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],800    "stateMutability": "view",801    "type": "function"802  },803  {804    "inputs": [805      { "internalType": "uint256", "name": "token", "type": "uint256" }806    ],807    "name": "tokenContractAddress",808    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],809    "stateMutability": "view",810    "type": "function"811  },812  {813    "inputs": [814      { "internalType": "address", "name": "owner", "type": "address" },815      { "internalType": "uint256", "name": "index", "type": "uint256" }816    ],817    "name": "tokenOfOwnerByIndex",818    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],819    "stateMutability": "view",820    "type": "function"821  },822  {823    "inputs": [],824    "name": "tokenPropertyPermissions",825    "outputs": [826      {827        "components": [828          { "internalType": "string", "name": "field_0", "type": "string" },829          {830            "components": [831              {832                "internalType": "enum EthTokenPermissions",833                "name": "field_0",834                "type": "uint8"835              },836              { "internalType": "bool", "name": "field_1", "type": "bool" }837            ],838<<<<<<< HEAD839            "internalType": "struct Tuple56[]",840=======841            "internalType": "struct Tuple53[]",842>>>>>>> 9e929f90... chore: generate stubs & types843            "name": "field_1",844            "type": "tuple[]"845          }846        ],847<<<<<<< HEAD848        "internalType": "struct Tuple58[]",849=======850        "internalType": "struct Tuple55[]",851>>>>>>> 9e929f90... chore: generate stubs & types852        "name": "",853        "type": "tuple[]"854      }855    ],856    "stateMutability": "view",857    "type": "function"858  },859  {860    "inputs": [861      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }862    ],863    "name": "tokenURI",864    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],865    "stateMutability": "view",866    "type": "function"867  },868  {869    "inputs": [],870    "name": "totalSupply",871    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],872    "stateMutability": "view",873    "type": "function"874  },875  {876    "inputs": [877      { "internalType": "address", "name": "to", "type": "address" },878      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }879    ],880    "name": "transfer",881    "outputs": [],882    "stateMutability": "nonpayable",883    "type": "function"884  },885  {886    "inputs": [887      {888        "components": [889          { "internalType": "address", "name": "eth", "type": "address" },890          { "internalType": "uint256", "name": "sub", "type": "uint256" }891        ],892        "internalType": "struct EthCrossAccount",893        "name": "to",894        "type": "tuple"895      },896      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }897    ],898    "name": "transferCross",899    "outputs": [],900    "stateMutability": "nonpayable",901    "type": "function"902  },903  {904    "inputs": [905      { "internalType": "address", "name": "from", "type": "address" },906      { "internalType": "address", "name": "to", "type": "address" },907      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }908    ],909    "name": "transferFrom",910    "outputs": [],911    "stateMutability": "nonpayable",912    "type": "function"913  },914  {915    "inputs": [916      {917        "components": [918          { "internalType": "address", "name": "eth", "type": "address" },919          { "internalType": "uint256", "name": "sub", "type": "uint256" }920        ],921        "internalType": "struct EthCrossAccount",922        "name": "from",923        "type": "tuple"924      },925      {926        "components": [927          { "internalType": "address", "name": "eth", "type": "address" },928          { "internalType": "uint256", "name": "sub", "type": "uint256" }929        ],930        "internalType": "struct EthCrossAccount",931        "name": "to",932        "type": "tuple"933      },934      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }935    ],936    "name": "transferFromCross",937    "outputs": [],938    "stateMutability": "nonpayable",939    "type": "function"940  },941  {942    "inputs": [],943    "name": "uniqueCollectionType",944    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],945    "stateMutability": "view",946    "type": "function"947  }948]
modifiedtests/src/eth/api/UniqueFungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -119,7 +119,7 @@
 	/// Return `false` if a limit not set.
 	/// @dev EVM selector for this function is: 0xf63bc572,
 	///  or in textual repr: collectionLimits()
-	function collectionLimits() external view returns (Tuple19[] memory);
+	function collectionLimits() external view returns (Tuple21[] memory);
 
 	/// Set limits for the collection.
 	/// @dev Throws error if limit not found.
@@ -191,20 +191,12 @@
 	/// Returns nesting for a collection
 	/// @dev EVM selector for this function is: 0x22d25bfe,
 	///  or in textual repr: collectionNestingRestrictedCollectionIds()
-<<<<<<< HEAD
-	function collectionNestingRestrictedCollectionIds() external view returns (Tuple24 memory);
-=======
-	function collectionNestingRestrictedCollectionIds() external view returns (Tuple22 memory);
->>>>>>> 09f69700... chore: generate stubs
+	function collectionNestingRestrictedCollectionIds() external view returns (Tuple26 memory);
 
 	/// Returns permissions for a collection
 	/// @dev EVM selector for this function is: 0x5b2eaf4b,
 	///  or in textual repr: collectionNestingPermissions()
-<<<<<<< HEAD
-	function collectionNestingPermissions() external view returns (Tuple27[] memory);
-=======
-	function collectionNestingPermissions() external view returns (Tuple25[] memory);
->>>>>>> 09f69700... chore: generate stubs
+	function collectionNestingPermissions() external view returns (Tuple29[] memory);
 
 	/// Set the collection access method.
 	/// @param mode Access mode
@@ -319,11 +311,7 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple27 {
-=======
-struct Tuple25 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple29 {
 	CollectionPermissions field_0;
 	bool field_1;
 }
@@ -334,11 +322,7 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple24 {
-=======
-struct Tuple22 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple26 {
 	bool field_0;
 	uint256[] field_1;
 }
@@ -366,7 +350,7 @@
 }
 
 /// @dev anonymous struct
-struct Tuple19 {
+struct Tuple21 {
 	CollectionLimits field_0;
 	bool field_1;
 	uint256 field_2;
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -30,20 +30,12 @@
 	/// @param permissions Permissions for keys.
 	/// @dev EVM selector for this function is: 0xbd92983a,
 	///  or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
-<<<<<<< HEAD
-	function setTokenPropertyPermissions(Tuple52[] memory permissions) external;
-=======
-	function setTokenPropertyPermissions(Tuple49[] memory permissions) external;
->>>>>>> 9e929f90... chore: generate stubs & types
+	function setTokenPropertyPermissions(Tuple53[] memory permissions) external;
 
 	/// @notice Get permissions for token properties.
 	/// @dev EVM selector for this function is: 0xf23d7790,
 	///  or in textual repr: tokenPropertyPermissions()
-<<<<<<< HEAD
-	function tokenPropertyPermissions() external view returns (Tuple52[] memory);
-=======
-	function tokenPropertyPermissions() external view returns (Tuple49[] memory);
->>>>>>> 9e929f90... chore: generate stubs & types
+	function tokenPropertyPermissions() external view returns (Tuple53[] memory);
 
 	// /// @notice Set token property value.
 	// /// @dev Throws error if `msg.sender` has no permission to edit the property.
@@ -105,23 +97,13 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple52 {
+struct Tuple53 {
 	string field_0;
-	Tuple50[] field_1;
+	Tuple51[] field_1;
 }
 
 /// @dev anonymous struct
-struct Tuple50 {
-=======
-struct Tuple49 {
-	string field_0;
-	Tuple47[] field_1;
-}
-
-/// @dev anonymous struct
-struct Tuple47 {
->>>>>>> 9e929f90... chore: generate stubs & types
+struct Tuple51 {
 	EthTokenPermissions field_0;
 	bool field_1;
 }
@@ -233,7 +215,7 @@
 	/// Return `false` if a limit not set.
 	/// @dev EVM selector for this function is: 0xf63bc572,
 	///  or in textual repr: collectionLimits()
-	function collectionLimits() external view returns (Tuple30[] memory);
+	function collectionLimits() external view returns (Tuple31[] memory);
 
 	/// Set limits for the collection.
 	/// @dev Throws error if limit not found.
@@ -305,20 +287,12 @@
 	/// Returns nesting for a collection
 	/// @dev EVM selector for this function is: 0x22d25bfe,
 	///  or in textual repr: collectionNestingRestrictedCollectionIds()
-<<<<<<< HEAD
-	function collectionNestingRestrictedCollectionIds() external view returns (Tuple35 memory);
-=======
-	function collectionNestingRestrictedCollectionIds() external view returns (Tuple32 memory);
->>>>>>> 09f69700... chore: generate stubs
+	function collectionNestingRestrictedCollectionIds() external view returns (Tuple36 memory);
 
 	/// Returns permissions for a collection
 	/// @dev EVM selector for this function is: 0x5b2eaf4b,
 	///  or in textual repr: collectionNestingPermissions()
-<<<<<<< HEAD
-	function collectionNestingPermissions() external view returns (Tuple38[] memory);
-=======
-	function collectionNestingPermissions() external view returns (Tuple35[] memory);
->>>>>>> 09f69700... chore: generate stubs
+	function collectionNestingPermissions() external view returns (Tuple39[] memory);
 
 	/// Set the collection access method.
 	/// @param mode Access mode
@@ -433,11 +407,7 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple38 {
-=======
-struct Tuple35 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple39 {
 	CollectionPermissions field_0;
 	bool field_1;
 }
@@ -448,16 +418,11 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple35 {
-=======
-struct Tuple32 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple36 {
 	bool field_0;
 	uint256[] field_1;
 }
 
-<<<<<<< HEAD
 /// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
 enum CollectionLimits {
 	/// @dev How many tokens can a user have on one account.
@@ -481,22 +446,12 @@
 }
 
 /// @dev anonymous struct
-struct Tuple30 {
+struct Tuple31 {
 	CollectionLimits field_0;
 	bool field_1;
 	uint256 field_2;
-}
-
-/// @dev anonymous struct
-struct Tuple27 {
-	address field_0;
-	uint256 field_1;
 }
 
-=======
->>>>>>> 0bf15e6f... fixed tests&tuple instead of struct, refactored `refungible` pallet
-=======
->>>>>>> 09f69700... chore: generate stubs
 /// @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
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -30,20 +30,12 @@
 	/// @param permissions Permissions for keys.
 	/// @dev EVM selector for this function is: 0xbd92983a,
 	///  or in textual repr: setTokenPropertyPermissions((string,(uint8,bool)[])[])
-<<<<<<< HEAD
-	function setTokenPropertyPermissions(Tuple51[] memory permissions) external;
-=======
-	function setTokenPropertyPermissions(Tuple48[] memory permissions) external;
->>>>>>> 9e929f90... chore: generate stubs & types
+	function setTokenPropertyPermissions(Tuple52[] memory permissions) external;
 
 	/// @notice Get permissions for token properties.
 	/// @dev EVM selector for this function is: 0xf23d7790,
 	///  or in textual repr: tokenPropertyPermissions()
-<<<<<<< HEAD
-	function tokenPropertyPermissions() external view returns (Tuple51[] memory);
-=======
-	function tokenPropertyPermissions() external view returns (Tuple48[] memory);
->>>>>>> 9e929f90... chore: generate stubs & types
+	function tokenPropertyPermissions() external view returns (Tuple52[] memory);
 
 	// /// @notice Set token property value.
 	// /// @dev Throws error if `msg.sender` has no permission to edit the property.
@@ -105,23 +97,13 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple51 {
+struct Tuple52 {
 	string field_0;
-	Tuple49[] field_1;
+	Tuple50[] field_1;
 }
 
 /// @dev anonymous struct
-struct Tuple49 {
-=======
-struct Tuple48 {
-	string field_0;
-	Tuple46[] field_1;
-}
-
-/// @dev anonymous struct
-struct Tuple46 {
->>>>>>> 9e929f90... chore: generate stubs & types
+struct Tuple50 {
 	EthTokenPermissions field_0;
 	bool field_1;
 }
@@ -233,7 +215,7 @@
 	/// Return `false` if a limit not set.
 	/// @dev EVM selector for this function is: 0xf63bc572,
 	///  or in textual repr: collectionLimits()
-	function collectionLimits() external view returns (Tuple29[] memory);
+	function collectionLimits() external view returns (Tuple30[] memory);
 
 	/// Set limits for the collection.
 	/// @dev Throws error if limit not found.
@@ -305,20 +287,12 @@
 	/// Returns nesting for a collection
 	/// @dev EVM selector for this function is: 0x22d25bfe,
 	///  or in textual repr: collectionNestingRestrictedCollectionIds()
-<<<<<<< HEAD
-	function collectionNestingRestrictedCollectionIds() external view returns (Tuple34 memory);
-=======
-	function collectionNestingRestrictedCollectionIds() external view returns (Tuple31 memory);
->>>>>>> 09f69700... chore: generate stubs
+	function collectionNestingRestrictedCollectionIds() external view returns (Tuple35 memory);
 
 	/// Returns permissions for a collection
 	/// @dev EVM selector for this function is: 0x5b2eaf4b,
 	///  or in textual repr: collectionNestingPermissions()
-<<<<<<< HEAD
-	function collectionNestingPermissions() external view returns (Tuple37[] memory);
-=======
-	function collectionNestingPermissions() external view returns (Tuple34[] memory);
->>>>>>> 09f69700... chore: generate stubs
+	function collectionNestingPermissions() external view returns (Tuple38[] memory);
 
 	/// Set the collection access method.
 	/// @param mode Access mode
@@ -433,11 +407,7 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple37 {
-=======
-struct Tuple34 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple38 {
 	CollectionPermissions field_0;
 	bool field_1;
 }
@@ -448,16 +418,11 @@
 }
 
 /// @dev anonymous struct
-<<<<<<< HEAD
-struct Tuple34 {
-=======
-struct Tuple31 {
->>>>>>> 09f69700... chore: generate stubs
+struct Tuple35 {
 	bool field_0;
 	uint256[] field_1;
 }
 
-<<<<<<< HEAD
 /// @dev [`CollectionLimits`](up_data_structs::CollectionLimits) representation for EVM.
 enum CollectionLimits {
 	/// @dev How many tokens can a user have on one account.
@@ -481,22 +446,12 @@
 }
 
 /// @dev anonymous struct
-struct Tuple29 {
+struct Tuple30 {
 	CollectionLimits field_0;
 	bool field_1;
 	uint256 field_2;
-}
-
-/// @dev anonymous struct
-struct Tuple26 {
-	address field_0;
-	uint256 field_1;
 }
 
-=======
->>>>>>> 0bf15e6f... fixed tests&tuple instead of struct, refactored `refungible` pallet
-=======
->>>>>>> 09f69700... chore: generate stubs
 /// @dev the ERC-165 identifier for this interface is 0x5b5e139f
 interface ERC721Metadata is Dummy, ERC165 {
 	// /// @notice A descriptive name for a collection of NFTs in this contract