@openvtc/trust-tasks 0.20.0 → 0.20.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 (37) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/dist/index.d.ts +6 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/persona/attribute/get/1.0/payload.d.ts +1221 -0
  7. package/dist/persona/attribute/get/1.0/payload.d.ts.map +1 -0
  8. package/dist/persona/attribute/get/1.0/payload.js +719 -0
  9. package/dist/persona/attribute/get/1.0/payload.js.map +1 -0
  10. package/dist/vetting/attestation/0.1/payload.d.ts +690 -0
  11. package/dist/vetting/attestation/0.1/payload.d.ts.map +1 -0
  12. package/dist/vetting/attestation/0.1/payload.js +374 -0
  13. package/dist/vetting/attestation/0.1/payload.js.map +1 -0
  14. package/dist/vtc/vetting/pcs-challenge/0.1/payload.d.ts +261 -0
  15. package/dist/vtc/vetting/pcs-challenge/0.1/payload.d.ts.map +1 -0
  16. package/dist/vtc/vetting/pcs-challenge/0.1/payload.js +145 -0
  17. package/dist/vtc/vetting/pcs-challenge/0.1/payload.js.map +1 -0
  18. package/dist/vtc/vetting/vetters/event-mode/0.1/payload.d.ts +546 -0
  19. package/dist/vtc/vetting/vetters/event-mode/0.1/payload.d.ts.map +1 -0
  20. package/dist/vtc/vetting/vetters/event-mode/0.1/payload.js +290 -0
  21. package/dist/vtc/vetting/vetters/event-mode/0.1/payload.js.map +1 -0
  22. package/dist/vtc/vetting/vetters/pcs-root/0.1/payload.d.ts +336 -0
  23. package/dist/vtc/vetting/vetters/pcs-root/0.1/payload.d.ts.map +1 -0
  24. package/dist/vtc/vetting/vetters/pcs-root/0.1/payload.js +178 -0
  25. package/dist/vtc/vetting/vetters/pcs-root/0.1/payload.js.map +1 -0
  26. package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.d.ts +402 -0
  27. package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.d.ts.map +1 -0
  28. package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.js +205 -0
  29. package/dist/vtc/vetting/vetters/pcs-tokens/0.1/payload.js.map +1 -0
  30. package/package.json +1 -1
  31. package/src/index.ts +6 -0
  32. package/src/persona/attribute/get/1.0/payload.ts +785 -0
  33. package/src/vetting/attestation/0.1/payload.ts +493 -0
  34. package/src/vtc/vetting/pcs-challenge/0.1/payload.ts +187 -0
  35. package/src/vtc/vetting/vetters/event-mode/0.1/payload.ts +375 -0
  36. package/src/vtc/vetting/vetters/pcs-root/0.1/payload.ts +241 -0
  37. package/src/vtc/vetting/vetters/pcs-tokens/0.1/payload.ts +286 -0
