git.delta.rocks / unique-network / refs/commits / fd0a58401917

difftreelog

misk: Update stubs

Trubnikov Sergey2022-08-24parent: #83de2b0.patch.diff
in: master

9 files changed

modifiedpallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth
--- a/pallets/fungible/src/stubs/UniqueFungible.sol
+++ b/pallets/fungible/src/stubs/UniqueFungible.sol
@@ -3,7 +3,17 @@
 
 pragma solidity >=0.8.0 <0.9.0;
 
+<<<<<<< HEAD
 /// @dev common stubs holder
+=======
+// Anonymous struct
+struct Tuple0 {
+	address field_0;
+	uint256 field_1;
+}
+
+// Common stubs holder
+>>>>>>> misk: Update stubs
 contract Dummy {
 	uint8 dummy;
 	string stub_error = "this contract is implemented in native";
@@ -21,8 +31,122 @@
 	}
 }
 
+<<<<<<< HEAD
 /// @title A contract that allows you to work with collections.
 /// @dev the ERC-165 identifier for this interface is 0xffe4da23
+=======
+// Inline
+contract ERC20Events {
+	event Transfer(address indexed from, address indexed to, uint256 value);
+	event Approval(
+		address indexed owner,
+		address indexed spender,
+		uint256 value
+	);
+}
+
+<<<<<<< HEAD
+// Selector: 79cc6790
+contract ERC20UniqueExtensions is Dummy, ERC165 {
+	// Selector: burnFrom(address,uint256) 79cc6790
+	function burnFrom(address from, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		from;
+		amount;
+		dummy = 0;
+		return false;
+	}
+}
+
+// Selector: 942e8b22
+contract ERC20 is Dummy, ERC165, ERC20Events {
+	// Selector: name() 06fdde03
+	function name() public view returns (string memory) {
+		require(false, stub_error);
+		dummy;
+		return "";
+	}
+
+	// Selector: symbol() 95d89b41
+	function symbol() public view returns (string memory) {
+		require(false, stub_error);
+		dummy;
+		return "";
+	}
+
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() public view returns (uint256) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+
+	// Selector: decimals() 313ce567
+	function decimals() public view returns (uint8) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+
+	// Selector: balanceOf(address) 70a08231
+	function balanceOf(address owner) public view returns (uint256) {
+		require(false, stub_error);
+		owner;
+		dummy;
+		return 0;
+	}
+
+	// Selector: transfer(address,uint256) a9059cbb
+	function transfer(address to, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		to;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: transferFrom(address,address,uint256) 23b872dd
+	function transferFrom(
+		address from,
+		address to,
+		uint256 amount
+	) public returns (bool) {
+		require(false, stub_error);
+		from;
+		to;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: approve(address,uint256) 095ea7b3
+	function approve(address spender, uint256 amount) public returns (bool) {
+		require(false, stub_error);
+		spender;
+		amount;
+		dummy = 0;
+		return false;
+	}
+
+	// Selector: allowance(address,address) dd62ed3e
+	function allowance(address owner, address spender)
+		public
+		view
+		returns (uint256)
+	{
+		require(false, stub_error);
+		owner;
+		spender;
+		dummy;
+		return 0;
+	}
+}
+
+// Selector: ffe4da23
+=======
+// Selector: 765e2fae
+>>>>>>> misk: Update stubs
+>>>>>>> misk: Update stubs
 contract Collection is Dummy, ERC165 {
 	/// Set collection property.
 	///
@@ -82,16 +206,45 @@
 		dummy = 0;
 	}
 
+<<<<<<< HEAD
 	/// Collection sponsorship confirmation.
 	///
 	/// @dev After setting the sponsor for the collection, it must be confirmed with this function.
 	/// @dev EVM selector for this function is: 0x3c50e97a,
 	///  or in textual repr: confirmCollectionSponsorship()
+=======
+	// Set the substrate sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Substrate address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsorSubstrate(uint256) c74d6751
+	function setCollectionSponsorSubstrate(uint256 sponsor) public {
+		require(false, stub_error);
+		sponsor;
+		dummy = 0;
+	}
+
+	// Selector: hasCollectionPendingSponsor() 058ac185
+	function hasCollectionPendingSponsor() public view returns (bool) {
+		require(false, stub_error);
+		dummy;
+		return false;
+	}
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+>>>>>>> misk: Update stubs
 	function confirmCollectionSponsorship() public {
 		require(false, stub_error);
 		dummy = 0;
 	}
 
+<<<<<<< HEAD
 	/// Set limits for the collection.
 	/// @dev Throws error if limit not found.
 	/// @param limit Name of the limit. Valid names:
@@ -104,6 +257,39 @@
 	/// @param value Value of the limit.
 	/// @dev EVM selector for this function is: 0x6a3841db,
 	///  or in textual repr: setCollectionLimit(string,uint32)
+=======
+	// Remove collection sponsor.
+	//
+	// Selector: removeCollectionSponsor() 6e0326a3
+	function removeCollectionSponsor() public {
+		require(false, stub_error);
+		dummy = 0;
+	}
+
+	// Get current sponsor.
+	//
+	// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
+	//
+	// Selector: getCollectionSponsor() b66bbc14
+	function getCollectionSponsor() public view returns (Tuple0 memory) {
+		require(false, stub_error);
+		dummy;
+		return Tuple0(0x0000000000000000000000000000000000000000, 0);
+	}
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+>>>>>>> misk: Update stubs
 	function setCollectionLimit(string memory limit, uint32 value) public {
 		require(false, stub_error);
 		limit;
modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -3,7 +3,23 @@
 
 pragma solidity >=0.8.0 <0.9.0;
 
+<<<<<<< HEAD
 /// @dev common stubs holder
+=======
+// Anonymous struct
+struct Tuple0 {
+	uint256 field_0;
+	string field_1;
+}
+
+// Anonymous struct
+struct Tuple1 {
+	address field_0;
+	uint256 field_1;
+}
+
+// Common stubs holder
+>>>>>>> misk: Update stubs
 contract Dummy {
 	uint8 dummy;
 	string stub_error = "this contract is implemented in native";
@@ -465,8 +481,55 @@
 	}
 }
 
+<<<<<<< HEAD
 /// @title Unique extensions for ERC721.
 /// @dev the ERC-165 identifier for this interface is 0xd74d154f
+=======
+<<<<<<< HEAD
+// Selector: 780e9d63
+contract ERC721Enumerable is Dummy, ERC165 {
+	// @notice Enumerate valid NFTs
+	// @param index A counter less than `totalSupply()`
+	// @return The token identifier for the `index`th NFT,
+	//  (sort order not specified)
+	//
+	// Selector: tokenByIndex(uint256) 4f6ccce7
+	function tokenByIndex(uint256 index) public view returns (uint256) {
+		require(false, stub_error);
+		index;
+		dummy;
+		return 0;
+	}
+
+	// @dev Not implemented
+	//
+	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
+	function tokenOfOwnerByIndex(address owner, uint256 index)
+		public
+		view
+		returns (uint256)
+	{
+		require(false, stub_error);
+		owner;
+		index;
+		dummy;
+		return 0;
+	}
+
+	// @notice Count NFTs tracked by this contract
+	// @return A count of valid NFTs tracked by this contract, where each one of
+	//  them has an assigned and queryable owner not equal to the zero address
+	//
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() public view returns (uint256) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+}
+
+// Selector: d74d154f
+>>>>>>> misk: Update stubs
 contract ERC721UniqueExtensions is Dummy, ERC165 {
 	/// @notice Transfer ownership of an NFT
 	/// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
@@ -543,11 +606,33 @@
 	}
 }
 
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple8 {
 	uint256 field_0;
 	string field_1;
 }
+=======
+// Selector: ffe4da23
+=======
+// Selector: 765e2fae
+>>>>>>> misk: Update stubs
+contract Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		public
+	{
+		require(false, stub_error);
+		key;
+		value;
+		dummy = 0;
+	}
+>>>>>>> misk: Update stubs
 
 /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
@@ -578,7 +663,92 @@
 		owner;
 		index;
 		dummy;
+<<<<<<< HEAD
 		return 0;
+=======
+		return hex"";
+	}
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) public {
+		require(false, stub_error);
+		sponsor;
+		dummy = 0;
+	}
+
+	// Set the substrate sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Substrate address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsorSubstrate(uint256) c74d6751
+	function setCollectionSponsorSubstrate(uint256 sponsor) public {
+		require(false, stub_error);
+		sponsor;
+		dummy = 0;
+	}
+
+	// Selector: hasCollectionPendingSponsor() 058ac185
+	function hasCollectionPendingSponsor() public view returns (bool) {
+		require(false, stub_error);
+		dummy;
+		return false;
+	}
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() public {
+		require(false, stub_error);
+		dummy = 0;
+	}
+
+	// Remove collection sponsor.
+	//
+	// Selector: removeCollectionSponsor() 6e0326a3
+	function removeCollectionSponsor() public {
+		require(false, stub_error);
+		dummy = 0;
+	}
+
+	// Get current sponsor.
+	//
+	// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
+	//
+	// Selector: getCollectionSponsor() b66bbc14
+	function getCollectionSponsor() public view returns (Tuple1 memory) {
+		require(false, stub_error);
+		dummy;
+		return Tuple1(0x0000000000000000000000000000000000000000, 0);
+	}
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) public {
+		require(false, stub_error);
+		limit;
+		value;
+		dummy = 0;
+>>>>>>> misk: Update stubs
 	}
 
 	/// @notice Count NFTs tracked by this contract
modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -3,7 +3,23 @@
 
 pragma solidity >=0.8.0 <0.9.0;
 
+<<<<<<< HEAD
 /// @dev common stubs holder
+=======
+// Anonymous struct
+struct Tuple0 {
+	uint256 field_0;
+	string field_1;
+}
+
+// Anonymous struct
+struct Tuple1 {
+	address field_0;
+	uint256 field_1;
+}
+
+// Common stubs holder
+>>>>>>> misk: Update stubs
 contract Dummy {
 	uint8 dummy;
 	string stub_error = "this contract is implemented in native";
@@ -465,8 +481,55 @@
 	}
 }
 
+<<<<<<< HEAD
 /// @title Unique extensions for ERC721.
 /// @dev the ERC-165 identifier for this interface is 0x7c3bef89
+=======
+<<<<<<< HEAD
+// Selector: 780e9d63
+contract ERC721Enumerable is Dummy, ERC165 {
+	// @notice Enumerate valid RFTs
+	// @param index A counter less than `totalSupply()`
+	// @return The token identifier for the `index`th NFT,
+	//  (sort order not specified)
+	//
+	// Selector: tokenByIndex(uint256) 4f6ccce7
+	function tokenByIndex(uint256 index) public view returns (uint256) {
+		require(false, stub_error);
+		index;
+		dummy;
+		return 0;
+	}
+
+	// Not implemented
+	//
+	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
+	function tokenOfOwnerByIndex(address owner, uint256 index)
+		public
+		view
+		returns (uint256)
+	{
+		require(false, stub_error);
+		owner;
+		index;
+		dummy;
+		return 0;
+	}
+
+	// @notice Count RFTs tracked by this contract
+	// @return A count of valid RFTs tracked by this contract, where each one of
+	//  them has an assigned and queryable owner not equal to the zero address
+	//
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() public view returns (uint256) {
+		require(false, stub_error);
+		dummy;
+		return 0;
+	}
+}
+
+// Selector: 7c3bef89
+>>>>>>> misk: Update stubs
 contract ERC721UniqueExtensions is Dummy, ERC165 {
 	/// @notice Transfer ownership of an RFT
 	/// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
@@ -557,11 +620,33 @@
 	}
 }
 
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple8 {
 	uint256 field_0;
 	string field_1;
 }
