@zoralabs/comments-contracts 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/.env.example +11 -0
  2. package/.turbo/turbo-build.log +60 -0
  3. package/LICENSE +21 -0
  4. package/README.md +70 -0
  5. package/_imagine/Enjoy.sol +41 -0
  6. package/abis/AccessControlUpgradeable.json +250 -0
  7. package/abis/Address.json +29 -0
  8. package/abis/Comments.json +62 -0
  9. package/abis/CommentsDeployerBase.json +15 -0
  10. package/abis/CommentsImpl.json +1750 -0
  11. package/abis/CommentsPermitTest.json +847 -0
  12. package/abis/CommentsTest.json +986 -0
  13. package/abis/CommentsTestBase.json +577 -0
  14. package/abis/Comments_mintAndCommentTest.json +690 -0
  15. package/abis/ContextUpgradeable.json +25 -0
  16. package/abis/ContractVersionBase.json +15 -0
  17. package/abis/Create2.json +28 -0
  18. package/abis/DeployImpl.json +22 -0
  19. package/abis/DeployNonDeterministic.json +22 -0
  20. package/abis/DeployScript.json +22 -0
  21. package/abis/DeterministicDeployerAndCaller.json +315 -0
  22. package/abis/DeterministicUUPSProxyDeployer.json +167 -0
  23. package/abis/ECDSA.json +29 -0
  24. package/abis/EIP712.json +67 -0
  25. package/abis/EIP712UpgradeableWithChainId.json +25 -0
  26. package/abis/ERC1155.json +416 -0
  27. package/abis/ERC1155Holder.json +99 -0
  28. package/abis/ERC165.json +21 -0
  29. package/abis/ERC165Upgradeable.json +44 -0
  30. package/abis/ERC1967Proxy.json +67 -0
  31. package/abis/ERC1967Utils.json +85 -0
  32. package/abis/GenerateDeterministicParams.json +22 -0
  33. package/abis/IAccessControl.json +195 -0
  34. package/abis/IBeacon.json +15 -0
  35. package/abis/IComments.json +654 -0
  36. package/abis/IContractMetadata.json +28 -0
  37. package/abis/IERC1155.json +295 -0
  38. package/abis/IERC1155Errors.json +104 -0
  39. package/abis/IERC1155MetadataURI.json +314 -0
  40. package/abis/IERC1155Receiver.json +99 -0
  41. package/abis/IERC1271.json +26 -0
  42. package/abis/IERC165.json +21 -0
  43. package/abis/IERC1822Proxiable.json +15 -0
  44. package/abis/IERC20.json +224 -0
  45. package/abis/IERC20Errors.json +88 -0
  46. package/abis/IERC5267.json +51 -0
  47. package/abis/IERC721.json +287 -0
  48. package/abis/IERC721Enumerable.json +343 -0
  49. package/abis/IERC721Errors.json +105 -0
  50. package/abis/IERC721Metadata.json +332 -0
  51. package/abis/IERC721TokenReceiver.json +36 -0
  52. package/abis/IHasContractName.json +15 -0
  53. package/abis/IImmutableCreate2Factory.json +93 -0
  54. package/abis/IMulticall3.json +440 -0
  55. package/abis/IProtocolRewards.json +342 -0
  56. package/abis/ISafe.json +15 -0
  57. package/abis/ISymbol.json +15 -0
  58. package/abis/IVersionedContract.json +15 -0
  59. package/abis/IZoraCreator1155.json +343 -0
  60. package/abis/ImmutableCreate2FactoryUtils.json +15 -0
  61. package/abis/Initializable.json +25 -0
  62. package/abis/LibString.json +7 -0
  63. package/abis/Math.json +7 -0
  64. package/abis/Mock1155.json +547 -0
  65. package/abis/MockERC20.json +322 -0
  66. package/abis/MockERC721.json +350 -0
  67. package/abis/MockMinter.json +64 -0
  68. package/abis/OwnableUpgradeable.json +99 -0
  69. package/abis/ProtocolRewards.json +494 -0
  70. package/abis/Proxy.json +6 -0
  71. package/abis/ProxyDeployerScript.json +15 -0
  72. package/abis/ProxyShim.json +112 -0
  73. package/abis/Script.json +15 -0
  74. package/abis/ShortStrings.json +18 -0
  75. package/abis/StdAssertions.json +379 -0
  76. package/abis/StdInvariant.json +180 -0
  77. package/abis/Strings.json +18 -0
  78. package/abis/Test.json +570 -0
  79. package/abis/UUPSUpgradeable.json +130 -0
  80. package/abis/UnorderedNoncesUpgradeable.json +42 -0
  81. package/abis/Vm.json +8627 -0
  82. package/abis/VmSafe.json +7297 -0
  83. package/abis/stdError.json +119 -0
  84. package/abis/stdStorageSafe.json +52 -0
  85. package/addresses/999999999.json +4 -0
  86. package/deterministicConfig/comments.json +8 -0
  87. package/dist/index.cjs +935 -0
  88. package/dist/index.cjs.map +1 -0
  89. package/dist/index.d.ts +2 -0
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/index.js +908 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/types.d.ts +4 -0
  94. package/dist/types.d.ts.map +1 -0
  95. package/dist/wagmiGenerated.d.ts +1354 -0
  96. package/dist/wagmiGenerated.d.ts.map +1 -0
  97. package/foundry.toml +24 -0
  98. package/package/index.ts +4 -0
  99. package/package/types.ts +5 -0
  100. package/package/wagmiGenerated.ts +907 -0
  101. package/package.json +62 -0
  102. package/remappings.txt +8 -0
  103. package/script/CommentsDeployerBase.sol +60 -0
  104. package/script/Deploy.s.sol +66 -0
  105. package/script/DeployImpl.s.sol +26 -0
  106. package/script/DeployNonDeterministic.s.sol +43 -0
  107. package/script/GenerateDeterministicParams.s.sol +55 -0
  108. package/script/bundle-abis.ts +109 -0
  109. package/script/storage-check.sh +57 -0
  110. package/script/update-contract-version.ts +63 -0
  111. package/scripts/abis.ts +3 -0
  112. package/scripts/backfillComments.ts +176 -0
  113. package/scripts/generateCommentsTestData.ts +247 -0
  114. package/scripts/getCommentsAddresses.ts +10 -0
  115. package/scripts/queries.ts +73 -0
  116. package/scripts/queryAndSaveComments.ts +48 -0
  117. package/scripts/queryQuantityOfComments.ts +53 -0
  118. package/scripts/signDeployAndCall.ts +51 -0
  119. package/scripts/turnkey.ts +36 -0
  120. package/scripts/utils.ts +127 -0
  121. package/scripts/writeComments.ts +198 -0
  122. package/slither.config.json +7 -0
  123. package/src/CommentsImpl.sol +552 -0
  124. package/src/deployments/CommentsDeployment.sol +14 -0
  125. package/src/interfaces/IComments.sol +156 -0
  126. package/src/interfaces/IZoraCreator1155.sol +12 -0
  127. package/src/proxy/Comments.sol +43 -0
  128. package/src/utils/EIP712UpgradeableWithChainId.sol +36 -0
  129. package/src/version/ContractVersionBase.sol +14 -0
  130. package/test/Comments.t.sol +482 -0
  131. package/test/CommentsTestBase.sol +86 -0
  132. package/test/Comments_mintAndComment.t.sol +101 -0
  133. package/test/Comments_permit.t.sol +397 -0
  134. package/test/mocks/Mock1155.sol +50 -0
  135. package/test/mocks/MockMinter.sol +29 -0
  136. package/test/mocks/ProtocolRewards.sol +1497 -0
  137. package/tsconfig.build.json +10 -0
  138. package/tsconfig.json +9 -0
  139. package/tsup.config.ts +11 -0
  140. package/wagmi.config.ts +14 -0