@@ -0,0 +1,690 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/vetting/attestation/0.1/payload.schema.json
4
+ */
5
+ import type { Ext } from "../../../_shared/components.js";
6
+ /**
7
+ * A vetter gives an applicant an attestation that names nobody. It carries the same facts a Vetting Statement carries and no issuer: what proves it was made by an eligible vetter is the proof the applicant later builds over it, not a signature on this document.
8
+ */
9
+ export interface VettingAttestationPayload {
10
+ /**
11
+ * The hidden-vetting suite this attestation was made under, exactly as the community's criterion publishes it. An applicant holding attestations under two suites cannot mix them in one proof.
12
+ */
13
+ suite: string;
14
+ /**
15
+ * The attestation itself, multibase base58btc: a tag, a shown class credential and a proof. It carries no identifier of the vetter — the tag is deterministic for this (vetter, applicant) pair and unlinkable across applicants.
16
+ */
17
+ attestation: string;
18
+ meta: StatementMeta;
19
+ /**
20
+ * The attestation token spent for this attestation. The community records the serial, which is how a vetter's rate is capped without anybody learning who they are.
21
+ */
22
+ token: {
23
+ /**
24
+ * The token label spent under.
25
+ */
26
+ label: string;
27
+ /**
28
+ * The serial revealed by the spend. Recorded by the community; a second appearance is a double spend.
29
+ */
30
+ serial: string;
31
+ /**
32
+ * The re-randomised token signature, verifiable under the published token key.
33
+ */
34
+ shown: string;
35
+ };
36
+ ext?: Ext;
37
+ }
38
+ /**
39
+ * The facts the community will count. Bound into the attestation, so changing one here invalidates it.
40
+ */
41
+ export interface StatementMeta {
42
+ /**
43
+ * The community this attestation is for. An attestation is not portable between communities.
44
+ */
45
+ community: string;
46
+ /**
47
+ * The digest of the criterion's requirements as the vetter read them.
48
+ */
49
+ requirementsDigest: string;
50
+ /**
51
+ * How the vetter met the applicant.
52
+ */
53
+ method: "inPerson" | "video" | "priorAcquaintance";
54
+ /**
55
+ * The claim types the vetter checked.
56
+ *
57
+ * @minItems 1
58
+ */
59
+ claimsVerified: [string, ...string[]];
60
+ /**
61
+ * Whether the vetter confirmed a live person.
62
+ */
63
+ livenessConfirmed: boolean;
64
+ /**
65
+ * The relationship the vetter declared, which the community's independence rules count.
66
+ */
67
+ declaredRelationship: "none" | "family" | "sameEmployer" | "closeFriend" | "other";
68
+ /**
69
+ * The commitment on the Vetting Card the applicant showed. Consistency across attestations is what stops two applicants pooling them.
70
+ */
71
+ identityCommitment: string;
72
+ /**
73
+ * Digest of that card, as the vetter verified it.
74
+ */
75
+ cardDigestMultibase: string;
76
+ /**
77
+ * A DATE, never a timestamp: an exact time would let a community line an attestation up with a vetter's activity, which undoes the proof without touching it.
78
+ */
79
+ validFrom: string;
80
+ /**
81
+ * A date, for the same reason.
82
+ */
83
+ validUntil: string;
84
+ /**
85
+ * The token label spent, repeated inside the bound facts so it cannot be swapped in transit.
86
+ */
87
+ tokenLabel: string;
88
+ /**
89
+ * The token serial spent, likewise bound.
90
+ */
91
+ tokenSerial: string;
92
+ }
93
+ /**
94
+ * The applicant's receipt. It verifies the attestation on arrival rather than at submit, so a vetter learns immediately that what it sent is usable.
95
+ */
96
+ export interface VettingAttestationResponsePayload {
97
+ /**
98
+ * Whether the attestation verified against the community's published parameters and the card the applicant showed.
99
+ */
100
+ accepted: boolean;
101
+ /**
102
+ * OPTIONAL. How many attestations the applicant now holds for this criterion — a courtesy so a vetter can tell someone they are done.
103
+ */
104
+ heldCount?: number;
105
+ ext?: Ext;
106
+ }
107
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
108
+ export type { Ext };
109
+ /** Trust Task type URI. */
110
+ export declare const TYPE_URI: "https://trusttasks.org/spec/vetting/attestation/0.1";
111
+ /** Stable alias for this specification's request payload shape. */
112
+ export type Payload = VettingAttestationPayload;
113
+ /** Trust Task response type URI (request type URI + "#response"). */
114
+ export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/vetting/attestation/0.1#response";
115
+ /** Stable alias for this specification's success-response payload shape. */
116
+ export type Response = VettingAttestationResponsePayload;
117
+ /**
118
+ * This specification's payload schema, as a value.
119
+ *
120
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
121
+ * rather than only as a `.json` file because TypeScript types are erased
122
+ * at runtime: without a schema a consumer has nothing to validate, and
123
+ * every REQUIRED payload member is optional in practice. Cross-file
124
+ * `$ref`s are already inlined, so it needs no resolver.
125
+ */
126
+ export declare const PAYLOAD_SCHEMA: {
127
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
128
+ readonly $id: "https://trusttasks.org/spec/vetting/attestation/0.1";
129
+ readonly title: "Vetting — Attestation — payload";
130
+ readonly description: "A vetter gives an applicant an attestation that names nobody. It carries the same facts a Vetting Statement carries and no issuer: what proves it was made by an eligible vetter is the proof the applicant later builds over it, not a signature on this document.";
131
+ readonly type: "object";
132
+ readonly additionalProperties: false;
133
+ readonly required: readonly ["suite", "attestation", "meta", "token"];
134
+ readonly properties: {
135
+ readonly suite: {
136
+ readonly type: "string";
137
+ readonly minLength: 1;
138
+ readonly maxLength: 64;
139
+ readonly description: "The hidden-vetting suite this attestation was made under, exactly as the community's criterion publishes it. An applicant holding attestations under two suites cannot mix them in one proof.";
140
+ };
141
+ readonly attestation: {
142
+ readonly type: "string";
143
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
144
+ readonly description: "The attestation itself, multibase base58btc: a tag, a shown class credential and a proof. It carries no identifier of the vetter — the tag is deterministic for this (vetter, applicant) pair and unlinkable across applicants.";
145
+ };
146
+ readonly meta: {
147
+ readonly $ref: "#/$defs/StatementMeta";
148
+ readonly description: "The facts the community will count. Bound into the attestation, so changing one here invalidates it.";
149
+ };
150
+ readonly token: {
151
+ readonly type: "object";
152
+ readonly additionalProperties: false;
153
+ readonly required: readonly ["label", "serial", "shown"];
154
+ readonly description: "The attestation token spent for this attestation. The community records the serial, which is how a vetter's rate is capped without anybody learning who they are.";
155
+ readonly properties: {
156
+ readonly label: {
157
+ readonly type: "string";
158
+ readonly minLength: 1;
159
+ readonly maxLength: 128;
160
+ readonly description: "The token label spent under.";
161
+ };
162
+ readonly serial: {
163
+ readonly type: "string";
164
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
165
+ readonly description: "The serial revealed by the spend. Recorded by the community; a second appearance is a double spend.";
166
+ };
167
+ readonly shown: {
168
+ readonly type: "string";
169
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
170
+ readonly description: "The re-randomised token signature, verifiable under the published token key.";
171
+ };
172
+ };
173
+ };
174
+ readonly ext: {
175
+ readonly $ref: "#/$defs/Ext";
176
+ };
177
+ };
178
+ readonly $defs: {
179
+ readonly StatementMeta: {
180
+ readonly type: "object";
181
+ readonly additionalProperties: false;
182
+ readonly required: readonly ["community", "requirementsDigest", "method", "claimsVerified", "livenessConfirmed", "declaredRelationship", "identityCommitment", "cardDigestMultibase", "validFrom", "validUntil", "tokenLabel", "tokenSerial"];
183
+ readonly description: "What a Vetting Statement would have said, minus its issuer.";
184
+ readonly properties: {
185
+ readonly community: {
186
+ readonly type: "string";
187
+ readonly minLength: 1;
188
+ readonly description: "The community this attestation is for. An attestation is not portable between communities.";
189
+ };
190
+ readonly requirementsDigest: {
191
+ readonly type: "string";
192
+ readonly minLength: 1;
193
+ readonly description: "The digest of the criterion's requirements as the vetter read them.";
194
+ };
195
+ readonly method: {
196
+ readonly type: "string";
197
+ readonly enum: readonly ["inPerson", "video", "priorAcquaintance"];
198
+ readonly description: "How the vetter met the applicant.";
199
+ };
200
+ readonly claimsVerified: {
201
+ readonly type: "array";
202
+ readonly minItems: 1;
203
+ readonly items: {
204
+ readonly type: "string";
205
+ readonly minLength: 1;
206
+ };
207
+ readonly description: "The claim types the vetter checked.";
208
+ };
209
+ readonly livenessConfirmed: {
210
+ readonly type: "boolean";
211
+ readonly description: "Whether the vetter confirmed a live person.";
212
+ };
213
+ readonly declaredRelationship: {
214
+ readonly type: "string";
215
+ readonly enum: readonly ["none", "family", "sameEmployer", "closeFriend", "other"];
216
+ readonly description: "The relationship the vetter declared, which the community's independence rules count.";
217
+ };
218
+ readonly identityCommitment: {
219
+ readonly type: "string";
220
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
221
+ readonly description: "The commitment on the Vetting Card the applicant showed. Consistency across attestations is what stops two applicants pooling them.";
222
+ };
223
+ readonly cardDigestMultibase: {
224
+ readonly type: "string";
225
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
226
+ readonly description: "Digest of that card, as the vetter verified it.";
227
+ };
228
+ readonly validFrom: {
229
+ readonly type: "string";
230
+ readonly format: "date";
231
+ readonly description: "A DATE, never a timestamp: an exact time would let a community line an attestation up with a vetter's activity, which undoes the proof without touching it.";
232
+ };
233
+ readonly validUntil: {
234
+ readonly type: "string";
235
+ readonly format: "date";
236
+ readonly description: "A date, for the same reason.";
237
+ };
238
+ readonly tokenLabel: {
239
+ readonly type: "string";
240
+ readonly minLength: 1;
241
+ readonly maxLength: 128;
242
+ readonly description: "The token label spent, repeated inside the bound facts so it cannot be swapped in transit.";
243
+ };
244
+ readonly tokenSerial: {
245
+ readonly type: "string";
246
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
247
+ readonly description: "The token serial spent, likewise bound.";
248
+ };
249
+ };
250
+ };
251
+ readonly Response: {
252
+ readonly $anchor: "response";
253
+ readonly title: "Vetting Attestation — response payload";
254
+ readonly type: "object";
255
+ readonly additionalProperties: false;
256
+ readonly required: readonly ["accepted"];
257
+ readonly description: "The applicant's receipt. It verifies the attestation on arrival rather than at submit, so a vetter learns immediately that what it sent is usable.";
258
+ readonly properties: {
259
+ readonly accepted: {
260
+ readonly type: "boolean";
261
+ readonly description: "Whether the attestation verified against the community's published parameters and the card the applicant showed.";
262
+ };
263
+ readonly heldCount: {
264
+ readonly type: "integer";
265
+ readonly minimum: 0;
266
+ readonly description: "OPTIONAL. How many attestations the applicant now holds for this criterion — a courtesy so a vetter can tell someone they are done.";
267
+ };
268
+ readonly ext: {
269
+ readonly $ref: "#/$defs/Ext";
270
+ };
271
+ };
272
+ };
273
+ readonly Ext: {
274
+ readonly title: "Ext";
275
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
276
+ readonly type: "object";
277
+ readonly minProperties: 1;
278
+ readonly additionalProperties: true;
279
+ readonly propertyNames: {
280
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
281
+ };
282
+ };
283
+ };
284
+ };
285
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
286
+ export declare const RESPONSE_PAYLOAD_SCHEMA: {
287
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
288
+ readonly $ref: "#/$defs/Response";
289
+ readonly $defs: {
290
+ readonly StatementMeta: {
291
+ readonly type: "object";
292
+ readonly additionalProperties: false;
293
+ readonly required: readonly ["community", "requirementsDigest", "method", "claimsVerified", "livenessConfirmed", "declaredRelationship", "identityCommitment", "cardDigestMultibase", "validFrom", "validUntil", "tokenLabel", "tokenSerial"];
294
+ readonly description: "What a Vetting Statement would have said, minus its issuer.";
295
+ readonly properties: {
296
+ readonly community: {
297
+ readonly type: "string";
298
+ readonly minLength: 1;
299
+ readonly description: "The community this attestation is for. An attestation is not portable between communities.";
300
+ };
301
+ readonly requirementsDigest: {
302
+ readonly type: "string";
303
+ readonly minLength: 1;
304
+ readonly description: "The digest of the criterion's requirements as the vetter read them.";
305
+ };
306
+ readonly method: {
307
+ readonly type: "string";
308
+ readonly enum: readonly ["inPerson", "video", "priorAcquaintance"];
309
+ readonly description: "How the vetter met the applicant.";
310
+ };
311
+ readonly claimsVerified: {
312
+ readonly type: "array";
313
+ readonly minItems: 1;
314
+ readonly items: {
315
+ readonly type: "string";
316
+ readonly minLength: 1;
317
+ };
318
+ readonly description: "The claim types the vetter checked.";
319
+ };
320
+ readonly livenessConfirmed: {
321
+ readonly type: "boolean";
322
+ readonly description: "Whether the vetter confirmed a live person.";
323
+ };
324
+ readonly declaredRelationship: {
325
+ readonly type: "string";
326
+ readonly enum: readonly ["none", "family", "sameEmployer", "closeFriend", "other"];
327
+ readonly description: "The relationship the vetter declared, which the community's independence rules count.";
328
+ };
329
+ readonly identityCommitment: {
330
+ readonly type: "string";
331
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
332
+ readonly description: "The commitment on the Vetting Card the applicant showed. Consistency across attestations is what stops two applicants pooling them.";
333
+ };
334
+ readonly cardDigestMultibase: {
335
+ readonly type: "string";
336
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
337
+ readonly description: "Digest of that card, as the vetter verified it.";
338
+ };
339
+ readonly validFrom: {
340
+ readonly type: "string";
341
+ readonly format: "date";
342
+ readonly description: "A DATE, never a timestamp: an exact time would let a community line an attestation up with a vetter's activity, which undoes the proof without touching it.";
343
+ };
344
+ readonly validUntil: {
345
+ readonly type: "string";
346
+ readonly format: "date";
347
+ readonly description: "A date, for the same reason.";
348
+ };
349
+ readonly tokenLabel: {
350
+ readonly type: "string";
351
+ readonly minLength: 1;
352
+ readonly maxLength: 128;
353
+ readonly description: "The token label spent, repeated inside the bound facts so it cannot be swapped in transit.";
354
+ };
355
+ readonly tokenSerial: {
356
+ readonly type: "string";
357
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
358
+ readonly description: "The token serial spent, likewise bound.";
359
+ };
360
+ };
361
+ };
362
+ readonly Response: {
363
+ readonly $anchor: "response";
364
+ readonly title: "Vetting Attestation — response payload";
365
+ readonly type: "object";
366
+ readonly additionalProperties: false;
367
+ readonly required: readonly ["accepted"];
368
+ readonly description: "The applicant's receipt. It verifies the attestation on arrival rather than at submit, so a vetter learns immediately that what it sent is usable.";
369
+ readonly properties: {
370
+ readonly accepted: {
371
+ readonly type: "boolean";
372
+ readonly description: "Whether the attestation verified against the community's published parameters and the card the applicant showed.";
373
+ };
374
+ readonly heldCount: {
375
+ readonly type: "integer";
376
+ readonly minimum: 0;
377
+ readonly description: "OPTIONAL. How many attestations the applicant now holds for this criterion — a courtesy so a vetter can tell someone they are done.";
378
+ };
379
+ readonly ext: {
380
+ readonly $ref: "#/$defs/Ext";
381
+ };
382
+ };
383
+ };
384
+ readonly Ext: {
385
+ readonly title: "Ext";
386
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
387
+ readonly type: "object";
388
+ readonly minProperties: 1;
389
+ readonly additionalProperties: true;
390
+ readonly propertyNames: {
391
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
392
+ };
393
+ };
394
+ };
395
+ };
396
+ /**
397
+ * SPEC.md §7.2 policy for the request variant, from this specification's
398
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
399
+ * per-specification and cannot be derived from the document alone, and
400
+ * item 2 needs the schema this carries.
401
+ */
402
+ export declare const SPEC: {
403
+ readonly typeUri: "https://trusttasks.org/spec/vetting/attestation/0.1";
404
+ readonly isBearer: false;
405
+ readonly isProofRequired: true;
406
+ readonly isRecipientRequired: true;
407
+ readonly isIssuedAtRequired: true;
408
+ readonly payloadSchema: {
409
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
410
+ readonly $id: "https://trusttasks.org/spec/vetting/attestation/0.1";
411
+ readonly title: "Vetting — Attestation — payload";
412
+ readonly description: "A vetter gives an applicant an attestation that names nobody. It carries the same facts a Vetting Statement carries and no issuer: what proves it was made by an eligible vetter is the proof the applicant later builds over it, not a signature on this document.";
413
+ readonly type: "object";
414
+ readonly additionalProperties: false;
415
+ readonly required: readonly ["suite", "attestation", "meta", "token"];
416
+ readonly properties: {
417
+ readonly suite: {
418
+ readonly type: "string";
419
+ readonly minLength: 1;
420
+ readonly maxLength: 64;
421
+ readonly description: "The hidden-vetting suite this attestation was made under, exactly as the community's criterion publishes it. An applicant holding attestations under two suites cannot mix them in one proof.";
422
+ };
423
+ readonly attestation: {
424
+ readonly type: "string";
425
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
426
+ readonly description: "The attestation itself, multibase base58btc: a tag, a shown class credential and a proof. It carries no identifier of the vetter — the tag is deterministic for this (vetter, applicant) pair and unlinkable across applicants.";
427
+ };
428
+ readonly meta: {
429
+ readonly $ref: "#/$defs/StatementMeta";
430
+ readonly description: "The facts the community will count. Bound into the attestation, so changing one here invalidates it.";
431
+ };
432
+ readonly token: {
433
+ readonly type: "object";
434
+ readonly additionalProperties: false;
435
+ readonly required: readonly ["label", "serial", "shown"];
436
+ readonly description: "The attestation token spent for this attestation. The community records the serial, which is how a vetter's rate is capped without anybody learning who they are.";
437
+ readonly properties: {
438
+ readonly label: {
439
+ readonly type: "string";
440
+ readonly minLength: 1;
441
+ readonly maxLength: 128;
442
+ readonly description: "The token label spent under.";
443
+ };
444
+ readonly serial: {
445
+ readonly type: "string";
446
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
447
+ readonly description: "The serial revealed by the spend. Recorded by the community; a second appearance is a double spend.";
448
+ };
449
+ readonly shown: {
450
+ readonly type: "string";
451
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
452
+ readonly description: "The re-randomised token signature, verifiable under the published token key.";
453
+ };
454
+ };
455
+ };
456
+ readonly ext: {
457
+ readonly $ref: "#/$defs/Ext";
458
+ };
459
+ };
460
+ readonly $defs: {
461
+ readonly StatementMeta: {
462
+ readonly type: "object";
463
+ readonly additionalProperties: false;
464
+ readonly required: readonly ["community", "requirementsDigest", "method", "claimsVerified", "livenessConfirmed", "declaredRelationship", "identityCommitment", "cardDigestMultibase", "validFrom", "validUntil", "tokenLabel", "tokenSerial"];
465
+ readonly description: "What a Vetting Statement would have said, minus its issuer.";
466
+ readonly properties: {
467
+ readonly community: {
468
+ readonly type: "string";
469
+ readonly minLength: 1;
470
+ readonly description: "The community this attestation is for. An attestation is not portable between communities.";
471
+ };
472
+ readonly requirementsDigest: {
473
+ readonly type: "string";
474
+ readonly minLength: 1;
475
+ readonly description: "The digest of the criterion's requirements as the vetter read them.";
476
+ };
477
+ readonly method: {
478
+ readonly type: "string";
479
+ readonly enum: readonly ["inPerson", "video", "priorAcquaintance"];
480
+ readonly description: "How the vetter met the applicant.";
481
+ };
482
+ readonly claimsVerified: {
483
+ readonly type: "array";
484
+ readonly minItems: 1;
485
+ readonly items: {
486
+ readonly type: "string";
487
+ readonly minLength: 1;
488
+ };
489
+ readonly description: "The claim types the vetter checked.";
490
+ };
491
+ readonly livenessConfirmed: {
492
+ readonly type: "boolean";
493
+ readonly description: "Whether the vetter confirmed a live person.";
494
+ };
495
+ readonly declaredRelationship: {
496
+ readonly type: "string";
497
+ readonly enum: readonly ["none", "family", "sameEmployer", "closeFriend", "other"];
498
+ readonly description: "The relationship the vetter declared, which the community's independence rules count.";
499
+ };
500
+ readonly identityCommitment: {
501
+ readonly type: "string";
502
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
503
+ readonly description: "The commitment on the Vetting Card the applicant showed. Consistency across attestations is what stops two applicants pooling them.";
504
+ };
505
+ readonly cardDigestMultibase: {
506
+ readonly type: "string";
507
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
508
+ readonly description: "Digest of that card, as the vetter verified it.";
509
+ };
510
+ readonly validFrom: {
511
+ readonly type: "string";
512
+ readonly format: "date";
513
+ readonly description: "A DATE, never a timestamp: an exact time would let a community line an attestation up with a vetter's activity, which undoes the proof without touching it.";
514
+ };
515
+ readonly validUntil: {
516
+ readonly type: "string";
517
+ readonly format: "date";
518
+ readonly description: "A date, for the same reason.";
519
+ };
520
+ readonly tokenLabel: {
521
+ readonly type: "string";
522
+ readonly minLength: 1;
523
+ readonly maxLength: 128;
524
+ readonly description: "The token label spent, repeated inside the bound facts so it cannot be swapped in transit.";
525
+ };
526
+ readonly tokenSerial: {
527
+ readonly type: "string";
528
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
529
+ readonly description: "The token serial spent, likewise bound.";
530
+ };
531
+ };
532
+ };
533
+ readonly Response: {
534
+ readonly $anchor: "response";
535
+ readonly title: "Vetting Attestation — response payload";
536
+ readonly type: "object";
537
+ readonly additionalProperties: false;
538
+ readonly required: readonly ["accepted"];
539
+ readonly description: "The applicant's receipt. It verifies the attestation on arrival rather than at submit, so a vetter learns immediately that what it sent is usable.";
540
+ readonly properties: {
541
+ readonly accepted: {
542
+ readonly type: "boolean";
543
+ readonly description: "Whether the attestation verified against the community's published parameters and the card the applicant showed.";
544
+ };
545
+ readonly heldCount: {
546
+ readonly type: "integer";
547
+ readonly minimum: 0;
548
+ readonly description: "OPTIONAL. How many attestations the applicant now holds for this criterion — a courtesy so a vetter can tell someone they are done.";
549
+ };
550
+ readonly ext: {
551
+ readonly $ref: "#/$defs/Ext";
552
+ };
553
+ };
554
+ };
555
+ readonly Ext: {
556
+ readonly title: "Ext";
557
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
558
+ readonly type: "object";
559
+ readonly minProperties: 1;
560
+ readonly additionalProperties: true;
561
+ readonly propertyNames: {
562
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
563
+ };
564
+ };
565
+ };
566
+ };
567
+ };
568
+ /**
569
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
570
+ * tracks the *issuer* party's requirement because a response swaps the
571
+ * parties (§7.3 item 5).
572
+ */
573
+ export declare const RESPONSE_SPEC: {
574
+ readonly typeUri: "https://trusttasks.org/spec/vetting/attestation/0.1#response";
575
+ readonly isBearer: false;
576
+ readonly isProofRequired: true;
577
+ readonly isRecipientRequired: true;
578
+ readonly isIssuedAtRequired: true;
579
+ readonly payloadSchema: {
580
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
581
+ readonly $ref: "#/$defs/Response";
582
+ readonly $defs: {
583
+ readonly StatementMeta: {
584
+ readonly type: "object";
585
+ readonly additionalProperties: false;
586
+ readonly required: readonly ["community", "requirementsDigest", "method", "claimsVerified", "livenessConfirmed", "declaredRelationship", "identityCommitment", "cardDigestMultibase", "validFrom", "validUntil", "tokenLabel", "tokenSerial"];
587
+ readonly description: "What a Vetting Statement would have said, minus its issuer.";
588
+ readonly properties: {
589
+ readonly community: {
590
+ readonly type: "string";
591
+ readonly minLength: 1;
592
+ readonly description: "The community this attestation is for. An attestation is not portable between communities.";
593
+ };
594
+ readonly requirementsDigest: {
595
+ readonly type: "string";
596
+ readonly minLength: 1;
597
+ readonly description: "The digest of the criterion's requirements as the vetter read them.";
598
+ };
599
+ readonly method: {
600
+ readonly type: "string";
601
+ readonly enum: readonly ["inPerson", "video", "priorAcquaintance"];
602
+ readonly description: "How the vetter met the applicant.";
603
+ };
604
+ readonly claimsVerified: {
605
+ readonly type: "array";
606
+ readonly minItems: 1;
607
+ readonly items: {
608
+ readonly type: "string";
609
+ readonly minLength: 1;
610
+ };
611
+ readonly description: "The claim types the vetter checked.";
612
+ };
613
+ readonly livenessConfirmed: {
614
+ readonly type: "boolean";
615
+ readonly description: "Whether the vetter confirmed a live person.";
616
+ };
617
+ readonly declaredRelationship: {
618
+ readonly type: "string";
619
+ readonly enum: readonly ["none", "family", "sameEmployer", "closeFriend", "other"];
620
+ readonly description: "The relationship the vetter declared, which the community's independence rules count.";
621
+ };
622
+ readonly identityCommitment: {
623
+ readonly type: "string";
624
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
625
+ readonly description: "The commitment on the Vetting Card the applicant showed. Consistency across attestations is what stops two applicants pooling them.";
626
+ };
627
+ readonly cardDigestMultibase: {
628
+ readonly type: "string";
629
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
630
+ readonly description: "Digest of that card, as the vetter verified it.";
631
+ };
632
+ readonly validFrom: {
633
+ readonly type: "string";
634
+ readonly format: "date";
635
+ readonly description: "A DATE, never a timestamp: an exact time would let a community line an attestation up with a vetter's activity, which undoes the proof without touching it.";
636
+ };
637
+ readonly validUntil: {
638
+ readonly type: "string";
639
+ readonly format: "date";
640
+ readonly description: "A date, for the same reason.";
641
+ };
642
+ readonly tokenLabel: {
643
+ readonly type: "string";
644
+ readonly minLength: 1;
645
+ readonly maxLength: 128;
646
+ readonly description: "The token label spent, repeated inside the bound facts so it cannot be swapped in transit.";
647
+ };
648
+ readonly tokenSerial: {
649
+ readonly type: "string";
650
+ readonly pattern: "^z[1-9A-HJ-NP-Za-km-z]+$";
651
+ readonly description: "The token serial spent, likewise bound.";
652
+ };
653
+ };
654
+ };
655
+ readonly Response: {
656
+ readonly $anchor: "response";
657
+ readonly title: "Vetting Attestation — response payload";
658
+ readonly type: "object";
659
+ readonly additionalProperties: false;
660
+ readonly required: readonly ["accepted"];
661
+ readonly description: "The applicant's receipt. It verifies the attestation on arrival rather than at submit, so a vetter learns immediately that what it sent is usable.";
662
+ readonly properties: {
663
+ readonly accepted: {
664
+ readonly type: "boolean";
665
+ readonly description: "Whether the attestation verified against the community's published parameters and the card the applicant showed.";
666
+ };
667
+ readonly heldCount: {
668
+ readonly type: "integer";
669
+ readonly minimum: 0;
670
+ readonly description: "OPTIONAL. How many attestations the applicant now holds for this criterion — a courtesy so a vetter can tell someone they are done.";
671
+ };
672
+ readonly ext: {
673
+ readonly $ref: "#/$defs/Ext";
674
+ };
675
+ };
676
+ };
677
+ readonly Ext: {
678
+ readonly title: "Ext";
679
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
680
+ readonly type: "object";
681
+ readonly minProperties: 1;
682
+ readonly additionalProperties: true;
683
+ readonly propertyNames: {
684
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
685
+ };
686
+ };
687
+ };
688
+ };
689
+ };
690
+ //# sourceMappingURL=payload.d.ts.map