+=======
+// Selector: ffe4da23
+=======
+// Selector: 765e2fae
+>>>>>>> misk: Update stubs
+contract Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		public
+	{
+		require(false, stub_error);
+		key;
+		value;
+		dummy = 0;
+	}
+>>>>>>> misk: Update stubs
 
 /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
@@ -592,7 +677,92 @@
 		owner;
 		index;
 		dummy;
+<<<<<<< HEAD
 		return 0;
+=======
+		return hex"";
+	}
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) public {
+		require(false, stub_error);
+		sponsor;
+		dummy = 0;
+	}
+
+	// Set the substrate sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Substrate address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsorSubstrate(uint256) c74d6751
+	function setCollectionSponsorSubstrate(uint256 sponsor) public {
+		require(false, stub_error);
+		sponsor;
+		dummy = 0;
+	}
+
+	// Selector: hasCollectionPendingSponsor() 058ac185
+	function hasCollectionPendingSponsor() public view returns (bool) {
+		require(false, stub_error);
+		dummy;
+		return false;
+	}
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() public {
+		require(false, stub_error);
+		dummy = 0;
+	}
+
+	// Remove collection sponsor.
+	//
+	// Selector: removeCollectionSponsor() 6e0326a3
+	function removeCollectionSponsor() public {
+		require(false, stub_error);
+		dummy = 0;
+	}
+
+	// Get current sponsor.
+	//
+	// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
+	//
+	// Selector: getCollectionSponsor() b66bbc14
+	function getCollectionSponsor() public view returns (Tuple1 memory) {
+		require(false, stub_error);
+		dummy;
+		return Tuple1(0x0000000000000000000000000000000000000000, 0);
+	}
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) public {
+		require(false, stub_error);
+		limit;
+		value;
+		dummy = 0;
+>>>>>>> misk: Update stubs
 	}
 
 	/// @notice Count RFTs tracked by this contract
modifiedtests/src/eth/api/UniqueFungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueFungible.sol
+++ b/tests/src/eth/api/UniqueFungible.sol
@@ -3,7 +3,17 @@
 
 pragma solidity >=0.8.0 <0.9.0;
 
+<<<<<<< HEAD
 /// @dev common stubs holder
+=======
+// Anonymous struct
+struct Tuple0 {
+	address field_0;
+	uint256 field_1;
+}
+
+// Common stubs holder
+>>>>>>> misk: Update stubs
 interface Dummy {
 
 }
@@ -12,8 +22,69 @@
 	function supportsInterface(bytes4 interfaceID) external view returns (bool);
 }
 
+<<<<<<< HEAD
 /// @title A contract that allows you to work with collections.
 /// @dev the ERC-165 identifier for this interface is 0xffe4da23
+=======
+// Inline
+interface ERC20Events {
+	event Transfer(address indexed from, address indexed to, uint256 value);
+	event Approval(
+		address indexed owner,
+		address indexed spender,
+		uint256 value
+	);
+}
+
+<<<<<<< HEAD
+// Selector: 79cc6790
+interface ERC20UniqueExtensions is Dummy, ERC165 {
+	// Selector: burnFrom(address,uint256) 79cc6790
+	function burnFrom(address from, uint256 amount) external returns (bool);
+}
+
+// Selector: 942e8b22
+interface ERC20 is Dummy, ERC165, ERC20Events {
+	// Selector: name() 06fdde03
+	function name() external view returns (string memory);
+
+	// Selector: symbol() 95d89b41
+	function symbol() external view returns (string memory);
+
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() external view returns (uint256);
+
+	// Selector: decimals() 313ce567
+	function decimals() external view returns (uint8);
+
+	// Selector: balanceOf(address) 70a08231
+	function balanceOf(address owner) external view returns (uint256);
+
+	// Selector: transfer(address,uint256) a9059cbb
+	function transfer(address to, uint256 amount) external returns (bool);
+
+	// Selector: transferFrom(address,address,uint256) 23b872dd
+	function transferFrom(
+		address from,
+		address to,
+		uint256 amount
+	) external returns (bool);
+
+	// Selector: approve(address,uint256) 095ea7b3
+	function approve(address spender, uint256 amount) external returns (bool);
+
+	// Selector: allowance(address,address) dd62ed3e
+	function allowance(address owner, address spender)
+		external
+		view
+		returns (uint256);
+}
+
+// Selector: ffe4da23
+=======
+// Selector: 765e2fae
+>>>>>>> misk: Update stubs
+>>>>>>> misk: Update stubs
 interface Collection is Dummy, ERC165 {
 	/// Set collection property.
 	///
@@ -53,6 +124,7 @@
 	///  or in textual repr: setCollectionSponsor(address)
 	function setCollectionSponsor(address sponsor) external;
 
+<<<<<<< HEAD
 	/// Collection sponsorship confirmation.
 	///
 	/// @dev After setting the sponsor for the collection, it must be confirmed with this function.
@@ -72,6 +144,51 @@
 	/// @param value Value of the limit.
 	/// @dev EVM selector for this function is: 0x6a3841db,
 	///  or in textual repr: setCollectionLimit(string,uint32)
+=======
+	// Set the substrate sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Substrate address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsorSubstrate(uint256) c74d6751
+	function setCollectionSponsorSubstrate(uint256 sponsor) external;
+
+	// Selector: hasCollectionPendingSponsor() 058ac185
+	function hasCollectionPendingSponsor() external view returns (bool);
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() external;
+
+	// Remove collection sponsor.
+	//
+	// Selector: removeCollectionSponsor() 6e0326a3
+	function removeCollectionSponsor() external;
+
+	// Get current sponsor.
+	//
+	// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
+	//
+	// Selector: getCollectionSponsor() b66bbc14
+	function getCollectionSponsor() external view returns (Tuple0 memory);
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+>>>>>>> misk: Update stubs
 	function setCollectionLimit(string memory limit, uint32 value) external;
 
 	/// Set limits for the collection.
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -3,7 +3,23 @@
 
 pragma solidity >=0.8.0 <0.9.0;
 
+<<<<<<< HEAD
 /// @dev common stubs holder
+=======
+// Anonymous struct
+struct Tuple0 {
+	uint256 field_0;
+	string field_1;
+}
+
+// Anonymous struct
+struct Tuple1 {
+	address field_0;
+	uint256 field_1;
+}
+
+// Common stubs holder
+>>>>>>> misk: Update stubs
 interface Dummy {
 
 }
@@ -305,8 +321,39 @@
 	function finishMinting() external returns (bool);
 }
 