@@ -0,0 +1,654 @@
1
+ [
2
+ {
3
+ "type": "function",
4
+ "name": "comment",
5
+ "inputs": [
6
+ {
7
+ "name": "commenter",
8
+ "type": "address",
9
+ "internalType": "address"
10
+ },
11
+ {
12
+ "name": "contractAddress",
13
+ "type": "address",
14
+ "internalType": "address"
15
+ },
16
+ {
17
+ "name": "tokenId",
18
+ "type": "uint256",
19
+ "internalType": "uint256"
20
+ },
21
+ {
22
+ "name": "text",
23
+ "type": "string",
24
+ "internalType": "string"
25
+ },
26
+ {
27
+ "name": "replyTo",
28
+ "type": "tuple",
29
+ "internalType": "struct IComments.CommentIdentifier",
30
+ "components": [
31
+ {
32
+ "name": "commenter",
33
+ "type": "address",
34
+ "internalType": "address"
35
+ },
36
+ {
37
+ "name": "contractAddress",
38
+ "type": "address",
39
+ "internalType": "address"
40
+ },
41
+ {
42
+ "name": "tokenId",
43
+ "type": "uint256",
44
+ "internalType": "uint256"
45
+ },
46
+ {
47
+ "name": "nonce",
48
+ "type": "bytes32",
49
+ "internalType": "bytes32"
50
+ }
51
+ ]
52
+ },
53
+ {
54
+ "name": "referrer",
55
+ "type": "address",
56
+ "internalType": "address"
57
+ }
58
+ ],
59
+ "outputs": [
60
+ {
61
+ "name": "",
62
+ "type": "tuple",
63
+ "internalType": "struct IComments.CommentIdentifier",
64
+ "components": [
65
+ {
66
+ "name": "commenter",
67
+ "type": "address",
68
+ "internalType": "address"
69
+ },
70
+ {
71
+ "name": "contractAddress",
72
+ "type": "address",
73
+ "internalType": "address"
74
+ },
75
+ {
76
+ "name": "tokenId",
77
+ "type": "uint256",
78
+ "internalType": "uint256"
79
+ },
80
+ {
81
+ "name": "nonce",
82
+ "type": "bytes32",
83
+ "internalType": "bytes32"
84
+ }
85
+ ]
86
+ }
87
+ ],
88
+ "stateMutability": "payable"
89
+ },
90
+ {
91
+ "type": "function",
92
+ "name": "delegateComment",
93
+ "inputs": [
94
+ {
95
+ "name": "commenter",
96
+ "type": "address",
97
+ "internalType": "address"
98
+ },
99
+ {
100
+ "name": "contractAddress",
101
+ "type": "address",
102
+ "internalType": "address"
103
+ },
104
+ {
105
+ "name": "tokenId",
106
+ "type": "uint256",
107
+ "internalType": "uint256"
108
+ },
109
+ {
110
+ "name": "text",
111
+ "type": "string",
112
+ "internalType": "string"
113
+ },
114
+ {
115
+ "name": "replyTo",
116
+ "type": "tuple",
117
+ "internalType": "struct IComments.CommentIdentifier",
118
+ "components": [
119
+ {
120
+ "name": "commenter",
121
+ "type": "address",
122
+ "internalType": "address"
123
+ },
124
+ {
125
+ "name": "contractAddress",
126
+ "type": "address",
127
+ "internalType": "address"
128
+ },
129
+ {
130
+ "name": "tokenId",
131
+ "type": "uint256",
132
+ "internalType": "uint256"
133
+ },
134
+ {
135
+ "name": "nonce",
136
+ "type": "bytes32",
137
+ "internalType": "bytes32"
138
+ }
139
+ ]
140
+ }
141
+ ],
142
+ "outputs": [
143
+ {
144
+ "name": "",
145
+ "type": "tuple",
146
+ "internalType": "struct IComments.CommentIdentifier",
147
+ "components": [
148
+ {
149
+ "name": "commenter",
150
+ "type": "address",
151
+ "internalType": "address"
152
+ },
153
+ {
154
+ "name": "contractAddress",
155
+ "type": "address",
156
+ "internalType": "address"
157
+ },
158
+ {
159
+ "name": "tokenId",
160
+ "type": "uint256",
161
+ "internalType": "uint256"
162
+ },
163
+ {
164
+ "name": "nonce",
165
+ "type": "bytes32",
166
+ "internalType": "bytes32"
167
+ }
168
+ ]
169
+ }
170
+ ],
171
+ "stateMutability": "nonpayable"
172
+ },
173
+ {
174
+ "type": "function",
175
+ "name": "hashCommentIdentifier",
176
+ "inputs": [
177
+ {
178
+ "name": "commentIdentifier",
179
+ "type": "tuple",
180
+ "internalType": "struct IComments.CommentIdentifier",
181
+ "components": [
182
+ {
183
+ "name": "commenter",
184
+ "type": "address",
185
+ "internalType": "address"
186
+ },
187
+ {
188
+ "name": "contractAddress",
189
+ "type": "address",
190
+ "internalType": "address"
191
+ },
192
+ {
193
+ "name": "tokenId",
194
+ "type": "uint256",
195
+ "internalType": "uint256"
196
+ },
197
+ {
198
+ "name": "nonce",
199
+ "type": "bytes32",
200
+ "internalType": "bytes32"
201
+ }
202
+ ]
203
+ }
204
+ ],
205
+ "outputs": [
206
+ {
207
+ "name": "",
208
+ "type": "bytes32",
209
+ "internalType": "bytes32"
210
+ }
211
+ ],
212
+ "stateMutability": "view"
213
+ },
214
+ {
215
+ "type": "function",
216
+ "name": "nextNonce",
217
+ "inputs": [],
218
+ "outputs": [
219
+ {
220
+ "name": "",
221
+ "type": "bytes32",
222
+ "internalType": "bytes32"
223
+ }
224
+ ],
225
+ "stateMutability": "view"
226
+ },
227
+ {
228
+ "type": "function",
229
+ "name": "sparkComment",
230
+ "inputs": [
231
+ {
232
+ "name": "commentIdentifier",
233
+ "type": "tuple",
234
+ "internalType": "struct IComments.CommentIdentifier",
235
+ "components": [
236
+ {
237
+ "name": "commenter",
238
+ "type": "address",
239
+ "internalType": "address"
240
+ },
241
+ {
242
+ "name": "contractAddress",
243
+ "type": "address",
244
+ "internalType": "address"
245
+ },
246
+ {
247
+ "name": "tokenId",
248
+ "type": "uint256",
249
+ "internalType": "uint256"
250
+ },
251
+ {
252
+ "name": "nonce",
253
+ "type": "bytes32",
254
+ "internalType": "bytes32"
255
+ }
256
+ ]
257
+ },
258
+ {
259
+ "name": "sparksQuantity",
260
+ "type": "uint64",
261
+ "internalType": "uint64"
262
+ },
263
+ {
264
+ "name": "referrer",
265
+ "type": "address",
266
+ "internalType": "address"
267
+ }
268
+ ],
269
+ "outputs": [],
270
+ "stateMutability": "payable"
271
+ },
272
+ {
273
+ "type": "function",
274
+ "name": "sparkValue",
275
+ "inputs": [],
276
+ "outputs": [
277
+ {
278
+ "name": "",
279
+ "type": "uint256",
280
+ "internalType": "uint256"
281
+ }
282
+ ],
283
+ "stateMutability": "view"
284
+ },
285
+ {
286
+ "type": "event",
287
+ "name": "BackfilledComment",
288
+ "inputs": [
289
+ {
290
+ "name": "commentId",
291
+ "type": "bytes32",
292
+ "indexed": true,
293
+ "internalType": "bytes32"
294
+ },
295
+ {
296
+ "name": "comment",
297
+ "type": "tuple",
298
+ "indexed": false,
299
+ "internalType": "struct IComments.CommentIdentifier",
300
+ "components": [
301
+ {
302
+ "name": "commenter",
303
+ "type": "address",
304
+ "internalType": "address"
305
+ },
306
+ {
307
+ "name": "contractAddress",
308
+ "type": "address",
309
+ "internalType": "address"
310
+ },
311
+ {
312
+ "name": "tokenId",
313
+ "type": "uint256",
314
+ "internalType": "uint256"
315
+ },
316
+ {
317
+ "name": "nonce",
318
+ "type": "bytes32",
319
+ "internalType": "bytes32"
320
+ }
321
+ ]
322
+ },
323
+ {
324
+ "name": "text",
325
+ "type": "string",
326
+ "indexed": false,
327
+ "internalType": "string"
328
+ },
329
+ {
330
+ "name": "timestamp",
331
+ "type": "uint256",
332
+ "indexed": false,
333
+ "internalType": "uint256"
334
+ },
335
+ {
336
+ "name": "originalTransactionId",
337
+ "type": "bytes32",
338
+ "indexed": false,
339
+ "internalType": "bytes32"
340
+ }
341
+ ],
342
+ "anonymous": false
343
+ },
344
+ {
345
+ "type": "event",
346
+ "name": "Commented",
347
+ "inputs": [
348
+ {
349
+ "name": "commentId",
350
+ "type": "bytes32",
351
+ "indexed": true,
352
+ "internalType": "bytes32"
353
+ },
354
+ {
355
+ "name": "comment",
356
+ "type": "tuple",
357
+ "indexed": false,
358
+ "internalType": "struct IComments.CommentIdentifier",
359
+ "components": [
360
+ {
361
+ "name": "commenter",
362
+ "type": "address",
363
+ "internalType": "address"
364
+ },
365
+ {
366
+ "name": "contractAddress",
367
+ "type": "address",
368
+ "internalType": "address"
369
+ },
370
+ {
371
+ "name": "tokenId",
372
+ "type": "uint256",
373
+ "internalType": "uint256"
374
+ },
375
+ {
376
+ "name": "nonce",
377
+ "type": "bytes32",
378
+ "internalType": "bytes32"
379
+ }
380
+ ]
381
+ },
382
+ {
383
+ "name": "replyToId",
384
+ "type": "bytes32",
385
+ "indexed": false,
386
+ "internalType": "bytes32"
387
+ },
388
+ {
389
+ "name": "replyTo",
390
+ "type": "tuple",
391
+ "indexed": false,
392
+ "internalType": "struct IComments.CommentIdentifier",
393
+ "components": [
394
+ {
395
+ "name": "commenter",
396
+ "type": "address",
397
+ "internalType": "address"
398
+ },
399
+ {
400
+ "name": "contractAddress",
401
+ "type": "address",
402
+ "internalType": "address"
403
+ },
404
+ {
405
+ "name": "tokenId",
406
+ "type": "uint256",
407
+ "internalType": "uint256"
408
+ },
409
+ {
410
+ "name": "nonce",
411
+ "type": "bytes32",
412
+ "internalType": "bytes32"
413
+ }
414
+ ]
415
+ },
416
+ {
417
+ "name": "sparksQuantity",
418
+ "type": "uint64",
419
+ "indexed": false,
420
+ "internalType": "uint64"
421
+ },
422
+ {
423
+ "name": "text",
424
+ "type": "string",
425
+ "indexed": false,
426
+ "internalType": "string"
427
+ },
428
+ {
429
+ "name": "timestamp",
430
+ "type": "uint256",
431
+ "indexed": false,
432
+ "internalType": "uint256"
433
+ },
434
+ {
435
+ "name": "referrer",
436
+ "type": "address",
437
+ "indexed": false,
438
+ "internalType": "address"
439
+ }
440
+ ],
441
+ "anonymous": false
442
+ },
443
+ {
444
+ "type": "event",
445
+ "name": "SparkedComment",
446
+ "inputs": [
447
+ {
448
+ "name": "commentId",
449
+ "type": "bytes32",
450
+ "indexed": true,
451
+ "internalType": "bytes32"
452
+ },
453
+ {
454
+ "name": "commentIdentifier",
455
+ "type": "tuple",
456
+ "indexed": false,
457
+ "internalType": "struct IComments.CommentIdentifier",
458
+ "components": [
459
+ {
460
+ "name": "commenter",
461
+ "type": "address",
462
+ "internalType": "address"
463
+ },
464
+ {
465
+ "name": "contractAddress",
466
+ "type": "address",
467
+ "internalType": "address"
468
+ },
469
+ {
470
+ "name": "tokenId",
471
+ "type": "uint256",
472
+ "internalType": "uint256"
473
+ },
474
+ {
475
+ "name": "nonce",
476
+ "type": "bytes32",
477
+ "internalType": "bytes32"
478
+ }
479
+ ]
480
+ },
481
+ {
482
+ "name": "sparksQuantity",
483
+ "type": "uint64",
484
+ "indexed": false,
485
+ "internalType": "uint64"
486
+ },
487
+ {
488
+ "name": "sparker",
489
+ "type": "address",
490
+ "indexed": false,
491
+ "internalType": "address"
492
+ },
493
+ {
494
+ "name": "timestamp",
495
+ "type": "uint256",
496
+ "indexed": false,
497
+ "internalType": "uint256"
498
+ }
499
+ ],
500
+ "anonymous": false
501
+ },
502
+ {
503
+ "type": "error",
504
+ "name": "ArrayLengthMismatch",
505
+ "inputs": []
506
+ },
507
+ {
508
+ "type": "error",
509
+ "name": "CannotSparkOwnComment",
510
+ "inputs": []
511
+ },
512
+ {
513
+ "type": "error",
514
+ "name": "CommentAddressOrTokenIdsDoNotMatch",
515
+ "inputs": [
516
+ {
517
+ "name": "commentAddress",
518
+ "type": "address",
519
+ "internalType": "address"
520
+ },
521
+ {
522
+ "name": "commentTokenId",
523
+ "type": "uint256",
524
+ "internalType": "uint256"
525
+ },
526
+ {
527
+ "name": "replyAddress",
528
+ "type": "address",
529
+ "internalType": "address"
530
+ },
531
+ {
532
+ "name": "replyTokenId",
533
+ "type": "uint256",
534
+ "internalType": "uint256"
535
+ }
536
+ ]
537
+ },
538
+ {
539
+ "type": "error",
540
+ "name": "CommentDoesntExist",
541
+ "inputs": []
542
+ },
543
+ {
544
+ "type": "error",
545
+ "name": "CommenterMismatch",
546
+ "inputs": [
547
+ {
548
+ "name": "expected",
549
+ "type": "address",
550
+ "internalType": "address"
551
+ },
552
+ {
553
+ "name": "actual",
554
+ "type": "address",
555
+ "internalType": "address"
556
+ }
557
+ ]
558
+ },
559
+ {
560
+ "type": "error",
561
+ "name": "DuplicateComment",
562
+ "inputs": [
563
+ {
564
+ "name": "commentId",
565
+ "type": "bytes32",
566
+ "internalType": "bytes32"
567
+ }
568
+ ]
569
+ },
570
+ {
571
+ "type": "error",
572
+ "name": "ERC2612ExpiredSignature",
573
+ "inputs": [
574
+ {
575
+ "name": "deadline",
576
+ "type": "uint256",
577
+ "internalType": "uint256"
578
+ }
579
+ ]
580
+ },
581
+ {
582
+ "type": "error",
583
+ "name": "EmptyComment",
584
+ "inputs": []
585
+ },
586
+ {
587
+ "type": "error",
588
+ "name": "IncorrectDestinationChain",
589
+ "inputs": [
590
+ {
591
+ "name": "wrongDestinationChainId",
592
+ "type": "uint256",
593
+ "internalType": "uint256"
594
+ }
595
+ ]
596
+ },
597
+ {
598
+ "type": "error",
599
+ "name": "IncorrectETHAmountForSparks",
600
+ "inputs": [
601
+ {
602
+ "name": "actual",
603
+ "type": "uint256",
604
+ "internalType": "uint256"
605
+ },
606
+ {
607
+ "name": "expected",
608
+ "type": "uint256",
609
+ "internalType": "uint256"
610
+ }
611
+ ]
612
+ },
613
+ {
614
+ "type": "error",
615
+ "name": "InvalidSignature",
616
+ "inputs": []
617
+ },
618
+ {
619
+ "type": "error",
620
+ "name": "MustSendAtLeastOneSpark",
621
+ "inputs": []
622
+ },
623
+ {
624
+ "type": "error",
625
+ "name": "NotTokenHolderOrAdmin",
626
+ "inputs": []
627
+ },
628
+ {
629
+ "type": "error",
630
+ "name": "OnlySparksContract",
631
+ "inputs": []
632
+ },
633
+ {
634
+ "type": "error",
635
+ "name": "TransferFailed",
636
+ "inputs": []
637
+ },
638
+ {
639
+ "type": "error",
640
+ "name": "UpgradeToMismatchedContractName",
641
+ "inputs": [
642
+ {
643
+ "name": "currentName",
644
+ "type": "string",
645
+ "internalType": "string"
646
+ },
647
+ {
648
+ "name": "newName",
649
+ "type": "string",
650
+ "internalType": "string"
651
+ }
652
+ ]
653
+ }
654
+ ]
@@ -0,0 +1,28 @@
1
+ [
2
+ {
3
+ "type": "function",
4
+ "name": "contractName",
5
+ "inputs": [],
6
+ "outputs": [
7
+ {
8
+ "name": "",
9
+ "type": "string",
10
+ "internalType": "string"
11
+ }
12
+ ],
13
+ "stateMutability": "nonpayable"
14
+ },
15
+ {
16
+ "type": "function",
17
+ "name": "contractURI",
18
+ "inputs": [],
19
+ "outputs": [
20
+ {
21
+ "name": "",
22
+ "type": "string",
23
+ "internalType": "string"
24
+ }
25
+ ],
26
+ "stateMutability": "nonpayable"
27
+ }
28
+ ]