@openvtc/trust-tasks 0.23.5 → 0.23.7
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/CHANGELOG.md +62 -0
- package/dist/_shared/components.d.ts +2 -2
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/device/list/0.1/payload.d.ts +4 -4
- package/dist/device/list/0.1/payload.d.ts.map +1 -1
- package/dist/device/list/0.1/payload.js +4 -2
- package/dist/device/list/0.1/payload.js.map +1 -1
- package/dist/device/list/0.2/payload.d.ts +4 -4
- package/dist/device/list/0.2/payload.d.ts.map +1 -1
- package/dist/device/list/0.2/payload.js +4 -2
- package/dist/device/list/0.2/payload.js.map +1 -1
- package/dist/device/register/0.1/payload.d.ts +4 -4
- package/dist/device/register/0.1/payload.d.ts.map +1 -1
- package/dist/device/register/0.1/payload.js +4 -2
- package/dist/device/register/0.1/payload.js.map +1 -1
- package/dist/device/register/0.2/payload.d.ts +4 -4
- package/dist/device/register/0.2/payload.d.ts.map +1 -1
- package/dist/device/register/0.2/payload.js +4 -2
- package/dist/device/register/0.2/payload.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/keys/sign-sshsig/0.1/payload.d.ts +346 -0
- package/dist/keys/sign-sshsig/0.1/payload.d.ts.map +1 -0
- package/dist/keys/sign-sshsig/0.1/payload.js +196 -0
- package/dist/keys/sign-sshsig/0.1/payload.js.map +1 -0
- package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts +1361 -0
- package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/vetting/hidden/show/0.1/payload.js +751 -0
- package/dist/vtc/vetting/hidden/show/0.1/payload.js.map +1 -0
- package/dist/vtc/vetting/hidden/withdraw/0.1/payload.d.ts +270 -0
- package/dist/vtc/vetting/hidden/withdraw/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/vetting/hidden/withdraw/0.1/payload.js +159 -0
- package/dist/vtc/vetting/hidden/withdraw/0.1/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_shared/components.ts +4 -2
- package/src/device/list/0.1/payload.ts +4 -2
- package/src/device/list/0.2/payload.ts +4 -2
- package/src/device/register/0.1/payload.ts +4 -2
- package/src/device/register/0.2/payload.ts +4 -2
- package/src/index.ts +3 -0
- package/src/keys/sign-sshsig/0.1/payload.ts +261 -0
- package/src/vtc/vetting/hidden/show/0.1/payload.ts +905 -0
- package/src/vtc/vetting/hidden/withdraw/0.1/payload.ts +202 -0
|
@@ -0,0 +1,1361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/vtc/vetting/hidden/show/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
import type { Ext } from "../../../../../_shared/components.js";
|
|
6
|
+
/**
|
|
7
|
+
* Read one criterion's stored hidden-vetting configuration, what it publishes, and the aggregate counts an administrator needs to run it. The outer document members are owned by the framework — SPEC §6.3.
|
|
8
|
+
*/
|
|
9
|
+
export interface VTCVettingHiddenShowPayload {
|
|
10
|
+
/**
|
|
11
|
+
* The Accepts criterion to read.
|
|
12
|
+
*/
|
|
13
|
+
criterionId: string;
|
|
14
|
+
ext?: Ext;
|
|
15
|
+
}
|
|
16
|
+
export interface VTCVettingHiddenShowResponsePayload {
|
|
17
|
+
/**
|
|
18
|
+
* The criterion read.
|
|
19
|
+
*/
|
|
20
|
+
criterionId: string;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.
|
|
23
|
+
*/
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
stored?: StoredConfig;
|
|
26
|
+
published?: PublishedConfig;
|
|
27
|
+
/**
|
|
28
|
+
* For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.
|
|
29
|
+
*/
|
|
30
|
+
enrolledVetters?: {
|
|
31
|
+
[k: string]: number | undefined;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* One entry per stored event, in stored order.
|
|
35
|
+
*/
|
|
36
|
+
eventStatus?: EventStatus[];
|
|
37
|
+
/**
|
|
38
|
+
* The criterion's current requirementsDigest. Null only when its manifest entry carries none.
|
|
39
|
+
*/
|
|
40
|
+
requirementsDigest: string | null;
|
|
41
|
+
ext?: Ext;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The parameters exactly as the community stores them, including the helper key it never publishes.
|
|
45
|
+
*/
|
|
46
|
+
export interface StoredConfig {
|
|
47
|
+
/**
|
|
48
|
+
* The blind-signature suite in force, e.g. ps-ddh-bls12381.
|
|
49
|
+
*/
|
|
50
|
+
suite: string;
|
|
51
|
+
/**
|
|
52
|
+
* The helper verification key, multibase. A public value, published as helperKey.
|
|
53
|
+
*/
|
|
54
|
+
hvk: string;
|
|
55
|
+
/**
|
|
56
|
+
* The token verification key, multibase. Never the same key as hvk.
|
|
57
|
+
*/
|
|
58
|
+
tvk: string;
|
|
59
|
+
/**
|
|
60
|
+
* Live vetter class periods, current first, stored as the bare YYYY-MM period.
|
|
61
|
+
*/
|
|
62
|
+
livePeriods: string[];
|
|
63
|
+
liveTokenLabels: string[];
|
|
64
|
+
dripPerTick: number;
|
|
65
|
+
events: StoredEvent[];
|
|
66
|
+
}
|
|
67
|
+
export interface StoredEvent {
|
|
68
|
+
eventId: string;
|
|
69
|
+
startDate: string;
|
|
70
|
+
endDate: string;
|
|
71
|
+
graceDays: number;
|
|
72
|
+
groupFloor: number;
|
|
73
|
+
tiers: Tier[];
|
|
74
|
+
/**
|
|
75
|
+
* Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).
|
|
76
|
+
*/
|
|
77
|
+
approvedBy?: string | null;
|
|
78
|
+
}
|
|
79
|
+
export interface Tier {
|
|
80
|
+
/**
|
|
81
|
+
* How the menu names it: desk, busy-desk.
|
|
82
|
+
*/
|
|
83
|
+
name: string;
|
|
84
|
+
/**
|
|
85
|
+
* How many tokens a tick under this tier yields.
|
|
86
|
+
*/
|
|
87
|
+
dripPerTick: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.
|
|
91
|
+
*/
|
|
92
|
+
export interface PublishedConfig {
|
|
93
|
+
suite: string;
|
|
94
|
+
/**
|
|
95
|
+
* The helper verification key, multibase — named for its role on the wire rather than for hvk.
|
|
96
|
+
*/
|
|
97
|
+
helperKey: string;
|
|
98
|
+
/**
|
|
99
|
+
* The token verification key, multibase — named for its role on the wire rather than for tvk.
|
|
100
|
+
*/
|
|
101
|
+
tokenKey: string;
|
|
102
|
+
/**
|
|
103
|
+
* Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.
|
|
104
|
+
*/
|
|
105
|
+
vetterLabels: string[];
|
|
106
|
+
tokenLabels: string[];
|
|
107
|
+
dripPerTick: number;
|
|
108
|
+
events: PublishedEvent[];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The published shape drops approvedBy and graceDays: who approved is the community's own record, and a vetter is told closesAfter when its request is approved rather than being handed the raw grace period here.
|
|
112
|
+
*/
|
|
113
|
+
export interface PublishedEvent {
|
|
114
|
+
eventId: string;
|
|
115
|
+
startDate: string;
|
|
116
|
+
endDate: string;
|
|
117
|
+
groupFloor: number;
|
|
118
|
+
tiers: Tier[];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* How one stored event stands today. Counts only — never which members asked.
|
|
122
|
+
*/
|
|
123
|
+
export interface EventStatus {
|
|
124
|
+
eventId: string;
|
|
125
|
+
/**
|
|
126
|
+
* The smallest group this community will open the label for, as stored.
|
|
127
|
+
*/
|
|
128
|
+
groupFloor: number;
|
|
129
|
+
/**
|
|
130
|
+
* How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.
|
|
131
|
+
*/
|
|
132
|
+
groupSize: number;
|
|
133
|
+
/**
|
|
134
|
+
* Whether the stored event names an approver.
|
|
135
|
+
*/
|
|
136
|
+
approved: boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.
|
|
139
|
+
*/
|
|
140
|
+
live: boolean;
|
|
141
|
+
}
|
|
142
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
143
|
+
export type { Ext };
|
|
144
|
+
/** Trust Task type URI. */
|
|
145
|
+
export declare const TYPE_URI: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1";
|
|
146
|
+
/** Stable alias for this specification's request payload shape. */
|
|
147
|
+
export type Payload = VTCVettingHiddenShowPayload;
|
|
148
|
+
/** Trust Task response type URI (request type URI + "#response"). */
|
|
149
|
+
export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1#response";
|
|
150
|
+
/** Stable alias for this specification's success-response payload shape. */
|
|
151
|
+
export type Response = VTCVettingHiddenShowResponsePayload;
|
|
152
|
+
/**
|
|
153
|
+
* This specification's payload schema, as a value.
|
|
154
|
+
*
|
|
155
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
156
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
157
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
158
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
159
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
160
|
+
*/
|
|
161
|
+
export declare const PAYLOAD_SCHEMA: {
|
|
162
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
163
|
+
readonly $id: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1";
|
|
164
|
+
readonly title: "VTC Vetting — Hidden — Show — payload";
|
|
165
|
+
readonly description: "Read one criterion's stored hidden-vetting configuration, what it publishes, and the aggregate counts an administrator needs to run it. The outer document members are owned by the framework — SPEC §6.3.";
|
|
166
|
+
readonly type: "object";
|
|
167
|
+
readonly additionalProperties: false;
|
|
168
|
+
readonly required: readonly ["criterionId"];
|
|
169
|
+
readonly properties: {
|
|
170
|
+
readonly criterionId: {
|
|
171
|
+
readonly type: "string";
|
|
172
|
+
readonly minLength: 1;
|
|
173
|
+
readonly description: "The Accepts criterion to read.";
|
|
174
|
+
};
|
|
175
|
+
readonly ext: {
|
|
176
|
+
readonly $ref: "#/$defs/Ext";
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
readonly $defs: {
|
|
180
|
+
readonly Tier: {
|
|
181
|
+
readonly title: "Tier";
|
|
182
|
+
readonly type: "object";
|
|
183
|
+
readonly additionalProperties: false;
|
|
184
|
+
readonly required: readonly ["name", "dripPerTick"];
|
|
185
|
+
readonly properties: {
|
|
186
|
+
readonly name: {
|
|
187
|
+
readonly type: "string";
|
|
188
|
+
readonly minLength: 1;
|
|
189
|
+
readonly description: "How the menu names it: desk, busy-desk.";
|
|
190
|
+
};
|
|
191
|
+
readonly dripPerTick: {
|
|
192
|
+
readonly type: "integer";
|
|
193
|
+
readonly minimum: 1;
|
|
194
|
+
readonly description: "How many tokens a tick under this tier yields.";
|
|
195
|
+
};
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
readonly StoredEvent: {
|
|
199
|
+
readonly title: "StoredEvent";
|
|
200
|
+
readonly type: "object";
|
|
201
|
+
readonly additionalProperties: false;
|
|
202
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
203
|
+
readonly properties: {
|
|
204
|
+
readonly eventId: {
|
|
205
|
+
readonly type: "string";
|
|
206
|
+
readonly minLength: 1;
|
|
207
|
+
};
|
|
208
|
+
readonly startDate: {
|
|
209
|
+
readonly type: "string";
|
|
210
|
+
readonly format: "date";
|
|
211
|
+
};
|
|
212
|
+
readonly endDate: {
|
|
213
|
+
readonly type: "string";
|
|
214
|
+
readonly format: "date";
|
|
215
|
+
};
|
|
216
|
+
readonly graceDays: {
|
|
217
|
+
readonly type: "integer";
|
|
218
|
+
readonly minimum: 0;
|
|
219
|
+
};
|
|
220
|
+
readonly groupFloor: {
|
|
221
|
+
readonly type: "integer";
|
|
222
|
+
readonly minimum: 1;
|
|
223
|
+
};
|
|
224
|
+
readonly tiers: {
|
|
225
|
+
readonly type: "array";
|
|
226
|
+
readonly items: {
|
|
227
|
+
readonly $ref: "#/$defs/Tier";
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
readonly approvedBy: {
|
|
231
|
+
readonly type: readonly ["string", "null"];
|
|
232
|
+
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
};
|
|
236
|
+
readonly PublishedEvent: {
|
|
237
|
+
readonly title: "PublishedEvent";
|
|
238
|
+
readonly description: "The published shape drops approvedBy and graceDays: who approved is the community's own record, and a vetter is told closesAfter when its request is approved rather than being handed the raw grace period here.";
|
|
239
|
+
readonly type: "object";
|
|
240
|
+
readonly additionalProperties: false;
|
|
241
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "groupFloor", "tiers"];
|
|
242
|
+
readonly properties: {
|
|
243
|
+
readonly eventId: {
|
|
244
|
+
readonly type: "string";
|
|
245
|
+
readonly minLength: 1;
|
|
246
|
+
};
|
|
247
|
+
readonly startDate: {
|
|
248
|
+
readonly type: "string";
|
|
249
|
+
readonly format: "date";
|
|
250
|
+
};
|
|
251
|
+
readonly endDate: {
|
|
252
|
+
readonly type: "string";
|
|
253
|
+
readonly format: "date";
|
|
254
|
+
};
|
|
255
|
+
readonly groupFloor: {
|
|
256
|
+
readonly type: "integer";
|
|
257
|
+
readonly minimum: 1;
|
|
258
|
+
};
|
|
259
|
+
readonly tiers: {
|
|
260
|
+
readonly type: "array";
|
|
261
|
+
readonly items: {
|
|
262
|
+
readonly $ref: "#/$defs/Tier";
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
readonly StoredConfig: {
|
|
268
|
+
readonly title: "StoredConfig";
|
|
269
|
+
readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
|
|
270
|
+
readonly type: "object";
|
|
271
|
+
readonly additionalProperties: false;
|
|
272
|
+
readonly required: readonly ["suite", "hvk", "tvk", "livePeriods", "liveTokenLabels", "dripPerTick", "events"];
|
|
273
|
+
readonly properties: {
|
|
274
|
+
readonly suite: {
|
|
275
|
+
readonly type: "string";
|
|
276
|
+
readonly minLength: 1;
|
|
277
|
+
readonly description: "The blind-signature suite in force, e.g. ps-ddh-bls12381.";
|
|
278
|
+
};
|
|
279
|
+
readonly hvk: {
|
|
280
|
+
readonly type: "string";
|
|
281
|
+
readonly minLength: 1;
|
|
282
|
+
readonly description: "The helper verification key, multibase. A public value, published as helperKey.";
|
|
283
|
+
};
|
|
284
|
+
readonly tvk: {
|
|
285
|
+
readonly type: "string";
|
|
286
|
+
readonly minLength: 1;
|
|
287
|
+
readonly description: "The token verification key, multibase. Never the same key as hvk.";
|
|
288
|
+
};
|
|
289
|
+
readonly livePeriods: {
|
|
290
|
+
readonly type: "array";
|
|
291
|
+
readonly items: {
|
|
292
|
+
readonly type: "string";
|
|
293
|
+
readonly pattern: "^[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
294
|
+
};
|
|
295
|
+
readonly description: "Live vetter class periods, current first, stored as the bare YYYY-MM period.";
|
|
296
|
+
};
|
|
297
|
+
readonly liveTokenLabels: {
|
|
298
|
+
readonly type: "array";
|
|
299
|
+
readonly items: {
|
|
300
|
+
readonly type: "string";
|
|
301
|
+
readonly minLength: 1;
|
|
302
|
+
};
|
|
303
|
+
};
|
|
304
|
+
readonly dripPerTick: {
|
|
305
|
+
readonly type: "integer";
|
|
306
|
+
readonly minimum: 1;
|
|
307
|
+
};
|
|
308
|
+
readonly events: {
|
|
309
|
+
readonly type: "array";
|
|
310
|
+
readonly items: {
|
|
311
|
+
readonly $ref: "#/$defs/StoredEvent";
|
|
312
|
+
};
|
|
313
|
+
};
|
|
314
|
+
};
|
|
315
|
+
};
|
|
316
|
+
readonly PublishedConfig: {
|
|
317
|
+
readonly title: "PublishedConfig";
|
|
318
|
+
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
319
|
+
readonly type: "object";
|
|
320
|
+
readonly additionalProperties: false;
|
|
321
|
+
readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "events"];
|
|
322
|
+
readonly properties: {
|
|
323
|
+
readonly suite: {
|
|
324
|
+
readonly type: "string";
|
|
325
|
+
readonly minLength: 1;
|
|
326
|
+
};
|
|
327
|
+
readonly helperKey: {
|
|
328
|
+
readonly type: "string";
|
|
329
|
+
readonly minLength: 1;
|
|
330
|
+
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
331
|
+
};
|
|
332
|
+
readonly tokenKey: {
|
|
333
|
+
readonly type: "string";
|
|
334
|
+
readonly minLength: 1;
|
|
335
|
+
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
336
|
+
};
|
|
337
|
+
readonly vetterLabels: {
|
|
338
|
+
readonly type: "array";
|
|
339
|
+
readonly items: {
|
|
340
|
+
readonly type: "string";
|
|
341
|
+
readonly minLength: 1;
|
|
342
|
+
};
|
|
343
|
+
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
344
|
+
};
|
|
345
|
+
readonly tokenLabels: {
|
|
346
|
+
readonly type: "array";
|
|
347
|
+
readonly items: {
|
|
348
|
+
readonly type: "string";
|
|
349
|
+
readonly minLength: 1;
|
|
350
|
+
};
|
|
351
|
+
};
|
|
352
|
+
readonly dripPerTick: {
|
|
353
|
+
readonly type: "integer";
|
|
354
|
+
readonly minimum: 1;
|
|
355
|
+
};
|
|
356
|
+
readonly events: {
|
|
357
|
+
readonly type: "array";
|
|
358
|
+
readonly items: {
|
|
359
|
+
readonly $ref: "#/$defs/PublishedEvent";
|
|
360
|
+
};
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
};
|
|
364
|
+
readonly EventStatus: {
|
|
365
|
+
readonly title: "EventStatus";
|
|
366
|
+
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
367
|
+
readonly type: "object";
|
|
368
|
+
readonly additionalProperties: false;
|
|
369
|
+
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
370
|
+
readonly properties: {
|
|
371
|
+
readonly eventId: {
|
|
372
|
+
readonly type: "string";
|
|
373
|
+
readonly minLength: 1;
|
|
374
|
+
};
|
|
375
|
+
readonly groupFloor: {
|
|
376
|
+
readonly type: "integer";
|
|
377
|
+
readonly minimum: 1;
|
|
378
|
+
readonly description: "The smallest group this community will open the label for, as stored.";
|
|
379
|
+
};
|
|
380
|
+
readonly groupSize: {
|
|
381
|
+
readonly type: "integer";
|
|
382
|
+
readonly minimum: 0;
|
|
383
|
+
readonly description: "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.";
|
|
384
|
+
};
|
|
385
|
+
readonly approved: {
|
|
386
|
+
readonly type: "boolean";
|
|
387
|
+
readonly description: "Whether the stored event names an approver.";
|
|
388
|
+
};
|
|
389
|
+
readonly live: {
|
|
390
|
+
readonly type: "boolean";
|
|
391
|
+
readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
|
|
392
|
+
};
|
|
393
|
+
};
|
|
394
|
+
};
|
|
395
|
+
readonly Response: {
|
|
396
|
+
readonly $anchor: "response";
|
|
397
|
+
readonly title: "VTC Vetting — Hidden — Show — response payload";
|
|
398
|
+
readonly type: "object";
|
|
399
|
+
readonly additionalProperties: false;
|
|
400
|
+
readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
|
|
401
|
+
readonly dependentRequired: {
|
|
402
|
+
readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
|
|
403
|
+
readonly published: readonly ["stored"];
|
|
404
|
+
readonly enrolledVetters: readonly ["stored"];
|
|
405
|
+
readonly eventStatus: readonly ["stored"];
|
|
406
|
+
};
|
|
407
|
+
readonly properties: {
|
|
408
|
+
readonly criterionId: {
|
|
409
|
+
readonly type: "string";
|
|
410
|
+
readonly minLength: 1;
|
|
411
|
+
readonly description: "The criterion read.";
|
|
412
|
+
};
|
|
413
|
+
readonly enabled: {
|
|
414
|
+
readonly type: "boolean";
|
|
415
|
+
readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
|
|
416
|
+
};
|
|
417
|
+
readonly stored: {
|
|
418
|
+
readonly $ref: "#/$defs/StoredConfig";
|
|
419
|
+
};
|
|
420
|
+
readonly published: {
|
|
421
|
+
readonly $ref: "#/$defs/PublishedConfig";
|
|
422
|
+
};
|
|
423
|
+
readonly enrolledVetters: {
|
|
424
|
+
readonly type: "object";
|
|
425
|
+
readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
|
|
426
|
+
readonly propertyNames: {
|
|
427
|
+
readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
428
|
+
};
|
|
429
|
+
readonly additionalProperties: {
|
|
430
|
+
readonly type: "integer";
|
|
431
|
+
readonly minimum: 0;
|
|
432
|
+
};
|
|
433
|
+
};
|
|
434
|
+
readonly eventStatus: {
|
|
435
|
+
readonly type: "array";
|
|
436
|
+
readonly items: {
|
|
437
|
+
readonly $ref: "#/$defs/EventStatus";
|
|
438
|
+
};
|
|
439
|
+
readonly description: "One entry per stored event, in stored order.";
|
|
440
|
+
};
|
|
441
|
+
readonly requirementsDigest: {
|
|
442
|
+
readonly type: readonly ["string", "null"];
|
|
443
|
+
readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
|
|
444
|
+
};
|
|
445
|
+
readonly ext: {
|
|
446
|
+
readonly $ref: "#/$defs/Ext";
|
|
447
|
+
};
|
|
448
|
+
};
|
|
449
|
+
};
|
|
450
|
+
readonly Ext: {
|
|
451
|
+
readonly title: "Ext";
|
|
452
|
+
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.";
|
|
453
|
+
readonly type: "object";
|
|
454
|
+
readonly minProperties: 1;
|
|
455
|
+
readonly additionalProperties: true;
|
|
456
|
+
readonly propertyNames: {
|
|
457
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
458
|
+
};
|
|
459
|
+
};
|
|
460
|
+
};
|
|
461
|
+
};
|
|
462
|
+
/** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
|
|
463
|
+
export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
464
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
465
|
+
readonly $ref: "#/$defs/Response";
|
|
466
|
+
readonly $defs: {
|
|
467
|
+
readonly Tier: {
|
|
468
|
+
readonly title: "Tier";
|
|
469
|
+
readonly type: "object";
|
|
470
|
+
readonly additionalProperties: false;
|
|
471
|
+
readonly required: readonly ["name", "dripPerTick"];
|
|
472
|
+
readonly properties: {
|
|
473
|
+
readonly name: {
|
|
474
|
+
readonly type: "string";
|
|
475
|
+
readonly minLength: 1;
|
|
476
|
+
readonly description: "How the menu names it: desk, busy-desk.";
|
|
477
|
+
};
|
|
478
|
+
readonly dripPerTick: {
|
|
479
|
+
readonly type: "integer";
|
|
480
|
+
readonly minimum: 1;
|
|
481
|
+
readonly description: "How many tokens a tick under this tier yields.";
|
|
482
|
+
};
|
|
483
|
+
};
|
|
484
|
+
};
|
|
485
|
+
readonly StoredEvent: {
|
|
486
|
+
readonly title: "StoredEvent";
|
|
487
|
+
readonly type: "object";
|
|
488
|
+
readonly additionalProperties: false;
|
|
489
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
490
|
+
readonly properties: {
|
|
491
|
+
readonly eventId: {
|
|
492
|
+
readonly type: "string";
|
|
493
|
+
readonly minLength: 1;
|
|
494
|
+
};
|
|
495
|
+
readonly startDate: {
|
|
496
|
+
readonly type: "string";
|
|
497
|
+
readonly format: "date";
|
|
498
|
+
};
|
|
499
|
+
readonly endDate: {
|
|
500
|
+
readonly type: "string";
|
|
501
|
+
readonly format: "date";
|
|
502
|
+
};
|
|
503
|
+
readonly graceDays: {
|
|
504
|
+
readonly type: "integer";
|
|
505
|
+
readonly minimum: 0;
|
|
506
|
+
};
|
|
507
|
+
readonly groupFloor: {
|
|
508
|
+
readonly type: "integer";
|
|
509
|
+
readonly minimum: 1;
|
|
510
|
+
};
|
|
511
|
+
readonly tiers: {
|
|
512
|
+
readonly type: "array";
|
|
513
|
+
readonly items: {
|
|
514
|
+
readonly $ref: "#/$defs/Tier";
|
|
515
|
+
};
|
|
516
|
+
};
|
|
517
|
+
readonly approvedBy: {
|
|
518
|
+
readonly type: readonly ["string", "null"];
|
|
519
|
+
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
520
|
+
};
|
|
521
|
+
};
|
|
522
|
+
};
|
|
523
|
+
readonly PublishedEvent: {
|
|
524
|
+
readonly title: "PublishedEvent";
|
|
525
|
+
readonly description: "The published shape drops approvedBy and graceDays: who approved is the community's own record, and a vetter is told closesAfter when its request is approved rather than being handed the raw grace period here.";
|
|
526
|
+
readonly type: "object";
|
|
527
|
+
readonly additionalProperties: false;
|
|
528
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "groupFloor", "tiers"];
|
|
529
|
+
readonly properties: {
|
|
530
|
+
readonly eventId: {
|
|
531
|
+
readonly type: "string";
|
|
532
|
+
readonly minLength: 1;
|
|
533
|
+
};
|
|
534
|
+
readonly startDate: {
|
|
535
|
+
readonly type: "string";
|
|
536
|
+
readonly format: "date";
|
|
537
|
+
};
|
|
538
|
+
readonly endDate: {
|
|
539
|
+
readonly type: "string";
|
|
540
|
+
readonly format: "date";
|
|
541
|
+
};
|
|
542
|
+
readonly groupFloor: {
|
|
543
|
+
readonly type: "integer";
|
|
544
|
+
readonly minimum: 1;
|
|
545
|
+
};
|
|
546
|
+
readonly tiers: {
|
|
547
|
+
readonly type: "array";
|
|
548
|
+
readonly items: {
|
|
549
|
+
readonly $ref: "#/$defs/Tier";
|
|
550
|
+
};
|
|
551
|
+
};
|
|
552
|
+
};
|
|
553
|
+
};
|
|
554
|
+
readonly StoredConfig: {
|
|
555
|
+
readonly title: "StoredConfig";
|
|
556
|
+
readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
|
|
557
|
+
readonly type: "object";
|
|
558
|
+
readonly additionalProperties: false;
|
|
559
|
+
readonly required: readonly ["suite", "hvk", "tvk", "livePeriods", "liveTokenLabels", "dripPerTick", "events"];
|
|
560
|
+
readonly properties: {
|
|
561
|
+
readonly suite: {
|
|
562
|
+
readonly type: "string";
|
|
563
|
+
readonly minLength: 1;
|
|
564
|
+
readonly description: "The blind-signature suite in force, e.g. ps-ddh-bls12381.";
|
|
565
|
+
};
|
|
566
|
+
readonly hvk: {
|
|
567
|
+
readonly type: "string";
|
|
568
|
+
readonly minLength: 1;
|
|
569
|
+
readonly description: "The helper verification key, multibase. A public value, published as helperKey.";
|
|
570
|
+
};
|
|
571
|
+
readonly tvk: {
|
|
572
|
+
readonly type: "string";
|
|
573
|
+
readonly minLength: 1;
|
|
574
|
+
readonly description: "The token verification key, multibase. Never the same key as hvk.";
|
|
575
|
+
};
|
|
576
|
+
readonly livePeriods: {
|
|
577
|
+
readonly type: "array";
|
|
578
|
+
readonly items: {
|
|
579
|
+
readonly type: "string";
|
|
580
|
+
readonly pattern: "^[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
581
|
+
};
|
|
582
|
+
readonly description: "Live vetter class periods, current first, stored as the bare YYYY-MM period.";
|
|
583
|
+
};
|
|
584
|
+
readonly liveTokenLabels: {
|
|
585
|
+
readonly type: "array";
|
|
586
|
+
readonly items: {
|
|
587
|
+
readonly type: "string";
|
|
588
|
+
readonly minLength: 1;
|
|
589
|
+
};
|
|
590
|
+
};
|
|
591
|
+
readonly dripPerTick: {
|
|
592
|
+
readonly type: "integer";
|
|
593
|
+
readonly minimum: 1;
|
|
594
|
+
};
|
|
595
|
+
readonly events: {
|
|
596
|
+
readonly type: "array";
|
|
597
|
+
readonly items: {
|
|
598
|
+
readonly $ref: "#/$defs/StoredEvent";
|
|
599
|
+
};
|
|
600
|
+
};
|
|
601
|
+
};
|
|
602
|
+
};
|
|
603
|
+
readonly PublishedConfig: {
|
|
604
|
+
readonly title: "PublishedConfig";
|
|
605
|
+
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
606
|
+
readonly type: "object";
|
|
607
|
+
readonly additionalProperties: false;
|
|
608
|
+
readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "events"];
|
|
609
|
+
readonly properties: {
|
|
610
|
+
readonly suite: {
|
|
611
|
+
readonly type: "string";
|
|
612
|
+
readonly minLength: 1;
|
|
613
|
+
};
|
|
614
|
+
readonly helperKey: {
|
|
615
|
+
readonly type: "string";
|
|
616
|
+
readonly minLength: 1;
|
|
617
|
+
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
618
|
+
};
|
|
619
|
+
readonly tokenKey: {
|
|
620
|
+
readonly type: "string";
|
|
621
|
+
readonly minLength: 1;
|
|
622
|
+
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
623
|
+
};
|
|
624
|
+
readonly vetterLabels: {
|
|
625
|
+
readonly type: "array";
|
|
626
|
+
readonly items: {
|
|
627
|
+
readonly type: "string";
|
|
628
|
+
readonly minLength: 1;
|
|
629
|
+
};
|
|
630
|
+
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
631
|
+
};
|
|
632
|
+
readonly tokenLabels: {
|
|
633
|
+
readonly type: "array";
|
|
634
|
+
readonly items: {
|
|
635
|
+
readonly type: "string";
|
|
636
|
+
readonly minLength: 1;
|
|
637
|
+
};
|
|
638
|
+
};
|
|
639
|
+
readonly dripPerTick: {
|
|
640
|
+
readonly type: "integer";
|
|
641
|
+
readonly minimum: 1;
|
|
642
|
+
};
|
|
643
|
+
readonly events: {
|
|
644
|
+
readonly type: "array";
|
|
645
|
+
readonly items: {
|
|
646
|
+
readonly $ref: "#/$defs/PublishedEvent";
|
|
647
|
+
};
|
|
648
|
+
};
|
|
649
|
+
};
|
|
650
|
+
};
|
|
651
|
+
readonly EventStatus: {
|
|
652
|
+
readonly title: "EventStatus";
|
|
653
|
+
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
654
|
+
readonly type: "object";
|
|
655
|
+
readonly additionalProperties: false;
|
|
656
|
+
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
657
|
+
readonly properties: {
|
|
658
|
+
readonly eventId: {
|
|
659
|
+
readonly type: "string";
|
|
660
|
+
readonly minLength: 1;
|
|
661
|
+
};
|
|
662
|
+
readonly groupFloor: {
|
|
663
|
+
readonly type: "integer";
|
|
664
|
+
readonly minimum: 1;
|
|
665
|
+
readonly description: "The smallest group this community will open the label for, as stored.";
|
|
666
|
+
};
|
|
667
|
+
readonly groupSize: {
|
|
668
|
+
readonly type: "integer";
|
|
669
|
+
readonly minimum: 0;
|
|
670
|
+
readonly description: "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.";
|
|
671
|
+
};
|
|
672
|
+
readonly approved: {
|
|
673
|
+
readonly type: "boolean";
|
|
674
|
+
readonly description: "Whether the stored event names an approver.";
|
|
675
|
+
};
|
|
676
|
+
readonly live: {
|
|
677
|
+
readonly type: "boolean";
|
|
678
|
+
readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
|
|
679
|
+
};
|
|
680
|
+
};
|
|
681
|
+
};
|
|
682
|
+
readonly Response: {
|
|
683
|
+
readonly $anchor: "response";
|
|
684
|
+
readonly title: "VTC Vetting — Hidden — Show — response payload";
|
|
685
|
+
readonly type: "object";
|
|
686
|
+
readonly additionalProperties: false;
|
|
687
|
+
readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
|
|
688
|
+
readonly dependentRequired: {
|
|
689
|
+
readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
|
|
690
|
+
readonly published: readonly ["stored"];
|
|
691
|
+
readonly enrolledVetters: readonly ["stored"];
|
|
692
|
+
readonly eventStatus: readonly ["stored"];
|
|
693
|
+
};
|
|
694
|
+
readonly properties: {
|
|
695
|
+
readonly criterionId: {
|
|
696
|
+
readonly type: "string";
|
|
697
|
+
readonly minLength: 1;
|
|
698
|
+
readonly description: "The criterion read.";
|
|
699
|
+
};
|
|
700
|
+
readonly enabled: {
|
|
701
|
+
readonly type: "boolean";
|
|
702
|
+
readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
|
|
703
|
+
};
|
|
704
|
+
readonly stored: {
|
|
705
|
+
readonly $ref: "#/$defs/StoredConfig";
|
|
706
|
+
};
|
|
707
|
+
readonly published: {
|
|
708
|
+
readonly $ref: "#/$defs/PublishedConfig";
|
|
709
|
+
};
|
|
710
|
+
readonly enrolledVetters: {
|
|
711
|
+
readonly type: "object";
|
|
712
|
+
readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
|
|
713
|
+
readonly propertyNames: {
|
|
714
|
+
readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
715
|
+
};
|
|
716
|
+
readonly additionalProperties: {
|
|
717
|
+
readonly type: "integer";
|
|
718
|
+
readonly minimum: 0;
|
|
719
|
+
};
|
|
720
|
+
};
|
|
721
|
+
readonly eventStatus: {
|
|
722
|
+
readonly type: "array";
|
|
723
|
+
readonly items: {
|
|
724
|
+
readonly $ref: "#/$defs/EventStatus";
|
|
725
|
+
};
|
|
726
|
+
readonly description: "One entry per stored event, in stored order.";
|
|
727
|
+
};
|
|
728
|
+
readonly requirementsDigest: {
|
|
729
|
+
readonly type: readonly ["string", "null"];
|
|
730
|
+
readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
|
|
731
|
+
};
|
|
732
|
+
readonly ext: {
|
|
733
|
+
readonly $ref: "#/$defs/Ext";
|
|
734
|
+
};
|
|
735
|
+
};
|
|
736
|
+
};
|
|
737
|
+
readonly Ext: {
|
|
738
|
+
readonly title: "Ext";
|
|
739
|
+
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.";
|
|
740
|
+
readonly type: "object";
|
|
741
|
+
readonly minProperties: 1;
|
|
742
|
+
readonly additionalProperties: true;
|
|
743
|
+
readonly propertyNames: {
|
|
744
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
745
|
+
};
|
|
746
|
+
};
|
|
747
|
+
};
|
|
748
|
+
};
|
|
749
|
+
/**
|
|
750
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
751
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
752
|
+
* per-specification and cannot be derived from the document alone, and
|
|
753
|
+
* item 2 needs the schema this carries.
|
|
754
|
+
*/
|
|
755
|
+
export declare const SPEC: {
|
|
756
|
+
readonly typeUri: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1";
|
|
757
|
+
readonly isBearer: false;
|
|
758
|
+
readonly isProofRequired: true;
|
|
759
|
+
readonly isRecipientRequired: true;
|
|
760
|
+
readonly isIssuedAtRequired: false;
|
|
761
|
+
readonly payloadSchema: {
|
|
762
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
763
|
+
readonly $id: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1";
|
|
764
|
+
readonly title: "VTC Vetting — Hidden — Show — payload";
|
|
765
|
+
readonly description: "Read one criterion's stored hidden-vetting configuration, what it publishes, and the aggregate counts an administrator needs to run it. The outer document members are owned by the framework — SPEC §6.3.";
|
|
766
|
+
readonly type: "object";
|
|
767
|
+
readonly additionalProperties: false;
|
|
768
|
+
readonly required: readonly ["criterionId"];
|
|
769
|
+
readonly properties: {
|
|
770
|
+
readonly criterionId: {
|
|
771
|
+
readonly type: "string";
|
|
772
|
+
readonly minLength: 1;
|
|
773
|
+
readonly description: "The Accepts criterion to read.";
|
|
774
|
+
};
|
|
775
|
+
readonly ext: {
|
|
776
|
+
readonly $ref: "#/$defs/Ext";
|
|
777
|
+
};
|
|
778
|
+
};
|
|
779
|
+
readonly $defs: {
|
|
780
|
+
readonly Tier: {
|
|
781
|
+
readonly title: "Tier";
|
|
782
|
+
readonly type: "object";
|
|
783
|
+
readonly additionalProperties: false;
|
|
784
|
+
readonly required: readonly ["name", "dripPerTick"];
|
|
785
|
+
readonly properties: {
|
|
786
|
+
readonly name: {
|
|
787
|
+
readonly type: "string";
|
|
788
|
+
readonly minLength: 1;
|
|
789
|
+
readonly description: "How the menu names it: desk, busy-desk.";
|
|
790
|
+
};
|
|
791
|
+
readonly dripPerTick: {
|
|
792
|
+
readonly type: "integer";
|
|
793
|
+
readonly minimum: 1;
|
|
794
|
+
readonly description: "How many tokens a tick under this tier yields.";
|
|
795
|
+
};
|
|
796
|
+
};
|
|
797
|
+
};
|
|
798
|
+
readonly StoredEvent: {
|
|
799
|
+
readonly title: "StoredEvent";
|
|
800
|
+
readonly type: "object";
|
|
801
|
+
readonly additionalProperties: false;
|
|
802
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
803
|
+
readonly properties: {
|
|
804
|
+
readonly eventId: {
|
|
805
|
+
readonly type: "string";
|
|
806
|
+
readonly minLength: 1;
|
|
807
|
+
};
|
|
808
|
+
readonly startDate: {
|
|
809
|
+
readonly type: "string";
|
|
810
|
+
readonly format: "date";
|
|
811
|
+
};
|
|
812
|
+
readonly endDate: {
|
|
813
|
+
readonly type: "string";
|
|
814
|
+
readonly format: "date";
|
|
815
|
+
};
|
|
816
|
+
readonly graceDays: {
|
|
817
|
+
readonly type: "integer";
|
|
818
|
+
readonly minimum: 0;
|
|
819
|
+
};
|
|
820
|
+
readonly groupFloor: {
|
|
821
|
+
readonly type: "integer";
|
|
822
|
+
readonly minimum: 1;
|
|
823
|
+
};
|
|
824
|
+
readonly tiers: {
|
|
825
|
+
readonly type: "array";
|
|
826
|
+
readonly items: {
|
|
827
|
+
readonly $ref: "#/$defs/Tier";
|
|
828
|
+
};
|
|
829
|
+
};
|
|
830
|
+
readonly approvedBy: {
|
|
831
|
+
readonly type: readonly ["string", "null"];
|
|
832
|
+
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
833
|
+
};
|
|
834
|
+
};
|
|
835
|
+
};
|
|
836
|
+
readonly PublishedEvent: {
|
|
837
|
+
readonly title: "PublishedEvent";
|
|
838
|
+
readonly description: "The published shape drops approvedBy and graceDays: who approved is the community's own record, and a vetter is told closesAfter when its request is approved rather than being handed the raw grace period here.";
|
|
839
|
+
readonly type: "object";
|
|
840
|
+
readonly additionalProperties: false;
|
|
841
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "groupFloor", "tiers"];
|
|
842
|
+
readonly properties: {
|
|
843
|
+
readonly eventId: {
|
|
844
|
+
readonly type: "string";
|
|
845
|
+
readonly minLength: 1;
|
|
846
|
+
};
|
|
847
|
+
readonly startDate: {
|
|
848
|
+
readonly type: "string";
|
|
849
|
+
readonly format: "date";
|
|
850
|
+
};
|
|
851
|
+
readonly endDate: {
|
|
852
|
+
readonly type: "string";
|
|
853
|
+
readonly format: "date";
|
|
854
|
+
};
|
|
855
|
+
readonly groupFloor: {
|
|
856
|
+
readonly type: "integer";
|
|
857
|
+
readonly minimum: 1;
|
|
858
|
+
};
|
|
859
|
+
readonly tiers: {
|
|
860
|
+
readonly type: "array";
|
|
861
|
+
readonly items: {
|
|
862
|
+
readonly $ref: "#/$defs/Tier";
|
|
863
|
+
};
|
|
864
|
+
};
|
|
865
|
+
};
|
|
866
|
+
};
|
|
867
|
+
readonly StoredConfig: {
|
|
868
|
+
readonly title: "StoredConfig";
|
|
869
|
+
readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
|
|
870
|
+
readonly type: "object";
|
|
871
|
+
readonly additionalProperties: false;
|
|
872
|
+
readonly required: readonly ["suite", "hvk", "tvk", "livePeriods", "liveTokenLabels", "dripPerTick", "events"];
|
|
873
|
+
readonly properties: {
|
|
874
|
+
readonly suite: {
|
|
875
|
+
readonly type: "string";
|
|
876
|
+
readonly minLength: 1;
|
|
877
|
+
readonly description: "The blind-signature suite in force, e.g. ps-ddh-bls12381.";
|
|
878
|
+
};
|
|
879
|
+
readonly hvk: {
|
|
880
|
+
readonly type: "string";
|
|
881
|
+
readonly minLength: 1;
|
|
882
|
+
readonly description: "The helper verification key, multibase. A public value, published as helperKey.";
|
|
883
|
+
};
|
|
884
|
+
readonly tvk: {
|
|
885
|
+
readonly type: "string";
|
|
886
|
+
readonly minLength: 1;
|
|
887
|
+
readonly description: "The token verification key, multibase. Never the same key as hvk.";
|
|
888
|
+
};
|
|
889
|
+
readonly livePeriods: {
|
|
890
|
+
readonly type: "array";
|
|
891
|
+
readonly items: {
|
|
892
|
+
readonly type: "string";
|
|
893
|
+
readonly pattern: "^[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
894
|
+
};
|
|
895
|
+
readonly description: "Live vetter class periods, current first, stored as the bare YYYY-MM period.";
|
|
896
|
+
};
|
|
897
|
+
readonly liveTokenLabels: {
|
|
898
|
+
readonly type: "array";
|
|
899
|
+
readonly items: {
|
|
900
|
+
readonly type: "string";
|
|
901
|
+
readonly minLength: 1;
|
|
902
|
+
};
|
|
903
|
+
};
|
|
904
|
+
readonly dripPerTick: {
|
|
905
|
+
readonly type: "integer";
|
|
906
|
+
readonly minimum: 1;
|
|
907
|
+
};
|
|
908
|
+
readonly events: {
|
|
909
|
+
readonly type: "array";
|
|
910
|
+
readonly items: {
|
|
911
|
+
readonly $ref: "#/$defs/StoredEvent";
|
|
912
|
+
};
|
|
913
|
+
};
|
|
914
|
+
};
|
|
915
|
+
};
|
|
916
|
+
readonly PublishedConfig: {
|
|
917
|
+
readonly title: "PublishedConfig";
|
|
918
|
+
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
919
|
+
readonly type: "object";
|
|
920
|
+
readonly additionalProperties: false;
|
|
921
|
+
readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "events"];
|
|
922
|
+
readonly properties: {
|
|
923
|
+
readonly suite: {
|
|
924
|
+
readonly type: "string";
|
|
925
|
+
readonly minLength: 1;
|
|
926
|
+
};
|
|
927
|
+
readonly helperKey: {
|
|
928
|
+
readonly type: "string";
|
|
929
|
+
readonly minLength: 1;
|
|
930
|
+
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
931
|
+
};
|
|
932
|
+
readonly tokenKey: {
|
|
933
|
+
readonly type: "string";
|
|
934
|
+
readonly minLength: 1;
|
|
935
|
+
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
936
|
+
};
|
|
937
|
+
readonly vetterLabels: {
|
|
938
|
+
readonly type: "array";
|
|
939
|
+
readonly items: {
|
|
940
|
+
readonly type: "string";
|
|
941
|
+
readonly minLength: 1;
|
|
942
|
+
};
|
|
943
|
+
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
944
|
+
};
|
|
945
|
+
readonly tokenLabels: {
|
|
946
|
+
readonly type: "array";
|
|
947
|
+
readonly items: {
|
|
948
|
+
readonly type: "string";
|
|
949
|
+
readonly minLength: 1;
|
|
950
|
+
};
|
|
951
|
+
};
|
|
952
|
+
readonly dripPerTick: {
|
|
953
|
+
readonly type: "integer";
|
|
954
|
+
readonly minimum: 1;
|
|
955
|
+
};
|
|
956
|
+
readonly events: {
|
|
957
|
+
readonly type: "array";
|
|
958
|
+
readonly items: {
|
|
959
|
+
readonly $ref: "#/$defs/PublishedEvent";
|
|
960
|
+
};
|
|
961
|
+
};
|
|
962
|
+
};
|
|
963
|
+
};
|
|
964
|
+
readonly EventStatus: {
|
|
965
|
+
readonly title: "EventStatus";
|
|
966
|
+
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
967
|
+
readonly type: "object";
|
|
968
|
+
readonly additionalProperties: false;
|
|
969
|
+
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
970
|
+
readonly properties: {
|
|
971
|
+
readonly eventId: {
|
|
972
|
+
readonly type: "string";
|
|
973
|
+
readonly minLength: 1;
|
|
974
|
+
};
|
|
975
|
+
readonly groupFloor: {
|
|
976
|
+
readonly type: "integer";
|
|
977
|
+
readonly minimum: 1;
|
|
978
|
+
readonly description: "The smallest group this community will open the label for, as stored.";
|
|
979
|
+
};
|
|
980
|
+
readonly groupSize: {
|
|
981
|
+
readonly type: "integer";
|
|
982
|
+
readonly minimum: 0;
|
|
983
|
+
readonly description: "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.";
|
|
984
|
+
};
|
|
985
|
+
readonly approved: {
|
|
986
|
+
readonly type: "boolean";
|
|
987
|
+
readonly description: "Whether the stored event names an approver.";
|
|
988
|
+
};
|
|
989
|
+
readonly live: {
|
|
990
|
+
readonly type: "boolean";
|
|
991
|
+
readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
|
|
992
|
+
};
|
|
993
|
+
};
|
|
994
|
+
};
|
|
995
|
+
readonly Response: {
|
|
996
|
+
readonly $anchor: "response";
|
|
997
|
+
readonly title: "VTC Vetting — Hidden — Show — response payload";
|
|
998
|
+
readonly type: "object";
|
|
999
|
+
readonly additionalProperties: false;
|
|
1000
|
+
readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
|
|
1001
|
+
readonly dependentRequired: {
|
|
1002
|
+
readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
|
|
1003
|
+
readonly published: readonly ["stored"];
|
|
1004
|
+
readonly enrolledVetters: readonly ["stored"];
|
|
1005
|
+
readonly eventStatus: readonly ["stored"];
|
|
1006
|
+
};
|
|
1007
|
+
readonly properties: {
|
|
1008
|
+
readonly criterionId: {
|
|
1009
|
+
readonly type: "string";
|
|
1010
|
+
readonly minLength: 1;
|
|
1011
|
+
readonly description: "The criterion read.";
|
|
1012
|
+
};
|
|
1013
|
+
readonly enabled: {
|
|
1014
|
+
readonly type: "boolean";
|
|
1015
|
+
readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
|
|
1016
|
+
};
|
|
1017
|
+
readonly stored: {
|
|
1018
|
+
readonly $ref: "#/$defs/StoredConfig";
|
|
1019
|
+
};
|
|
1020
|
+
readonly published: {
|
|
1021
|
+
readonly $ref: "#/$defs/PublishedConfig";
|
|
1022
|
+
};
|
|
1023
|
+
readonly enrolledVetters: {
|
|
1024
|
+
readonly type: "object";
|
|
1025
|
+
readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
|
|
1026
|
+
readonly propertyNames: {
|
|
1027
|
+
readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
1028
|
+
};
|
|
1029
|
+
readonly additionalProperties: {
|
|
1030
|
+
readonly type: "integer";
|
|
1031
|
+
readonly minimum: 0;
|
|
1032
|
+
};
|
|
1033
|
+
};
|
|
1034
|
+
readonly eventStatus: {
|
|
1035
|
+
readonly type: "array";
|
|
1036
|
+
readonly items: {
|
|
1037
|
+
readonly $ref: "#/$defs/EventStatus";
|
|
1038
|
+
};
|
|
1039
|
+
readonly description: "One entry per stored event, in stored order.";
|
|
1040
|
+
};
|
|
1041
|
+
readonly requirementsDigest: {
|
|
1042
|
+
readonly type: readonly ["string", "null"];
|
|
1043
|
+
readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
|
|
1044
|
+
};
|
|
1045
|
+
readonly ext: {
|
|
1046
|
+
readonly $ref: "#/$defs/Ext";
|
|
1047
|
+
};
|
|
1048
|
+
};
|
|
1049
|
+
};
|
|
1050
|
+
readonly Ext: {
|
|
1051
|
+
readonly title: "Ext";
|
|
1052
|
+
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.";
|
|
1053
|
+
readonly type: "object";
|
|
1054
|
+
readonly minProperties: 1;
|
|
1055
|
+
readonly additionalProperties: true;
|
|
1056
|
+
readonly propertyNames: {
|
|
1057
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1058
|
+
};
|
|
1059
|
+
};
|
|
1060
|
+
};
|
|
1061
|
+
};
|
|
1062
|
+
};
|
|
1063
|
+
/**
|
|
1064
|
+
* SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
|
|
1065
|
+
* tracks the *issuer* party's requirement because a response swaps the
|
|
1066
|
+
* parties (§7.3 item 5).
|
|
1067
|
+
*/
|
|
1068
|
+
export declare const RESPONSE_SPEC: {
|
|
1069
|
+
readonly typeUri: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1#response";
|
|
1070
|
+
readonly isBearer: false;
|
|
1071
|
+
readonly isProofRequired: true;
|
|
1072
|
+
readonly isRecipientRequired: true;
|
|
1073
|
+
readonly isIssuedAtRequired: false;
|
|
1074
|
+
readonly payloadSchema: {
|
|
1075
|
+
readonly $schema: "https://json-schema.org/draft/2020-12/schema";
|
|
1076
|
+
readonly $ref: "#/$defs/Response";
|
|
1077
|
+
readonly $defs: {
|
|
1078
|
+
readonly Tier: {
|
|
1079
|
+
readonly title: "Tier";
|
|
1080
|
+
readonly type: "object";
|
|
1081
|
+
readonly additionalProperties: false;
|
|
1082
|
+
readonly required: readonly ["name", "dripPerTick"];
|
|
1083
|
+
readonly properties: {
|
|
1084
|
+
readonly name: {
|
|
1085
|
+
readonly type: "string";
|
|
1086
|
+
readonly minLength: 1;
|
|
1087
|
+
readonly description: "How the menu names it: desk, busy-desk.";
|
|
1088
|
+
};
|
|
1089
|
+
readonly dripPerTick: {
|
|
1090
|
+
readonly type: "integer";
|
|
1091
|
+
readonly minimum: 1;
|
|
1092
|
+
readonly description: "How many tokens a tick under this tier yields.";
|
|
1093
|
+
};
|
|
1094
|
+
};
|
|
1095
|
+
};
|
|
1096
|
+
readonly StoredEvent: {
|
|
1097
|
+
readonly title: "StoredEvent";
|
|
1098
|
+
readonly type: "object";
|
|
1099
|
+
readonly additionalProperties: false;
|
|
1100
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
|
|
1101
|
+
readonly properties: {
|
|
1102
|
+
readonly eventId: {
|
|
1103
|
+
readonly type: "string";
|
|
1104
|
+
readonly minLength: 1;
|
|
1105
|
+
};
|
|
1106
|
+
readonly startDate: {
|
|
1107
|
+
readonly type: "string";
|
|
1108
|
+
readonly format: "date";
|
|
1109
|
+
};
|
|
1110
|
+
readonly endDate: {
|
|
1111
|
+
readonly type: "string";
|
|
1112
|
+
readonly format: "date";
|
|
1113
|
+
};
|
|
1114
|
+
readonly graceDays: {
|
|
1115
|
+
readonly type: "integer";
|
|
1116
|
+
readonly minimum: 0;
|
|
1117
|
+
};
|
|
1118
|
+
readonly groupFloor: {
|
|
1119
|
+
readonly type: "integer";
|
|
1120
|
+
readonly minimum: 1;
|
|
1121
|
+
};
|
|
1122
|
+
readonly tiers: {
|
|
1123
|
+
readonly type: "array";
|
|
1124
|
+
readonly items: {
|
|
1125
|
+
readonly $ref: "#/$defs/Tier";
|
|
1126
|
+
};
|
|
1127
|
+
};
|
|
1128
|
+
readonly approvedBy: {
|
|
1129
|
+
readonly type: readonly ["string", "null"];
|
|
1130
|
+
readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
|
|
1131
|
+
};
|
|
1132
|
+
};
|
|
1133
|
+
};
|
|
1134
|
+
readonly PublishedEvent: {
|
|
1135
|
+
readonly title: "PublishedEvent";
|
|
1136
|
+
readonly description: "The published shape drops approvedBy and graceDays: who approved is the community's own record, and a vetter is told closesAfter when its request is approved rather than being handed the raw grace period here.";
|
|
1137
|
+
readonly type: "object";
|
|
1138
|
+
readonly additionalProperties: false;
|
|
1139
|
+
readonly required: readonly ["eventId", "startDate", "endDate", "groupFloor", "tiers"];
|
|
1140
|
+
readonly properties: {
|
|
1141
|
+
readonly eventId: {
|
|
1142
|
+
readonly type: "string";
|
|
1143
|
+
readonly minLength: 1;
|
|
1144
|
+
};
|
|
1145
|
+
readonly startDate: {
|
|
1146
|
+
readonly type: "string";
|
|
1147
|
+
readonly format: "date";
|
|
1148
|
+
};
|
|
1149
|
+
readonly endDate: {
|
|
1150
|
+
readonly type: "string";
|
|
1151
|
+
readonly format: "date";
|
|
1152
|
+
};
|
|
1153
|
+
readonly groupFloor: {
|
|
1154
|
+
readonly type: "integer";
|
|
1155
|
+
readonly minimum: 1;
|
|
1156
|
+
};
|
|
1157
|
+
readonly tiers: {
|
|
1158
|
+
readonly type: "array";
|
|
1159
|
+
readonly items: {
|
|
1160
|
+
readonly $ref: "#/$defs/Tier";
|
|
1161
|
+
};
|
|
1162
|
+
};
|
|
1163
|
+
};
|
|
1164
|
+
};
|
|
1165
|
+
readonly StoredConfig: {
|
|
1166
|
+
readonly title: "StoredConfig";
|
|
1167
|
+
readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
|
|
1168
|
+
readonly type: "object";
|
|
1169
|
+
readonly additionalProperties: false;
|
|
1170
|
+
readonly required: readonly ["suite", "hvk", "tvk", "livePeriods", "liveTokenLabels", "dripPerTick", "events"];
|
|
1171
|
+
readonly properties: {
|
|
1172
|
+
readonly suite: {
|
|
1173
|
+
readonly type: "string";
|
|
1174
|
+
readonly minLength: 1;
|
|
1175
|
+
readonly description: "The blind-signature suite in force, e.g. ps-ddh-bls12381.";
|
|
1176
|
+
};
|
|
1177
|
+
readonly hvk: {
|
|
1178
|
+
readonly type: "string";
|
|
1179
|
+
readonly minLength: 1;
|
|
1180
|
+
readonly description: "The helper verification key, multibase. A public value, published as helperKey.";
|
|
1181
|
+
};
|
|
1182
|
+
readonly tvk: {
|
|
1183
|
+
readonly type: "string";
|
|
1184
|
+
readonly minLength: 1;
|
|
1185
|
+
readonly description: "The token verification key, multibase. Never the same key as hvk.";
|
|
1186
|
+
};
|
|
1187
|
+
readonly livePeriods: {
|
|
1188
|
+
readonly type: "array";
|
|
1189
|
+
readonly items: {
|
|
1190
|
+
readonly type: "string";
|
|
1191
|
+
readonly pattern: "^[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
1192
|
+
};
|
|
1193
|
+
readonly description: "Live vetter class periods, current first, stored as the bare YYYY-MM period.";
|
|
1194
|
+
};
|
|
1195
|
+
readonly liveTokenLabels: {
|
|
1196
|
+
readonly type: "array";
|
|
1197
|
+
readonly items: {
|
|
1198
|
+
readonly type: "string";
|
|
1199
|
+
readonly minLength: 1;
|
|
1200
|
+
};
|
|
1201
|
+
};
|
|
1202
|
+
readonly dripPerTick: {
|
|
1203
|
+
readonly type: "integer";
|
|
1204
|
+
readonly minimum: 1;
|
|
1205
|
+
};
|
|
1206
|
+
readonly events: {
|
|
1207
|
+
readonly type: "array";
|
|
1208
|
+
readonly items: {
|
|
1209
|
+
readonly $ref: "#/$defs/StoredEvent";
|
|
1210
|
+
};
|
|
1211
|
+
};
|
|
1212
|
+
};
|
|
1213
|
+
};
|
|
1214
|
+
readonly PublishedConfig: {
|
|
1215
|
+
readonly title: "PublishedConfig";
|
|
1216
|
+
readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
|
|
1217
|
+
readonly type: "object";
|
|
1218
|
+
readonly additionalProperties: false;
|
|
1219
|
+
readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "events"];
|
|
1220
|
+
readonly properties: {
|
|
1221
|
+
readonly suite: {
|
|
1222
|
+
readonly type: "string";
|
|
1223
|
+
readonly minLength: 1;
|
|
1224
|
+
};
|
|
1225
|
+
readonly helperKey: {
|
|
1226
|
+
readonly type: "string";
|
|
1227
|
+
readonly minLength: 1;
|
|
1228
|
+
readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
|
|
1229
|
+
};
|
|
1230
|
+
readonly tokenKey: {
|
|
1231
|
+
readonly type: "string";
|
|
1232
|
+
readonly minLength: 1;
|
|
1233
|
+
readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
|
|
1234
|
+
};
|
|
1235
|
+
readonly vetterLabels: {
|
|
1236
|
+
readonly type: "array";
|
|
1237
|
+
readonly items: {
|
|
1238
|
+
readonly type: "string";
|
|
1239
|
+
readonly minLength: 1;
|
|
1240
|
+
};
|
|
1241
|
+
readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
|
|
1242
|
+
};
|
|
1243
|
+
readonly tokenLabels: {
|
|
1244
|
+
readonly type: "array";
|
|
1245
|
+
readonly items: {
|
|
1246
|
+
readonly type: "string";
|
|
1247
|
+
readonly minLength: 1;
|
|
1248
|
+
};
|
|
1249
|
+
};
|
|
1250
|
+
readonly dripPerTick: {
|
|
1251
|
+
readonly type: "integer";
|
|
1252
|
+
readonly minimum: 1;
|
|
1253
|
+
};
|
|
1254
|
+
readonly events: {
|
|
1255
|
+
readonly type: "array";
|
|
1256
|
+
readonly items: {
|
|
1257
|
+
readonly $ref: "#/$defs/PublishedEvent";
|
|
1258
|
+
};
|
|
1259
|
+
};
|
|
1260
|
+
};
|
|
1261
|
+
};
|
|
1262
|
+
readonly EventStatus: {
|
|
1263
|
+
readonly title: "EventStatus";
|
|
1264
|
+
readonly description: "How one stored event stands today. Counts only — never which members asked.";
|
|
1265
|
+
readonly type: "object";
|
|
1266
|
+
readonly additionalProperties: false;
|
|
1267
|
+
readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
|
|
1268
|
+
readonly properties: {
|
|
1269
|
+
readonly eventId: {
|
|
1270
|
+
readonly type: "string";
|
|
1271
|
+
readonly minLength: 1;
|
|
1272
|
+
};
|
|
1273
|
+
readonly groupFloor: {
|
|
1274
|
+
readonly type: "integer";
|
|
1275
|
+
readonly minimum: 1;
|
|
1276
|
+
readonly description: "The smallest group this community will open the label for, as stored.";
|
|
1277
|
+
};
|
|
1278
|
+
readonly groupSize: {
|
|
1279
|
+
readonly type: "integer";
|
|
1280
|
+
readonly minimum: 0;
|
|
1281
|
+
readonly description: "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.";
|
|
1282
|
+
};
|
|
1283
|
+
readonly approved: {
|
|
1284
|
+
readonly type: "boolean";
|
|
1285
|
+
readonly description: "Whether the stored event names an approver.";
|
|
1286
|
+
};
|
|
1287
|
+
readonly live: {
|
|
1288
|
+
readonly type: "boolean";
|
|
1289
|
+
readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
|
|
1290
|
+
};
|
|
1291
|
+
};
|
|
1292
|
+
};
|
|
1293
|
+
readonly Response: {
|
|
1294
|
+
readonly $anchor: "response";
|
|
1295
|
+
readonly title: "VTC Vetting — Hidden — Show — response payload";
|
|
1296
|
+
readonly type: "object";
|
|
1297
|
+
readonly additionalProperties: false;
|
|
1298
|
+
readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
|
|
1299
|
+
readonly dependentRequired: {
|
|
1300
|
+
readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
|
|
1301
|
+
readonly published: readonly ["stored"];
|
|
1302
|
+
readonly enrolledVetters: readonly ["stored"];
|
|
1303
|
+
readonly eventStatus: readonly ["stored"];
|
|
1304
|
+
};
|
|
1305
|
+
readonly properties: {
|
|
1306
|
+
readonly criterionId: {
|
|
1307
|
+
readonly type: "string";
|
|
1308
|
+
readonly minLength: 1;
|
|
1309
|
+
readonly description: "The criterion read.";
|
|
1310
|
+
};
|
|
1311
|
+
readonly enabled: {
|
|
1312
|
+
readonly type: "boolean";
|
|
1313
|
+
readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
|
|
1314
|
+
};
|
|
1315
|
+
readonly stored: {
|
|
1316
|
+
readonly $ref: "#/$defs/StoredConfig";
|
|
1317
|
+
};
|
|
1318
|
+
readonly published: {
|
|
1319
|
+
readonly $ref: "#/$defs/PublishedConfig";
|
|
1320
|
+
};
|
|
1321
|
+
readonly enrolledVetters: {
|
|
1322
|
+
readonly type: "object";
|
|
1323
|
+
readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
|
|
1324
|
+
readonly propertyNames: {
|
|
1325
|
+
readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
|
|
1326
|
+
};
|
|
1327
|
+
readonly additionalProperties: {
|
|
1328
|
+
readonly type: "integer";
|
|
1329
|
+
readonly minimum: 0;
|
|
1330
|
+
};
|
|
1331
|
+
};
|
|
1332
|
+
readonly eventStatus: {
|
|
1333
|
+
readonly type: "array";
|
|
1334
|
+
readonly items: {
|
|
1335
|
+
readonly $ref: "#/$defs/EventStatus";
|
|
1336
|
+
};
|
|
1337
|
+
readonly description: "One entry per stored event, in stored order.";
|
|
1338
|
+
};
|
|
1339
|
+
readonly requirementsDigest: {
|
|
1340
|
+
readonly type: readonly ["string", "null"];
|
|
1341
|
+
readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
|
|
1342
|
+
};
|
|
1343
|
+
readonly ext: {
|
|
1344
|
+
readonly $ref: "#/$defs/Ext";
|
|
1345
|
+
};
|
|
1346
|
+
};
|
|
1347
|
+
};
|
|
1348
|
+
readonly Ext: {
|
|
1349
|
+
readonly title: "Ext";
|
|
1350
|
+
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.";
|
|
1351
|
+
readonly type: "object";
|
|
1352
|
+
readonly minProperties: 1;
|
|
1353
|
+
readonly additionalProperties: true;
|
|
1354
|
+
readonly propertyNames: {
|
|
1355
|
+
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
1356
|
+
};
|
|
1357
|
+
};
|
|
1358
|
+
};
|
|
1359
|
+
};
|
|
1360
|
+
};
|
|
1361
|
+
//# sourceMappingURL=payload.d.ts.map
|