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

difftreelog

refactor temporarly unhide mintBulk

Yaroslav Bolyukin2022-10-14parent: #088ceb1.patch.diff
in: master

10 files changed

modifiedpallets/nonfungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -510,7 +510,7 @@
 	/// @param to The new owner
 	/// @param tokenId ID of the minted NFT
 	/// @param tokenUri Token URI that would be stored in the NFT properties
-	#[solidity(hide, rename_selector = "mintWithTokenURI")]
+	#[solidity(/*hide,*/ rename_selector = "mintWithTokenURI")]
 	#[weight(<SelfWeightOf<T>>::create_item())]
 	fn mint_with_token_uri_check_id(
 		&mut self,
@@ -705,7 +705,7 @@
 	///  numbers and first number should be obtained with `nextTokenId` method
 	/// @param to The new owner
 	/// @param tokens array of pairs of token ID and token URI for minted tokens
-	#[solidity(hide, rename_selector = "mintBulkWithTokenURI")]
+	#[solidity(/*hide,*/ rename_selector = "mintBulkWithTokenURI")]
 	#[weight(<SelfWeightOf<T>>::create_multiple_items(tokens.len() as u32))]
 	fn mint_bulk_with_token_uri(
 		&mut self,
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
@@ -500,22 +500,26 @@
 		return 0;
 	}
 
-	// /// @notice Function to mint token with the given tokenUri.
-	// /// @dev `tokenId` should be obtained with `nextTokenId` method,
-	// ///  unlike standard, you can't specify it manually
-	// /// @param to The new owner
-	// /// @param tokenId ID of the minted NFT
-	// /// @param tokenUri Token URI that would be stored in the NFT properties
-	// /// @dev EVM selector for this function is: 0x50bb4e7f,
-	// ///  or in textual repr: mintWithTokenURI(address,uint256,string)
-	// function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) public returns (bool) {
-	// 	require(false, stub_error);
-	// 	to;
-	// 	tokenId;
-	// 	tokenUri;
-	// 	dummy = 0;
-	// 	return false;
-	// }
+	/// @notice Function to mint token with the given tokenUri.
+	/// @dev `tokenId` should be obtained with `nextTokenId` method,
+	///  unlike standard, you can't specify it manually
+	/// @param to The new owner
+	/// @param tokenId ID of the minted NFT
+	/// @param tokenUri Token URI that would be stored in the NFT properties
+	/// @dev EVM selector for this function is: 0x50bb4e7f,
+	///  or in textual repr: mintWithTokenURI(address,uint256,string)
+	function mintWithTokenURI(
+		address to,
+		uint256 tokenId,
+		string memory tokenUri
+	) public returns (bool) {
+		require(false, stub_error);
+		to;
+		tokenId;
+		tokenUri;
+		dummy = 0;
+		return false;
+	}
 
 	/// @dev Not implemented
 	/// @dev EVM selector for this function is: 0x7d64bcb4,
@@ -585,6 +589,7 @@
 		dummy;
 		return 0;
 	}
+
 	// /// @notice Function to mint multiple tokens.
 	// /// @dev `tokenIds` should be an array of consecutive numbers and first number
 	// ///  should be obtained with `nextTokenId` method
@@ -600,21 +605,20 @@
 	// 	return false;
 	// }
 
-	// /// @notice Function to mint multiple tokens with the given tokenUris.
-	// /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
-	// ///  numbers and first number should be obtained with `nextTokenId` method
-	// /// @param to The new owner
-	// /// @param tokens array of pairs of token ID and token URI for minted tokens
-	// /// @dev EVM selector for this function is: 0x36543006,
-	// ///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
-	// function mintBulkWithTokenURI(address to, Tuple6[] memory tokens) public returns (bool) {
-	// 	require(false, stub_error);
-	// 	to;
-	// 	tokens;
-	// 	dummy = 0;
-	// 	return false;
-	// }
-
+	/// @notice Function to mint multiple tokens with the given tokenUris.
+	/// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+	///  numbers and first number should be obtained with `nextTokenId` method
+	/// @param to The new owner
+	/// @param tokens array of pairs of token ID and token URI for minted tokens
+	/// @dev EVM selector for this function is: 0x36543006,
+	///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
+	function mintBulkWithTokenURI(address to, Tuple6[] memory tokens) public returns (bool) {
+		require(false, stub_error);
+		to;
+		tokens;
+		dummy = 0;
+		return false;
+	}
 }
 
 /// @dev anonymous struct
modifiedpallets/refungible/src/erc.rsdiffbeforeafterboth
--- a/pallets/refungible/src/erc.rs
+++ b/pallets/refungible/src/erc.rs
@@ -536,7 +536,7 @@
 	/// @param to The new owner
 	/// @param tokenId ID of the minted RFT
 	/// @param tokenUri Token URI that would be stored in the RFT properties
