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