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

difftreelog

CORE-386 Fix after rebase

Trubnikov Sergey2022-06-09parent: #7b97719.patch.diff
in: master

6 files changed

modifiedpallets/common/src/erc.rsdiffbeforeafterboth
--- a/pallets/common/src/erc.rs
+++ b/pallets/common/src/erc.rs
@@ -21,7 +21,6 @@
 };
 pub use pallet_evm::{PrecompileOutput, PrecompileResult, PrecompileHandle, account::CrossAccountId};
 use pallet_evm_coder_substrate::dispatch_to_evm;
-use sp_core::{H160, U256};
 use sp_std::vec::Vec;
 use up_data_structs::{Property, SponsoringRateLimit, NestingRule, OwnerRestrictedSet, AccessMode};
 use alloc::format;
@@ -290,7 +289,11 @@
 	Ok(caller)
 }
 
-fn save<T: Config>(collection: &CollectionHandle<T>) {
+fn save<T: Config>(collection: &CollectionHandle<T>) -> Result<void> {
+	// TODO possibly delete for the lack of transaction
+	collection
+		.check_is_internal()
+		.map_err(dispatch_to_evm::<T>)?;
 	<crate::CollectionById<T>>::insert(collection.id, collection.collection.clone());
 	Ok(())
 }
modifiedpallets/common/src/lib.rsdiffbeforeafterboth
--- a/pallets/common/src/lib.rs
+++ b/pallets/common/src/lib.rs
@@ -1133,7 +1133,6 @@
 		user: &T::CrossAccountId,
 		admin: bool,
 	) -> DispatchResult {
-		collection.check_is_mutable()?;
 		collection.check_is_owner(sender)?;
 
 		let was_admin = <IsAdmin<T>>::get((collection.id, user));
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
--- a/pallets/nonfungible/src/stubs/UniqueNFT.sol
+++ b/pallets/nonfungible/src/stubs/UniqueNFT.sol
@@ -51,6 +51,147 @@
 	event MintingFinished();
 }
 