-	#[solidity(hide, rename_selector = "mintWithTokenURI")]
+	#[solidity(/*hide,*/ rename_selector = "mintWithTokenURI")]
 	#[weight(<SelfWeightOf<T>>::create_item())]
 	fn mint_with_token_uri_check_id(
 		&mut self,
@@ -748,7 +748,7 @@
 	///  numbers and first number should be obtained with `nextTokenId` method
 	/// @param to The new owner
 	/// @param tokens array of pairs of token ID and token URI for minted tokens
-	#[solidity(hide, rename_selector = "mintBulkWithTokenURI")]
+	#[solidity(/*hide,*/ rename_selector = "mintBulkWithTokenURI")]
 	#[weight(<SelfWeightOf<T>>::create_multiple_items(tokens.len() as u32))]
 	fn mint_bulk_with_token_uri(
 		&mut self,
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
--- a/pallets/refungible/src/stubs/UniqueRefungible.sol
+++ b/pallets/refungible/src/stubs/UniqueRefungible.sol
@@ -498,22 +498,26 @@
 		return 0;
 	}
 
-	// /// @notice Function to mint token with the given tokenUri.
-	// /// @dev `tokenId` should be obtained with `nextTokenId` method,
-	// ///  unlike standard, you can't specify it manually
-	// /// @param to The new owner
-	// /// @param tokenId ID of the minted RFT
-	// /// @param tokenUri Token URI that would be stored in the RFT properties
-	// /// @dev EVM selector for this function is: 0x50bb4e7f,
-	// ///  or in textual repr: mintWithTokenURI(address,uint256,string)
-	// function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) public returns (bool) {
-	// 	require(false, stub_error);
-	// 	to;
-	// 	tokenId;
-	// 	tokenUri;
-	// 	dummy = 0;
-	// 	return false;
-	// }
+	/// @notice Function to mint token with the given tokenUri.
+	/// @dev `tokenId` should be obtained with `nextTokenId` method,
+	///  unlike standard, you can't specify it manually
+	/// @param to The new owner
+	/// @param tokenId ID of the minted RFT
+	/// @param tokenUri Token URI that would be stored in the RFT properties
+	/// @dev EVM selector for this function is: 0x50bb4e7f,
+	///  or in textual repr: mintWithTokenURI(address,uint256,string)
+	function mintWithTokenURI(
+		address to,
+		uint256 tokenId,
+		string memory tokenUri
+	) public returns (bool) {
+		require(false, stub_error);
+		to;
+		tokenId;
+		tokenUri;
+		dummy = 0;
+		return false;
+	}
 
 	/// @dev Not implemented
 	/// @dev EVM selector for this function is: 0x7d64bcb4,
@@ -601,20 +605,20 @@
 	// 	return false;
 	// }
 
-	// /// @notice Function to mint multiple tokens with the given tokenUris.
-	// /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
-	// ///  numbers and first number should be obtained with `nextTokenId` method
-	// /// @param to The new owner
-	// /// @param tokens array of pairs of token ID and token URI for minted tokens
-	// /// @dev EVM selector for this function is: 0x36543006,
-	// ///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
-	// function mintBulkWithTokenURI(address to, Tuple6[] memory tokens) public returns (bool) {
-	// 	require(false, stub_error);
-	// 	to;
-	// 	tokens;
-	// 	dummy = 0;
-	// 	return false;
-	// }
+	/// @notice Function to mint multiple tokens with the given tokenUris.
+	/// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+	///  numbers and first number should be obtained with `nextTokenId` method
+	/// @param to The new owner
+	/// @param tokens array of pairs of token ID and token URI for minted tokens
+	/// @dev EVM selector for this function is: 0x36543006,
+	///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
+	function mintBulkWithTokenURI(address to, Tuple6[] memory tokens) public returns (bool) {
+		require(false, stub_error);
+		to;
+		tokens;
+		dummy = 0;
+		return false;
+	}
 
 	/// Returns EVM address for refungible token
 	///
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueNFT.sol
+++ b/tests/src/eth/api/UniqueNFT.sol
@@ -332,15 +332,19 @@
 	///  or in textual repr: mintWithTokenURI(address,string)
 	function mintWithTokenURI(address to, string memory tokenUri) external returns (uint256);
 
-	// /// @notice Function to mint token with the given tokenUri.
-	// /// @dev `tokenId` should be obtained with `nextTokenId` method,
-	// ///  unlike standard, you can't specify it manually
-	// /// @param to The new owner
-	// /// @param tokenId ID of the minted NFT
-	// /// @param tokenUri Token URI that would be stored in the NFT properties
-	// /// @dev EVM selector for this function is: 0x50bb4e7f,
-	// ///  or in textual repr: mintWithTokenURI(address,uint256,string)
-	// function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) external returns (bool);
+	/// @notice Function to mint token with the given tokenUri.
+	/// @dev `tokenId` should be obtained with `nextTokenId` method,
+	///  unlike standard, you can't specify it manually
+	/// @param to The new owner
+	/// @param tokenId ID of the minted NFT
+	/// @param tokenUri Token URI that would be stored in the NFT properties
+	/// @dev EVM selector for this function is: 0x50bb4e7f,
+	///  or in textual repr: mintWithTokenURI(address,uint256,string)
+	function mintWithTokenURI(
+		address to,
+		uint256 tokenId,
+		string memory tokenUri
+	) external returns (bool);
 
 	/// @dev Not implemented
 	/// @dev EVM selector for this function is: 0x7d64bcb4,
@@ -384,6 +388,7 @@
 	/// @dev EVM selector for this function is: 0x75794a3c,
 	///  or in textual repr: nextTokenId()
 	function nextTokenId() external view returns (uint256);
+
 	// /// @notice Function to mint multiple tokens.
 	// /// @dev `tokenIds` should be an array of consecutive numbers and first number
 	// ///  should be obtained with `nextTokenId` method
@@ -393,15 +398,14 @@
 	// ///  or in textual repr: mintBulk(address,uint256[])
 	// function mintBulk(address to, uint256[] memory tokenIds) external returns (bool);
 
-	// /// @notice Function to mint multiple tokens with the given tokenUris.
-	// /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
-	// ///  numbers and first number should be obtained with `nextTokenId` method
-	// /// @param to The new owner
-	// /// @param tokens array of pairs of token ID and token URI for minted tokens
-	// /// @dev EVM selector for this function is: 0x36543006,
-	// ///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
-	// function mintBulkWithTokenURI(address to, Tuple6[] memory tokens) external returns (bool);
-
+	/// @notice Function to mint multiple tokens with the given tokenUris.
+	/// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+	///  numbers and first number should be obtained with `nextTokenId` method
+	/// @param to The new owner
+	/// @param tokens array of pairs of token ID and token URI for minted tokens
+	/// @dev EVM selector for this function is: 0x36543006,
+	///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
+	function mintBulkWithTokenURI(address to, Tuple6[] memory tokens) external returns (bool);
 }
 
 /// @dev anonymous struct
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
--- a/tests/src/eth/api/UniqueRefungible.sol
+++ b/tests/src/eth/api/UniqueRefungible.sol
@@ -330,15 +330,19 @@
 	///  or in textual repr: mintWithTokenURI(address,string)
 	function mintWithTokenURI(address to, string memory tokenUri) external returns (uint256);
 