+<<<<<<< HEAD
 /// @title Unique extensions for ERC721.
 /// @dev the ERC-165 identifier for this interface is 0xd74d154f
+=======
+<<<<<<< HEAD
+// Selector: 780e9d63
+interface ERC721Enumerable is Dummy, ERC165 {
+	// @notice Enumerate valid NFTs
+	// @param index A counter less than `totalSupply()`
+	// @return The token identifier for the `index`th NFT,
+	//  (sort order not specified)
+	//
+	// Selector: tokenByIndex(uint256) 4f6ccce7
+	function tokenByIndex(uint256 index) external view returns (uint256);
+
+	// @dev Not implemented
+	//
+	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
+	function tokenOfOwnerByIndex(address owner, uint256 index)
+		external
+		view
+		returns (uint256);
+
+	// @notice Count NFTs tracked by this contract
+	// @return A count of valid NFTs tracked by this contract, where each one of
+	//  them has an assigned and queryable owner not equal to the zero address
+	//
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() external view returns (uint256);
+}
+
+// Selector: d74d154f
+>>>>>>> misk: Update stubs
 interface ERC721UniqueExtensions is Dummy, ERC165 {
 	/// @notice Transfer ownership of an NFT
 	/// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
@@ -355,11 +402,27 @@
 		returns (bool);
 }
 
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple8 {
 	uint256 field_0;
 	string field_1;
 }
+=======
+// Selector: ffe4da23
+=======
+// Selector: 765e2fae
+>>>>>>> misk: Update stubs
+interface Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+>>>>>>> misk: Update stubs
 
 /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
@@ -379,7 +442,87 @@
 	function tokenOfOwnerByIndex(address owner, uint256 index)
 		external
 		view
+<<<<<<< HEAD
 		returns (uint256);
+=======
+		returns (bytes memory);
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) external;
+
+	// Set the substrate sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Substrate address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsorSubstrate(uint256) c74d6751
+	function setCollectionSponsorSubstrate(uint256 sponsor) external;
+
+	// Selector: hasCollectionPendingSponsor() 058ac185
+	function hasCollectionPendingSponsor() external view returns (bool);
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() external;
+
+	// Remove collection sponsor.
+	//
+	// Selector: removeCollectionSponsor() 6e0326a3
+	function removeCollectionSponsor() external;
+
+	// Get current sponsor.
+	//
+	// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
+	//
+	// Selector: getCollectionSponsor() b66bbc14
+	function getCollectionSponsor() external view returns (Tuple1 memory);
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"ownerCanTransfer",
+	// 	"ownerCanDestroy",
+	// 	"transfersEnabled"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) external;
+
+	// Get contract address.
+	//
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() external view returns (address);
+
+	// Add collection admin by substrate address.
+	// @param new_admin Substrate administrator address.
+	//
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) external;
+>>>>>>> misk: Update stubs
 
 	/// @notice Count NFTs tracked by this contract
 	/// @return A count of valid NFTs tracked by this contract, where each one of
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -3,7 +3,23 @@
 
 pragma solidity >=0.8.0 <0.9.0;
 
+<<<<<<< HEAD
 /// @dev common stubs holder
+=======
+// Anonymous struct
+struct Tuple0 {
+	uint256 field_0;
+	string field_1;
+}
+
+// Anonymous struct
+struct Tuple1 {
+	address field_0;
+	uint256 field_1;
+}
+
+// Common stubs holder
+>>>>>>> misk: Update stubs
 interface Dummy {
 
 }
@@ -305,8 +321,39 @@
 	function finishMinting() external returns (bool);
 }
 
+<<<<<<< HEAD
 /// @title Unique extensions for ERC721.
 /// @dev the ERC-165 identifier for this interface is 0x7c3bef89
+=======
+<<<<<<< HEAD
+// Selector: 780e9d63
+interface ERC721Enumerable is Dummy, ERC165 {
+	// @notice Enumerate valid RFTs
+	// @param index A counter less than `totalSupply()`
+	// @return The token identifier for the `index`th NFT,
+	//  (sort order not specified)
+	//
+	// Selector: tokenByIndex(uint256) 4f6ccce7
+	function tokenByIndex(uint256 index) external view returns (uint256);
+
+	// Not implemented
+	//
+	// Selector: tokenOfOwnerByIndex(address,uint256) 2f745c59
+	function tokenOfOwnerByIndex(address owner, uint256 index)
+		external
+		view
+		returns (uint256);
+
+	// @notice Count RFTs tracked by this contract
+	// @return A count of valid RFTs tracked by this contract, where each one of
+	//  them has an assigned and queryable owner not equal to the zero address
+	//
+	// Selector: totalSupply() 18160ddd
+	function totalSupply() external view returns (uint256);
+}
+
+// Selector: 7c3bef89
+>>>>>>> misk: Update stubs
 interface ERC721UniqueExtensions is Dummy, ERC165 {
 	/// @notice Transfer ownership of an RFT
 	/// @dev Throws unless `msg.sender` is the current owner. Throws if `to`
@@ -367,11 +414,27 @@
 		returns (address);
 }
 