+// Selector: 2da6e59e
+contract Collection is Dummy, ERC165 {
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		public
+	{
+		require(false, stub_error);
+		key;
+		value;
+		dummy = 0;
+	}
+
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) public {
+		require(false, stub_error);
+		key;
+		dummy = 0;
+	}
+
+	// Throws error if key not found
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		public
+		view
+		returns (bytes memory)
+	{
+		require(false, stub_error);
+		key;
+		dummy;
+		return hex"";
+	}
+
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) public {
+		require(false, stub_error);
+		sponsor;
+		dummy = 0;
+	}
+
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() public {
+		require(false, stub_error);
+		dummy = 0;
+	}
+
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) public {
+		require(false, stub_error);
+		limit;
+		value;
+		dummy = 0;
+	}
+
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) public {
+		require(false, stub_error);
+		limit;
+		value;
+		dummy = 0;
+	}
+
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() public view returns (address) {
+		require(false, stub_error);
+		dummy;
+		return 0x0000000000000000000000000000000000000000;
+	}
+
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) public view {
+		require(false, stub_error);
+		newAdmin;
+		dummy;
+	}
+
+	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+	function removeCollectionAdminSubstrate(uint256 newAdmin) public view {
+		require(false, stub_error);
+		newAdmin;
+		dummy;
+	}
+
+	// Selector: addCollectionAdmin(address) 92e462c7
+	function addCollectionAdmin(address newAdmin) public view {
+		require(false, stub_error);
+		newAdmin;
+		dummy;
+	}
+
+	// Selector: removeAdmin(address) 1785f53c
+	function removeAdmin(address admin) public view {
+		require(false, stub_error);
+		admin;
+		dummy;
+	}
+
+	// Selector: setNesting(bool) e8fc50dd
+	function setNesting(bool enable) public {
+		require(false, stub_error);
+		enable;
+		dummy = 0;
+	}
+
+	// Selector: setNesting(bool,address[]) 7df12a9a
+	function setNesting(bool enable, address[] memory collections) public {
+		require(false, stub_error);
+		enable;
+		collections;
+		dummy = 0;
+	}
+
+	// Selector: setCollectionAccess(uint8) 41835d4c
+	function setCollectionAccess(uint8 mode) public {
+		require(false, stub_error);
+		mode;
+		dummy = 0;
+	}
+
+	// Selector: addToCollectionAllowList(address) 67844fe6
+	function addToCollectionAllowList(address user) public view {
+		require(false, stub_error);
+		user;
+		dummy;
+	}
+
+	// Selector: removeFromCollectionAllowList(address) 85c51acb
+	function removeFromCollectionAllowList(address user) public view {
+		require(false, stub_error);
+		user;
+		dummy;
+	}
+
+	// Selector: setMintMode(bool) 5dea9bd5
+	function setMintMode(bool mode) public {
+		require(false, stub_error);
+		mode;
+		dummy = 0;
+	}
+}
+
 // Selector: 41369377
 contract TokenProperties is Dummy, ERC165 {
 	// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa
@@ -327,147 +468,6 @@
 		require(false, stub_error);
 		dummy;
 		return 0;
-	}
-}
-
-// Selector: 7d9262e6
-contract Collection is Dummy, ERC165 {
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		public
-	{
-		require(false, stub_error);
-		key;
-		value;
-		dummy = 0;
-	}
-
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) public {
-		require(false, stub_error);
-		key;
-		dummy = 0;
-	}
-
-	// Throws error if key not found
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		public
-		view
-		returns (bytes memory)
-	{
-		require(false, stub_error);
-		key;
-		dummy;
-		return hex"";
-	}
-
-	// Selector: ethSetSponsor(address) 8f9af356
-	function ethSetSponsor(address sponsor) public {
-		require(false, stub_error);
-		sponsor;
-		dummy = 0;
-	}
-
-	// Selector: ethConfirmSponsorship() a8580d1a
-	function ethConfirmSponsorship() public {
-		require(false, stub_error);
-		dummy = 0;
-	}
-
-	// Selector: setLimit(string,uint32) 68db30ca
-	function setLimit(string memory limit, uint32 value) public {
-		require(false, stub_error);
-		limit;
-		value;
-		dummy = 0;
-	}
-
-	// Selector: setLimit(string,bool) ea67e4c2
-	function setLimit(string memory limit, bool value) public {
-		require(false, stub_error);
-		limit;
-		value;
-		dummy = 0;
-	}
-
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() public view returns (address) {
-		require(false, stub_error);
-		dummy;
-		return 0x0000000000000000000000000000000000000000;
-	}
-
-	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
-	function addCollectionAdminSubstrate(uint256 newAdmin) public view {
-		require(false, stub_error);
-		newAdmin;
-		dummy;
-	}
-
-	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
-	function removeCollectionAdminSubstrate(uint256 newAdmin) public view {
-		require(false, stub_error);
-		newAdmin;
-		dummy;
-	}
-
-	// Selector: addCollectionAdmin(address) 92e462c7
-	function addCollectionAdmin(address newAdmin) public view {
-		require(false, stub_error);
-		newAdmin;
-		dummy;
-	}
-
-	// Selector: removeAdmin(address) 1785f53c
-	function removeAdmin(address admin) public view {
-		require(false, stub_error);
-		admin;
-		dummy;
-	}
-
-	// Selector: setNesting(bool) e8fc50dd
-	function setNesting(bool enable) public {
-		require(false, stub_error);
-		enable;
-		dummy = 0;
-	}
-
-	// Selector: setNesting(bool,address[]) 7df12a9a
-	function setNesting(bool enable, address[] memory collections) public {
-		require(false, stub_error);
-		enable;
-		collections;
-		dummy = 0;
-	}
-
-	// Selector: setAccess(string) 488f56aa
-	function setAccess(string memory mode) public {
-		require(false, stub_error);
-		mode;
-		dummy = 0;
-	}
-
-	// Selector: addToAllowList(address) 31f59102
-	function addToAllowList(address user) public view {
-		require(false, stub_error);
-		user;
-		dummy;
-	}
-
-	// Selector: removeFromAllowList(address) eba8dabc
-	function removeFromAllowList(address user) public view {
-		require(false, stub_error);
-		user;
-		dummy;
-	}
-
-	// Selector: setMintMode(bool) 5dea9bd5
-	function setMintMode(bool mode) public {
-		require(false, stub_error);
-		mode;
-		dummy = 0;
 	}
 }
 
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -42,6 +42,69 @@
 	event MintingFinished();
 }
 