-	// /// @notice Function to mint token with the given tokenUri.
-	// /// @dev `tokenId` should be obtained with `nextTokenId` method,
-	// ///  unlike standard, you can't specify it manually
-	// /// @param to The new owner
-	// /// @param tokenId ID of the minted RFT
-	// /// @param tokenUri Token URI that would be stored in the RFT properties
-	// /// @dev EVM selector for this function is: 0x50bb4e7f,
-	// ///  or in textual repr: mintWithTokenURI(address,uint256,string)
-	// function mintWithTokenURI(address to, uint256 tokenId, string memory tokenUri) external returns (bool);
+	/// @notice Function to mint token with the given tokenUri.
+	/// @dev `tokenId` should be obtained with `nextTokenId` method,
+	///  unlike standard, you can't specify it manually
+	/// @param to The new owner
+	/// @param tokenId ID of the minted RFT
+	/// @param tokenUri Token URI that would be stored in the RFT properties
+	/// @dev EVM selector for this function is: 0x50bb4e7f,
+	///  or in textual repr: mintWithTokenURI(address,uint256,string)
+	function mintWithTokenURI(
+		address to,
+		uint256 tokenId,
+		string memory tokenUri
+	) external returns (bool);
 
 	/// @dev Not implemented
 	/// @dev EVM selector for this function is: 0x7d64bcb4,
@@ -394,14 +398,14 @@
 	// ///  or in textual repr: mintBulk(address,uint256[])
 	// function mintBulk(address to, uint256[] memory tokenIds) external returns (bool);
 