+<<<<<<< HEAD
 /// @dev anonymous struct
 struct Tuple8 {
 	uint256 field_0;
 	string field_1;
 }
+=======
+// Selector: ffe4da23
+=======
+// Selector: 765e2fae
+>>>>>>> misk: Update stubs
+interface Collection is Dummy, ERC165 {
+	// Set collection property.
+	//
+	// @param key Property key.
+	// @param value Propery value.
+	//
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+>>>>>>> misk: Update stubs
 
 /// @title ERC-721 Non-Fungible Token Standard, optional enumeration extension
 /// @dev See https://eips.ethereum.org/EIPS/eip-721
@@ -391,7 +454,87 @@
 	function tokenOfOwnerByIndex(address owner, uint256 index)
 		external
 		view
+<<<<<<< HEAD
 		returns (uint256);
+=======
+		returns (bytes memory);
+
+	// Set the sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) external;
+
+	// Set the substrate sponsor of the collection.
+	//
+	// @dev In order for sponsorship to work, it must be confirmed on behalf of the sponsor.
+	//
+	// @param sponsor Substrate address of the sponsor from whose account funds will be debited for operations with the contract.
+	//
+	// Selector: setCollectionSponsorSubstrate(uint256) c74d6751
+	function setCollectionSponsorSubstrate(uint256 sponsor) external;
+
+	// Selector: hasCollectionPendingSponsor() 058ac185
+	function hasCollectionPendingSponsor() external view returns (bool);
+
+	// Collection sponsorship confirmation.
+	//
+	// @dev After setting the sponsor for the collection, it must be confirmed with this function.
+	//
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() external;
+
+	// Remove collection sponsor.
+	//
+	// Selector: removeCollectionSponsor() 6e0326a3
+	function removeCollectionSponsor() external;
+
+	// Get current sponsor.
+	//
+	// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
+	//
+	// Selector: getCollectionSponsor() b66bbc14
+	function getCollectionSponsor() external view returns (Tuple1 memory);
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"accountTokenOwnershipLimit",
+	// 	"sponsoredDataSize",
+	// 	"sponsoredDataRateLimit",
+	// 	"tokenLimit",
+	// 	"sponsorTransferTimeout",
+	// 	"sponsorApproveTimeout"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) external;
+
+	// Set limits for the collection.
+	// @dev Throws error if limit not found.
+	// @param limit Name of the limit. Valid names:
+	// 	"ownerCanTransfer",
+	// 	"ownerCanDestroy",
+	// 	"transfersEnabled"
+	// @param value Value of the limit.
+	//
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) external;
+
+	// Get contract address.
+	//
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() external view returns (address);
+
+	// Add collection admin by substrate address.
+	// @param new_admin Substrate administrator address.
+	//
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) external;
+>>>>>>> misk: Update stubs
 
 	/// @notice Count RFTs tracked by this contract
 	/// @return A count of valid RFTs tracked by this contract, where each one of
