@super-protocol/sdk-js 3.12.1-beta.2 → 3.13.0-beta.2

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 (164) hide show
  1. package/dist/cjs/certificates/binary-splitter.d.ts +26 -0
  2. package/dist/cjs/certificates/binary-splitter.js +269 -0
  3. package/dist/cjs/certificates/generator.d.ts +38 -0
  4. package/dist/cjs/certificates/generator.js +248 -0
  5. package/dist/cjs/certificates/helper.d.ts +8 -4
  6. package/dist/cjs/certificates/helper.js +45 -17
  7. package/dist/cjs/certificates/index.d.ts +1 -0
  8. package/dist/cjs/certificates/index.js +2 -1
  9. package/dist/cjs/certificates/ocsp.d.ts +6 -1
  10. package/dist/cjs/certificates/ocsp.js +179 -23
  11. package/dist/cjs/certificates/serializer.d.ts +5 -0
  12. package/dist/cjs/certificates/serializer.js +98 -2
  13. package/dist/cjs/certificates/setup-crypto.d.ts +3 -0
  14. package/dist/cjs/certificates/setup-crypto.js +51 -0
  15. package/dist/cjs/certificates/testing-generate.d.ts +1 -0
  16. package/dist/cjs/certificates/testing-generate.js +115 -0
  17. package/dist/cjs/certificates/types.d.ts +107 -0
  18. package/dist/cjs/certificates/types.js +8 -1
  19. package/dist/cjs/connectors/BlockchainConnector.js +11 -8
  20. package/dist/cjs/connectors/BlockchainEventsListener.d.ts +4 -4
  21. package/dist/cjs/connectors/BlockchainEventsListener.js +9 -8
  22. package/dist/cjs/constants.d.ts +6 -1
  23. package/dist/cjs/constants.js +13 -5
  24. package/dist/cjs/index.d.ts +0 -2
  25. package/dist/cjs/index.js +3 -6
  26. package/dist/cjs/models/Offer.d.ts +1 -1
  27. package/dist/cjs/models/Offer.js +10 -3
  28. package/dist/cjs/models/Order.d.ts +1 -1
  29. package/dist/cjs/models/Order.js +21 -20
  30. package/dist/cjs/models/TeeOffer.d.ts +2 -2
  31. package/dist/cjs/models/TeeOffer.js +18 -3
  32. package/dist/cjs/proto/OrderReport.d.ts +206 -15
  33. package/dist/cjs/proto/OrderReport.js +169 -3
  34. package/dist/cjs/staticModels/ActiveOrders.d.ts +1 -1
  35. package/dist/cjs/staticModels/ActiveOrders.js +1 -1
  36. package/dist/cjs/staticModels/OfferResources.js +3 -4
  37. package/dist/cjs/staticModels/Offers.d.ts +3 -4
  38. package/dist/cjs/staticModels/Offers.js +16 -17
  39. package/dist/cjs/staticModels/OffersCommon.d.ts +18 -0
  40. package/dist/cjs/staticModels/OffersCommon.js +79 -0
  41. package/dist/cjs/staticModels/Orders.d.ts +6 -5
  42. package/dist/cjs/staticModels/Orders.js +96 -5
  43. package/dist/cjs/staticModels/SecretRequests.js +2 -3
  44. package/dist/cjs/staticModels/StaticModel.d.ts +14 -2
  45. package/dist/cjs/staticModels/StaticModel.js +90 -2
  46. package/dist/cjs/staticModels/SuperproToken.d.ts +26 -1
  47. package/dist/cjs/staticModels/SuperproToken.js +40 -1
  48. package/dist/cjs/staticModels/TeeOffers.d.ts +4 -4
  49. package/dist/cjs/staticModels/TeeOffers.js +17 -16
  50. package/dist/cjs/tee/OrderReportService.js +4 -2
  51. package/dist/cjs/tee/QuoteValidator.d.ts +3 -2
  52. package/dist/cjs/tee/QuoteValidator.js +5 -4
  53. package/dist/cjs/tee/TeeCertificateService.d.ts +1 -1
  54. package/dist/cjs/tee/TeeCertificateService.js +11 -14
  55. package/dist/cjs/tee/TeeSignatureVerifier.d.ts +6 -4
  56. package/dist/cjs/tee/TeeSignatureVerifier.js +60 -32
  57. package/dist/cjs/tee/types.d.ts +1 -1
  58. package/dist/cjs/types/Order.d.ts +28 -2
  59. package/dist/cjs/types/Order.js +23 -2
  60. package/dist/cjs/types/index.d.ts +0 -1
  61. package/dist/cjs/types/index.js +1 -2
  62. package/dist/cjs/utils/CryptoKeysTransformer.d.ts +4 -0
  63. package/dist/cjs/utils/CryptoKeysTransformer.js +50 -1
  64. package/dist/cjs/utils/NonceTracker.d.ts +1 -0
  65. package/dist/cjs/utils/NonceTracker.js +6 -2
  66. package/dist/cjs/utils/TxManager.d.ts +3 -0
  67. package/dist/cjs/utils/TxManager.js +88 -35
  68. package/dist/cjs/utils/helper.d.ts +11 -3
  69. package/dist/cjs/utils/helper.js +56 -12
  70. package/dist/cjs/utils/helpers/getRawRpc.d.ts +2 -0
  71. package/dist/cjs/utils/helpers/getRawRpc.js +19 -0
  72. package/dist/cjs/utils/helpers/index.d.ts +1 -0
  73. package/dist/cjs/utils/helpers/index.js +2 -1
  74. package/dist/cjs/utils/types.d.ts +14 -0
  75. package/dist/cjs/utils/types.js +3 -0
  76. package/dist/mjs/certificates/binary-splitter.d.ts +26 -0
  77. package/dist/mjs/certificates/binary-splitter.js +265 -0
  78. package/dist/mjs/certificates/generator.d.ts +38 -0
  79. package/dist/mjs/certificates/generator.js +241 -0
  80. package/dist/mjs/certificates/helper.d.ts +8 -4
  81. package/dist/mjs/certificates/helper.js +45 -17
  82. package/dist/mjs/certificates/index.d.ts +1 -0
  83. package/dist/mjs/certificates/index.js +2 -1
  84. package/dist/mjs/certificates/ocsp.d.ts +6 -1
  85. package/dist/mjs/certificates/ocsp.js +180 -24
  86. package/dist/mjs/certificates/serializer.d.ts +5 -0
  87. package/dist/mjs/certificates/serializer.js +94 -1
  88. package/dist/mjs/certificates/setup-crypto.d.ts +3 -0
  89. package/dist/mjs/certificates/setup-crypto.js +22 -0
  90. package/dist/mjs/certificates/testing-generate.d.ts +1 -0
  91. package/dist/mjs/certificates/testing-generate.js +110 -0
  92. package/dist/mjs/certificates/types.d.ts +107 -0
  93. package/dist/mjs/certificates/types.js +7 -2
  94. package/dist/mjs/connectors/BlockchainConnector.js +11 -8
  95. package/dist/mjs/connectors/BlockchainEventsListener.d.ts +4 -4
  96. package/dist/mjs/connectors/BlockchainEventsListener.js +9 -8
  97. package/dist/mjs/constants.d.ts +6 -1
  98. package/dist/mjs/constants.js +12 -4
  99. package/dist/mjs/index.d.ts +0 -2
  100. package/dist/mjs/index.js +1 -3
  101. package/dist/mjs/models/Offer.d.ts +1 -1
  102. package/dist/mjs/models/Offer.js +10 -3
  103. package/dist/mjs/models/Order.d.ts +1 -1
  104. package/dist/mjs/models/Order.js +22 -21
  105. package/dist/mjs/models/TeeOffer.d.ts +2 -2
  106. package/dist/mjs/models/TeeOffer.js +18 -3
  107. package/dist/mjs/proto/OrderReport.d.ts +206 -15
  108. package/dist/mjs/proto/OrderReport.js +168 -2
  109. package/dist/mjs/staticModels/ActiveOrders.d.ts +1 -1
  110. package/dist/mjs/staticModels/ActiveOrders.js +1 -1
  111. package/dist/mjs/staticModels/OfferResources.js +4 -5
  112. package/dist/mjs/staticModels/Offers.d.ts +3 -4
  113. package/dist/mjs/staticModels/Offers.js +16 -17
  114. package/dist/mjs/staticModels/OffersCommon.d.ts +18 -0
  115. package/dist/mjs/staticModels/OffersCommon.js +73 -0
  116. package/dist/mjs/staticModels/Orders.d.ts +6 -5
  117. package/dist/mjs/staticModels/Orders.js +98 -7
  118. package/dist/mjs/staticModels/SecretRequests.js +3 -4
  119. package/dist/mjs/staticModels/StaticModel.d.ts +14 -2
  120. package/dist/mjs/staticModels/StaticModel.js +90 -2
  121. package/dist/mjs/staticModels/SuperproToken.d.ts +26 -1
  122. package/dist/mjs/staticModels/SuperproToken.js +40 -1
  123. package/dist/mjs/staticModels/TeeOffers.d.ts +4 -4
  124. package/dist/mjs/staticModels/TeeOffers.js +17 -16
  125. package/dist/mjs/tee/OrderReportService.js +4 -2
  126. package/dist/mjs/tee/QuoteValidator.d.ts +3 -2
  127. package/dist/mjs/tee/QuoteValidator.js +5 -4
  128. package/dist/mjs/tee/TeeCertificateService.d.ts +1 -1
  129. package/dist/mjs/tee/TeeCertificateService.js +12 -15
  130. package/dist/mjs/tee/TeeSignatureVerifier.d.ts +6 -4
  131. package/dist/mjs/tee/TeeSignatureVerifier.js +59 -31
  132. package/dist/mjs/tee/types.d.ts +1 -1
  133. package/dist/mjs/types/Order.d.ts +28 -2
  134. package/dist/mjs/types/Order.js +21 -1
  135. package/dist/mjs/types/index.d.ts +0 -1
  136. package/dist/mjs/types/index.js +1 -2
  137. package/dist/mjs/utils/CryptoKeysTransformer.d.ts +4 -0
  138. package/dist/mjs/utils/CryptoKeysTransformer.js +50 -1
  139. package/dist/mjs/utils/NonceTracker.d.ts +1 -0
  140. package/dist/mjs/utils/NonceTracker.js +6 -2
  141. package/dist/mjs/utils/TxManager.d.ts +3 -0
  142. package/dist/mjs/utils/TxManager.js +89 -36
  143. package/dist/mjs/utils/helper.d.ts +11 -3
  144. package/dist/mjs/utils/helper.js +54 -12
  145. package/dist/mjs/utils/helpers/getRawRpc.d.ts +2 -0
  146. package/dist/mjs/utils/helpers/getRawRpc.js +15 -0
  147. package/dist/mjs/utils/helpers/index.d.ts +1 -0
  148. package/dist/mjs/utils/helpers/index.js +2 -1
  149. package/dist/mjs/utils/types.d.ts +14 -0
  150. package/dist/mjs/utils/types.js +2 -0
  151. package/package.json +7 -4
  152. package/readme.md +11 -0
  153. package/dist/cjs/contracts/Campaign.d.ts +0 -1036
  154. package/dist/cjs/contracts/Campaign.js +0 -1347
  155. package/dist/cjs/staticModels/Campaign.d.ts +0 -59
  156. package/dist/cjs/staticModels/Campaign.js +0 -248
  157. package/dist/cjs/types/Campaign.d.ts +0 -57
  158. package/dist/cjs/types/Campaign.js +0 -11
  159. package/dist/mjs/contracts/Campaign.d.ts +0 -1036
  160. package/dist/mjs/contracts/Campaign.js +0 -1344
  161. package/dist/mjs/staticModels/Campaign.d.ts +0 -59
  162. package/dist/mjs/staticModels/Campaign.js +0 -243
  163. package/dist/mjs/types/Campaign.d.ts +0 -57
  164. package/dist/mjs/types/Campaign.js +0 -8
