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

difftreelog

fix rename method to collectionSponsor

Trubnikov Sergey2022-09-19parent: #280815c.patch.diff
in: master

21 files changed

modifiedpallets/common/src/erc.rsdiffbeforeafterboth
194 /// Get current sponsor.194 /// Get current sponsor.
195 ///195 ///
196 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.196 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
197 fn get_collection_sponsor(&self) -> Result<(address, uint256)> {197 fn collection_sponsor(&self) -> Result<(address, uint256)> {
198 let sponsor = match self.collection.sponsorship.sponsor() {198 let sponsor = match self.collection.sponsorship.sponsor() {
199 Some(sponsor) => sponsor,199 Some(sponsor) => sponsor,
200 None => return Ok(Default::default()),200 None => return Ok(Default::default()),
modifiedpallets/evm-contract-helpers/src/stubs/ContractHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/evm-contract-helpers/src/stubs/ContractHelpers.soldiffbeforeafterboth

no syntactic changes

modifiedpallets/fungible/src/stubs/UniqueFungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/fungible/src/stubs/UniqueFungible.soldiffbeforeafterboth
22}18}
2319
24/// @title A contract that allows you to work with collections.20/// @title A contract that allows you to work with collections.
25/// @dev the ERC-165 identifier for this interface is 0x9f70d4e021/// @dev the ERC-165 identifier for this interface is 0x47dbc105
26contract Collection is Dummy, ERC165 {22contract Collection is Dummy, ERC165 {
27 /// Set collection property.23 /// Set collection property.
28 ///24 ///
95 dummy = 0;85 dummy = 0;
96 }86 }
9787
88 /// Whether there is a pending sponsor.
98 /// @dev EVM selector for this function is: 0x058ac185,89 /// @dev EVM selector for this function is: 0x058ac185,
99 /// or in textual repr: hasCollectionPendingSponsor()90 /// or in textual repr: hasCollectionPendingSponsor()
100 function hasCollectionPendingSponsor() public view returns (bool) {91 function hasCollectionPendingSponsor() public view returns (bool) {
124 /// Get current sponsor.115 /// Get current sponsor.
125 ///116 ///
126 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.117 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
127 /// @dev EVM selector for this function is: 0xb66bbc14,118 /// @dev EVM selector for this function is: 0x6ec0a9f1,
128 /// or in textual repr: getCollectionSponsor()119 /// or in textual repr: collectionSponsor()
129 function getCollectionSponsor() public view returns (Tuple6 memory) {120 function collectionSponsor() public view returns (Tuple6 memory) {
130 require(false, stub_error);121 require(false, stub_error);
131 dummy;122 dummy;
132 return Tuple6(0x0000000000000000000000000000000000000000, 0);123 return Tuple6(0x0000000000000000000000000000000000000000, 0);
353 /// @return `Fungible` or `NFT` or `ReFungible`342 /// @return `Fungible` or `NFT` or `ReFungible`
354 /// @dev EVM selector for this function is: 0xd34b55b8,343 /// @dev EVM selector for this function is: 0xd34b55b8,
355 /// or in textual repr: uniqueCollectionType()344 /// or in textual repr: uniqueCollectionType()
356 function uniqueCollectionType() public returns (string memory) {345 function uniqueCollectionType() public view returns (string memory) {
357 require(false, stub_error);346 require(false, stub_error);
358 dummy = 0;347 dummy;
359 return "";348 return "";
360 }349 }
361350
modifiedpallets/nonfungible/src/stubs/UniqueNFT.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/nonfungible/src/stubs/UniqueNFT.soldiffbeforeafterboth
99}91}
10092
101/// @title A contract that allows you to work with collections.93/// @title A contract that allows you to work with collections.
102/// @dev the ERC-165 identifier for this interface is 0x9f70d4e094/// @dev the ERC-165 identifier for this interface is 0x47dbc105
103contract Collection is Dummy, ERC165 {95contract Collection is Dummy, ERC165 {
104 /// Set collection property.96 /// Set collection property.
105 ///97 ///
172 dummy = 0;158 dummy = 0;
173 }159 }
174160
161 /// Whether there is a pending sponsor.
175 /// @dev EVM selector for this function is: 0x058ac185,162 /// @dev EVM selector for this function is: 0x058ac185,
176 /// or in textual repr: hasCollectionPendingSponsor()163 /// or in textual repr: hasCollectionPendingSponsor()
177 function hasCollectionPendingSponsor() public view returns (bool) {164 function hasCollectionPendingSponsor() public view returns (bool) {
201 /// Get current sponsor.188 /// Get current sponsor.
202 ///189 ///
203 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.190 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
204 /// @dev EVM selector for this function is: 0xb66bbc14,191 /// @dev EVM selector for this function is: 0x6ec0a9f1,
205 /// or in textual repr: getCollectionSponsor()192 /// or in textual repr: collectionSponsor()
206 function getCollectionSponsor() public view returns (Tuple17 memory) {193 function collectionSponsor() public view returns (Tuple17 memory) {
207 require(false, stub_error);194 require(false, stub_error);
208 dummy;195 dummy;
209 return Tuple17(0x0000000000000000000000000000000000000000, 0);196 return Tuple17(0x0000000000000000000000000000000000000000, 0);
430 /// @return `Fungible` or `NFT` or `ReFungible`415 /// @return `Fungible` or `NFT` or `ReFungible`
431 /// @dev EVM selector for this function is: 0xd34b55b8,416 /// @dev EVM selector for this function is: 0xd34b55b8,
432 /// or in textual repr: uniqueCollectionType()417 /// or in textual repr: uniqueCollectionType()
433 function uniqueCollectionType() public returns (string memory) {418 function uniqueCollectionType() public view returns (string memory) {
434 require(false, stub_error);419 require(false, stub_error);
435 dummy = 0;420 dummy;
436 return "";421 return "";
437 }422 }
438423
modifiedpallets/refungible/src/stubs/UniqueRefungible.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungible.soldiffbeforeafterboth
99}91}
10092
101/// @title A contract that allows you to work with collections.93/// @title A contract that allows you to work with collections.
102/// @dev the ERC-165 identifier for this interface is 0x9f70d4e094/// @dev the ERC-165 identifier for this interface is 0x47dbc105
103contract Collection is Dummy, ERC165 {95contract Collection is Dummy, ERC165 {
104 /// Set collection property.96 /// Set collection property.
105 ///97 ///
172 dummy = 0;158 dummy = 0;
173 }159 }
174160
161 /// Whether there is a pending sponsor.
175 /// @dev EVM selector for this function is: 0x058ac185,162 /// @dev EVM selector for this function is: 0x058ac185,
176 /// or in textual repr: hasCollectionPendingSponsor()163 /// or in textual repr: hasCollectionPendingSponsor()
177 function hasCollectionPendingSponsor() public view returns (bool) {164 function hasCollectionPendingSponsor() public view returns (bool) {
201 /// Get current sponsor.188 /// Get current sponsor.
202 ///189 ///
203 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.190 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
204 /// @dev EVM selector for this function is: 0xb66bbc14,191 /// @dev EVM selector for this function is: 0x6ec0a9f1,
205 /// or in textual repr: getCollectionSponsor()192 /// or in textual repr: collectionSponsor()
206 function getCollectionSponsor() public view returns (Tuple17 memory) {193 function collectionSponsor() public view returns (Tuple17 memory) {
207 require(false, stub_error);194 require(false, stub_error);
208 dummy;195 dummy;
209 return Tuple17(0x0000000000000000000000000000000000000000, 0);196 return Tuple17(0x0000000000000000000000000000000000000000, 0);
430 /// @return `Fungible` or `NFT` or `ReFungible`415 /// @return `Fungible` or `NFT` or `ReFungible`
431 /// @dev EVM selector for this function is: 0xd34b55b8,416 /// @dev EVM selector for this function is: 0xd34b55b8,
432 /// or in textual repr: uniqueCollectionType()417 /// or in textual repr: uniqueCollectionType()
433 function uniqueCollectionType() public returns (string memory) {418 function uniqueCollectionType() public view returns (string memory) {
434 require(false, stub_error);419 require(false, stub_error);
435 dummy = 0;420 dummy;
436 return "";421 return "";
437 }422 }
438423
modifiedpallets/refungible/src/stubs/UniqueRefungibleToken.rawdiffbeforeafterboth

binary blob — no preview

modifiedpallets/refungible/src/stubs/UniqueRefungibleToken.soldiffbeforeafterboth

no syntactic changes

modifiedpallets/unique/src/eth/stubs/CollectionHelpers.rawdiffbeforeafterboth

binary blob — no preview

modifiedtests/src/eth/api/ContractHelpers.soldiffbeforeafterboth

no syntactic changes

modifiedtests/src/eth/api/UniqueFungible.soldiffbeforeafterboth
13}13}
1414
15/// @title A contract that allows you to work with collections.15/// @title A contract that allows you to work with collections.
16/// @dev the ERC-165 identifier for this interface is 0x9f70d4e016/// @dev the ERC-165 identifier for this interface is 0x47dbc105
17interface Collection is Dummy, ERC165 {17interface Collection is Dummy, ERC165 {
18 /// Set collection property.18 /// Set collection property.
19 ///19 ///
62 /// or in textual repr: setCollectionSponsorSubstrate(uint256)58 /// or in textual repr: setCollectionSponsorSubstrate(uint256)
63 function setCollectionSponsorSubstrate(uint256 sponsor) external;59 function setCollectionSponsorSubstrate(uint256 sponsor) external;
6460
61 /// Whether there is a pending sponsor.
65 /// @dev EVM selector for this function is: 0x058ac185,62 /// @dev EVM selector for this function is: 0x058ac185,
66 /// or in textual repr: hasCollectionPendingSponsor()63 /// or in textual repr: hasCollectionPendingSponsor()
67 function hasCollectionPendingSponsor() external view returns (bool);64 function hasCollectionPendingSponsor() external view returns (bool);
81 /// Get current sponsor.78 /// Get current sponsor.
82 ///79 ///
83 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.80 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
84 /// @dev EVM selector for this function is: 0xb66bbc14,81 /// @dev EVM selector for this function is: 0x6ec0a9f1,
85 /// or in textual repr: getCollectionSponsor()82 /// or in textual repr: collectionSponsor()
86 function getCollectionSponsor() external view returns (Tuple6 memory);83 function collectionSponsor() external view returns (Tuple6 memory);
8784
88 /// Set limits for the collection.85 /// Set limits for the collection.
89 /// @dev Throws error if limit not found.86 /// @dev Throws error if limit not found.
227 /// @return `Fungible` or `NFT` or `ReFungible`223 /// @return `Fungible` or `NFT` or `ReFungible`
228 /// @dev EVM selector for this function is: 0xd34b55b8,224 /// @dev EVM selector for this function is: 0xd34b55b8,
229 /// or in textual repr: uniqueCollectionType()225 /// or in textual repr: uniqueCollectionType()
230 function uniqueCollectionType() external returns (string memory);226 function uniqueCollectionType() external view returns (string memory);
231227
232 /// Get collection owner.228 /// Get collection owner.
233 ///229 ///
modifiedtests/src/eth/api/UniqueNFT.soldiffbeforeafterboth
65}62}
6663
67/// @title A contract that allows you to work with collections.64/// @title A contract that allows you to work with collections.
68/// @dev the ERC-165 identifier for this interface is 0x9f70d4e065/// @dev the ERC-165 identifier for this interface is 0x47dbc105
69interface Collection is Dummy, ERC165 {66interface Collection is Dummy, ERC165 {
70 /// Set collection property.67 /// Set collection property.
71 ///68 ///
114 /// or in textual repr: setCollectionSponsorSubstrate(uint256)107 /// or in textual repr: setCollectionSponsorSubstrate(uint256)
115 function setCollectionSponsorSubstrate(uint256 sponsor) external;108 function setCollectionSponsorSubstrate(uint256 sponsor) external;
116109
110 /// Whether there is a pending sponsor.
117 /// @dev EVM selector for this function is: 0x058ac185,111 /// @dev EVM selector for this function is: 0x058ac185,
118 /// or in textual repr: hasCollectionPendingSponsor()112 /// or in textual repr: hasCollectionPendingSponsor()
119 function hasCollectionPendingSponsor() external view returns (bool);113 function hasCollectionPendingSponsor() external view returns (bool);
133 /// Get current sponsor.127 /// Get current sponsor.
134 ///128 ///
135 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.129 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
136 /// @dev EVM selector for this function is: 0xb66bbc14,130 /// @dev EVM selector for this function is: 0x6ec0a9f1,
137 /// or in textual repr: getCollectionSponsor()131 /// or in textual repr: collectionSponsor()
138 function getCollectionSponsor() external view returns (Tuple17 memory);132 function collectionSponsor() external view returns (Tuple17 memory);
139133
140 /// Set limits for the collection.134 /// Set limits for the collection.
141 /// @dev Throws error if limit not found.135 /// @dev Throws error if limit not found.
279 /// @return `Fungible` or `NFT` or `ReFungible`272 /// @return `Fungible` or `NFT` or `ReFungible`
280 /// @dev EVM selector for this function is: 0xd34b55b8,273 /// @dev EVM selector for this function is: 0xd34b55b8,
281 /// or in textual repr: uniqueCollectionType()274 /// or in textual repr: uniqueCollectionType()
282 function uniqueCollectionType() external returns (string memory);275 function uniqueCollectionType() external view returns (string memory);
283276
284 /// Get collection owner.277 /// Get collection owner.
285 ///278 ///
modifiedtests/src/eth/api/UniqueRefungible.soldiffbeforeafterboth
65}62}
6663
67/// @title A contract that allows you to work with collections.64/// @title A contract that allows you to work with collections.
68/// @dev the ERC-165 identifier for this interface is 0x9f70d4e065/// @dev the ERC-165 identifier for this interface is 0x47dbc105
69interface Collection is Dummy, ERC165 {66interface Collection is Dummy, ERC165 {
70 /// Set collection property.67 /// Set collection property.
71 ///68 ///
114 /// or in textual repr: setCollectionSponsorSubstrate(uint256)107 /// or in textual repr: setCollectionSponsorSubstrate(uint256)
115 function setCollectionSponsorSubstrate(uint256 sponsor) external;108 function setCollectionSponsorSubstrate(uint256 sponsor) external;
116109
110 /// Whether there is a pending sponsor.
117 /// @dev EVM selector for this function is: 0x058ac185,111 /// @dev EVM selector for this function is: 0x058ac185,
118 /// or in textual repr: hasCollectionPendingSponsor()112 /// or in textual repr: hasCollectionPendingSponsor()
119 function hasCollectionPendingSponsor() external view returns (bool);113 function hasCollectionPendingSponsor() external view returns (bool);
133 /// Get current sponsor.127 /// Get current sponsor.
134 ///128 ///
135 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.129 /// @return Tuble with sponsor address and his substrate mirror. If there is no confirmed sponsor error "Contract has no sponsor" throw.
136 /// @dev EVM selector for this function is: 0xb66bbc14,130 /// @dev EVM selector for this function is: 0x6ec0a9f1,
137 /// or in textual repr: getCollectionSponsor()131 /// or in textual repr: collectionSponsor()
138 function getCollectionSponsor() external view returns (Tuple17 memory);132 function collectionSponsor() external view returns (Tuple17 memory);
139133
140 /// Set limits for the collection.134 /// Set limits for the collection.
141 /// @dev Throws error if limit not found.135 /// @dev Throws error if limit not found.
279 /// @return `Fungible` or `NFT` or `ReFungible`272 /// @return `Fungible` or `NFT` or `ReFungible`
280 /// @dev EVM selector for this function is: 0xd34b55b8,273 /// @dev EVM selector for this function is: 0xd34b55b8,
281 /// or in textual repr: uniqueCollectionType()274 /// or in textual repr: uniqueCollectionType()
282 function uniqueCollectionType() external returns (string memory);275 function uniqueCollectionType() external view returns (string memory);
283276
284 /// Get collection owner.277 /// Get collection owner.
285 ///278 ///
modifiedtests/src/eth/api/UniqueRefungibleToken.soldiffbeforeafterboth

no syntactic changes

modifiedtests/src/eth/collectionSponsoring.test.tsdiffbeforeafterboth
56 await submitTransactionAsync(sponsor, confirmTx);56 await submitTransactionAsync(sponsor, confirmTx);
57 expect(await collectionEvm.methods.hasCollectionPendingSponsor().call({from: owner})).to.be.false;57 expect(await collectionEvm.methods.hasCollectionPendingSponsor().call({from: owner})).to.be.false;
58 58
59 const sponsorTuple = await collectionEvm.methods.getCollectionSponsor().call({from: owner});59 const sponsorTuple = await collectionEvm.methods.collectionSponsor().call({from: owner});
60 expect(bigIntToSub(api, BigInt(sponsorTuple[1]))).to.be.eq(sponsor.address);60 expect(bigIntToSub(api, BigInt(sponsorTuple[1]))).to.be.eq(sponsor.address);
61 });61 });
6262
77 77
78 await collectionEvm.methods.removeCollectionSponsor().send({from: owner});78 await collectionEvm.methods.removeCollectionSponsor().send({from: owner});
79 79
80 const sponsorTuple = await collectionEvm.methods.getCollectionSponsor().call({from: owner});80 const sponsorTuple = await collectionEvm.methods.collectionSponsor().call({from: owner});
81 expect(sponsorTuple.field_0).to.be.eq('0x0000000000000000000000000000000000000000');81 expect(sponsorTuple.field_0).to.be.eq('0x0000000000000000000000000000000000000000');
82 });82 });
8383
modifiedtests/src/eth/fungibleAbi.jsondiffbeforeafterboth
157 "stateMutability": "view",157 "stateMutability": "view",
158 "type": "function"158 "type": "function"
159 },159 },
160 {
161 "inputs": [],
162 "name": "collectionSponsor",
163 "outputs": [
164 {
165 "components": [
166 { "internalType": "address", "name": "field_0", "type": "address" },
167 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
168 ],
169 "internalType": "struct Tuple6",
170 "name": "",
171 "type": "tuple"
172 }
173 ],
174 "stateMutability": "view",
175 "type": "function"
176 },
160 {177 {
161 "inputs": [],178 "inputs": [],
162 "name": "confirmCollectionSponsorship",179 "name": "confirmCollectionSponsorship",
185 "stateMutability": "nonpayable",202 "stateMutability": "nonpayable",
186 "type": "function"203 "type": "function"
187 },204 },
188 {
189 "inputs": [],
190 "name": "getCollectionSponsor",
191 "outputs": [
192 {
193 "components": [
194 { "internalType": "address", "name": "field_0", "type": "address" },
195 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
196 ],
197 "internalType": "struct Tuple6",
198 "name": "",
199 "type": "tuple"
200 }
201 ],
202 "stateMutability": "view",
203 "type": "function"
204 },
205 {205 {
206 "inputs": [],206 "inputs": [],
207 "name": "hasCollectionPendingSponsor",207 "name": "hasCollectionPendingSponsor",
453 "inputs": [],453 "inputs": [],
454 "name": "uniqueCollectionType",454 "name": "uniqueCollectionType",
455 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],455 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
456 "stateMutability": "nonpayable",456 "stateMutability": "view",
457 "type": "function"457 "type": "function"
458 }458 }
459]459]
modifiedtests/src/eth/nonFungibleAbi.jsondiffbeforeafterboth
187 "stateMutability": "view",187 "stateMutability": "view",
188 "type": "function"188 "type": "function"
189 },189 },
190 {
191 "inputs": [],
192 "name": "collectionSponsor",
193 "outputs": [
194 {
195 "components": [
196 { "internalType": "address", "name": "field_0", "type": "address" },
197 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
198 ],
199 "internalType": "struct Tuple17",
200 "name": "",
201 "type": "tuple"
202 }
203 ],
204 "stateMutability": "view",
205 "type": "function"
206 },
190 {207 {
191 "inputs": [],208 "inputs": [],
192 "name": "confirmCollectionSponsorship",209 "name": "confirmCollectionSponsorship",
234 "stateMutability": "view",251 "stateMutability": "view",
235 "type": "function"252 "type": "function"
236 },253 },
237 {
238 "inputs": [],
239 "name": "getCollectionSponsor",
240 "outputs": [
241 {
242 "components": [
243 { "internalType": "address", "name": "field_0", "type": "address" },
244 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
245 ],
246 "internalType": "struct Tuple17",
247 "name": "",
248 "type": "tuple"
249 }
250 ],
251 "stateMutability": "view",
252 "type": "function"
253 },
254 {254 {
255 "inputs": [],255 "inputs": [],
256 "name": "hasCollectionPendingSponsor",256 "name": "hasCollectionPendingSponsor",
651 "inputs": [],651 "inputs": [],
652 "name": "uniqueCollectionType",652 "name": "uniqueCollectionType",
653 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],653 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
654 "stateMutability": "nonpayable",654 "stateMutability": "view",
655 "type": "function"655 "type": "function"
656 }656 }
657]657]
modifiedtests/src/eth/reFungibleAbi.jsondiffbeforeafterboth
187 "stateMutability": "view",187 "stateMutability": "view",
188 "type": "function"188 "type": "function"
189 },189 },
190 {
191 "inputs": [],
192 "name": "collectionSponsor",
193 "outputs": [
194 {
195 "components": [
196 { "internalType": "address", "name": "field_0", "type": "address" },
197 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
198 ],
199 "internalType": "struct Tuple17",
200 "name": "",
201 "type": "tuple"
202 }
203 ],
204 "stateMutability": "view",
205 "type": "function"
206 },
190 {207 {
191 "inputs": [],208 "inputs": [],
192 "name": "confirmCollectionSponsorship",209 "name": "confirmCollectionSponsorship",
234 "stateMutability": "view",251 "stateMutability": "view",
235 "type": "function"252 "type": "function"
236 },253 },
237 {
238 "inputs": [],
239 "name": "getCollectionSponsor",
240 "outputs": [
241 {
242 "components": [
243 { "internalType": "address", "name": "field_0", "type": "address" },
244 { "internalType": "uint256", "name": "field_1", "type": "uint256" }
245 ],
246 "internalType": "struct Tuple17",
247 "name": "",
248 "type": "tuple"
249 }
250 ],
251 "stateMutability": "view",
252 "type": "function"
253 },
254 {254 {
255 "inputs": [],255 "inputs": [],
256 "name": "hasCollectionPendingSponsor",256 "name": "hasCollectionPendingSponsor",
660 "inputs": [],660 "inputs": [],
661 "name": "uniqueCollectionType",661 "name": "uniqueCollectionType",
662 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],662 "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
663 "stateMutability": "nonpayable",663 "stateMutability": "view",
664 "type": "function"664 "type": "function"
665 }665 }
666]666]