+// Selector: 2da6e59e
+interface Collection is Dummy, ERC165 {
+	// Selector: setCollectionProperty(string,bytes) 2f073f66
+	function setCollectionProperty(string memory key, bytes memory value)
+		external;
+
+	// Selector: deleteCollectionProperty(string) 7b7debce
+	function deleteCollectionProperty(string memory key) external;
+
+	// Throws error if key not found
+	//
+	// Selector: collectionProperty(string) cf24fd6d
+	function collectionProperty(string memory key)
+		external
+		view
+		returns (bytes memory);
+
+	// Selector: setCollectionSponsor(address) 7623402e
+	function setCollectionSponsor(address sponsor) external;
+
+	// Selector: confirmCollectionSponsorship() 3c50e97a
+	function confirmCollectionSponsorship() external;
+
+	// Selector: setCollectionLimit(string,uint32) 6a3841db
+	function setCollectionLimit(string memory limit, uint32 value) external;
+
+	// Selector: setCollectionLimit(string,bool) 993b7fba
+	function setCollectionLimit(string memory limit, bool value) external;
+
+	// Selector: contractAddress() f6b4dfb4
+	function contractAddress() external view returns (address);
+
+	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
+	function addCollectionAdminSubstrate(uint256 newAdmin) external view;
+
+	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
+	function removeCollectionAdminSubstrate(uint256 newAdmin) external view;
+
+	// Selector: addCollectionAdmin(address) 92e462c7
+	function addCollectionAdmin(address newAdmin) external view;
+
+	// Selector: removeAdmin(address) 1785f53c
+	function removeAdmin(address admin) external view;
+
+	// Selector: setNesting(bool) e8fc50dd
+	function setNesting(bool enable) external;
+
+	// Selector: setNesting(bool,address[]) 7df12a9a
+	function setNesting(bool enable, address[] memory collections) external;
+
+	// Selector: setCollectionAccess(uint8) 41835d4c
+	function setCollectionAccess(uint8 mode) external;
+
+	// Selector: addToCollectionAllowList(address) 67844fe6
+	function addToCollectionAllowList(address user) external view;
+
+	// Selector: removeFromCollectionAllowList(address) 85c51acb
+	function removeFromCollectionAllowList(address user) external view;
+
+	// Selector: setMintMode(bool) 5dea9bd5
+	function setMintMode(bool mode) external;
+}
+
 // Selector: 41369377
 interface TokenProperties is Dummy, ERC165 {
 	// Selector: setTokenPropertyPermission(string,bool,bool,bool) 222d97fa
@@ -189,70 +252,6 @@
 
 	// Selector: totalSupply() 18160ddd
 	function totalSupply() external view returns (uint256);
-}
-
-// Selector: 7d9262e6
-interface Collection is Dummy, ERC165 {
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		external;
-
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) external;
-
-	// Throws error if key not found
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		external
-		view
-		returns (bytes memory);
-
-	// Selector: setCollectionSponsor(address) 7623402e
-	function setCollectionSponsor(address sponsor) external;
-
-	// Selector: confirmCollectionSponsorship() 3c50e97a
-	function confirmCollectionSponsorship() external;
-
-	// Selector: setCollectionLimit(string,uint32) 6a3841db
-	function setCollectionLimit(string memory limit, uint32 value) external;
-
-	// Selector: setCollectionLimit(string,bool) 993b7fba
-	function setCollectionLimit(string memory limit, bool value) external;
-
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() external view returns (address);
-
-	// Selector: addCollectionAdminSubstrate(uint256) 5730062b
-	function addCollectionAdminSubstrate(uint256 newAdmin) external view;
-
-	// Selector: removeCollectionAdminSubstrate(uint256) 4048fcf9
-	function removeCollectionAdminSubstrate(uint256 newAdmin) external view;
-
-	// Selector: addCollectionAdmin(address) 92e462c7
-	function addCollectionAdmin(address newAdmin) external view;
-
-	// Selector: removeCollectionAdmin(address) fafd7b42
-	function removeCollectionAdmin(address admin) external view;
-
-	// Selector: setCollectionNesting(bool) 112d4586
-	function setCollectionNesting(bool enable) external;
-
-	// Selector: setCollectionNesting(bool,address[]) 64872396
-	function setCollectionNesting(bool enable, address[] memory collections)
-		external;
-
-	// Selector: setCollectionAccess(uint8) 41835d4c
-	function setCollectionAccess(uint8 mode) external;
-
-	// Selector: addToCollectionAllowList(address) 67844fe6
-	function addToCollectionAllowList(address user) external view;
-
-	// Selector: removeFromCollectionAllowList(address) 85c51acb
-	function removeFromCollectionAllowList(address user) external view;
-
-	// Selector: setCollectionMintMode(bool) 00018e84
-	function setCollectionMintMode(bool mode) external;
 }
 
 // Selector: d74d154f
@@ -275,63 +274,6 @@
 	function mintBulkWithTokenURI(address to, Tuple0[] memory tokens)
 		external
 		returns (bool);
