@perkos/contracts-erc8004 1.0.0

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.
package/dist/index.js ADDED
@@ -0,0 +1,705 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ ATTESTATION_TYPES: () => ATTESTATION_TYPES,
24
+ ERC8004_ABIS: () => ERC8004_ABIS,
25
+ IDENTITY_REGISTRY_ABI: () => IDENTITY_REGISTRY_ABI,
26
+ RATING: () => RATING,
27
+ REPUTATION_REGISTRY_ABI: () => REPUTATION_REGISTRY_ABI,
28
+ VALIDATION_REGISTRY_ABI: () => VALIDATION_REGISTRY_ABI,
29
+ calculateAverageRating: () => calculateAverageRating,
30
+ decodeMetadataValue: () => decodeMetadataValue,
31
+ encodeMetadataValue: () => encodeMetadataValue,
32
+ getAttestationStatus: () => getAttestationStatus,
33
+ isAttestationValid: () => isAttestationValid
34
+ });
35
+ module.exports = __toCommonJS(index_exports);
36
+ var IDENTITY_REGISTRY_ABI = [
37
+ // Read functions
38
+ {
39
+ inputs: [{ name: "agentId", type: "uint256" }],
40
+ name: "tokenURI",
41
+ outputs: [{ name: "", type: "string" }],
42
+ stateMutability: "view",
43
+ type: "function"
44
+ },
45
+ {
46
+ inputs: [{ name: "agentId", type: "uint256" }],
47
+ name: "ownerOf",
48
+ outputs: [{ name: "", type: "address" }],
49
+ stateMutability: "view",
50
+ type: "function"
51
+ },
52
+ {
53
+ inputs: [{ name: "owner", type: "address" }],
54
+ name: "getAgentsByOwner",
55
+ outputs: [{ name: "", type: "uint256[]" }],
56
+ stateMutability: "view",
57
+ type: "function"
58
+ },
59
+ {
60
+ inputs: [],
61
+ name: "totalAgents",
62
+ outputs: [{ name: "", type: "uint256" }],
63
+ stateMutability: "view",
64
+ type: "function"
65
+ },
66
+ {
67
+ inputs: [],
68
+ name: "nextAgentId",
69
+ outputs: [{ name: "", type: "uint256" }],
70
+ stateMutability: "view",
71
+ type: "function"
72
+ },
73
+ {
74
+ inputs: [
75
+ { name: "agentId", type: "uint256" },
76
+ { name: "key", type: "string" }
77
+ ],
78
+ name: "getMetadata",
79
+ outputs: [{ name: "value", type: "bytes" }],
80
+ stateMutability: "view",
81
+ type: "function"
82
+ },
83
+ {
84
+ inputs: [],
85
+ name: "version",
86
+ outputs: [{ name: "", type: "string" }],
87
+ stateMutability: "pure",
88
+ type: "function"
89
+ },
90
+ // Write functions
91
+ {
92
+ inputs: [
93
+ { name: "tokenURI_", type: "string" },
94
+ {
95
+ name: "metadata",
96
+ type: "tuple[]",
97
+ components: [
98
+ { name: "key", type: "string" },
99
+ { name: "value", type: "bytes" }
100
+ ]
101
+ }
102
+ ],
103
+ name: "register",
104
+ outputs: [{ name: "agentId", type: "uint256" }],
105
+ stateMutability: "nonpayable",
106
+ type: "function"
107
+ },
108
+ {
109
+ inputs: [{ name: "tokenURI_", type: "string" }],
110
+ name: "register",
111
+ outputs: [{ name: "agentId", type: "uint256" }],
112
+ stateMutability: "nonpayable",
113
+ type: "function"
114
+ },
115
+ {
116
+ inputs: [],
117
+ name: "register",
118
+ outputs: [{ name: "agentId", type: "uint256" }],
119
+ stateMutability: "nonpayable",
120
+ type: "function"
121
+ },
122
+ {
123
+ inputs: [
124
+ { name: "agentId", type: "uint256" },
125
+ { name: "key", type: "string" },
126
+ { name: "value", type: "bytes" }
127
+ ],
128
+ name: "setMetadata",
129
+ outputs: [],
130
+ stateMutability: "nonpayable",
131
+ type: "function"
132
+ },
133
+ {
134
+ inputs: [
135
+ { name: "agentId", type: "uint256" },
136
+ { name: "tokenURI_", type: "string" }
137
+ ],
138
+ name: "setTokenURI",
139
+ outputs: [],
140
+ stateMutability: "nonpayable",
141
+ type: "function"
142
+ },
143
+ // Events
144
+ {
145
+ anonymous: false,
146
+ inputs: [
147
+ { indexed: true, name: "agentId", type: "uint256" },
148
+ { indexed: false, name: "tokenURI", type: "string" },
149
+ { indexed: true, name: "owner", type: "address" }
150
+ ],
151
+ name: "Registered",
152
+ type: "event"
153
+ },
154
+ {
155
+ anonymous: false,
156
+ inputs: [
157
+ { indexed: true, name: "agentId", type: "uint256" },
158
+ { indexed: true, name: "indexedKey", type: "string" },
159
+ { indexed: false, name: "key", type: "string" },
160
+ { indexed: false, name: "value", type: "bytes" }
161
+ ],
162
+ name: "MetadataSet",
163
+ type: "event"
164
+ }
165
+ ];
166
+ var REPUTATION_REGISTRY_ABI = [
167
+ // Read functions
168
+ {
169
+ inputs: [{ name: "agentId", type: "uint256" }],
170
+ name: "getSummary",
171
+ outputs: [
172
+ {
173
+ name: "summary",
174
+ type: "tuple",
175
+ components: [
176
+ { name: "totalFeedback", type: "uint256" },
177
+ { name: "activeFeedback", type: "uint256" },
178
+ { name: "averageRating", type: "int256" },
179
+ { name: "positiveCount", type: "uint256" },
180
+ { name: "negativeCount", type: "uint256" },
181
+ { name: "neutralCount", type: "uint256" },
182
+ { name: "lastUpdated", type: "uint256" }
183
+ ]
184
+ }
185
+ ],
186
+ stateMutability: "view",
187
+ type: "function"
188
+ },
189
+ {
190
+ inputs: [
191
+ { name: "agentId", type: "uint256" },
192
+ { name: "index", type: "uint256" }
193
+ ],
194
+ name: "readFeedback",
195
+ outputs: [
196
+ {
197
+ name: "feedback",
198
+ type: "tuple",
199
+ components: [
200
+ { name: "client", type: "address" },
201
+ { name: "rating", type: "int8" },
202
+ { name: "comment", type: "string" },
203
+ { name: "timestamp", type: "uint256" },
204
+ { name: "revoked", type: "bool" },
205
+ { name: "response", type: "string" }
206
+ ]
207
+ }
208
+ ],
209
+ stateMutability: "view",
210
+ type: "function"
211
+ },
212
+ {
213
+ inputs: [{ name: "agentId", type: "uint256" }],
214
+ name: "readAllFeedback",
215
+ outputs: [
216
+ {
217
+ name: "",
218
+ type: "tuple[]",
219
+ components: [
220
+ { name: "client", type: "address" },
221
+ { name: "rating", type: "int8" },
222
+ { name: "comment", type: "string" },
223
+ { name: "timestamp", type: "uint256" },
224
+ { name: "revoked", type: "bool" },
225
+ { name: "response", type: "string" }
226
+ ]
227
+ }
228
+ ],
229
+ stateMutability: "view",
230
+ type: "function"
231
+ },
232
+ {
233
+ inputs: [{ name: "agentId", type: "uint256" }],
234
+ name: "getLastIndex",
235
+ outputs: [{ name: "lastIndex", type: "uint256" }],
236
+ stateMutability: "view",
237
+ type: "function"
238
+ },
239
+ {
240
+ inputs: [{ name: "agentId", type: "uint256" }],
241
+ name: "getClients",
242
+ outputs: [{ name: "", type: "address[]" }],
243
+ stateMutability: "view",
244
+ type: "function"
245
+ },
246
+ {
247
+ inputs: [
248
+ { name: "agentId", type: "uint256" },
249
+ { name: "client", type: "address" }
250
+ ],
251
+ name: "hasClientFeedback",
252
+ outputs: [{ name: "hasFeedback", type: "bool" }],
253
+ stateMutability: "view",
254
+ type: "function"
255
+ },
256
+ {
257
+ inputs: [],
258
+ name: "identityRegistry",
259
+ outputs: [{ name: "registry", type: "address" }],
260
+ stateMutability: "view",
261
+ type: "function"
262
+ },
263
+ {
264
+ inputs: [],
265
+ name: "version",
266
+ outputs: [{ name: "", type: "string" }],
267
+ stateMutability: "pure",
268
+ type: "function"
269
+ },
270
+ // Write functions
271
+ {
272
+ inputs: [
273
+ { name: "agentId", type: "uint256" },
274
+ { name: "rating", type: "int8" },
275
+ { name: "comment", type: "string" },
276
+ {
277
+ name: "auth",
278
+ type: "tuple",
279
+ components: [
280
+ { name: "agentId", type: "uint256" },
281
+ { name: "client", type: "address" },
282
+ { name: "nonce", type: "uint256" },
283
+ { name: "deadline", type: "uint256" }
284
+ ]
285
+ },
286
+ { name: "signature", type: "bytes" }
287
+ ],
288
+ name: "giveFeedback",
289
+ outputs: [{ name: "index", type: "uint256" }],
290
+ stateMutability: "nonpayable",
291
+ type: "function"
292
+ },
293
+ {
294
+ inputs: [
295
+ { name: "agentId", type: "uint256" },
296
+ { name: "rating", type: "int8" },
297
+ { name: "comment", type: "string" }
298
+ ],
299
+ name: "giveFeedback",
300
+ outputs: [{ name: "index", type: "uint256" }],
301
+ stateMutability: "nonpayable",
302
+ type: "function"
303
+ },
304
+ {
305
+ inputs: [
306
+ { name: "agentId", type: "uint256" },
307
+ { name: "index", type: "uint256" }
308
+ ],
309
+ name: "revokeFeedback",
310
+ outputs: [],
311
+ stateMutability: "nonpayable",
312
+ type: "function"
313
+ },
314
+ {
315
+ inputs: [
316
+ { name: "agentId", type: "uint256" },
317
+ { name: "index", type: "uint256" },
318
+ { name: "response", type: "string" }
319
+ ],
320
+ name: "appendResponse",
321
+ outputs: [],
322
+ stateMutability: "nonpayable",
323
+ type: "function"
324
+ },
325
+ // Events
326
+ {
327
+ anonymous: false,
328
+ inputs: [
329
+ { indexed: true, name: "agentId", type: "uint256" },
330
+ { indexed: true, name: "client", type: "address" },
331
+ { indexed: true, name: "index", type: "uint256" },
332
+ { indexed: false, name: "rating", type: "int8" },
333
+ { indexed: false, name: "comment", type: "string" }
334
+ ],
335
+ name: "FeedbackGiven",
336
+ type: "event"
337
+ },
338
+ {
339
+ anonymous: false,
340
+ inputs: [
341
+ { indexed: true, name: "agentId", type: "uint256" },
342
+ { indexed: true, name: "client", type: "address" },
343
+ { indexed: true, name: "index", type: "uint256" }
344
+ ],
345
+ name: "FeedbackRevoked",
346
+ type: "event"
347
+ },
348
+ {
349
+ anonymous: false,
350
+ inputs: [
351
+ { indexed: true, name: "agentId", type: "uint256" },
352
+ { indexed: true, name: "feedbackIndex", type: "uint256" },
353
+ { indexed: false, name: "response", type: "string" }
354
+ ],
355
+ name: "ResponseAppended",
356
+ type: "event"
357
+ }
358
+ ];
359
+ var VALIDATION_REGISTRY_ABI = [
360
+ // Read functions
361
+ {
362
+ inputs: [{ name: "validator", type: "address" }],
363
+ name: "getValidator",
364
+ outputs: [
365
+ {
366
+ name: "info",
367
+ type: "tuple",
368
+ components: [
369
+ { name: "name", type: "string" },
370
+ { name: "metadataURI", type: "string" },
371
+ { name: "stake", type: "uint256" },
372
+ { name: "registeredAt", type: "uint256" },
373
+ { name: "active", type: "bool" },
374
+ { name: "attestationCount", type: "uint256" }
375
+ ]
376
+ }
377
+ ],
378
+ stateMutability: "view",
379
+ type: "function"
380
+ },
381
+ {
382
+ inputs: [{ name: "validator", type: "address" }],
383
+ name: "isActiveValidator",
384
+ outputs: [{ name: "isActive", type: "bool" }],
385
+ stateMutability: "view",
386
+ type: "function"
387
+ },
388
+ {
389
+ inputs: [
390
+ { name: "agentId", type: "uint256" },
391
+ { name: "attestationId", type: "uint256" }
392
+ ],
393
+ name: "getAttestation",
394
+ outputs: [
395
+ {
396
+ name: "attestation",
397
+ type: "tuple",
398
+ components: [
399
+ { name: "validator", type: "address" },
400
+ { name: "attestationType", type: "string" },
401
+ { name: "dataHash", type: "bytes32" },
402
+ { name: "dataURI", type: "string" },
403
+ { name: "createdAt", type: "uint256" },
404
+ { name: "expiresAt", type: "uint256" },
405
+ { name: "revoked", type: "bool" },
406
+ { name: "confidenceScore", type: "uint8" }
407
+ ]
408
+ }
409
+ ],
410
+ stateMutability: "view",
411
+ type: "function"
412
+ },
413
+ {
414
+ inputs: [{ name: "agentId", type: "uint256" }],
415
+ name: "getAllAttestations",
416
+ outputs: [
417
+ {
418
+ name: "",
419
+ type: "tuple[]",
420
+ components: [
421
+ { name: "validator", type: "address" },
422
+ { name: "attestationType", type: "string" },
423
+ { name: "dataHash", type: "bytes32" },
424
+ { name: "dataURI", type: "string" },
425
+ { name: "createdAt", type: "uint256" },
426
+ { name: "expiresAt", type: "uint256" },
427
+ { name: "revoked", type: "bool" },
428
+ { name: "confidenceScore", type: "uint8" }
429
+ ]
430
+ }
431
+ ],
432
+ stateMutability: "view",
433
+ type: "function"
434
+ },
435
+ {
436
+ inputs: [{ name: "agentId", type: "uint256" }],
437
+ name: "getActiveAttestations",
438
+ outputs: [
439
+ {
440
+ name: "",
441
+ type: "tuple[]",
442
+ components: [
443
+ { name: "validator", type: "address" },
444
+ { name: "attestationType", type: "string" },
445
+ { name: "dataHash", type: "bytes32" },
446
+ { name: "dataURI", type: "string" },
447
+ { name: "createdAt", type: "uint256" },
448
+ { name: "expiresAt", type: "uint256" },
449
+ { name: "revoked", type: "bool" },
450
+ { name: "confidenceScore", type: "uint8" }
451
+ ]
452
+ }
453
+ ],
454
+ stateMutability: "view",
455
+ type: "function"
456
+ },
457
+ {
458
+ inputs: [
459
+ { name: "agentId", type: "uint256" },
460
+ { name: "attestationType", type: "string" }
461
+ ],
462
+ name: "getAttestationsByType",
463
+ outputs: [
464
+ {
465
+ name: "",
466
+ type: "tuple[]",
467
+ components: [
468
+ { name: "validator", type: "address" },
469
+ { name: "attestationType", type: "string" },
470
+ { name: "dataHash", type: "bytes32" },
471
+ { name: "dataURI", type: "string" },
472
+ { name: "createdAt", type: "uint256" },
473
+ { name: "expiresAt", type: "uint256" },
474
+ { name: "revoked", type: "bool" },
475
+ { name: "confidenceScore", type: "uint8" }
476
+ ]
477
+ }
478
+ ],
479
+ stateMutability: "view",
480
+ type: "function"
481
+ },
482
+ {
483
+ inputs: [{ name: "agentId", type: "uint256" }],
484
+ name: "getValidationSummary",
485
+ outputs: [
486
+ {
487
+ name: "summary",
488
+ type: "tuple",
489
+ components: [
490
+ { name: "totalAttestations", type: "uint256" },
491
+ { name: "activeAttestations", type: "uint256" },
492
+ { name: "expiredAttestations", type: "uint256" },
493
+ { name: "revokedAttestations", type: "uint256" },
494
+ { name: "validatorCount", type: "uint256" },
495
+ { name: "averageConfidence", type: "uint8" },
496
+ { name: "lastUpdated", type: "uint256" }
497
+ ]
498
+ }
499
+ ],
500
+ stateMutability: "view",
501
+ type: "function"
502
+ },
503
+ {
504
+ inputs: [
505
+ { name: "agentId", type: "uint256" },
506
+ { name: "attestationType", type: "string" }
507
+ ],
508
+ name: "hasValidAttestation",
509
+ outputs: [{ name: "hasValid", type: "bool" }],
510
+ stateMutability: "view",
511
+ type: "function"
512
+ },
513
+ {
514
+ inputs: [],
515
+ name: "identityRegistry",
516
+ outputs: [{ name: "registry", type: "address" }],
517
+ stateMutability: "view",
518
+ type: "function"
519
+ },
520
+ {
521
+ inputs: [],
522
+ name: "minimumStake",
523
+ outputs: [{ name: "minStake", type: "uint256" }],
524
+ stateMutability: "view",
525
+ type: "function"
526
+ },
527
+ {
528
+ inputs: [],
529
+ name: "version",
530
+ outputs: [{ name: "", type: "string" }],
531
+ stateMutability: "pure",
532
+ type: "function"
533
+ },
534
+ // Write functions
535
+ {
536
+ inputs: [
537
+ { name: "name", type: "string" },
538
+ { name: "metadataURI", type: "string" }
539
+ ],
540
+ name: "registerValidator",
541
+ outputs: [],
542
+ stateMutability: "payable",
543
+ type: "function"
544
+ },
545
+ {
546
+ inputs: [],
547
+ name: "updateStake",
548
+ outputs: [],
549
+ stateMutability: "payable",
550
+ type: "function"
551
+ },
552
+ {
553
+ inputs: [{ name: "amount", type: "uint256" }],
554
+ name: "withdrawStake",
555
+ outputs: [],
556
+ stateMutability: "nonpayable",
557
+ type: "function"
558
+ },
559
+ {
560
+ inputs: [],
561
+ name: "deactivateValidator",
562
+ outputs: [],
563
+ stateMutability: "nonpayable",
564
+ type: "function"
565
+ },
566
+ {
567
+ inputs: [
568
+ { name: "agentId", type: "uint256" },
569
+ { name: "attestationType", type: "string" },
570
+ { name: "dataHash", type: "bytes32" },
571
+ { name: "dataURI", type: "string" },
572
+ { name: "validityPeriod", type: "uint256" },
573
+ { name: "confidenceScore", type: "uint8" }
574
+ ],
575
+ name: "attest",
576
+ outputs: [{ name: "attestationId", type: "uint256" }],
577
+ stateMutability: "nonpayable",
578
+ type: "function"
579
+ },
580
+ {
581
+ inputs: [
582
+ { name: "agentId", type: "uint256" },
583
+ { name: "attestationId", type: "uint256" }
584
+ ],
585
+ name: "revokeAttestation",
586
+ outputs: [],
587
+ stateMutability: "nonpayable",
588
+ type: "function"
589
+ },
590
+ // Events
591
+ {
592
+ anonymous: false,
593
+ inputs: [
594
+ { indexed: true, name: "validator", type: "address" },
595
+ { indexed: false, name: "name", type: "string" },
596
+ { indexed: false, name: "stake", type: "uint256" }
597
+ ],
598
+ name: "ValidatorRegistered",
599
+ type: "event"
600
+ },
601
+ {
602
+ anonymous: false,
603
+ inputs: [
604
+ { indexed: true, name: "validator", type: "address" },
605
+ { indexed: false, name: "oldStake", type: "uint256" },
606
+ { indexed: false, name: "newStake", type: "uint256" }
607
+ ],
608
+ name: "StakeUpdated",
609
+ type: "event"
610
+ },
611
+ {
612
+ anonymous: false,
613
+ inputs: [{ indexed: true, name: "validator", type: "address" }],
614
+ name: "ValidatorRemoved",
615
+ type: "event"
616
+ },
617
+ {
618
+ anonymous: false,
619
+ inputs: [
620
+ { indexed: true, name: "agentId", type: "uint256" },
621
+ { indexed: true, name: "validator", type: "address" },
622
+ { indexed: true, name: "attestationId", type: "uint256" },
623
+ { indexed: false, name: "attestationType", type: "string" }
624
+ ],
625
+ name: "AttestationCreated",
626
+ type: "event"
627
+ },
628
+ {
629
+ anonymous: false,
630
+ inputs: [
631
+ { indexed: true, name: "agentId", type: "uint256" },
632
+ { indexed: true, name: "validator", type: "address" },
633
+ { indexed: true, name: "attestationId", type: "uint256" }
634
+ ],
635
+ name: "AttestationRevoked",
636
+ type: "event"
637
+ },
638
+ {
639
+ anonymous: false,
640
+ inputs: [
641
+ { indexed: true, name: "agentId", type: "uint256" },
642
+ { indexed: true, name: "attestationId", type: "uint256" }
643
+ ],
644
+ name: "AttestationExpired",
645
+ type: "event"
646
+ }
647
+ ];
648
+ var ERC8004_ABIS = {
649
+ IdentityRegistry: IDENTITY_REGISTRY_ABI,
650
+ ReputationRegistry: REPUTATION_REGISTRY_ABI,
651
+ ValidationRegistry: VALIDATION_REGISTRY_ABI
652
+ };
653
+ var RATING = {
654
+ NEGATIVE: -1,
655
+ NEUTRAL: 0,
656
+ POSITIVE: 1
657
+ };
658
+ var ATTESTATION_TYPES = {
659
+ KYC: "kyc",
660
+ AML: "aml",
661
+ IDENTITY: "identity",
662
+ CAPABILITY: "capability",
663
+ PERFORMANCE: "performance",
664
+ SECURITY: "security",
665
+ COMPLIANCE: "compliance"
666
+ };
667
+ function encodeMetadataValue(value) {
668
+ const encoder = new TextEncoder();
669
+ const bytes = encoder.encode(value);
670
+ return `0x${Array.from(bytes).map((b) => b.toString(16).padStart(2, "0")).join("")}`;
671
+ }
672
+ function decodeMetadataValue(hex) {
673
+ const bytes = hex.slice(2).match(/.{2}/g);
674
+ if (!bytes) return "";
675
+ const decoder = new TextDecoder();
676
+ return decoder.decode(new Uint8Array(bytes.map((b) => parseInt(b, 16))));
677
+ }
678
+ function calculateAverageRating(summary) {
679
+ if (summary.activeFeedback === 0n) return 0;
680
+ return Number(summary.averageRating) / Number(summary.activeFeedback);
681
+ }
682
+ function isAttestationValid(attestation) {
683
+ const now = BigInt(Math.floor(Date.now() / 1e3));
684
+ return !attestation.revoked && attestation.expiresAt > now;
685
+ }
686
+ function getAttestationStatus(attestation) {
687
+ if (attestation.revoked) return "revoked";
688
+ const now = BigInt(Math.floor(Date.now() / 1e3));
689
+ if (attestation.expiresAt <= now) return "expired";
690
+ return "active";
691
+ }
692
+ // Annotate the CommonJS export names for ESM import in node:
693
+ 0 && (module.exports = {
694
+ ATTESTATION_TYPES,
695
+ ERC8004_ABIS,
696
+ IDENTITY_REGISTRY_ABI,
697
+ RATING,
698
+ REPUTATION_REGISTRY_ABI,
699
+ VALIDATION_REGISTRY_ABI,
700
+ calculateAverageRating,
701
+ decodeMetadataValue,
702
+ encodeMetadataValue,
703
+ getAttestationStatus,
704
+ isAttestationValid
705
+ });