modifiedtests/src/eth/fungibleAbi.jsondiffbeforeafterboth
before · tests/src/eth/fungibleAbi.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": "spender",15        "type": "address"16      },17      {18        "indexed": false,19        "internalType": "uint256",20        "name": "value",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": "from",34        "type": "address"35      },36      {37        "indexed": true,38        "internalType": "address",39        "name": "to",40        "type": "address"41      },42      {43        "indexed": false,44        "internalType": "uint256",45        "name": "value",46        "type": "uint256"47      }48    ],49    "name": "Transfer",50    "type": "event"51  },52  {53    "inputs": [54      { "internalType": "address", "name": "newAdmin", "type": "address" }55    ],56    "name": "addCollectionAdmin",57    "outputs": [],58    "stateMutability": "nonpayable",59    "type": "function"60  },61  {62    "inputs": [63      { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }64    ],65    "name": "addCollectionAdminSubstrate",66    "outputs": [],67    "stateMutability": "nonpayable",68    "type": "function"69  },70  {71    "inputs": [72      { "internalType": "address", "name": "user", "type": "address" }73    ],74    "name": "addToCollectionAllowList",75    "outputs": [],76    "stateMutability": "nonpayable",77    "type": "function"78  },79  {80    "inputs": [81      { "internalType": "address", "name": "owner", "type": "address" },82      { "internalType": "address", "name": "spender", "type": "address" }83    ],84    "name": "allowance",85    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],86    "stateMutability": "view",87    "type": "function"88  },89  {90    "inputs": [91      { "internalType": "address", "name": "spender", "type": "address" },92      { "internalType": "uint256", "name": "amount", "type": "uint256" }93    ],94    "name": "approve",95    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],96    "stateMutability": "nonpayable",97    "type": "function"98  },99  {100    "inputs": [101      { "internalType": "address", "name": "owner", "type": "address" }102    ],103    "name": "balanceOf",104    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],105    "stateMutability": "view",106    "type": "function"107  },108  {109    "inputs": [110      { "internalType": "address", "name": "from", "type": "address" },111      { "internalType": "uint256", "name": "amount", "type": "uint256" }112    ],113    "name": "burnFrom",114    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],115    "stateMutability": "nonpayable",116    "type": "function"117  },118  {119    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],120    "name": "collectionProperty",121    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],122    "stateMutability": "view",123    "type": "function"124  },125  {126    "inputs": [],127    "name": "confirmCollectionSponsorship",128    "outputs": [],129    "stateMutability": "nonpayable",130    "type": "function"131  },132  {133    "inputs": [],134    "name": "contractAddress",135    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],136    "stateMutability": "view",137    "type": "function"138  },139  {140    "inputs": [],141    "name": "decimals",142    "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],143    "stateMutability": "view",144    "type": "function"145  },146  {147    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],148    "name": "deleteCollectionProperty",149    "outputs": [],150    "stateMutability": "nonpayable",151    "type": "function"152  },153  {154    "inputs": [155      { "internalType": "address", "name": "user", "type": "address" }156    ],157    "name": "isOwnerOrAdmin",158    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],159    "stateMutability": "view",160    "type": "function"161  },162  {163    "inputs": [164      { "internalType": "uint256", "name": "user", "type": "uint256" }165    ],166    "name": "isOwnerOrAdminSubstrate",167    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],168    "stateMutability": "view",169    "type": "function"170  },171  {172    "inputs": [],173    "name": "name",174    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],175    "stateMutability": "view",176    "type": "function"177  },178  {179    "inputs": [180      { "internalType": "address", "name": "admin", "type": "address" }181    ],182    "name": "removeCollectionAdmin",183    "outputs": [],184    "stateMutability": "nonpayable",185    "type": "function"186  },187  {188    "inputs": [189      { "internalType": "uint256", "name": "admin", "type": "uint256" }190    ],191    "name": "removeCollectionAdminSubstrate",192    "outputs": [],193    "stateMutability": "nonpayable",194    "type": "function"195  },196  {197    "inputs": [198      { "internalType": "address", "name": "user", "type": "address" }199    ],200    "name": "removeFromCollectionAllowList",201    "outputs": [],202    "stateMutability": "nonpayable",203    "type": "function"204  },205  {206    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],207    "name": "setCollectionAccess",208    "outputs": [],209    "stateMutability": "nonpayable",210    "type": "function"211  },212  {213    "inputs": [214      { "internalType": "string", "name": "limit", "type": "string" },215      { "internalType": "uint32", "name": "value", "type": "uint32" }216    ],217    "name": "setCollectionLimit",218    "outputs": [],219    "stateMutability": "nonpayable",220    "type": "function"221  },222  {223    "inputs": [224      { "internalType": "string", "name": "limit", "type": "string" },225      { "internalType": "bool", "name": "value", "type": "bool" }226    ],227    "name": "setCollectionLimit",228    "outputs": [],229    "stateMutability": "nonpayable",230    "type": "function"231  },232  {233    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],234    "name": "setCollectionMintMode",235    "outputs": [],236    "stateMutability": "nonpayable",237    "type": "function"238  },239  {240    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],241    "name": "setCollectionNesting",242    "outputs": [],243    "stateMutability": "nonpayable",244    "type": "function"245  },246  {247    "inputs": [248      { "internalType": "bool", "name": "enable", "type": "bool" },249      {250        "internalType": "address[]",251        "name": "collections",252        "type": "address[]"253      }254    ],255    "name": "setCollectionNesting",256    "outputs": [],257    "stateMutability": "nonpayable",258    "type": "function"259  },260  {261    "inputs": [262      { "internalType": "string", "name": "key", "type": "string" },263      { "internalType": "bytes", "name": "value", "type": "bytes" }264    ],265    "name": "setCollectionProperty",266    "outputs": [],267    "stateMutability": "nonpayable",268    "type": "function"269  },270  {271    "inputs": [272      { "internalType": "address", "name": "sponsor", "type": "address" }273    ],274    "name": "setCollectionSponsor",275    "outputs": [],276    "stateMutability": "nonpayable",277    "type": "function"278  },279  {280    "inputs": [281      { "internalType": "address", "name": "newOwner", "type": "address" }282    ],283    "name": "setOwner",284    "outputs": [],285    "stateMutability": "nonpayable",286    "type": "function"287  },288  {289    "inputs": [290      { "internalType": "uint256", "name": "newOwner", "type": "uint256" }291    ],292    "name": "setOwnerSubstrate",293    "outputs": [],294    "stateMutability": "nonpayable",295    "type": "function"296  },297  {298    "inputs": [299      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }300    ],301    "name": "supportsInterface",302    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],303    "stateMutability": "view",304    "type": "function"305  },306  {307    "inputs": [],308    "name": "symbol",309    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],310    "stateMutability": "view",311    "type": "function"312  },313  {314    "inputs": [],315    "name": "totalSupply",316    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],317    "stateMutability": "view",318    "type": "function"319  },320  {321    "inputs": [322      { "internalType": "address", "name": "to", "type": "address" },323      { "internalType": "uint256", "name": "amount", "type": "uint256" }324    ],325    "name": "transfer",326    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],327    "stateMutability": "nonpayable",328    "type": "function"329  },330  {331    "inputs": [332      { "internalType": "address", "name": "from", "type": "address" },333      { "internalType": "address", "name": "to", "type": "address" },334      { "internalType": "uint256", "name": "amount", "type": "uint256" }335    ],336    "name": "transferFrom",337    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],338    "stateMutability": "nonpayable",339    "type": "function"340  },341  {342    "inputs": [],343    "name": "uniqueCollectionType",344    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],345    "stateMutability": "nonpayable",346    "type": "function"347  }348]
after · tests/src/eth/fungibleAbi.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": "spender",15        "type": "address"16      },17      {18        "indexed": false,19        "internalType": "uint256",20        "name": "value",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": "from",34        "type": "address"35      },36      {37        "indexed": true,38        "internalType": "address",39        "name": "to",40        "type": "address"41      },42      {43        "indexed": false,44        "internalType": "uint256",45        "name": "value",46        "type": "uint256"47      }48    ],49    "name": "Transfer",50    "type": "event"51  },52  {53    "inputs": [54      { "internalType": "address", "name": "newAdmin", "type": "address" }55    ],56    "name": "addCollectionAdmin",57    "outputs": [],58    "stateMutability": "nonpayable",59    "type": "function"60  },61  {62    "inputs": [63      { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }64    ],65    "name": "addCollectionAdminSubstrate",66    "outputs": [],67    "stateMutability": "nonpayable",68    "type": "function"69  },70  {71    "inputs": [72      { "internalType": "address", "name": "user", "type": "address" }73    ],74    "name": "addToCollectionAllowList",75    "outputs": [],76    "stateMutability": "nonpayable",77    "type": "function"78  },79  {80    "inputs": [81      { "internalType": "address", "name": "owner", "type": "address" },82      { "internalType": "address", "name": "spender", "type": "address" }83    ],84    "name": "allowance",85    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],86    "stateMutability": "view",87    "type": "function"88  },89  {90    "inputs": [91      { "internalType": "address", "name": "spender", "type": "address" },92      { "internalType": "uint256", "name": "amount", "type": "uint256" }93    ],94    "name": "approve",95    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],96    "stateMutability": "nonpayable",97    "type": "function"98  },99  {100    "inputs": [101      { "internalType": "address", "name": "owner", "type": "address" }102    ],103    "name": "balanceOf",104    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],105    "stateMutability": "view",106    "type": "function"107  },108  {109    "inputs": [110      { "internalType": "address", "name": "from", "type": "address" },111      { "internalType": "uint256", "name": "amount", "type": "uint256" }112    ],113    "name": "burnFrom",114    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],115    "stateMutability": "nonpayable",116    "type": "function"117  },118  {119    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],120    "name": "collectionProperty",121    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],122    "stateMutability": "view",123    "type": "function"124  },125  {126    "inputs": [],127    "name": "confirmCollectionSponsorship",128    "outputs": [],129    "stateMutability": "nonpayable",130    "type": "function"131  },132  {133    "inputs": [],134    "name": "contractAddress",135    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],136    "stateMutability": "view",137    "type": "function"138  },139  {140    "inputs": [],141    "name": "decimals",142    "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],143    "stateMutability": "view",144    "type": "function"145  },146  {147    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],148    "name": "deleteCollectionProperty",149    "outputs": [],150    "stateMutability": "nonpayable",151    "type": "function"152  },153  {154    "inputs": [155      { "internalType": "address", "name": "user", "type": "address" }156    ],157    "name": "isOwnerOrAdmin",158    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],159    "stateMutability": "view",160    "type": "function"161  },162  {163    "inputs": [164      { "internalType": "uint256", "name": "user", "type": "uint256" }165    ],166    "name": "isOwnerOrAdminSubstrate",167    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],168    "stateMutability": "view",169    "type": "function"170  },171  {172    "inputs": [],173    "name": "getCollectionSponsor",174    "outputs": [175      {176        "components": [177          { "internalType": "address", "name": "field_0", "type": "address" },178          { "internalType": "uint256", "name": "field_1", "type": "uint256" }179        ],180        "internalType": "struct Tuple0",181        "name": "",182        "type": "tuple"183      }184    ],185    "stateMutability": "view",186    "type": "function"187  },188  {189    "inputs": [],190    "name": "hasCollectionPendingSponsor",191    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],192    "stateMutability": "view",193    "type": "function"194  },195  {196    "inputs": [],197    "name": "name",198    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],199    "stateMutability": "view",200    "type": "function"201  },202  {203    "inputs": [204      { "internalType": "address", "name": "admin", "type": "address" }205    ],206    "name": "removeCollectionAdmin",207    "outputs": [],208    "stateMutability": "nonpayable",209    "type": "function"210  },211  {212    "inputs": [213      { "internalType": "uint256", "name": "admin", "type": "uint256" }214    ],215    "name": "removeCollectionAdminSubstrate",216    "outputs": [],217    "stateMutability": "nonpayable",218    "type": "function"219  },220  {221    "inputs": [],222    "name": "removeCollectionSponsor",223    "outputs": [],224    "stateMutability": "nonpayable",225    "type": "function"226  },227  {228    "inputs": [229      { "internalType": "address", "name": "user", "type": "address" }230    ],231    "name": "removeFromCollectionAllowList",232    "outputs": [],233    "stateMutability": "nonpayable",234    "type": "function"235  },236  {237    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],238    "name": "setCollectionAccess",239    "outputs": [],240    "stateMutability": "nonpayable",241    "type": "function"242  },243  {244    "inputs": [245      { "internalType": "string", "name": "limit", "type": "string" },246      { "internalType": "uint32", "name": "value", "type": "uint32" }247    ],248    "name": "setCollectionLimit",249    "outputs": [],250    "stateMutability": "nonpayable",251    "type": "function"252  },253  {254    "inputs": [255      { "internalType": "string", "name": "limit", "type": "string" },256      { "internalType": "bool", "name": "value", "type": "bool" }257    ],258    "name": "setCollectionLimit",259    "outputs": [],260    "stateMutability": "nonpayable",261    "type": "function"262  },263  {264    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],265    "name": "setCollectionMintMode",266    "outputs": [],267    "stateMutability": "nonpayable",268    "type": "function"269  },270  {271    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],272    "name": "setCollectionNesting",273    "outputs": [],274    "stateMutability": "nonpayable",275    "type": "function"276  },277  {278    "inputs": [279      { "internalType": "bool", "name": "enable", "type": "bool" },280      {281        "internalType": "address[]",282        "name": "collections",283        "type": "address[]"284      }285    ],286    "name": "setCollectionNesting",287    "outputs": [],288    "stateMutability": "nonpayable",289    "type": "function"290  },291  {292    "inputs": [293      { "internalType": "string", "name": "key", "type": "string" },294      { "internalType": "bytes", "name": "value", "type": "bytes" }295    ],296    "name": "setCollectionProperty",297    "outputs": [],298    "stateMutability": "nonpayable",299    "type": "function"300  },301  {302    "inputs": [303      { "internalType": "address", "name": "sponsor", "type": "address" }304    ],305    "name": "setCollectionSponsor",306    "outputs": [],307    "stateMutability": "nonpayable",308    "type": "function"309  },310  {311    "inputs": [312<<<<<<< HEAD313      { "internalType": "address", "name": "newOwner", "type": "address" }314    ],315    "name": "setOwner",316    "outputs": [],317    "stateMutability": "nonpayable",318    "type": "function"319  },320  {321    "inputs": [322      { "internalType": "uint256", "name": "newOwner", "type": "uint256" }323    ],324    "name": "setOwnerSubstrate",325=======326      { "internalType": "uint256", "name": "sponsor", "type": "uint256" }327    ],328    "name": "setCollectionSponsorSubstrate",329>>>>>>> misk: Update stubs330    "outputs": [],331    "stateMutability": "nonpayable",332    "type": "function"333  },334  {335    "inputs": [336      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }337    ],338    "name": "supportsInterface",339    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],340    "stateMutability": "view",341    "type": "function"342  },343  {344    "inputs": [],345    "name": "symbol",346    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],347    "stateMutability": "view",348    "type": "function"349  },350  {351    "inputs": [],352    "name": "totalSupply",353    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],354    "stateMutability": "view",355    "type": "function"356  },357  {358    "inputs": [359      { "internalType": "address", "name": "to", "type": "address" },360      { "internalType": "uint256", "name": "amount", "type": "uint256" }361    ],362    "name": "transfer",363    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],364    "stateMutability": "nonpayable",365    "type": "function"366  },367  {368    "inputs": [369      { "internalType": "address", "name": "from", "type": "address" },370      { "internalType": "address", "name": "to", "type": "address" },371      { "internalType": "uint256", "name": "amount", "type": "uint256" }372    ],373    "name": "transferFrom",374    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],375    "stateMutability": "nonpayable",376    "type": "function"377  },378  {379    "inputs": [],380    "name": "uniqueCollectionType",381    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],382    "stateMutability": "nonpayable",383    "type": "function"384  }385]
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/nonFungibleAbi.json
+++ b/tests/src/eth/nonFungibleAbi.json
@@ -200,6 +200,30 @@
     "type": "function"
   },
   {
+    "inputs": [],
+    "name": "getCollectionSponsor",
+    "outputs": [
+      {
+        "components": [
+          { "internalType": "address", "name": "field_0", "type": "address" },
+          { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+        ],
+        "internalType": "struct Tuple1",
+        "name": "",
+        "type": "tuple"
+      }
+    ],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "hasCollectionPendingSponsor",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
     "inputs": [
       { "internalType": "address", "name": "owner", "type": "address" },
       { "internalType": "address", "name": "operator", "type": "address" }
@@ -335,6 +359,13 @@
     "type": "function"
   },
   {
+    "inputs": [],
+    "name": "removeCollectionSponsor",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
     "inputs": [
       { "internalType": "address", "name": "user", "type": "address" }
     ],
@@ -452,6 +483,7 @@
   },
   {
     "inputs": [
+<<<<<<< HEAD
       { "internalType": "address", "name": "newOwner", "type": "address" }
     ],
     "name": "setOwner",
@@ -464,6 +496,11 @@
       { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
     ],
     "name": "setOwnerSubstrate",
+=======
+      { "internalType": "uint256", "name": "sponsor", "type": "uint256" }
+    ],
+    "name": "setCollectionSponsorSubstrate",
+>>>>>>> misk: Update stubs
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"
modifiedtests/src/eth/reFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/reFungibleAbi.json
+++ b/tests/src/eth/reFungibleAbi.json
@@ -200,6 +200,30 @@
     "type": "function"
   },
   {
+    "inputs": [],
+    "name": "getCollectionSponsor",
+    "outputs": [
+      {
+        "components": [
+          { "internalType": "address", "name": "field_0", "type": "address" },
+          { "internalType": "uint256", "name": "field_1", "type": "uint256" }
+        ],
+        "internalType": "struct Tuple1",
+        "name": "",
+        "type": "tuple"
+      }
+    ],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
+    "inputs": [],
+    "name": "hasCollectionPendingSponsor",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "view",
+    "type": "function"
+  },
+  {
     "inputs": [
       { "internalType": "address", "name": "owner", "type": "address" },
       { "internalType": "address", "name": "operator", "type": "address" }
@@ -335,6 +359,13 @@
     "type": "function"
   },
   {
+    "inputs": [],
+    "name": "removeCollectionSponsor",
+    "outputs": [],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
     "inputs": [
       { "internalType": "address", "name": "user", "type": "address" }
     ],
@@ -452,6 +483,7 @@
   },
   {
     "inputs": [
+<<<<<<< HEAD
       { "internalType": "address", "name": "newOwner", "type": "address" }
     ],
     "name": "setOwner",
@@ -464,6 +496,11 @@
       { "internalType": "uint256", "name": "newOwner", "type": "uint256" }
     ],
     "name": "setOwnerSubstrate",
+=======
+      { "internalType": "uint256", "name": "sponsor", "type": "uint256" }
+    ],
+    "name": "setCollectionSponsorSubstrate",
+>>>>>>> misk: Update stubs
     "outputs": [],
     "stateMutability": "nonpayable",
     "type": "function"