@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,907 @@
1
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2
+ // CommentsImpl
3
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4
+
5
+ export const commentsImplABI = [
6
+ {
7
+ stateMutability: 'nonpayable',
8
+ type: 'constructor',
9
+ inputs: [
10
+ { name: '_sparkValue', internalType: 'uint256', type: 'uint256' },
11
+ { name: '_protocolRewards', internalType: 'address', type: 'address' },
12
+ ],
13
+ },
14
+ {
15
+ stateMutability: 'view',
16
+ type: 'function',
17
+ inputs: [],
18
+ name: 'BACKFILLER_ROLE',
19
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
20
+ },
21
+ {
22
+ stateMutability: 'view',
23
+ type: 'function',
24
+ inputs: [],
25
+ name: 'DEFAULT_ADMIN_ROLE',
26
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
27
+ },
28
+ {
29
+ stateMutability: 'view',
30
+ type: 'function',
31
+ inputs: [],
32
+ name: 'DELEGATE_COMMENTOR',
33
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
34
+ },
35
+ {
36
+ stateMutability: 'view',
37
+ type: 'function',
38
+ inputs: [],
39
+ name: 'DOMAIN_NAME',
40
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
41
+ },
42
+ {
43
+ stateMutability: 'view',
44
+ type: 'function',
45
+ inputs: [],
46
+ name: 'DOMAIN_VERSION',
47
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
48
+ },
49
+ {
50
+ stateMutability: 'view',
51
+ type: 'function',
52
+ inputs: [],
53
+ name: 'PERMISSION_BIT_ADMIN',
54
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
55
+ },
56
+ {
57
+ stateMutability: 'view',
58
+ type: 'function',
59
+ inputs: [],
60
+ name: 'REFERRER_REWARD_PCT',
61
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
62
+ },
63
+ {
64
+ stateMutability: 'view',
65
+ type: 'function',
66
+ inputs: [],
67
+ name: 'UPGRADE_INTERFACE_VERSION',
68
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
69
+ },
70
+ {
71
+ stateMutability: 'view',
72
+ type: 'function',
73
+ inputs: [],
74
+ name: 'ZORA_REWARD_NO_REFERRER_PCT',
75
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
76
+ },
77
+ {
78
+ stateMutability: 'view',
79
+ type: 'function',
80
+ inputs: [],
81
+ name: 'ZORA_REWARD_PCT',
82
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
83
+ },
84
+ {
85
+ stateMutability: 'nonpayable',
86
+ type: 'function',
87
+ inputs: [
88
+ {
89
+ name: 'commentIdentifiers',
90
+ internalType: 'struct IComments.CommentIdentifier[]',
91
+ type: 'tuple[]',
92
+ components: [
93
+ { name: 'commenter', internalType: 'address', type: 'address' },
94
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
95
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
96
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
97
+ ],
98
+ },
99
+ { name: 'texts', internalType: 'string[]', type: 'string[]' },
100
+ { name: 'timestamps', internalType: 'uint256[]', type: 'uint256[]' },
101
+ {
102
+ name: 'originalTransactionHashes',
103
+ internalType: 'bytes32[]',
104
+ type: 'bytes32[]',
105
+ },
106
+ ],
107
+ name: 'backfillBatchAddComment',
108
+ outputs: [],
109
+ },
110
+ {
111
+ stateMutability: 'payable',
112
+ type: 'function',
113
+ inputs: [
114
+ { name: 'commenter', internalType: 'address', type: 'address' },
115
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
116
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
117
+ { name: 'text', internalType: 'string', type: 'string' },
118
+ {
119
+ name: 'replyTo',
120
+ internalType: 'struct IComments.CommentIdentifier',
121
+ type: 'tuple',
122
+ components: [
123
+ { name: 'commenter', internalType: 'address', type: 'address' },
124
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
125
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
126
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
127
+ ],
128
+ },
129
+ { name: 'referrer', internalType: 'address', type: 'address' },
130
+ ],
131
+ name: 'comment',
132
+ outputs: [
133
+ {
134
+ name: 'commentIdentifier',
135
+ internalType: 'struct IComments.CommentIdentifier',
136
+ type: 'tuple',
137
+ components: [
138
+ { name: 'commenter', internalType: 'address', type: 'address' },
139
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
140
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
141
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
142
+ ],
143
+ },
144
+ ],
145
+ },
146
+ {
147
+ stateMutability: 'view',
148
+ type: 'function',
149
+ inputs: [{ name: 'commentId', internalType: 'bytes32', type: 'bytes32' }],
150
+ name: 'commentSparksQuantity',
151
+ outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],
152
+ },
153
+ {
154
+ stateMutability: 'pure',
155
+ type: 'function',
156
+ inputs: [],
157
+ name: 'contractName',
158
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
159
+ },
160
+ {
161
+ stateMutability: 'pure',
162
+ type: 'function',
163
+ inputs: [],
164
+ name: 'contractVersion',
165
+ outputs: [{ name: '', internalType: 'string', type: 'string' }],
166
+ },
167
+ {
168
+ stateMutability: 'nonpayable',
169
+ type: 'function',
170
+ inputs: [
171
+ { name: 'commenter', internalType: 'address', type: 'address' },
172
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
173
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
174
+ { name: 'text', internalType: 'string', type: 'string' },
175
+ {
176
+ name: 'replyTo',
177
+ internalType: 'struct IComments.CommentIdentifier',
178
+ type: 'tuple',
179
+ components: [
180
+ { name: 'commenter', internalType: 'address', type: 'address' },
181
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
182
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
183
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
184
+ ],
185
+ },
186
+ ],
187
+ name: 'delegateComment',
188
+ outputs: [
189
+ {
190
+ name: 'commentIdentifier',
191
+ internalType: 'struct IComments.CommentIdentifier',
192
+ type: 'tuple',
193
+ components: [
194
+ { name: 'commenter', internalType: 'address', type: 'address' },
195
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
196
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
197
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
198
+ ],
199
+ },
200
+ ],
201
+ },
202
+ {
203
+ stateMutability: 'view',
204
+ type: 'function',
205
+ inputs: [{ name: 'role', internalType: 'bytes32', type: 'bytes32' }],
206
+ name: 'getRoleAdmin',
207
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
208
+ },
209
+ {
210
+ stateMutability: 'nonpayable',
211
+ type: 'function',
212
+ inputs: [
213
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
214
+ { name: 'account', internalType: 'address', type: 'address' },
215
+ ],
216
+ name: 'grantRole',
217
+ outputs: [],
218
+ },
219
+ {
220
+ stateMutability: 'view',
221
+ type: 'function',
222
+ inputs: [
223
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
224
+ { name: 'account', internalType: 'address', type: 'address' },
225
+ ],
226
+ name: 'hasRole',
227
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
228
+ },
229
+ {
230
+ stateMutability: 'view',
231
+ type: 'function',
232
+ inputs: [
233
+ {
234
+ name: 'commentIdentifier',
235
+ internalType: 'struct IComments.CommentIdentifier',
236
+ type: 'tuple',
237
+ components: [
238
+ { name: 'commenter', internalType: 'address', type: 'address' },
239
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
240
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
241
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
242
+ ],
243
+ },
244
+ ],
245
+ name: 'hashAndCheckCommentExists',
246
+ outputs: [
247
+ { name: 'commentId', internalType: 'bytes32', type: 'bytes32' },
248
+ { name: 'exists', internalType: 'bool', type: 'bool' },
249
+ ],
250
+ },
251
+ {
252
+ stateMutability: 'view',
253
+ type: 'function',
254
+ inputs: [
255
+ {
256
+ name: 'commentIdentifier',
257
+ internalType: 'struct IComments.CommentIdentifier',
258
+ type: 'tuple',
259
+ components: [
260
+ { name: 'commenter', internalType: 'address', type: 'address' },
261
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
262
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
263
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
264
+ ],
265
+ },
266
+ ],
267
+ name: 'hashAndValidateCommentExists',
268
+ outputs: [{ name: 'commentId', internalType: 'bytes32', type: 'bytes32' }],
269
+ },
270
+ {
271
+ stateMutability: 'pure',
272
+ type: 'function',
273
+ inputs: [
274
+ {
275
+ name: 'commentIdentifier',
276
+ internalType: 'struct IComments.CommentIdentifier',
277
+ type: 'tuple',
278
+ components: [
279
+ { name: 'commenter', internalType: 'address', type: 'address' },
280
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
281
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
282
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
283
+ ],
284
+ },
285
+ ],
286
+ name: 'hashCommentIdentifier',
287
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
288
+ },
289
+ {
290
+ stateMutability: 'view',
291
+ type: 'function',
292
+ inputs: [
293
+ {
294
+ name: 'permit',
295
+ internalType: 'struct IComments.PermitComment',
296
+ type: 'tuple',
297
+ components: [
298
+ { name: 'commenter', internalType: 'address', type: 'address' },
299
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
300
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
301
+ {
302
+ name: 'replyTo',
303
+ internalType: 'struct IComments.CommentIdentifier',
304
+ type: 'tuple',
305
+ components: [
306
+ { name: 'commenter', internalType: 'address', type: 'address' },
307
+ {
308
+ name: 'contractAddress',
309
+ internalType: 'address',
310
+ type: 'address',
311
+ },
312
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
313
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
314
+ ],
315
+ },
316
+ { name: 'text', internalType: 'string', type: 'string' },
317
+ { name: 'sparksQuantity', internalType: 'uint64', type: 'uint64' },
318
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
319
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
320
+ { name: 'referrer', internalType: 'address', type: 'address' },
321
+ { name: 'sourceChainId', internalType: 'uint256', type: 'uint256' },
322
+ {
323
+ name: 'destinationChainId',
324
+ internalType: 'uint256',
325
+ type: 'uint256',
326
+ },
327
+ ],
328
+ },
329
+ ],
330
+ name: 'hashPermitComment',
331
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
332
+ },
333
+ {
334
+ stateMutability: 'view',
335
+ type: 'function',
336
+ inputs: [
337
+ {
338
+ name: 'permit',
339
+ internalType: 'struct IComments.PermitSparkComment',
340
+ type: 'tuple',
341
+ components: [
342
+ {
343
+ name: 'comment',
344
+ internalType: 'struct IComments.CommentIdentifier',
345
+ type: 'tuple',
346
+ components: [
347
+ { name: 'commenter', internalType: 'address', type: 'address' },
348
+ {
349
+ name: 'contractAddress',
350
+ internalType: 'address',
351
+ type: 'address',
352
+ },
353
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
354
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
355
+ ],
356
+ },
357
+ { name: 'sparker', internalType: 'address', type: 'address' },
358
+ { name: 'sparksQuantity', internalType: 'uint64', type: 'uint64' },
359
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
360
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
361
+ { name: 'referrer', internalType: 'address', type: 'address' },
362
+ { name: 'sourceChainId', internalType: 'uint256', type: 'uint256' },
363
+ {
364
+ name: 'destinationChainId',
365
+ internalType: 'uint256',
366
+ type: 'uint256',
367
+ },
368
+ ],
369
+ },
370
+ ],
371
+ name: 'hashPermitSparkComment',
372
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
373
+ },
374
+ {
375
+ stateMutability: 'nonpayable',
376
+ type: 'function',
377
+ inputs: [
378
+ { name: '_zoraRecipient', internalType: 'address', type: 'address' },
379
+ { name: 'defaultAdmin', internalType: 'address', type: 'address' },
380
+ { name: 'backfiller', internalType: 'address', type: 'address' },
381
+ {
382
+ name: 'delegateCommenters',
383
+ internalType: 'address[]',
384
+ type: 'address[]',
385
+ },
386
+ ],
387
+ name: 'initialize',
388
+ outputs: [],
389
+ },
390
+ {
391
+ stateMutability: 'view',
392
+ type: 'function',
393
+ inputs: [],
394
+ name: 'nextNonce',
395
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
396
+ },
397
+ {
398
+ stateMutability: 'view',
399
+ type: 'function',
400
+ inputs: [
401
+ { name: 'owner', internalType: 'address', type: 'address' },
402
+ { name: 'nonce', internalType: 'uint256', type: 'uint256' },
403
+ ],
404
+ name: 'nonceUsed',
405
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
406
+ },
407
+ {
408
+ stateMutability: 'payable',
409
+ type: 'function',
410
+ inputs: [
411
+ {
412
+ name: 'permit',
413
+ internalType: 'struct IComments.PermitComment',
414
+ type: 'tuple',
415
+ components: [
416
+ { name: 'commenter', internalType: 'address', type: 'address' },
417
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
418
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
419
+ {
420
+ name: 'replyTo',
421
+ internalType: 'struct IComments.CommentIdentifier',
422
+ type: 'tuple',
423
+ components: [
424
+ { name: 'commenter', internalType: 'address', type: 'address' },
425
+ {
426
+ name: 'contractAddress',
427
+ internalType: 'address',
428
+ type: 'address',
429
+ },
430
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
431
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
432
+ ],
433
+ },
434
+ { name: 'text', internalType: 'string', type: 'string' },
435
+ { name: 'sparksQuantity', internalType: 'uint64', type: 'uint64' },
436
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
437
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
438
+ { name: 'referrer', internalType: 'address', type: 'address' },
439
+ { name: 'sourceChainId', internalType: 'uint256', type: 'uint256' },
440
+ {
441
+ name: 'destinationChainId',
442
+ internalType: 'uint256',
443
+ type: 'uint256',
444
+ },
445
+ ],
446
+ },
447
+ { name: 'signature', internalType: 'bytes', type: 'bytes' },
448
+ ],
449
+ name: 'permitComment',
450
+ outputs: [],
451
+ },
452
+ {
453
+ stateMutability: 'payable',
454
+ type: 'function',
455
+ inputs: [
456
+ {
457
+ name: 'permit',
458
+ internalType: 'struct IComments.PermitSparkComment',
459
+ type: 'tuple',
460
+ components: [
461
+ {
462
+ name: 'comment',
463
+ internalType: 'struct IComments.CommentIdentifier',
464
+ type: 'tuple',
465
+ components: [
466
+ { name: 'commenter', internalType: 'address', type: 'address' },
467
+ {
468
+ name: 'contractAddress',
469
+ internalType: 'address',
470
+ type: 'address',
471
+ },
472
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
473
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
474
+ ],
475
+ },
476
+ { name: 'sparker', internalType: 'address', type: 'address' },
477
+ { name: 'sparksQuantity', internalType: 'uint64', type: 'uint64' },
478
+ { name: 'deadline', internalType: 'uint256', type: 'uint256' },
479
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
480
+ { name: 'referrer', internalType: 'address', type: 'address' },
481
+ { name: 'sourceChainId', internalType: 'uint256', type: 'uint256' },
482
+ {
483
+ name: 'destinationChainId',
484
+ internalType: 'uint256',
485
+ type: 'uint256',
486
+ },
487
+ ],
488
+ },
489
+ { name: 'signature', internalType: 'bytes', type: 'bytes' },
490
+ ],
491
+ name: 'permitSparkComment',
492
+ outputs: [],
493
+ },
494
+ {
495
+ stateMutability: 'view',
496
+ type: 'function',
497
+ inputs: [],
498
+ name: 'protocolRewards',
499
+ outputs: [
500
+ { name: '', internalType: 'contract IProtocolRewards', type: 'address' },
501
+ ],
502
+ },
503
+ {
504
+ stateMutability: 'view',
505
+ type: 'function',
506
+ inputs: [],
507
+ name: 'proxiableUUID',
508
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
509
+ },
510
+ {
511
+ stateMutability: 'nonpayable',
512
+ type: 'function',
513
+ inputs: [
514
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
515
+ { name: 'callerConfirmation', internalType: 'address', type: 'address' },
516
+ ],
517
+ name: 'renounceRole',
518
+ outputs: [],
519
+ },
520
+ {
521
+ stateMutability: 'nonpayable',
522
+ type: 'function',
523
+ inputs: [
524
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
525
+ { name: 'account', internalType: 'address', type: 'address' },
526
+ ],
527
+ name: 'revokeRole',
528
+ outputs: [],
529
+ },
530
+ {
531
+ stateMutability: 'payable',
532
+ type: 'function',
533
+ inputs: [
534
+ {
535
+ name: 'commentIdentifier',
536
+ internalType: 'struct IComments.CommentIdentifier',
537
+ type: 'tuple',
538
+ components: [
539
+ { name: 'commenter', internalType: 'address', type: 'address' },
540
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
541
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
542
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
543
+ ],
544
+ },
545
+ { name: 'sparksQuantity', internalType: 'uint64', type: 'uint64' },
546
+ { name: 'referrer', internalType: 'address', type: 'address' },
547
+ ],
548
+ name: 'sparkComment',
549
+ outputs: [],
550
+ },
551
+ {
552
+ stateMutability: 'view',
553
+ type: 'function',
554
+ inputs: [],
555
+ name: 'sparkValue',
556
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
557
+ },
558
+ {
559
+ stateMutability: 'view',
560
+ type: 'function',
561
+ inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],
562
+ name: 'supportsInterface',
563
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
564
+ },
565
+ {
566
+ stateMutability: 'payable',
567
+ type: 'function',
568
+ inputs: [
569
+ { name: 'newImplementation', internalType: 'address', type: 'address' },
570
+ { name: 'data', internalType: 'bytes', type: 'bytes' },
571
+ ],
572
+ name: 'upgradeToAndCall',
573
+ outputs: [],
574
+ },
575
+ {
576
+ type: 'event',
577
+ anonymous: false,
578
+ inputs: [
579
+ {
580
+ name: 'commentId',
581
+ internalType: 'bytes32',
582
+ type: 'bytes32',
583
+ indexed: true,
584
+ },
585
+ {
586
+ name: 'comment',
587
+ internalType: 'struct IComments.CommentIdentifier',
588
+ type: 'tuple',
589
+ components: [
590
+ { name: 'commenter', internalType: 'address', type: 'address' },
591
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
592
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
593
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
594
+ ],
595
+ indexed: false,
596
+ },
597
+ { name: 'text', internalType: 'string', type: 'string', indexed: false },
598
+ {
599
+ name: 'timestamp',
600
+ internalType: 'uint256',
601
+ type: 'uint256',
602
+ indexed: false,
603
+ },
604
+ {
605
+ name: 'originalTransactionId',
606
+ internalType: 'bytes32',
607
+ type: 'bytes32',
608
+ indexed: false,
609
+ },
610
+ ],
611
+ name: 'BackfilledComment',
612
+ },
613
+ {
614
+ type: 'event',
615
+ anonymous: false,
616
+ inputs: [
617
+ {
618
+ name: 'commentId',
619
+ internalType: 'bytes32',
620
+ type: 'bytes32',
621
+ indexed: true,
622
+ },
623
+ {
624
+ name: 'comment',
625
+ internalType: 'struct IComments.CommentIdentifier',
626
+ type: 'tuple',
627
+ components: [
628
+ { name: 'commenter', internalType: 'address', type: 'address' },
629
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
630
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
631
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
632
+ ],
633
+ indexed: false,
634
+ },
635
+ {
636
+ name: 'replyToId',
637
+ internalType: 'bytes32',
638
+ type: 'bytes32',
639
+ indexed: false,
640
+ },
641
+ {
642
+ name: 'replyTo',
643
+ internalType: 'struct IComments.CommentIdentifier',
644
+ type: 'tuple',
645
+ components: [
646
+ { name: 'commenter', internalType: 'address', type: 'address' },
647
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
648
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
649
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
650
+ ],
651
+ indexed: false,
652
+ },
653
+ {
654
+ name: 'sparksQuantity',
655
+ internalType: 'uint64',
656
+ type: 'uint64',
657
+ indexed: false,
658
+ },
659
+ { name: 'text', internalType: 'string', type: 'string', indexed: false },
660
+ {
661
+ name: 'timestamp',
662
+ internalType: 'uint256',
663
+ type: 'uint256',
664
+ indexed: false,
665
+ },
666
+ {
667
+ name: 'referrer',
668
+ internalType: 'address',
669
+ type: 'address',
670
+ indexed: false,
671
+ },
672
+ ],
673
+ name: 'Commented',
674
+ },
675
+ {
676
+ type: 'event',
677
+ anonymous: false,
678
+ inputs: [
679
+ {
680
+ name: 'version',
681
+ internalType: 'uint64',
682
+ type: 'uint64',
683
+ indexed: false,
684
+ },
685
+ ],
686
+ name: 'Initialized',
687
+ },
688
+ {
689
+ type: 'event',
690
+ anonymous: false,
691
+ inputs: [
692
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
693
+ {
694
+ name: 'previousAdminRole',
695
+ internalType: 'bytes32',
696
+ type: 'bytes32',
697
+ indexed: true,
698
+ },
699
+ {
700
+ name: 'newAdminRole',
701
+ internalType: 'bytes32',
702
+ type: 'bytes32',
703
+ indexed: true,
704
+ },
705
+ ],
706
+ name: 'RoleAdminChanged',
707
+ },
708
+ {
709
+ type: 'event',
710
+ anonymous: false,
711
+ inputs: [
712
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
713
+ {
714
+ name: 'account',
715
+ internalType: 'address',
716
+ type: 'address',
717
+ indexed: true,
718
+ },
719
+ {
720
+ name: 'sender',
721
+ internalType: 'address',
722
+ type: 'address',
723
+ indexed: true,
724
+ },
725
+ ],
726
+ name: 'RoleGranted',
727
+ },
728
+ {
729
+ type: 'event',
730
+ anonymous: false,
731
+ inputs: [
732
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
733
+ {
734
+ name: 'account',
735
+ internalType: 'address',
736
+ type: 'address',
737
+ indexed: true,
738
+ },
739
+ {
740
+ name: 'sender',
741
+ internalType: 'address',
742
+ type: 'address',
743
+ indexed: true,
744
+ },
745
+ ],
746
+ name: 'RoleRevoked',
747
+ },
748
+ {
749
+ type: 'event',
750
+ anonymous: false,
751
+ inputs: [
752
+ {
753
+ name: 'commentId',
754
+ internalType: 'bytes32',
755
+ type: 'bytes32',
756
+ indexed: true,
757
+ },
758
+ {
759
+ name: 'commentIdentifier',
760
+ internalType: 'struct IComments.CommentIdentifier',
761
+ type: 'tuple',
762
+ components: [
763
+ { name: 'commenter', internalType: 'address', type: 'address' },
764
+ { name: 'contractAddress', internalType: 'address', type: 'address' },
765
+ { name: 'tokenId', internalType: 'uint256', type: 'uint256' },
766
+ { name: 'nonce', internalType: 'bytes32', type: 'bytes32' },
767
+ ],
768
+ indexed: false,
769
+ },
770
+ {
771
+ name: 'sparksQuantity',
772
+ internalType: 'uint64',
773
+ type: 'uint64',
774
+ indexed: false,
775
+ },
776
+ {
777
+ name: 'sparker',
778
+ internalType: 'address',
779
+ type: 'address',
780
+ indexed: false,
781
+ },
782
+ {
783
+ name: 'timestamp',
784
+ internalType: 'uint256',
785
+ type: 'uint256',
786
+ indexed: false,
787
+ },
788
+ ],
789
+ name: 'SparkedComment',
790
+ },
791
+ {
792
+ type: 'event',
793
+ anonymous: false,
794
+ inputs: [
795
+ {
796
+ name: 'implementation',
797
+ internalType: 'address',
798
+ type: 'address',
799
+ indexed: true,
800
+ },
801
+ ],
802
+ name: 'Upgraded',
803
+ },
804
+ { type: 'error', inputs: [], name: 'AccessControlBadConfirmation' },
805
+ {
806
+ type: 'error',
807
+ inputs: [
808
+ { name: 'account', internalType: 'address', type: 'address' },
809
+ { name: 'neededRole', internalType: 'bytes32', type: 'bytes32' },
810
+ ],
811
+ name: 'AccessControlUnauthorizedAccount',
812
+ },
813
+ {
814
+ type: 'error',
815
+ inputs: [{ name: 'target', internalType: 'address', type: 'address' }],
816
+ name: 'AddressEmptyCode',
817
+ },
818
+ { type: 'error', inputs: [], name: 'ArrayLengthMismatch' },
819
+ { type: 'error', inputs: [], name: 'CannotSparkOwnComment' },
820
+ {
821
+ type: 'error',
822
+ inputs: [
823
+ { name: 'commentAddress', internalType: 'address', type: 'address' },
824
+ { name: 'commentTokenId', internalType: 'uint256', type: 'uint256' },
825
+ { name: 'replyAddress', internalType: 'address', type: 'address' },
826
+ { name: 'replyTokenId', internalType: 'uint256', type: 'uint256' },
827
+ ],
828
+ name: 'CommentAddressOrTokenIdsDoNotMatch',
829
+ },
830
+ { type: 'error', inputs: [], name: 'CommentDoesntExist' },
831
+ {
832
+ type: 'error',
833
+ inputs: [
834
+ { name: 'expected', internalType: 'address', type: 'address' },
835
+ { name: 'actual', internalType: 'address', type: 'address' },
836
+ ],
837
+ name: 'CommenterMismatch',
838
+ },
839
+ {
840
+ type: 'error',
841
+ inputs: [{ name: 'commentId', internalType: 'bytes32', type: 'bytes32' }],
842
+ name: 'DuplicateComment',
843
+ },
844
+ {
845
+ type: 'error',
846
+ inputs: [
847
+ { name: 'implementation', internalType: 'address', type: 'address' },
848
+ ],
849
+ name: 'ERC1967InvalidImplementation',
850
+ },
851
+ { type: 'error', inputs: [], name: 'ERC1967NonPayable' },
852
+ {
853
+ type: 'error',
854
+ inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],
855
+ name: 'ERC2612ExpiredSignature',
856
+ },
857
+ { type: 'error', inputs: [], name: 'EmptyComment' },
858
+ { type: 'error', inputs: [], name: 'FailedInnerCall' },
859
+ {
860
+ type: 'error',
861
+ inputs: [
862
+ {
863
+ name: 'wrongDestinationChainId',
864
+ internalType: 'uint256',
865
+ type: 'uint256',
866
+ },
867
+ ],
868
+ name: 'IncorrectDestinationChain',
869
+ },
870
+ {
871
+ type: 'error',
872
+ inputs: [
873
+ { name: 'actual', internalType: 'uint256', type: 'uint256' },
874
+ { name: 'expected', internalType: 'uint256', type: 'uint256' },
875
+ ],
876
+ name: 'IncorrectETHAmountForSparks',
877
+ },
878
+ {
879
+ type: 'error',
880
+ inputs: [
881
+ { name: 'account', internalType: 'address', type: 'address' },
882
+ { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },
883
+ ],
884
+ name: 'InvalidAccountNonce',
885
+ },
886
+ { type: 'error', inputs: [], name: 'InvalidInitialization' },
887
+ { type: 'error', inputs: [], name: 'InvalidSignature' },
888
+ { type: 'error', inputs: [], name: 'MustSendAtLeastOneSpark' },
889
+ { type: 'error', inputs: [], name: 'NotInitializing' },
890
+ { type: 'error', inputs: [], name: 'NotTokenHolderOrAdmin' },
891
+ { type: 'error', inputs: [], name: 'OnlySparksContract' },
892
+ { type: 'error', inputs: [], name: 'TransferFailed' },
893
+ { type: 'error', inputs: [], name: 'UUPSUnauthorizedCallContext' },
894
+ {
895
+ type: 'error',
896
+ inputs: [{ name: 'slot', internalType: 'bytes32', type: 'bytes32' }],
897
+ name: 'UUPSUnsupportedProxiableUUID',
898
+ },
899
+ {
900
+ type: 'error',
901
+ inputs: [
902
+ { name: 'currentName', internalType: 'string', type: 'string' },
903
+ { name: 'newName', internalType: 'string', type: 'string' },
904
+ ],
905
+ name: 'UpgradeToMismatchedContractName',
906
+ },
907
+ ] as const