-}
-
-// Selector: f56cd7fa
-interface Collection is Dummy, ERC165 {
-	// Selector: setCollectionProperty(string,bytes) 2f073f66
-	function setCollectionProperty(string memory key, bytes memory value)
-		external;
-
-	// Selector: deleteCollectionProperty(string) 7b7debce
-	function deleteCollectionProperty(string memory key) external;
-
-	// Throws error if key not found
-	//
-	// Selector: collectionProperty(string) cf24fd6d
-	function collectionProperty(string memory key)
-		external
-		view
-		returns (bytes memory);
-
-	// Selector: ethSetSponsor(address) 8f9af356
-	function ethSetSponsor(address sponsor) external;
-
-	// Selector: ethConfirmSponsorship() a8580d1a
-	function ethConfirmSponsorship() external;
-
-	// Selector: setLimit(string,uint32) 68db30ca
-	function setLimit(string memory limit, uint32 value) external;
-
-	// Selector: setLimit(string,bool) ea67e4c2
-	function setLimit(string memory limit, bool value) external;
-
-	// Selector: contractAddress() f6b4dfb4
-	function contractAddress() external view returns (address);
-
-	// Selector: addAdmin(address) 70480275
-	function addAdmin(address newAdmin) external view;
-
-	// Selector: removeAdmin(address) 1785f53c
-	function removeAdmin(address admin) external view;
-
-	// Selector: setNesting(bool) e8fc50dd
-	function setNesting(bool enable) external;
-
-	// Selector: setNesting(bool,address[]) 7df12a9a
-	function setNesting(bool enable, address[] memory collections) external;
-
-	// Selector: setAccess(string) 488f56aa
-	function setAccess(string memory mode) external;
-
-	// Selector: addToAllowList(address) 31f59102
-	function addToAllowList(address user) external view;
-
-	// Selector: removeFromAllowList(address) eba8dabc
-	function removeFromAllowList(address user) external view;
-
-	// Selector: setMintMode(bool) 5dea9bd5
-	function setMintMode(bool mode) external;
 }
 
 interface UniqueNFT is
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
before · tests/src/eth/nonFungibleAbi.json
1[2  {3    "anonymous": false,4    "inputs": [5      {6        "indexed": true,7        "internalType": "address",8        "name": "owner",9        "type": "address"10      },11      {12        "indexed": true,13        "internalType": "address",14        "name": "approved",15        "type": "address"16      },17      {18        "indexed": true,19        "internalType": "uint256",20        "name": "tokenId",21        "type": "uint256"22      }23    ],24    "name": "Approval",25    "type": "event"26  },27  {28    "anonymous": false,29    "inputs": [30      {31        "indexed": true,32        "internalType": "address",33        "name": "owner",34        "type": "address"35      },36      {37        "indexed": true,38        "internalType": "address",39        "name": "operator",40        "type": "address"41      },42      {43        "indexed": false,44        "internalType": "bool",45        "name": "approved",46        "type": "bool"47      }48    ],49    "name": "ApprovalForAll",50    "type": "event"51  },52  {53    "anonymous": false,54    "inputs": [],55    "name": "MintingFinished",56    "type": "event"57  },58  {59    "anonymous": false,60    "inputs": [61      {62        "indexed": true,63        "internalType": "address",64        "name": "from",65        "type": "address"66      },67      {68        "indexed": true,69        "internalType": "address",70        "name": "to",71        "type": "address"72      },73      {74        "indexed": true,75        "internalType": "uint256",76        "name": "tokenId",77        "type": "uint256"78      }79    ],80    "name": "Transfer",81    "type": "event"82  },83  {84    "inputs": [85      { "internalType": "address", "name": "newAdmin", "type": "address" }86    ],87    "name": "addAdmin",88    "outputs": [],89    "stateMutability": "view",90    "type": "function"91  },92  {93    "inputs": [94      { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }95    ],96    "name": "addCollectionAdminSubstrate",97    "outputs": [],98    "stateMutability": "view",99    "type": "function"100  },101  {102    "inputs": [103      { "internalType": "address", "name": "user", "type": "address" }104    ],105    "name": "addToAllowList",106    "outputs": [],107    "stateMutability": "view",108    "type": "function"109  },110  {111    "inputs": [112      { "internalType": "address", "name": "approved", "type": "address" },113      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }114    ],115    "name": "approve",116    "outputs": [],117    "stateMutability": "nonpayable",118    "type": "function"119  },120  {121    "inputs": [122      { "internalType": "address", "name": "owner", "type": "address" }123    ],124    "name": "balanceOf",125    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],126    "stateMutability": "view",127    "type": "function"128  },129  {130    "inputs": [131      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }132    ],133    "name": "burn",134    "outputs": [],135    "stateMutability": "nonpayable",136    "type": "function"137  },138  {139    "inputs": [140      { "internalType": "address", "name": "from", "type": "address" },141      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }142    ],143    "name": "burnFrom",144    "outputs": [],145    "stateMutability": "nonpayable",146    "type": "function"147  },148  {149    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],150    "name": "collectionProperty",151    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],152    "stateMutability": "view",153    "type": "function"154  },155  {156    "inputs": [],157    "name": "confirmCollectionSponsorship",158    "outputs": [],159    "stateMutability": "nonpayable",160    "type": "function"161  },162  {163    "inputs": [],164    "name": "contractAddress",165    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],166    "stateMutability": "view",167    "type": "function"168  },169  {170    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],171    "name": "deleteCollectionProperty",172    "outputs": [],173    "stateMutability": "nonpayable",174    "type": "function"175  },176  {177    "inputs": [178      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },179      { "internalType": "string", "name": "key", "type": "string" }180    ],181    "name": "deleteProperty",182    "outputs": [],183    "stateMutability": "nonpayable",184    "type": "function"185  },186  {187    "inputs": [],188    "name": "finishMinting",189    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],190    "stateMutability": "nonpayable",191    "type": "function"192  },193  {194    "inputs": [195      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }196    ],197    "name": "getApproved",198    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],199    "stateMutability": "view",200    "type": "function"201  },202  {203    "inputs": [204      { "internalType": "address", "name": "owner", "type": "address" },205      { "internalType": "address", "name": "operator", "type": "address" }206    ],207    "name": "isApprovedForAll",208    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],209    "stateMutability": "view",210    "type": "function"211  },212  {213    "inputs": [214      { "internalType": "address", "name": "to", "type": "address" },215      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }216    ],217    "name": "mint",218    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],219    "stateMutability": "nonpayable",220    "type": "function"221  },222  {223    "inputs": [224      { "internalType": "address", "name": "to", "type": "address" },225      { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }226    ],227    "name": "mintBulk",228    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],229    "stateMutability": "nonpayable",230    "type": "function"231  },232  {233    "inputs": [234      { "internalType": "address", "name": "to", "type": "address" },235      {236        "components": [237          { "internalType": "uint256", "name": "field_0", "type": "uint256" },238          { "internalType": "string", "name": "field_1", "type": "string" }239        ],240        "internalType": "struct Tuple0[]",241        "name": "tokens",242        "type": "tuple[]"243      }244    ],245    "name": "mintBulkWithTokenURI",246    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],247    "stateMutability": "nonpayable",248    "type": "function"249  },250  {251    "inputs": [252      { "internalType": "address", "name": "to", "type": "address" },253      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },254      { "internalType": "string", "name": "tokenUri", "type": "string" }255    ],256    "name": "mintWithTokenURI",257    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],258    "stateMutability": "nonpayable",259    "type": "function"260  },261  {262    "inputs": [],263    "name": "mintingFinished",264    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],265    "stateMutability": "view",266    "type": "function"267  },268  {269    "inputs": [],270    "name": "name",271    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],272    "stateMutability": "view",273    "type": "function"274  },275  {276    "inputs": [],277    "name": "nextTokenId",278    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],279    "stateMutability": "view",280    "type": "function"281  },282  {283    "inputs": [284      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }285    ],286    "name": "ownerOf",287    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],288    "stateMutability": "view",289    "type": "function"290  },291  {292    "inputs": [293      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },294      { "internalType": "string", "name": "key", "type": "string" }295    ],296    "name": "property",297    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],298    "stateMutability": "view",299    "type": "function"300  },301  {302    "inputs": [303      { "internalType": "address", "name": "admin", "type": "address" }304    ],305    "name": "removeAdmin",306    "outputs": [],307    "stateMutability": "view",308    "type": "function"309  },310  {311    "inputs": [312      { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }313    ],314    "name": "removeCollectionAdminSubstrate",315    "outputs": [],316    "stateMutability": "view",317    "type": "function"318  },319  {320    "inputs": [321      { "internalType": "address", "name": "user", "type": "address" }322    ],323    "name": "removeFromAllowList",324    "outputs": [],325    "stateMutability": "view",326    "type": "function"327  },328  {329    "inputs": [330      { "internalType": "address", "name": "from", "type": "address" },331      { "internalType": "address", "name": "to", "type": "address" },332      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }333    ],334    "name": "safeTransferFrom",335    "outputs": [],336    "stateMutability": "nonpayable",337    "type": "function"338  },339  {340    "inputs": [341      { "internalType": "address", "name": "from", "type": "address" },342      { "internalType": "address", "name": "to", "type": "address" },343      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },344      { "internalType": "bytes", "name": "data", "type": "bytes" }345    ],346    "name": "safeTransferFromWithData",347    "outputs": [],348    "stateMutability": "nonpayable",349    "type": "function"350  },351  {352    "inputs": [{ "internalType": "string", "name": "mode", "type": "string" }],353    "name": "setAccess",354    "outputs": [],355    "stateMutability": "nonpayable",356    "type": "function"357  },358  {359    "inputs": [360      { "internalType": "address", "name": "operator", "type": "address" },361      { "internalType": "bool", "name": "approved", "type": "bool" }362    ],363    "name": "setApprovalForAll",364    "outputs": [],365    "stateMutability": "nonpayable",366    "type": "function"367  },368  {369    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],370    "name": "setCollectionAccess",371    "outputs": [],372    "stateMutability": "nonpayable",373    "type": "function"374  },375  {376    "inputs": [377      { "internalType": "string", "name": "limit", "type": "string" },378      { "internalType": "uint32", "name": "value", "type": "uint32" }379    ],380    "name": "setCollectionLimit",381    "outputs": [],382    "stateMutability": "nonpayable",383    "type": "function"384  },385  {386    "inputs": [387      { "internalType": "string", "name": "limit", "type": "string" },388      { "internalType": "bool", "name": "value", "type": "bool" }389    ],390    "name": "setCollectionLimit",391    "outputs": [],392    "stateMutability": "nonpayable",393    "type": "function"394  },395  {396    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],397    "name": "setCollectionMintMode",398    "outputs": [],399    "stateMutability": "nonpayable",400    "type": "function"401  },402  {403    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],404    "name": "setCollectionNesting",405    "outputs": [],406    "stateMutability": "nonpayable",407    "type": "function"408  },409  {410    "inputs": [411      { "internalType": "bool", "name": "enable", "type": "bool" },412      {413        "internalType": "address[]",414        "name": "collections",415        "type": "address[]"416      }417    ],418    "name": "setCollectionNesting",419    "outputs": [],420    "stateMutability": "nonpayable",421    "type": "function"422  },423  {424    "inputs": [425      { "internalType": "string", "name": "key", "type": "string" },426      { "internalType": "bytes", "name": "value", "type": "bytes" }427    ],428    "name": "setCollectionProperty",429    "outputs": [],430    "stateMutability": "nonpayable",431    "type": "function"432  },433  {434    "inputs": [435      { "internalType": "address", "name": "sponsor", "type": "address" }436    ],437    "name": "setCollectionSponsor",438    "outputs": [],439    "stateMutability": "nonpayable",440    "type": "function"441  },442  {443    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],444    "name": "setMintMode",445    "outputs": [],446    "stateMutability": "nonpayable",447    "type": "function"448  },449  {450    "inputs": [451      { "internalType": "bool", "name": "enable", "type": "bool" },452      {453        "internalType": "address[]",454        "name": "collections",455        "type": "address[]"456      }457    ],458    "name": "setNesting",459    "outputs": [],460    "stateMutability": "nonpayable",461    "type": "function"462  },463  {464    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],465    "name": "setNesting",466    "outputs": [],467    "stateMutability": "nonpayable",468    "type": "function"469  },470  {471    "inputs": [472      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },473      { "internalType": "string", "name": "key", "type": "string" },474      { "internalType": "bytes", "name": "value", "type": "bytes" }475    ],476    "name": "setProperty",477    "outputs": [],478    "stateMutability": "nonpayable",479    "type": "function"480  },481  {482    "inputs": [483      { "internalType": "string", "name": "key", "type": "string" },484      { "internalType": "bool", "name": "isMutable", "type": "bool" },485      { "internalType": "bool", "name": "collectionAdmin", "type": "bool" },486      { "internalType": "bool", "name": "tokenOwner", "type": "bool" }487    ],488    "name": "setTokenPropertyPermission",489    "outputs": [],490    "stateMutability": "nonpayable",491    "type": "function"492  },493  {494    "inputs": [495      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }496    ],497    "name": "supportsInterface",498    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],499    "stateMutability": "view",500    "type": "function"501  },502  {503    "inputs": [],504    "name": "symbol",505    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],506    "stateMutability": "view",507    "type": "function"508  },509  {510    "inputs": [511      { "internalType": "uint256", "name": "index", "type": "uint256" }512    ],513    "name": "tokenByIndex",514    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],515    "stateMutability": "view",516    "type": "function"517  },518  {519    "inputs": [520      { "internalType": "address", "name": "owner", "type": "address" },521      { "internalType": "uint256", "name": "index", "type": "uint256" }522    ],523    "name": "tokenOfOwnerByIndex",524    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],525    "stateMutability": "view",526    "type": "function"527  },528  {529    "inputs": [530      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }531    ],532    "name": "tokenURI",533    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],534    "stateMutability": "view",535    "type": "function"536  },537  {538    "inputs": [],539    "name": "totalSupply",540    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],541    "stateMutability": "view",542    "type": "function"543  },544  {545    "inputs": [546      { "internalType": "address", "name": "to", "type": "address" },547      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }548    ],549    "name": "transfer",550    "outputs": [],551    "stateMutability": "nonpayable",552    "type": "function"553  },554  {555    "inputs": [556      { "internalType": "address", "name": "from", "type": "address" },557      { "internalType": "address", "name": "to", "type": "address" },558      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }559    ],560    "name": "transferFrom",561    "outputs": [],562    "stateMutability": "nonpayable",563    "type": "function"564  }565]
after · tests/src/eth/nonFungibleAbi.json
1[2  {3    "anonymous": false,4    "inputs": [5      {6        "indexed": true,7        "internalType": "address",8        "name": "owner",9        "type": "address"10      },11      {12        "indexed": true,13        "internalType": "address",14        "name": "approved",15        "type": "address"16      },17      {18        "indexed": true,19        "internalType": "uint256",20        "name": "tokenId",21        "type": "uint256"22      }23    ],24    "name": "Approval",25    "type": "event"26  },27  {28    "anonymous": false,29    "inputs": [30      {31        "indexed": true,32        "internalType": "address",33        "name": "owner",34        "type": "address"35      },36      {37        "indexed": true,38        "internalType": "address",39        "name": "operator",40        "type": "address"41      },42      {43        "indexed": false,44        "internalType": "bool",45        "name": "approved",46        "type": "bool"47      }48    ],49    "name": "ApprovalForAll",50    "type": "event"51  },52  {53    "anonymous": false,54    "inputs": [],55    "name": "MintingFinished",56    "type": "event"57  },58  {59    "anonymous": false,60    "inputs": [61      {62        "indexed": true,63        "internalType": "address",64        "name": "from",65        "type": "address"66      },67      {68        "indexed": true,69        "internalType": "address",70        "name": "to",71        "type": "address"72      },73      {74        "indexed": true,75        "internalType": "uint256",76        "name": "tokenId",77        "type": "uint256"78      }79    ],80    "name": "Transfer",81    "type": "event"82  },83  {84    "inputs": [85      { "internalType": "address", "name": "newAdmin", "type": "address" }86    ],87    "name": "addCollectionAdmin",88    "outputs": [],89    "stateMutability": "view",90    "type": "function"91  },92  {93    "inputs": [94      { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }95    ],96    "name": "addCollectionAdminSubstrate",97    "outputs": [],98    "stateMutability": "view",99    "type": "function"100  },101  {102    "inputs": [103      { "internalType": "address", "name": "user", "type": "address" }104    ],105    "name": "addToCollectionAllowList",106    "outputs": [],107    "stateMutability": "view",108    "type": "function"109  },110  {111    "inputs": [112      { "internalType": "address", "name": "approved", "type": "address" },113      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }114    ],115    "name": "approve",116    "outputs": [],117    "stateMutability": "nonpayable",118    "type": "function"119  },120  {121    "inputs": [122      { "internalType": "address", "name": "owner", "type": "address" }123    ],124    "name": "balanceOf",125    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],126    "stateMutability": "view",127    "type": "function"128  },129  {130    "inputs": [131      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }132    ],133    "name": "burn",134    "outputs": [],135    "stateMutability": "nonpayable",136    "type": "function"137  },138  {139    "inputs": [140      { "internalType": "address", "name": "from", "type": "address" },141      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }142    ],143    "name": "burnFrom",144    "outputs": [],145    "stateMutability": "nonpayable",146    "type": "function"147  },148  {149    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],150    "name": "collectionProperty",151    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],152    "stateMutability": "view",153    "type": "function"154  },155  {156    "inputs": [],157    "name": "confirmCollectionSponsorship",158    "outputs": [],159    "stateMutability": "nonpayable",160    "type": "function"161  },162  {163    "inputs": [],164    "name": "contractAddress",165    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],166    "stateMutability": "view",167    "type": "function"168  },169  {170    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],171    "name": "deleteCollectionProperty",172    "outputs": [],173    "stateMutability": "nonpayable",174    "type": "function"175  },176  {177    "inputs": [178      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },179      { "internalType": "string", "name": "key", "type": "string" }180    ],181    "name": "deleteProperty",182    "outputs": [],183    "stateMutability": "nonpayable",184    "type": "function"185  },186  {187    "inputs": [],188    "name": "finishMinting",189    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],190    "stateMutability": "nonpayable",191    "type": "function"192  },193  {194    "inputs": [195      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }196    ],197    "name": "getApproved",198    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],199    "stateMutability": "view",200    "type": "function"201  },202  {203    "inputs": [204      { "internalType": "address", "name": "owner", "type": "address" },205      { "internalType": "address", "name": "operator", "type": "address" }206    ],207    "name": "isApprovedForAll",208    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],209    "stateMutability": "view",210    "type": "function"211  },212  {213    "inputs": [214      { "internalType": "address", "name": "to", "type": "address" },215      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }216    ],217    "name": "mint",218    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],219    "stateMutability": "nonpayable",220    "type": "function"221  },222  {223    "inputs": [224      { "internalType": "address", "name": "to", "type": "address" },225      { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }226    ],227    "name": "mintBulk",228    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],229    "stateMutability": "nonpayable",230    "type": "function"231  },232  {233    "inputs": [234      { "internalType": "address", "name": "to", "type": "address" },235      {236        "components": [237          { "internalType": "uint256", "name": "field_0", "type": "uint256" },238          { "internalType": "string", "name": "field_1", "type": "string" }239        ],240        "internalType": "struct Tuple0[]",241        "name": "tokens",242        "type": "tuple[]"243      }244    ],245    "name": "mintBulkWithTokenURI",246    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],247    "stateMutability": "nonpayable",248    "type": "function"249  },250  {251    "inputs": [252      { "internalType": "address", "name": "to", "type": "address" },253      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },254      { "internalType": "string", "name": "tokenUri", "type": "string" }255    ],256    "name": "mintWithTokenURI",257    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],258    "stateMutability": "nonpayable",259    "type": "function"260  },261  {262    "inputs": [],263    "name": "mintingFinished",264    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],265    "stateMutability": "view",266    "type": "function"267  },268  {269    "inputs": [],270    "name": "name",271    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],272    "stateMutability": "view",273    "type": "function"274  },275  {276    "inputs": [],277    "name": "nextTokenId",278    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],279    "stateMutability": "view",280    "type": "function"281  },282  {283    "inputs": [284      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }285    ],286    "name": "ownerOf",287    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],288    "stateMutability": "view",289    "type": "function"290  },291  {292    "inputs": [293      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },294      { "internalType": "string", "name": "key", "type": "string" }295    ],296    "name": "property",297    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],298    "stateMutability": "view",299    "type": "function"300  },301  {302    "inputs": [303      { "internalType": "address", "name": "admin", "type": "address" }304    ],305    "name": "removeAdmin",306    "outputs": [],307    "stateMutability": "view",308    "type": "function"309  },310  {311    "inputs": [312      { "internalType": "uint256", "name": "newAdmin", "type": "uint256" }313    ],314    "name": "removeCollectionAdminSubstrate",315    "outputs": [],316    "stateMutability": "view",317    "type": "function"318  },319  {320    "inputs": [321      { "internalType": "address", "name": "user", "type": "address" }322    ],323    "name": "removeFromCollectionAllowList",324    "outputs": [],325    "stateMutability": "view",326    "type": "function"327  },328  {329    "inputs": [330      { "internalType": "address", "name": "from", "type": "address" },331      { "internalType": "address", "name": "to", "type": "address" },332      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }333    ],334    "name": "safeTransferFrom",335    "outputs": [],336    "stateMutability": "nonpayable",337    "type": "function"338  },339  {340    "inputs": [341      { "internalType": "address", "name": "from", "type": "address" },342      { "internalType": "address", "name": "to", "type": "address" },343      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },344      { "internalType": "bytes", "name": "data", "type": "bytes" }345    ],346    "name": "safeTransferFromWithData",347    "outputs": [],348    "stateMutability": "nonpayable",349    "type": "function"350  },351  {352    "inputs": [353      { "internalType": "address", "name": "operator", "type": "address" },354      { "internalType": "bool", "name": "approved", "type": "bool" }355    ],356    "name": "setApprovalForAll",357    "outputs": [],358    "stateMutability": "nonpayable",359    "type": "function"360  },361  {362    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],363    "name": "setCollectionAccess",364    "outputs": [],365    "stateMutability": "nonpayable",366    "type": "function"367  },368  {369    "inputs": [370      { "internalType": "string", "name": "limit", "type": "string" },371      { "internalType": "uint32", "name": "value", "type": "uint32" }372    ],373    "name": "setCollectionLimit",374    "outputs": [],375    "stateMutability": "nonpayable",376    "type": "function"377  },378  {379    "inputs": [380      { "internalType": "string", "name": "limit", "type": "string" },381      { "internalType": "bool", "name": "value", "type": "bool" }382    ],383    "name": "setCollectionLimit",384    "outputs": [],385    "stateMutability": "nonpayable",386    "type": "function"387  },388  {389    "inputs": [390      { "internalType": "string", "name": "key", "type": "string" },391      { "internalType": "bytes", "name": "value", "type": "bytes" }392    ],393    "name": "setCollectionProperty",394    "outputs": [],395    "stateMutability": "nonpayable",396    "type": "function"397  },398  {399    "inputs": [400      { "internalType": "address", "name": "sponsor", "type": "address" }401    ],402    "name": "setCollectionSponsor",403    "outputs": [],404    "stateMutability": "nonpayable",405    "type": "function"406  },407  {408    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],409    "name": "setMintMode",410    "outputs": [],411    "stateMutability": "nonpayable",412    "type": "function"413  },414  {415    "inputs": [416      { "internalType": "bool", "name": "enable", "type": "bool" },417      {418        "internalType": "address[]",419        "name": "collections",420        "type": "address[]"421      }422    ],423    "name": "setNesting",424    "outputs": [],425    "stateMutability": "nonpayable",426    "type": "function"427  },428  {429    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],430    "name": "setNesting",431    "outputs": [],432    "stateMutability": "nonpayable",433    "type": "function"434  },435  {436    "inputs": [437      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },438      { "internalType": "string", "name": "key", "type": "string" },439      { "internalType": "bytes", "name": "value", "type": "bytes" }440    ],441    "name": "setProperty",442    "outputs": [],443    "stateMutability": "nonpayable",444    "type": "function"445  },446  {447    "inputs": [448      { "internalType": "string", "name": "key", "type": "string" },449      { "internalType": "bool", "name": "isMutable", "type": "bool" },450      { "internalType": "bool", "name": "collectionAdmin", "type": "bool" },451      { "internalType": "bool", "name": "tokenOwner", "type": "bool" }452    ],453    "name": "setTokenPropertyPermission",454    "outputs": [],455    "stateMutability": "nonpayable",456    "type": "function"457  },458  {459    "inputs": [460      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }461    ],462    "name": "supportsInterface",463    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],464    "stateMutability": "view",465    "type": "function"466  },467  {468    "inputs": [],469    "name": "symbol",470    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],471    "stateMutability": "view",472    "type": "function"473  },474  {475    "inputs": [476      { "internalType": "uint256", "name": "index", "type": "uint256" }477    ],478    "name": "tokenByIndex",479    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],480    "stateMutability": "view",481    "type": "function"482  },483  {484    "inputs": [485      { "internalType": "address", "name": "owner", "type": "address" },486      { "internalType": "uint256", "name": "index", "type": "uint256" }487    ],488    "name": "tokenOfOwnerByIndex",489    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],490    "stateMutability": "view",491    "type": "function"492  },493  {494    "inputs": [495      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }496    ],497    "name": "tokenURI",498    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],499    "stateMutability": "view",500    "type": "function"501  },502  {503    "inputs": [],504    "name": "totalSupply",505    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],506    "stateMutability": "view",507    "type": "function"508  },509  {510    "inputs": [511      { "internalType": "address", "name": "to", "type": "address" },512      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }513    ],514    "name": "transfer",515    "outputs": [],516    "stateMutability": "nonpayable",517    "type": "function"518  },519  {520    "inputs": [521      { "internalType": "address", "name": "from", "type": "address" },522      { "internalType": "address", "name": "to", "type": "address" },523      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }524    ],525    "name": "transferFrom",526    "outputs": [],527    "stateMutability": "nonpayable",528    "type": "function"529  }530]