-	// /// @notice Function to mint multiple tokens with the given tokenUris.
-	// /// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
-	// ///  numbers and first number should be obtained with `nextTokenId` method
-	// /// @param to The new owner
-	// /// @param tokens array of pairs of token ID and token URI for minted tokens
-	// /// @dev EVM selector for this function is: 0x36543006,
-	// ///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
-	// function mintBulkWithTokenURI(address to, Tuple6[] memory tokens) external returns (bool);
+	/// @notice Function to mint multiple tokens with the given tokenUris.
+	/// @dev `tokenIds` is array of pairs of token ID and token URI. Token IDs should be consecutive
+	///  numbers and first number should be obtained with `nextTokenId` method
+	/// @param to The new owner
+	/// @param tokens array of pairs of token ID and token URI for minted tokens
+	/// @dev EVM selector for this function is: 0x36543006,
+	///  or in textual repr: mintBulkWithTokenURI(address,(uint256,string)[])
+	function mintBulkWithTokenURI(address to, Tuple6[] memory tokens) external returns (bool);
 
 	/// Returns EVM address for refungible token
 	///
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": "addCollectionAdmin",88    "outputs": [],89    "stateMutability": "nonpayable",90    "type": "function"91  },92  {93    "inputs": [94      { "internalType": "address", "name": "user", "type": "address" }95    ],96    "name": "addToCollectionAllowList",97    "outputs": [],98    "stateMutability": "nonpayable",99    "type": "function"100  },101  {102    "inputs": [103      { "internalType": "address", "name": "user", "type": "address" }104    ],105    "name": "allowed",106    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],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": [],150    "name": "collectionOwner",151    "outputs": [152      {153        "components": [154          { "internalType": "address", "name": "field_0", "type": "address" },155          { "internalType": "uint256", "name": "field_1", "type": "uint256" }156        ],157        "internalType": "struct Tuple17",158        "name": "",159        "type": "tuple"160      }161    ],162    "stateMutability": "view",163    "type": "function"164  },165  {166    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],167    "name": "collectionProperty",168    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],169    "stateMutability": "view",170    "type": "function"171  },172  {173    "inputs": [],174    "name": "collectionSponsor",175    "outputs": [176      {177        "components": [178          { "internalType": "address", "name": "field_0", "type": "address" },179          { "internalType": "uint256", "name": "field_1", "type": "uint256" }180        ],181        "internalType": "struct Tuple17",182        "name": "",183        "type": "tuple"184      }185    ],186    "stateMutability": "view",187    "type": "function"188  },189  {190    "inputs": [],191    "name": "confirmCollectionSponsorship",192    "outputs": [],193    "stateMutability": "nonpayable",194    "type": "function"195  },196  {197    "inputs": [],198    "name": "contractAddress",199    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],200    "stateMutability": "view",201    "type": "function"202  },203  {204    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],205    "name": "deleteCollectionProperty",206    "outputs": [],207    "stateMutability": "nonpayable",208    "type": "function"209  },210  {211    "inputs": [212      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },213      { "internalType": "string", "name": "key", "type": "string" }214    ],215    "name": "deleteProperty",216    "outputs": [],217    "stateMutability": "nonpayable",218    "type": "function"219  },220  {221    "inputs": [],222    "name": "finishMinting",223    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],224    "stateMutability": "nonpayable",225    "type": "function"226  },227  {228    "inputs": [229      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }230    ],231    "name": "getApproved",232    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],233    "stateMutability": "view",234    "type": "function"235  },236  {237    "inputs": [],238    "name": "hasCollectionPendingSponsor",239    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],240    "stateMutability": "view",241    "type": "function"242  },243  {244    "inputs": [245      { "internalType": "address", "name": "owner", "type": "address" },246      { "internalType": "address", "name": "operator", "type": "address" }247    ],248    "name": "isApprovedForAll",249    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],250    "stateMutability": "view",251    "type": "function"252  },253  {254    "inputs": [255      { "internalType": "address", "name": "user", "type": "address" }256    ],257    "name": "isOwnerOrAdmin",258    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],259    "stateMutability": "view",260    "type": "function"261  },262  {263    "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],264    "name": "mint",265    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],266    "stateMutability": "nonpayable",267    "type": "function"268  },269  {270    "inputs": [271      { "internalType": "address", "name": "to", "type": "address" },272      { "internalType": "string", "name": "tokenUri", "type": "string" }273    ],274    "name": "mintWithTokenURI",275    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],276    "stateMutability": "nonpayable",277    "type": "function"278  },279  {280    "inputs": [],281    "name": "mintingFinished",282    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],283    "stateMutability": "view",284    "type": "function"285  },286  {287    "inputs": [],288    "name": "name",289    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],290    "stateMutability": "view",291    "type": "function"292  },293  {294    "inputs": [],295    "name": "nextTokenId",296    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],297    "stateMutability": "view",298    "type": "function"299  },300  {301    "inputs": [302      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }303    ],304    "name": "ownerOf",305    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],306    "stateMutability": "view",307    "type": "function"308  },309  {310    "inputs": [311      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },312      { "internalType": "string", "name": "key", "type": "string" }313    ],314    "name": "property",315    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],316    "stateMutability": "view",317    "type": "function"318  },319  {320    "inputs": [321      { "internalType": "address", "name": "admin", "type": "address" }322    ],323    "name": "removeCollectionAdmin",324    "outputs": [],325    "stateMutability": "nonpayable",326    "type": "function"327  },328  {329    "inputs": [],330    "name": "removeCollectionSponsor",331    "outputs": [],332    "stateMutability": "nonpayable",333    "type": "function"334  },335  {336    "inputs": [337      { "internalType": "address", "name": "user", "type": "address" }338    ],339    "name": "removeFromCollectionAllowList",340    "outputs": [],341    "stateMutability": "nonpayable",342    "type": "function"343  },344  {345    "inputs": [346      { "internalType": "address", "name": "from", "type": "address" },347      { "internalType": "address", "name": "to", "type": "address" },348      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }349    ],350    "name": "safeTransferFrom",351    "outputs": [],352    "stateMutability": "nonpayable",353    "type": "function"354  },355  {356    "inputs": [357      { "internalType": "address", "name": "from", "type": "address" },358      { "internalType": "address", "name": "to", "type": "address" },359      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },360      { "internalType": "bytes", "name": "data", "type": "bytes" }361    ],362    "name": "safeTransferFrom",363    "outputs": [],364    "stateMutability": "nonpayable",365    "type": "function"366  },367  {368    "inputs": [369      { "internalType": "address", "name": "operator", "type": "address" },370      { "internalType": "bool", "name": "approved", "type": "bool" }371    ],372    "name": "setApprovalForAll",373    "outputs": [],374    "stateMutability": "nonpayable",375    "type": "function"376  },377  {378    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],379    "name": "setCollectionAccess",380    "outputs": [],381    "stateMutability": "nonpayable",382    "type": "function"383  },384  {385    "inputs": [386      { "internalType": "string", "name": "limit", "type": "string" },387      { "internalType": "uint32", "name": "value", "type": "uint32" }388    ],389    "name": "setCollectionLimit",390    "outputs": [],391    "stateMutability": "nonpayable",392    "type": "function"393  },394  {395    "inputs": [396      { "internalType": "string", "name": "limit", "type": "string" },397      { "internalType": "bool", "name": "value", "type": "bool" }398    ],399    "name": "setCollectionLimit",400    "outputs": [],401    "stateMutability": "nonpayable",402    "type": "function"403  },404  {405    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],406    "name": "setCollectionMintMode",407    "outputs": [],408    "stateMutability": "nonpayable",409    "type": "function"410  },411  {412    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],413    "name": "setCollectionNesting",414    "outputs": [],415    "stateMutability": "nonpayable",416    "type": "function"417  },418  {419    "inputs": [420      { "internalType": "bool", "name": "enable", "type": "bool" },421      {422        "internalType": "address[]",423        "name": "collections",424        "type": "address[]"425      }426    ],427    "name": "setCollectionNesting",428    "outputs": [],429    "stateMutability": "nonpayable",430    "type": "function"431  },432  {433    "inputs": [434      { "internalType": "string", "name": "key", "type": "string" },435      { "internalType": "bytes", "name": "value", "type": "bytes" }436    ],437    "name": "setCollectionProperty",438    "outputs": [],439    "stateMutability": "nonpayable",440    "type": "function"441  },442  {443    "inputs": [444      { "internalType": "address", "name": "sponsor", "type": "address" }445    ],446    "name": "setCollectionSponsor",447    "outputs": [],448    "stateMutability": "nonpayable",449    "type": "function"450  },451  {452    "inputs": [453      { "internalType": "address", "name": "newOwner", "type": "address" }454    ],455    "name": "setOwner",456    "outputs": [],457    "stateMutability": "nonpayable",458    "type": "function"459  },460  {461    "inputs": [462      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },463      { "internalType": "string", "name": "key", "type": "string" },464      { "internalType": "bytes", "name": "value", "type": "bytes" }465    ],466    "name": "setProperty",467    "outputs": [],468    "stateMutability": "nonpayable",469    "type": "function"470  },471  {472    "inputs": [473      { "internalType": "string", "name": "key", "type": "string" },474      { "internalType": "bool", "name": "isMutable", "type": "bool" },475      { "internalType": "bool", "name": "collectionAdmin", "type": "bool" },476      { "internalType": "bool", "name": "tokenOwner", "type": "bool" }477    ],478    "name": "setTokenPropertyPermission",479    "outputs": [],480    "stateMutability": "nonpayable",481    "type": "function"482  },483  {484    "inputs": [485      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }486    ],487    "name": "supportsInterface",488    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],489    "stateMutability": "view",490    "type": "function"491  },492  {493    "inputs": [],494    "name": "symbol",495    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],496    "stateMutability": "view",497    "type": "function"498  },499  {500    "inputs": [501      { "internalType": "uint256", "name": "index", "type": "uint256" }502    ],503    "name": "tokenByIndex",504    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],505    "stateMutability": "view",506    "type": "function"507  },508  {509    "inputs": [510      { "internalType": "address", "name": "owner", "type": "address" },511      { "internalType": "uint256", "name": "index", "type": "uint256" }512    ],513    "name": "tokenOfOwnerByIndex",514    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],515    "stateMutability": "view",516    "type": "function"517  },518  {519    "inputs": [520      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }521    ],522    "name": "tokenURI",523    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],524    "stateMutability": "view",525    "type": "function"526  },527  {528    "inputs": [],529    "name": "totalSupply",530    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],531    "stateMutability": "view",532    "type": "function"533  },534  {535    "inputs": [536      { "internalType": "address", "name": "to", "type": "address" },537      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }538    ],539    "name": "transfer",540    "outputs": [],541    "stateMutability": "nonpayable",542    "type": "function"543  },544  {545    "inputs": [546      { "internalType": "address", "name": "from", "type": "address" },547      { "internalType": "address", "name": "to", "type": "address" },548      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }549    ],550    "name": "transferFrom",551    "outputs": [],552    "stateMutability": "nonpayable",553    "type": "function"554  },555  {556    "inputs": [],557    "name": "uniqueCollectionType",558    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],559    "stateMutability": "view",560    "type": "function"561  }562]
after · tests/src/eth/nonFungibleAbi.json
1[2  {3    "anonymous": false,4    "inputs": [5      {6        "indexed": true,7        "internalType": "address",8        "name": "owner",9        "type": "address"10      },11      {12        "indexed": true,13        "internalType": "address",14        "name": "approved",15        "type": "address"16      },17      {18        "indexed": true,19        "internalType": "uint256",20        "name": "tokenId",21        "type": "uint256"22      }23    ],24    "name": "Approval",25    "type": "event"26  },27  {28    "anonymous": false,29    "inputs": [30      {31        "indexed": true,32        "internalType": "address",33        "name": "owner",34        "type": "address"35      },36      {37        "indexed": true,38        "internalType": "address",39        "name": "operator",40        "type": "address"41      },42      {43        "indexed": false,44        "internalType": "bool",45        "name": "approved",46        "type": "bool"47      }48    ],49    "name": "ApprovalForAll",50    "type": "event"51  },52  {53    "anonymous": false,54    "inputs": [],55    "name": "MintingFinished",56    "type": "event"57  },58  {59    "anonymous": false,60    "inputs": [61      {62        "indexed": true,63        "internalType": "address",64        "name": "from",65        "type": "address"66      },67      {68        "indexed": true,69        "internalType": "address",70        "name": "to",71        "type": "address"72      },73      {74        "indexed": true,75        "internalType": "uint256",76        "name": "tokenId",77        "type": "uint256"78      }79    ],80    "name": "Transfer",81    "type": "event"82  },83  {84    "inputs": [85      { "internalType": "address", "name": "newAdmin", "type": "address" }86    ],87    "name": "addCollectionAdmin",88    "outputs": [],89    "stateMutability": "nonpayable",90    "type": "function"91  },92  {93    "inputs": [94      { "internalType": "address", "name": "user", "type": "address" }95    ],96    "name": "addToCollectionAllowList",97    "outputs": [],98    "stateMutability": "nonpayable",99    "type": "function"100  },101  {102    "inputs": [103      { "internalType": "address", "name": "user", "type": "address" }104    ],105    "name": "allowed",106    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],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": [],150    "name": "collectionOwner",151    "outputs": [152      {153        "components": [154          { "internalType": "address", "name": "field_0", "type": "address" },155          { "internalType": "uint256", "name": "field_1", "type": "uint256" }156        ],157        "internalType": "struct Tuple17",158        "name": "",159        "type": "tuple"160      }161    ],162    "stateMutability": "view",163    "type": "function"164  },165  {166    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],167    "name": "collectionProperty",168    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],169    "stateMutability": "view",170    "type": "function"171  },172  {173    "inputs": [],174    "name": "collectionSponsor",175    "outputs": [176      {177        "components": [178          { "internalType": "address", "name": "field_0", "type": "address" },179          { "internalType": "uint256", "name": "field_1", "type": "uint256" }180        ],181        "internalType": "struct Tuple17",182        "name": "",183        "type": "tuple"184      }185    ],186    "stateMutability": "view",187    "type": "function"188  },189  {190    "inputs": [],191    "name": "confirmCollectionSponsorship",192    "outputs": [],193    "stateMutability": "nonpayable",194    "type": "function"195  },196  {197    "inputs": [],198    "name": "contractAddress",199    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],200    "stateMutability": "view",201    "type": "function"202  },203  {204    "inputs": [{ "internalType": "string", "name": "key", "type": "string" }],205    "name": "deleteCollectionProperty",206    "outputs": [],207    "stateMutability": "nonpayable",208    "type": "function"209  },210  {211    "inputs": [212      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },213      { "internalType": "string", "name": "key", "type": "string" }214    ],215    "name": "deleteProperty",216    "outputs": [],217    "stateMutability": "nonpayable",218    "type": "function"219  },220  {221    "inputs": [],222    "name": "finishMinting",223    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],224    "stateMutability": "nonpayable",225    "type": "function"226  },227  {228    "inputs": [229      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }230    ],231    "name": "getApproved",232    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],233    "stateMutability": "view",234    "type": "function"235  },236  {237    "inputs": [],238    "name": "hasCollectionPendingSponsor",239    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],240    "stateMutability": "view",241    "type": "function"242  },243  {244    "inputs": [245      { "internalType": "address", "name": "owner", "type": "address" },246      { "internalType": "address", "name": "operator", "type": "address" }247    ],248    "name": "isApprovedForAll",249    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],250    "stateMutability": "view",251    "type": "function"252  },253  {254    "inputs": [255      { "internalType": "address", "name": "user", "type": "address" }256    ],257    "name": "isOwnerOrAdmin",258    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],259    "stateMutability": "view",260    "type": "function"261  },262  {263    "inputs": [{ "internalType": "address", "name": "to", "type": "address" }],264    "name": "mint",265    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],266    "stateMutability": "nonpayable",267    "type": "function"268  },269  {270    "inputs": [271      { "internalType": "address", "name": "to", "type": "address" },272      {273        "components": [274          { "internalType": "uint256", "name": "field_0", "type": "uint256" },275          { "internalType": "string", "name": "field_1", "type": "string" }276        ],277        "internalType": "struct Tuple6[]",278        "name": "tokens",279        "type": "tuple[]"280      }281    ],282    "name": "mintBulkWithTokenURI",283    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],284    "stateMutability": "nonpayable",285    "type": "function"286  },287  {288    "inputs": [289      { "internalType": "address", "name": "to", "type": "address" },290      { "internalType": "string", "name": "tokenUri", "type": "string" }291    ],292    "name": "mintWithTokenURI",293    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],294    "stateMutability": "nonpayable",295    "type": "function"296  },297  {298    "inputs": [299      { "internalType": "address", "name": "to", "type": "address" },300      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },301      { "internalType": "string", "name": "tokenUri", "type": "string" }302    ],303    "name": "mintWithTokenURI",304    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],305    "stateMutability": "nonpayable",306    "type": "function"307  },308  {309    "inputs": [],310    "name": "mintingFinished",311    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],312    "stateMutability": "view",313    "type": "function"314  },315  {316    "inputs": [],317    "name": "name",318    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],319    "stateMutability": "view",320    "type": "function"321  },322  {323    "inputs": [],324    "name": "nextTokenId",325    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],326    "stateMutability": "view",327    "type": "function"328  },329  {330    "inputs": [331      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }332    ],333    "name": "ownerOf",334    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],335    "stateMutability": "view",336    "type": "function"337  },338  {339    "inputs": [340      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },341      { "internalType": "string", "name": "key", "type": "string" }342    ],343    "name": "property",344    "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }],345    "stateMutability": "view",346    "type": "function"347  },348  {349    "inputs": [350      { "internalType": "address", "name": "admin", "type": "address" }351    ],352    "name": "removeCollectionAdmin",353    "outputs": [],354    "stateMutability": "nonpayable",355    "type": "function"356  },357  {358    "inputs": [],359    "name": "removeCollectionSponsor",360    "outputs": [],361    "stateMutability": "nonpayable",362    "type": "function"363  },364  {365    "inputs": [366      { "internalType": "address", "name": "user", "type": "address" }367    ],368    "name": "removeFromCollectionAllowList",369    "outputs": [],370    "stateMutability": "nonpayable",371    "type": "function"372  },373  {374    "inputs": [375      { "internalType": "address", "name": "from", "type": "address" },376      { "internalType": "address", "name": "to", "type": "address" },377      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }378    ],379    "name": "safeTransferFrom",380    "outputs": [],381    "stateMutability": "nonpayable",382    "type": "function"383  },384  {385    "inputs": [386      { "internalType": "address", "name": "from", "type": "address" },387      { "internalType": "address", "name": "to", "type": "address" },388      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },389      { "internalType": "bytes", "name": "data", "type": "bytes" }390    ],391    "name": "safeTransferFrom",392    "outputs": [],393    "stateMutability": "nonpayable",394    "type": "function"395  },396  {397    "inputs": [398      { "internalType": "address", "name": "operator", "type": "address" },399      { "internalType": "bool", "name": "approved", "type": "bool" }400    ],401    "name": "setApprovalForAll",402    "outputs": [],403    "stateMutability": "nonpayable",404    "type": "function"405  },406  {407    "inputs": [{ "internalType": "uint8", "name": "mode", "type": "uint8" }],408    "name": "setCollectionAccess",409    "outputs": [],410    "stateMutability": "nonpayable",411    "type": "function"412  },413  {414    "inputs": [415      { "internalType": "string", "name": "limit", "type": "string" },416      { "internalType": "uint32", "name": "value", "type": "uint32" }417    ],418    "name": "setCollectionLimit",419    "outputs": [],420    "stateMutability": "nonpayable",421    "type": "function"422  },423  {424    "inputs": [425      { "internalType": "string", "name": "limit", "type": "string" },426      { "internalType": "bool", "name": "value", "type": "bool" }427    ],428    "name": "setCollectionLimit",429    "outputs": [],430    "stateMutability": "nonpayable",431    "type": "function"432  },433  {434    "inputs": [{ "internalType": "bool", "name": "mode", "type": "bool" }],435    "name": "setCollectionMintMode",436    "outputs": [],437    "stateMutability": "nonpayable",438    "type": "function"439  },440  {441    "inputs": [{ "internalType": "bool", "name": "enable", "type": "bool" }],442    "name": "setCollectionNesting",443    "outputs": [],444    "stateMutability": "nonpayable",445    "type": "function"446  },447  {448    "inputs": [449      { "internalType": "bool", "name": "enable", "type": "bool" },450      {451        "internalType": "address[]",452        "name": "collections",453        "type": "address[]"454      }455    ],456    "name": "setCollectionNesting",457    "outputs": [],458    "stateMutability": "nonpayable",459    "type": "function"460  },461  {462    "inputs": [463      { "internalType": "string", "name": "key", "type": "string" },464      { "internalType": "bytes", "name": "value", "type": "bytes" }465    ],466    "name": "setCollectionProperty",467    "outputs": [],468    "stateMutability": "nonpayable",469    "type": "function"470  },471  {472    "inputs": [473      { "internalType": "address", "name": "sponsor", "type": "address" }474    ],475    "name": "setCollectionSponsor",476    "outputs": [],477    "stateMutability": "nonpayable",478    "type": "function"479  },480  {481    "inputs": [482      { "internalType": "address", "name": "newOwner", "type": "address" }483    ],484    "name": "setOwner",485    "outputs": [],486    "stateMutability": "nonpayable",487    "type": "function"488  },489  {490    "inputs": [491      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },492      { "internalType": "string", "name": "key", "type": "string" },493      { "internalType": "bytes", "name": "value", "type": "bytes" }494    ],495    "name": "setProperty",496    "outputs": [],497    "stateMutability": "nonpayable",498    "type": "function"499  },500  {501    "inputs": [502      { "internalType": "string", "name": "key", "type": "string" },503      { "internalType": "bool", "name": "isMutable", "type": "bool" },504      { "internalType": "bool", "name": "collectionAdmin", "type": "bool" },505      { "internalType": "bool", "name": "tokenOwner", "type": "bool" }506    ],507    "name": "setTokenPropertyPermission",508    "outputs": [],509    "stateMutability": "nonpayable",510    "type": "function"511  },512  {513    "inputs": [514      { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" }515    ],516    "name": "supportsInterface",517    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],518    "stateMutability": "view",519    "type": "function"520  },521  {522    "inputs": [],523    "name": "symbol",524    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],525    "stateMutability": "view",526    "type": "function"527  },528  {529    "inputs": [530      { "internalType": "uint256", "name": "index", "type": "uint256" }531    ],532    "name": "tokenByIndex",533    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],534    "stateMutability": "view",535    "type": "function"536  },537  {538    "inputs": [539      { "internalType": "address", "name": "owner", "type": "address" },540      { "internalType": "uint256", "name": "index", "type": "uint256" }541    ],542    "name": "tokenOfOwnerByIndex",543    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],544    "stateMutability": "view",545    "type": "function"546  },547  {548    "inputs": [549      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }550    ],551    "name": "tokenURI",552    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],553    "stateMutability": "view",554    "type": "function"555  },556  {557    "inputs": [],558    "name": "totalSupply",559    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],560    "stateMutability": "view",561    "type": "function"562  },563  {564    "inputs": [565      { "internalType": "address", "name": "to", "type": "address" },566      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }567    ],568    "name": "transfer",569    "outputs": [],570    "stateMutability": "nonpayable",571    "type": "function"572  },573  {574    "inputs": [575      { "internalType": "address", "name": "from", "type": "address" },576      { "internalType": "address", "name": "to", "type": "address" },577      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }578    ],579    "name": "transferFrom",580    "outputs": [],581    "stateMutability": "nonpayable",582    "type": "function"583  },584  {585    "inputs": [],586    "name": "uniqueCollectionType",587    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],588    "stateMutability": "view",589    "type": "function"590  }591]
modifiedtests/src/eth/reFungibleAbi.jsondiffbeforeafterboth
--- a/tests/src/eth/reFungibleAbi.json
+++ b/tests/src/eth/reFungibleAbi.json
@@ -269,6 +269,24 @@
   {
     "inputs": [
       { "internalType": "address", "name": "to", "type": "address" },
+      {
+        "components": [
+          { "internalType": "uint256", "name": "field_0", "type": "uint256" },
+          { "internalType": "string", "name": "field_1", "type": "string" }
+        ],
+        "internalType": "struct Tuple6[]",
+        "name": "tokens",
+        "type": "tuple[]"
+      }
+    ],
+    "name": "mintBulkWithTokenURI",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
       { "internalType": "string", "name": "tokenUri", "type": "string" }
     ],
     "name": "mintWithTokenURI",
@@ -277,6 +295,17 @@
     "type": "function"
   },
   {
+    "inputs": [
+      { "internalType": "address", "name": "to", "type": "address" },
+      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
+      { "internalType": "string", "name": "tokenUri", "type": "string" }
+    ],
+    "name": "mintWithTokenURI",
+    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
+    "stateMutability": "nonpayable",
+    "type": "function"
+  },
+  {
     "inputs": [],
     "name": "mintingFinished",
     "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],