@@ -1,1344 +0,0 @@
1
- export const CompetitionToggled = 'CompetitionToggled';
2
- export const ContentAdded = 'ContentAdded';
3
- export const ContentUpdated = 'ContentUpdated';
4
- export const ParticipantRegistered = 'ParticipantRegistered';
5
- export const RewardClaimed = 'RewardClaimed';
6
- export const RoleAdminChanged = 'RoleAdminChanged';
7
- export const RoleGranted = 'RoleGranted';
8
- export const RoleRevoked = 'RoleRevoked';
9
- export const ScoreUpdated = 'ScoreUpdated';
10
- export const abi = [
11
- {
12
- inputs: [
13
- {
14
- internalType: 'uint32',
15
- name: '_notValidBefore',
16
- type: 'uint32',
17
- },
18
- {
19
- internalType: 'uint32',
20
- name: '_notValidAfter',
21
- type: 'uint32',
22
- },
23
- {
24
- internalType: 'address',
25
- name: '_usdt',
26
- type: 'address',
27
- },
28
- {
29
- internalType: 'uint8',
30
- name: '_maxDayAttempts',
31
- type: 'uint8',
32
- },
33
- ],
34
- stateMutability: 'nonpayable',
35
- type: 'constructor',
36
- },
37
- {
38
- anonymous: false,
39
- inputs: [
40
- {
41
- indexed: false,
42
- internalType: 'bool',
43
- name: 'active',
44
- type: 'bool',
45
- },
46
- ],
47
- name: 'CompetitionToggled',
48
- type: 'event',
49
- },
50
- {
51
- anonymous: false,
52
- inputs: [
53
- {
54
- indexed: true,
55
- internalType: 'address',
56
- name: 'participant',
57
- type: 'address',
58
- },
59
- {
60
- indexed: true,
61
- internalType: 'uint256',
62
- name: 'index',
63
- type: 'uint256',
64
- },
65
- {
66
- indexed: false,
67
- internalType: 'string',
68
- name: 'link',
69
- type: 'string',
70
- },
71
- ],
72
- name: 'ContentAdded',
73
- type: 'event',
74
- },
75
- {
76
- anonymous: false,
77
- inputs: [
78
- {
79
- indexed: true,
80
- internalType: 'uint256',
81
- name: 'index',
82
- type: 'uint256',
83
- },
84
- {
85
- indexed: true,
86
- internalType: 'enum Campaign.Status',
87
- name: 'status',
88
- type: 'uint8',
89
- },
90
- ],
91
- name: 'ContentUpdated',
92
- type: 'event',
93
- },
94
- {
95
- anonymous: false,
96
- inputs: [
97
- {
98
- indexed: true,
99
- internalType: 'address',
100
- name: 'participant',
101
- type: 'address',
102
- },
103
- {
104
- indexed: true,
105
- internalType: 'address',
106
- name: 'referrer',
107
- type: 'address',
108
- },
109
- ],
110
- name: 'ParticipantRegistered',
111
- type: 'event',
112
- },
113
- {
114
- anonymous: false,
115
- inputs: [
116
- {
117
- indexed: true,
118
- internalType: 'address',
119
- name: 'participant',
120
- type: 'address',
121
- },
122
- {
123
- indexed: true,
124
- internalType: 'uint256',
125
- name: 'amount',
126
- type: 'uint256',
127
- },
128
- ],
129
- name: 'RewardClaimed',
130
- type: 'event',
131
- },
132
- {
133
- anonymous: false,
134
- inputs: [
135
- {
136
- indexed: true,
137
- internalType: 'bytes32',
138
- name: 'role',
139
- type: 'bytes32',
140
- },
141
- {
142
- indexed: true,
143
- internalType: 'bytes32',
144
- name: 'previousAdminRole',
145
- type: 'bytes32',
146
- },
147
- {
148
- indexed: true,
149
- internalType: 'bytes32',
150
- name: 'newAdminRole',
151
- type: 'bytes32',
152
- },
153
- ],
154
- name: 'RoleAdminChanged',
155
- type: 'event',
156
- },
157
- {
158
- anonymous: false,
159
- inputs: [
160
- {
161
- indexed: true,
162
- internalType: 'bytes32',
163
- name: 'role',
164
- type: 'bytes32',
165
- },
166
- {
167
- indexed: true,
168
- internalType: 'address',
169
- name: 'account',
170
- type: 'address',
171
- },
172
- {
173
- indexed: true,
174
- internalType: 'address',
175
- name: 'sender',
176
- type: 'address',
177
- },
178
- ],
179
- name: 'RoleGranted',
180
- type: 'event',
181
- },
182
- {
183
- anonymous: false,
184
- inputs: [
185
- {
186
- indexed: true,
187
- internalType: 'bytes32',
188
- name: 'role',
189
- type: 'bytes32',
190
- },
191
- {
192
- indexed: true,
193
- internalType: 'address',
194
- name: 'account',
195
- type: 'address',
196
- },
197
- {
198
- indexed: true,
199
- internalType: 'address',
200
- name: 'sender',
201
- type: 'address',
202
- },
203
- ],
204
- name: 'RoleRevoked',
205
- type: 'event',
206
- },
207
- {
208
- anonymous: false,
209
- inputs: [
210
- {
211
- indexed: true,
212
- internalType: 'address',
213
- name: 'participant',
214
- type: 'address',
215
- },
216
- {
217
- indexed: false,
218
- internalType: 'int256',
219
- name: 'oldScore',
220
- type: 'int256',
221
- },
222
- {
223
- indexed: false,
224
- internalType: 'int256',
225
- name: 'newScore',
226
- type: 'int256',
227
- },
228
- ],
229
- name: 'ScoreUpdated',
230
- type: 'event',
231
- },
232
- {
233
- inputs: [],
234
- name: 'DEFAULT_ADMIN_ROLE',
235
- outputs: [
236
- {
237
- internalType: 'bytes32',
238
- name: '',
239
- type: 'bytes32',
240
- },
241
- ],
242
- stateMutability: 'view',
243
- type: 'function',
244
- },
245
- {
246
- inputs: [
247
- {
248
- internalType: 'string',
249
- name: 'link',
250
- type: 'string',
251
- },
252
- ],
253
- name: 'addContent',
254
- outputs: [],
255
- stateMutability: 'nonpayable',
256
- type: 'function',
257
- },
258
- {
259
- inputs: [],
260
- name: 'claimReward',
261
- outputs: [],
262
- stateMutability: 'nonpayable',
263
- type: 'function',
264
- },
265
- {
266
- inputs: [],
267
- name: 'competitionActive',
268
- outputs: [
269
- {
270
- internalType: 'bool',
271
- name: '',
272
- type: 'bool',
273
- },
274
- ],
275
- stateMutability: 'view',
276
- type: 'function',
277
- },
278
- {
279
- inputs: [
280
- {
281
- internalType: 'bytes32',
282
- name: 'contentHash',
283
- type: 'bytes32',
284
- },
285
- ],
286
- name: 'contentHashExists',
287
- outputs: [
288
- {
289
- internalType: 'bool',
290
- name: '',
291
- type: 'bool',
292
- },
293
- ],
294
- stateMutability: 'view',
295
- type: 'function',
296
- },
297
- {
298
- inputs: [
299
- {
300
- internalType: 'uint256',
301
- name: '',
302
- type: 'uint256',
303
- },
304
- ],
305
- name: 'contents',
306
- outputs: [
307
- {
308
- internalType: 'enum Campaign.Status',
309
- name: 'status',
310
- type: 'uint8',
311
- },
312
- {
313
- internalType: 'address',
314
- name: 'participant',
315
- type: 'address',
316
- },
317
- {
318
- internalType: 'uint32',
319
- name: 'dayNumber',
320
- type: 'uint32',
321
- },
322
- {
323
- internalType: 'string',
324
- name: 'link',
325
- type: 'string',
326
- },
327
- {
328
- internalType: 'bytes32',
329
- name: 'contentHash',
330
- type: 'bytes32',
331
- },
332
- {
333
- internalType: 'int256',
334
- name: 'referralBonus',
335
- type: 'int256',
336
- },
337
- ],
338
- stateMutability: 'view',
339
- type: 'function',
340
- },
341
- {
342
- inputs: [],
343
- name: 'getCompetitionSetup',
344
- outputs: [
345
- {
346
- internalType: 'uint256',
347
- name: 'claimDateAfter',
348
- type: 'uint256',
349
- },
350
- {
351
- internalType: 'uint256',
352
- name: 'notValidBeforeTs',
353
- type: 'uint256',
354
- },
355
- {
356
- internalType: 'uint256',
357
- name: 'notValidAfterTs',
358
- type: 'uint256',
359
- },
360
- {
361
- internalType: 'uint256',
362
- name: 'maxDayAttemptsCount',
363
- type: 'uint256',
364
- },
365
- ],
366
- stateMutability: 'view',
367
- type: 'function',
368
- },
369
- {
370
- inputs: [],
371
- name: 'getContentCount',
372
- outputs: [
373
- {
374
- internalType: 'uint256',
375
- name: '',
376
- type: 'uint256',
377
- },
378
- ],
379
- stateMutability: 'view',
380
- type: 'function',
381
- },
382
- {
383
- inputs: [
384
- {
385
- internalType: 'uint256',
386
- name: 'from',
387
- type: 'uint256',
388
- },
389
- {
390
- internalType: 'uint256',
391
- name: 'to',
392
- type: 'uint256',
393
- },
394
- {
395
- internalType: 'enum Campaign.Status',
396
- name: 'status',
397
- type: 'uint8',
398
- },
399
- ],
400
- name: 'getContentRange',
401
- outputs: [
402
- {
403
- components: [
404
- {
405
- components: [
406
- {
407
- internalType: 'enum Campaign.Status',
408
- name: 'status',
409
- type: 'uint8',
410
- },
411
- {
412
- internalType: 'address',
413
- name: 'participant',
414
- type: 'address',
415
- },
416
- {
417
- internalType: 'uint32',
418
- name: 'dayNumber',
419
- type: 'uint32',
420
- },
421
- {
422
- internalType: 'string',
423
- name: 'link',
424
- type: 'string',
425
- },
426
- {
427
- internalType: 'bytes32',
428
- name: 'contentHash',
429
- type: 'bytes32',
430
- },
431
- {
432
- internalType: 'int256',
433
- name: 'referralBonus',
434
- type: 'int256',
435
- },
436
- ],
437
- internalType: 'struct Campaign.Content',
438
- name: 'content',
439
- type: 'tuple',
440
- },
441
- {
442
- internalType: 'uint256',
443
- name: 'index',
444
- type: 'uint256',
445
- },
446
- ],
447
- internalType: 'struct Campaign.ContentWithIndex[]',
448
- name: 'result',
449
- type: 'tuple[]',
450
- },
451
- ],
452
- stateMutability: 'view',
453
- type: 'function',
454
- },
455
- {
456
- inputs: [],
457
- name: 'getCurrentScores',
458
- outputs: [
459
- {
460
- internalType: 'int256',
461
- name: 'linkSubmissionScore',
462
- type: 'int256',
463
- },
464
- {
465
- internalType: 'int256',
466
- name: 'referralBonus',
467
- type: 'int256',
468
- },
469
- ],
470
- stateMutability: 'view',
471
- type: 'function',
472
- },
473
- {
474
- inputs: [],
475
- name: 'getLinksStat',
476
- outputs: [
477
- {
478
- components: [
479
- {
480
- internalType: 'uint256',
481
- name: 'totalAddedLinks',
482
- type: 'uint256',
483
- },
484
- {
485
- internalType: 'uint256',
486
- name: 'totalDuplicatedLinks',
487
- type: 'uint256',
488
- },
489
- {
490
- internalType: 'uint256',
491
- name: 'totalValidatedLinks',
492
- type: 'uint256',
493
- },
494
- {
495
- internalType: 'uint256',
496
- name: 'totalInvalidLinks',
497
- type: 'uint256',
498
- },
499
- ],
500
- internalType: 'struct Campaign.LinksStat',
501
- name: 'output',
502
- type: 'tuple',
503
- },
504
- ],
505
- stateMutability: 'view',
506
- type: 'function',
507
- },
508
- {
509
- inputs: [
510
- {
511
- internalType: 'uint256',
512
- name: 'rank',
513
- type: 'uint256',
514
- },
515
- ],
516
- name: 'getParticipantByRank',
517
- outputs: [
518
- {
519
- components: [
520
- {
521
- internalType: 'address',
522
- name: 'participant',
523
- type: 'address',
524
- },
525
- {
526
- internalType: 'int256',
527
- name: 'score',
528
- type: 'int256',
529
- },
530
- ],
531
- internalType: 'struct AVLTreeLib.ParticipantScore',
532
- name: '',
533
- type: 'tuple',
534
- },
535
- ],
536
- stateMutability: 'view',
537
- type: 'function',
538
- },
539
- {
540
- inputs: [
541
- {
542
- internalType: 'address',
543
- name: 'participant',
544
- type: 'address',
545
- },
546
- ],
547
- name: 'getParticipantInfo',
548
- outputs: [
549
- {
550
- components: [
551
- {
552
- components: [
553
- {
554
- internalType: 'uint8',
555
- name: 'totalDayAttempts',
556
- type: 'uint8',
557
- },
558
- {
559
- internalType: 'uint8',
560
- name: 'totalValidatedLinks',
561
- type: 'uint8',
562
- },
563
- ],
564
- internalType: 'struct Campaign.DayParticipantInfo',
565
- name: 'currentDayParticipantInfo',
566
- type: 'tuple',
567
- },
568
- {
569
- components: [
570
- {
571
- internalType: 'bool',
572
- name: 'isParticipantRegistered',
573
- type: 'bool',
574
- },
575
- {
576
- internalType: 'bool',
577
- name: 'isRewardClaimed',
578
- type: 'bool',
579
- },
580
- {
581
- internalType: 'address',
582
- name: 'referrer',
583
- type: 'address',
584
- },
585
- {
586
- internalType: 'uint256',
587
- name: 'referralsCount',
588
- type: 'uint256',
589
- },
590
- {
591
- internalType: 'int256',
592
- name: 'totalReferrerProfit',
593
- type: 'int256',
594
- },
595
- {
596
- internalType: 'int256',
597
- name: 'totalReferralsProfit',
598
- type: 'int256',
599
- },
600
- {
601
- internalType: 'uint256',
602
- name: 'totalAddedLinks',
603
- type: 'uint256',
604
- },
605
- {
606
- internalType: 'uint256',
607
- name: 'totalDuplicatedLinks',
608
- type: 'uint256',
609
- },
610
- {
611
- internalType: 'uint256',
612
- name: 'totalValidatedLinks',
613
- type: 'uint256',
614
- },
615
- {
616
- internalType: 'uint256',
617
- name: 'totalInvalidLinks',
618
- type: 'uint256',
619
- },
620
- ],
621
- internalType: 'struct Campaign.ParticipantInfo',
622
- name: 'storedInfo',
623
- type: 'tuple',
624
- },
625
- {
626
- components: [
627
- {
628
- internalType: 'address',
629
- name: 'participant',
630
- type: 'address',
631
- },
632
- {
633
- internalType: 'uint256',
634
- name: 'rank',
635
- type: 'uint256',
636
- },
637
- {
638
- internalType: 'int256',
639
- name: 'score',
640
- type: 'int256',
641
- },
642
- {
643
- internalType: 'uint256',
644
- name: 'reward',
645
- type: 'uint256',
646
- },
647
- {
648
- internalType: 'uint256',
649
- name: 'points',
650
- type: 'uint256',
651
- },
652
- ],
653
- internalType: 'struct Campaign.ParticipantInfoViewed',
654
- name: 'viewedInfo',
655
- type: 'tuple',
656
- },
657
- ],
658
- internalType: 'struct Campaign.FullParticipantInfo',
659
- name: 'data',
660
- type: 'tuple',
661
- },
662
- ],
663
- stateMutability: 'view',
664
- type: 'function',
665
- },
666
- {
667
- inputs: [
668
- {
669
- internalType: 'address',
670
- name: 'participant',
671
- type: 'address',
672
- },
673
- ],
674
- name: 'getParticipantRank',
675
- outputs: [
676
- {
677
- internalType: 'uint256',
678
- name: 'rank',
679
- type: 'uint256',
680
- },
681
- ],
682
- stateMutability: 'view',
683
- type: 'function',
684
- },
685
- {
686
- inputs: [
687
- {
688
- internalType: 'address',
689
- name: 'participant',
690
- type: 'address',
691
- },
692
- ],
693
- name: 'getParticipantRewardAndPoints',
694
- outputs: [
695
- {
696
- internalType: 'uint256',
697
- name: 'reward',
698
- type: 'uint256',
699
- },
700
- {
701
- internalType: 'uint256',
702
- name: 'points',
703
- type: 'uint256',
704
- },
705
- ],
706
- stateMutability: 'view',
707
- type: 'function',
708
- },
709
- {
710
- inputs: [
711
- {
712
- internalType: 'address',
713
- name: 'participant',
714
- type: 'address',
715
- },
716
- ],
717
- name: 'getParticipantScore',
718
- outputs: [
719
- {
720
- internalType: 'int256',
721
- name: 'score',
722
- type: 'int256',
723
- },
724
- ],
725
- stateMutability: 'view',
726
- type: 'function',
727
- },
728
- {
729
- inputs: [
730
- {
731
- internalType: 'uint256',
732
- name: 'centerRank',
733
- type: 'uint256',
734
- },
735
- {
736
- internalType: 'uint256',
737
- name: 'range',
738
- type: 'uint256',
739
- },
740
- ],
741
- name: 'getParticipantsAroundRank',
742
- outputs: [
743
- {
744
- components: [
745
- {
746
- internalType: 'address',
747
- name: 'participant',
748
- type: 'address',
749
- },
750
- {
751
- internalType: 'int256',
752
- name: 'score',
753
- type: 'int256',
754
- },
755
- ],
756
- internalType: 'struct AVLTreeLib.ParticipantScore[]',
757
- name: 'participants',
758
- type: 'tuple[]',
759
- },
760
- ],
761
- stateMutability: 'view',
762
- type: 'function',
763
- },
764
- {
765
- inputs: [
766
- {
767
- internalType: 'uint256',
768
- name: 'startRank',
769
- type: 'uint256',
770
- },
771
- {
772
- internalType: 'uint256',
773
- name: 'endRank',
774
- type: 'uint256',
775
- },
776
- ],
777
- name: 'getParticipantsByRange',
778
- outputs: [
779
- {
780
- components: [
781
- {
782
- internalType: 'address',
783
- name: 'participant',
784
- type: 'address',
785
- },
786
- {
787
- internalType: 'int256',
788
- name: 'score',
789
- type: 'int256',
790
- },
791
- ],
792
- internalType: 'struct AVLTreeLib.ParticipantScore[]',
793
- name: 'participants',
794
- type: 'tuple[]',
795
- },
796
- ],
797
- stateMutability: 'view',
798
- type: 'function',
799
- },
800
- {
801
- inputs: [
802
- {
803
- internalType: 'uint256',
804
- name: 'startRank',
805
- type: 'uint256',
806
- },
807
- {
808
- internalType: 'uint256',
809
- name: 'endRank',
810
- type: 'uint256',
811
- },
812
- ],
813
- name: 'getParticipantsInfoByRange',
814
- outputs: [
815
- {
816
- components: [
817
- {
818
- components: [
819
- {
820
- internalType: 'uint8',
821
- name: 'totalDayAttempts',
822
- type: 'uint8',
823
- },
824
- {
825
- internalType: 'uint8',
826
- name: 'totalValidatedLinks',
827
- type: 'uint8',
828
- },
829
- ],
830
- internalType: 'struct Campaign.DayParticipantInfo',
831
- name: 'currentDayParticipantInfo',
832
- type: 'tuple',
833
- },
834
- {
835
- components: [
836
- {
837
- internalType: 'bool',
838
- name: 'isParticipantRegistered',
839
- type: 'bool',
840
- },
841
- {
842
- internalType: 'bool',
843
- name: 'isRewardClaimed',
844
- type: 'bool',
845
- },
846
- {
847
- internalType: 'address',
848
- name: 'referrer',
849
- type: 'address',
850
- },
851
- {
852
- internalType: 'uint256',
853
- name: 'referralsCount',
854
- type: 'uint256',
855
- },
856
- {
857
- internalType: 'int256',
858
- name: 'totalReferrerProfit',
859
- type: 'int256',
860
- },
861
- {
862
- internalType: 'int256',
863
- name: 'totalReferralsProfit',
864
- type: 'int256',
865
- },
866
- {
867
- internalType: 'uint256',
868
- name: 'totalAddedLinks',
869
- type: 'uint256',
870
- },
871
- {
872
- internalType: 'uint256',
873
- name: 'totalDuplicatedLinks',
874
- type: 'uint256',
875
- },
876
- {
877
- internalType: 'uint256',
878
- name: 'totalValidatedLinks',
879
- type: 'uint256',
880
- },
881
- {
882
- internalType: 'uint256',
883
- name: 'totalInvalidLinks',
884
- type: 'uint256',
885
- },
886
- ],
887
- internalType: 'struct Campaign.ParticipantInfo',
888
- name: 'storedInfo',
889
- type: 'tuple',
890
- },
891
- {
892
- components: [
893
- {
894
- internalType: 'address',
895
- name: 'participant',
896
- type: 'address',
897
- },
898
- {
899
- internalType: 'uint256',
900
- name: 'rank',
901
- type: 'uint256',
902
- },
903
- {
904
- internalType: 'int256',
905
- name: 'score',
906
- type: 'int256',
907
- },
908
- {
909
- internalType: 'uint256',
910
- name: 'reward',
911
- type: 'uint256',
912
- },
913
- {
914
- internalType: 'uint256',
915
- name: 'points',
916
- type: 'uint256',
917
- },
918
- ],
919
- internalType: 'struct Campaign.ParticipantInfoViewed',
920
- name: 'viewedInfo',
921
- type: 'tuple',
922
- },
923
- ],
924
- internalType: 'struct Campaign.FullParticipantInfo[]',
925
- name: 'datas',
926
- type: 'tuple[]',
927
- },
928
- ],
929
- stateMutability: 'view',
930
- type: 'function',
931
- },
932
- {
933
- inputs: [
934
- {
935
- internalType: 'bytes32',
936
- name: 'role',
937
- type: 'bytes32',
938
- },
939
- ],
940
- name: 'getRoleAdmin',
941
- outputs: [
942
- {
943
- internalType: 'bytes32',
944
- name: '',
945
- type: 'bytes32',
946
- },
947
- ],
948
- stateMutability: 'view',
949
- type: 'function',
950
- },
951
- {
952
- inputs: [
953
- {
954
- internalType: 'uint256',
955
- name: 'count',
956
- type: 'uint256',
957
- },
958
- ],
959
- name: 'getTopParticipants',
960
- outputs: [
961
- {
962
- components: [
963
- {
964
- internalType: 'address',
965
- name: 'participant',
966
- type: 'address',
967
- },
968
- {
969
- internalType: 'int256',
970
- name: 'score',
971
- type: 'int256',
972
- },
973
- ],
974
- internalType: 'struct AVLTreeLib.ParticipantScore[]',
975
- name: 'participants',
976
- type: 'tuple[]',
977
- },
978
- ],
979
- stateMutability: 'view',
980
- type: 'function',
981
- },
982
- {
983
- inputs: [
984
- {
985
- internalType: 'uint256',
986
- name: 'count',
987
- type: 'uint256',
988
- },
989
- ],
990
- name: 'getTopParticipantsInfo',
991
- outputs: [
992
- {
993
- components: [
994
- {
995
- components: [
996
- {
997
- internalType: 'uint8',
998
- name: 'totalDayAttempts',
999
- type: 'uint8',
1000
- },
1001
- {
1002
- internalType: 'uint8',
1003
- name: 'totalValidatedLinks',
1004
- type: 'uint8',
1005
- },
1006
- ],
1007
- internalType: 'struct Campaign.DayParticipantInfo',
1008
- name: 'currentDayParticipantInfo',
1009
- type: 'tuple',
1010
- },
1011
- {
1012
- components: [
1013
- {
1014
- internalType: 'bool',
1015
- name: 'isParticipantRegistered',
1016
- type: 'bool',
1017
- },
1018
- {
1019
- internalType: 'bool',
1020
- name: 'isRewardClaimed',
1021
- type: 'bool',
1022
- },
1023
- {
1024
- internalType: 'address',
1025
- name: 'referrer',
1026
- type: 'address',
1027
- },
1028
- {
1029
- internalType: 'uint256',
1030
- name: 'referralsCount',
1031
- type: 'uint256',
1032
- },
1033
- {
1034
- internalType: 'int256',
1035
- name: 'totalReferrerProfit',
1036
- type: 'int256',
1037
- },
1038
- {
1039
- internalType: 'int256',
1040
- name: 'totalReferralsProfit',
1041
- type: 'int256',
1042
- },
1043
- {
1044
- internalType: 'uint256',
1045
- name: 'totalAddedLinks',
1046
- type: 'uint256',
1047
- },
1048
- {
1049
- internalType: 'uint256',
1050
- name: 'totalDuplicatedLinks',
1051
- type: 'uint256',
1052
- },
1053
- {
1054
- internalType: 'uint256',
1055
- name: 'totalValidatedLinks',
1056
- type: 'uint256',
1057
- },
1058
- {
1059
- internalType: 'uint256',
1060
- name: 'totalInvalidLinks',
1061
- type: 'uint256',
1062
- },
1063
- ],
1064
- internalType: 'struct Campaign.ParticipantInfo',
1065
- name: 'storedInfo',
1066
- type: 'tuple',
1067
- },
1068
- {
1069
- components: [
1070
- {
1071
- internalType: 'address',
1072
- name: 'participant',
1073
- type: 'address',
1074
- },
1075
- {
1076
- internalType: 'uint256',
1077
- name: 'rank',
1078
- type: 'uint256',
1079
- },
1080
- {
1081
- internalType: 'int256',
1082
- name: 'score',
1083
- type: 'int256',
1084
- },
1085
- {
1086
- internalType: 'uint256',
1087
- name: 'reward',
1088
- type: 'uint256',
1089
- },
1090
- {
1091
- internalType: 'uint256',
1092
- name: 'points',
1093
- type: 'uint256',
1094
- },
1095
- ],
1096
- internalType: 'struct Campaign.ParticipantInfoViewed',
1097
- name: 'viewedInfo',
1098
- type: 'tuple',
1099
- },
1100
- ],
1101
- internalType: 'struct Campaign.FullParticipantInfo[]',
1102
- name: 'datas',
1103
- type: 'tuple[]',
1104
- },
1105
- ],
1106
- stateMutability: 'view',
1107
- type: 'function',
1108
- },
1109
- {
1110
- inputs: [],
1111
- name: 'getTotalParticipants',
1112
- outputs: [
1113
- {
1114
- internalType: 'uint256',
1115
- name: 'count',
1116
- type: 'uint256',
1117
- },
1118
- ],
1119
- stateMutability: 'view',
1120
- type: 'function',
1121
- },
1122
- {
1123
- inputs: [
1124
- {
1125
- internalType: 'bytes32',
1126
- name: 'role',
1127
- type: 'bytes32',
1128
- },
1129
- {
1130
- internalType: 'address',
1131
- name: 'account',
1132
- type: 'address',
1133
- },
1134
- ],
1135
- name: 'grantRole',
1136
- outputs: [],
1137
- stateMutability: 'nonpayable',
1138
- type: 'function',
1139
- },
1140
- {
1141
- inputs: [
1142
- {
1143
- internalType: 'bytes32',
1144
- name: 'role',
1145
- type: 'bytes32',
1146
- },
1147
- {
1148
- internalType: 'address',
1149
- name: 'account',
1150
- type: 'address',
1151
- },
1152
- ],
1153
- name: 'hasRole',
1154
- outputs: [
1155
- {
1156
- internalType: 'bool',
1157
- name: '',
1158
- type: 'bool',
1159
- },
1160
- ],
1161
- stateMutability: 'view',
1162
- type: 'function',
1163
- },
1164
- {
1165
- inputs: [
1166
- {
1167
- internalType: 'string',
1168
- name: 'link',
1169
- type: 'string',
1170
- },
1171
- ],
1172
- name: 'isLinkUnique',
1173
- outputs: [
1174
- {
1175
- internalType: 'string',
1176
- name: 'clearedLink',
1177
- type: 'string',
1178
- },
1179
- {
1180
- internalType: 'bool',
1181
- name: 'isUnique',
1182
- type: 'bool',
1183
- },
1184
- ],
1185
- stateMutability: 'view',
1186
- type: 'function',
1187
- },
1188
- {
1189
- inputs: [
1190
- {
1191
- internalType: 'address',
1192
- name: 'participant',
1193
- type: 'address',
1194
- },
1195
- ],
1196
- name: 'participantExist',
1197
- outputs: [
1198
- {
1199
- internalType: 'bool',
1200
- name: '',
1201
- type: 'bool',
1202
- },
1203
- ],
1204
- stateMutability: 'view',
1205
- type: 'function',
1206
- },
1207
- {
1208
- inputs: [
1209
- {
1210
- internalType: 'address',
1211
- name: 'referrer',
1212
- type: 'address',
1213
- },
1214
- ],
1215
- name: 'registerParticipant',
1216
- outputs: [],
1217
- stateMutability: 'nonpayable',
1218
- type: 'function',
1219
- },
1220
- {
1221
- inputs: [
1222
- {
1223
- internalType: 'bytes32',
1224
- name: 'role',
1225
- type: 'bytes32',
1226
- },
1227
- {
1228
- internalType: 'address',
1229
- name: 'account',
1230
- type: 'address',
1231
- },
1232
- ],
1233
- name: 'renounceRole',
1234
- outputs: [],
1235
- stateMutability: 'nonpayable',
1236
- type: 'function',
1237
- },
1238
- {
1239
- inputs: [
1240
- {
1241
- internalType: 'address',
1242
- name: 'participant',
1243
- type: 'address',
1244
- },
1245
- ],
1246
- name: 'revokeParticipant',
1247
- outputs: [],
1248
- stateMutability: 'nonpayable',
1249
- type: 'function',
1250
- },
1251
- {
1252
- inputs: [
1253
- {
1254
- internalType: 'bytes32',
1255
- name: 'role',
1256
- type: 'bytes32',
1257
- },
1258
- {
1259
- internalType: 'address',
1260
- name: 'account',
1261
- type: 'address',
1262
- },
1263
- ],
1264
- name: 'revokeRole',
1265
- outputs: [],
1266
- stateMutability: 'nonpayable',
1267
- type: 'function',
1268
- },
1269
- {
1270
- inputs: [
1271
- {
1272
- internalType: 'bytes4',
1273
- name: 'interfaceId',
1274
- type: 'bytes4',
1275
- },
1276
- ],
1277
- name: 'supportsInterface',
1278
- outputs: [
1279
- {
1280
- internalType: 'bool',
1281
- name: '',
1282
- type: 'bool',
1283
- },
1284
- ],
1285
- stateMutability: 'view',
1286
- type: 'function',
1287
- },
1288
- {
1289
- inputs: [
1290
- {
1291
- internalType: 'uint256',
1292
- name: 'index',
1293
- type: 'uint256',
1294
- },
1295
- {
1296
- internalType: 'bytes32',
1297
- name: 'contentHash',
1298
- type: 'bytes32',
1299
- },
1300
- {
1301
- internalType: 'enum Campaign.Status',
1302
- name: 'status',
1303
- type: 'uint8',
1304
- },
1305
- ],
1306
- name: 'updateContent',
1307
- outputs: [],
1308
- stateMutability: 'nonpayable',
1309
- type: 'function',
1310
- },
1311
- {
1312
- inputs: [],
1313
- name: 'usdt',
1314
- outputs: [
1315
- {
1316
- internalType: 'address',
1317
- name: '',
1318
- type: 'address',
1319
- },
1320
- ],
1321
- stateMutability: 'view',
1322
- type: 'function',
1323
- },
1324
- {
1325
- inputs: [
1326
- {
1327
- internalType: 'address',
1328
- name: 'token',
1329
- type: 'address',
1330
- },
1331
- {
1332
- internalType: 'uint256',
1333
- name: 'amount',
1334
- type: 'uint256',
1335
- },
1336
- ],
1337
- name: 'withdrawByAdmin',
1338
- outputs: [],
1339
- stateMutability: 'nonpayable',
1340
- type: 'function',
1341
- },
1342
- ];
1343
- export default abi;
1344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FtcGFpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJhY3RzL0NhbXBhaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLG9CQUE2QixDQUFDO0FBQ2hFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUF1QixDQUFDO0FBQ3BELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxnQkFBeUIsQ0FBQztBQUN4RCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyx1QkFBZ0MsQ0FBQztBQUN0RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsZUFBd0IsQ0FBQztBQUN0RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBMkIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsYUFBc0IsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsYUFBc0IsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsY0FBdUIsQ0FBQztBQVdwRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUc7SUFDakI7UUFDRSxNQUFNLEVBQUU7WUFDTjtnQkFDRSxZQUFZLEVBQUUsUUFBUTtnQkFDdEIsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsSUFBSSxFQUFFLFFBQVE7YUFDZjtZQUNEO2dCQUNFLFlBQVksRUFBRSxRQUFRO2dCQUN0QixJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixJQUFJLEVBQUUsUUFBUTthQUNmO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRSxTQUFTO2FBQ2hCO1lBQ0Q7Z0JBQ0UsWUFBWSxFQUFFLE9BQU87Z0JBQ3JCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLElBQUksRUFBRSxPQUFPO2FBQ2Q7U0FDRjtRQUNELGVBQWUsRUFBRSxZQUFZO1FBQzdCLElB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