@attestplane/attestplane 0.0.1-alpha.1 → 0.0.3-alpha

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 (106) hide show
  1. package/README.md +17 -10
  2. package/dist/adapter_conformance.d.ts +46 -0
  3. package/dist/adapter_conformance.d.ts.map +1 -0
  4. package/dist/adapter_conformance.js +160 -0
  5. package/dist/adapter_conformance.js.map +1 -0
  6. package/dist/adapters/langfuse.d.ts +51 -0
  7. package/dist/adapters/langfuse.d.ts.map +1 -0
  8. package/dist/adapters/langfuse.js +157 -0
  9. package/dist/adapters/langfuse.js.map +1 -0
  10. package/dist/adapters/langsmith.d.ts +53 -0
  11. package/dist/adapters/langsmith.d.ts.map +1 -0
  12. package/dist/adapters/langsmith.js +173 -0
  13. package/dist/adapters/langsmith.js.map +1 -0
  14. package/dist/adapters.d.ts +88 -0
  15. package/dist/adapters.d.ts.map +1 -0
  16. package/dist/adapters.js +109 -0
  17. package/dist/adapters.js.map +1 -0
  18. package/dist/anchoring.d.ts +119 -0
  19. package/dist/anchoring.d.ts.map +1 -0
  20. package/dist/anchoring.js +340 -0
  21. package/dist/anchoring.js.map +1 -0
  22. package/dist/canonical.d.ts +11 -2
  23. package/dist/canonical.d.ts.map +1 -1
  24. package/dist/canonical.js +44 -31
  25. package/dist/canonical.js.map +1 -1
  26. package/dist/canonical_text.d.ts +30 -0
  27. package/dist/canonical_text.d.ts.map +1 -0
  28. package/dist/canonical_text.js +100 -0
  29. package/dist/canonical_text.js.map +1 -0
  30. package/dist/der.d.ts +55 -0
  31. package/dist/der.d.ts.map +1 -0
  32. package/dist/der.js +200 -0
  33. package/dist/der.js.map +1 -0
  34. package/dist/event_payloads.d.ts +118 -0
  35. package/dist/event_payloads.d.ts.map +1 -0
  36. package/dist/event_payloads.js +348 -0
  37. package/dist/event_payloads.js.map +1 -0
  38. package/dist/event_types.d.ts +47 -0
  39. package/dist/event_types.d.ts.map +1 -0
  40. package/dist/event_types.js +63 -0
  41. package/dist/event_types.js.map +1 -0
  42. package/dist/hashchain.d.ts +1 -0
  43. package/dist/hashchain.d.ts.map +1 -1
  44. package/dist/hashchain.js +25 -1
  45. package/dist/hashchain.js.map +1 -1
  46. package/dist/index.d.ts +22 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +23 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/index_version.d.ts +9 -0
  51. package/dist/index_version.d.ts.map +1 -0
  52. package/dist/index_version.js +11 -0
  53. package/dist/index_version.js.map +1 -0
  54. package/dist/intoto.d.ts +48 -0
  55. package/dist/intoto.d.ts.map +1 -0
  56. package/dist/intoto.js +106 -0
  57. package/dist/intoto.js.map +1 -0
  58. package/dist/obligations.d.ts +41 -0
  59. package/dist/obligations.d.ts.map +1 -0
  60. package/dist/obligations.js +312 -0
  61. package/dist/obligations.js.map +1 -0
  62. package/dist/proof_bundle.d.ts +186 -0
  63. package/dist/proof_bundle.d.ts.map +1 -0
  64. package/dist/proof_bundle.js +299 -0
  65. package/dist/proof_bundle.js.map +1 -0
  66. package/dist/reason_codes.d.ts +38 -0
  67. package/dist/reason_codes.d.ts.map +1 -0
  68. package/dist/reason_codes.js +97 -0
  69. package/dist/reason_codes.js.map +1 -0
  70. package/dist/replay_verifier.d.ts +43 -0
  71. package/dist/replay_verifier.d.ts.map +1 -0
  72. package/dist/replay_verifier.js +98 -0
  73. package/dist/replay_verifier.js.map +1 -0
  74. package/dist/rfc3161.d.ts +52 -0
  75. package/dist/rfc3161.d.ts.map +1 -0
  76. package/dist/rfc3161.js +480 -0
  77. package/dist/rfc3161.js.map +1 -0
  78. package/dist/settlement_verifier.d.ts +34 -0
  79. package/dist/settlement_verifier.d.ts.map +1 -0
  80. package/dist/settlement_verifier.js +139 -0
  81. package/dist/settlement_verifier.js.map +1 -0
  82. package/dist/signing/base.d.ts +101 -0
  83. package/dist/signing/base.d.ts.map +1 -0
  84. package/dist/signing/base.js +144 -0
  85. package/dist/signing/base.js.map +1 -0
  86. package/dist/signing/providers.d.ts +113 -0
  87. package/dist/signing/providers.d.ts.map +1 -0
  88. package/dist/signing/providers.js +230 -0
  89. package/dist/signing/providers.js.map +1 -0
  90. package/dist/signing/signer.d.ts +66 -0
  91. package/dist/signing/signer.d.ts.map +1 -0
  92. package/dist/signing/signer.js +146 -0
  93. package/dist/signing/signer.js.map +1 -0
  94. package/dist/signing/trust_roots.d.ts +71 -0
  95. package/dist/signing/trust_roots.d.ts.map +1 -0
  96. package/dist/signing/trust_roots.js +267 -0
  97. package/dist/signing/trust_roots.js.map +1 -0
  98. package/dist/signing/verifier_ext.d.ts +77 -0
  99. package/dist/signing/verifier_ext.d.ts.map +1 -0
  100. package/dist/signing/verifier_ext.js +340 -0
  101. package/dist/signing/verifier_ext.js.map +1 -0
  102. package/dist/verifier.d.ts +39 -0
  103. package/dist/verifier.d.ts.map +1 -0
  104. package/dist/verifier.js +374 -0
  105. package/dist/verifier.js.map +1 -0
  106. package/package.json +1 -1
@@ -0,0 +1,348 @@
1
+ // SPDX-FileCopyrightText: 2026 The Attestplane Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Event-payload interfaces + validators per ADR-0009 Mode A.6.
5
+ *
6
+ * Each interface here describes the **payload slot** of an `AuditEvent`
7
+ * for one v1 `event_type` (per `./event_types.ts` / ADR-0008). The
8
+ * substrate's `ChainedEvent` shape stays frozen — INV 2. Payload
9
+ * schemas are versioned independently of `chain.schema_version` /
10
+ * `anchor_schema_version` / `signature_schema_version` /
11
+ * `reason_code_schema_version`.
12
+ *
13
+ * Each payload schema also defines a small `validate*()` function that
14
+ * rejects malformed payloads (wrong types, missing required fields,
15
+ * forbidden field names per ADR-0004 § 2 column 3).
16
+ */
17
+ const HEX64 = /^[0-9a-f]{64}$/;
18
+ const REASON_CODE_PATTERN = /^[A-Z][A-Z0-9_]{1,63}$/;
19
+ /**
20
+ * Per ADR-0004 § 2 column 3 + ADR-0009 § 1 Mode A.6 redaction policy.
21
+ * Payload field names that MUST NEVER appear at the root of any event
22
+ * payload.
23
+ */
24
+ export const FORBIDDEN_PAYLOAD_FIELDS = new Set([
25
+ 'signature',
26
+ 'private_key',
27
+ 'secret',
28
+ 'token',
29
+ 'auth_header',
30
+ 'session_token',
31
+ 'capability',
32
+ 'capability_required',
33
+ 'budget',
34
+ 'budget_cap',
35
+ 'quota',
36
+ 'scope_expression',
37
+ 'scope_body',
38
+ 'hmac',
39
+ 'hmac_canonical_payload',
40
+ 'policy_expression_body',
41
+ 'expression',
42
+ ]);
43
+ export class PayloadValidationError extends Error {
44
+ constructor(message) {
45
+ super(message);
46
+ this.name = 'PayloadValidationError';
47
+ }
48
+ }
49
+ function requireIsoUtc(value, field) {
50
+ if (typeof value !== 'string') {
51
+ throw new PayloadValidationError(`${field}: must be ISO-8601 string, got ${typeof value}`);
52
+ }
53
+ if (!(value.endsWith('Z') || /[+-]\d{2}:?\d{2}$/.test(value))) {
54
+ throw new PayloadValidationError(`${field}: must be UTC-aware (use 'Z' or '+00:00' suffix), got ${JSON.stringify(value)}`);
55
+ }
56
+ const ts = Date.parse(value);
57
+ if (Number.isNaN(ts)) {
58
+ throw new PayloadValidationError(`${field}: not valid ISO-8601: ${JSON.stringify(value)}`);
59
+ }
60
+ }
61
+ function rejectForbiddenFields(payload, eventType) {
62
+ const hits = [];
63
+ for (const key of Object.keys(payload)) {
64
+ if (FORBIDDEN_PAYLOAD_FIELDS.has(key))
65
+ hits.push(key);
66
+ }
67
+ if (hits.length > 0) {
68
+ hits.sort();
69
+ throw new PayloadValidationError(`${eventType}: payload contains forbidden field(s) [${hits.join(', ')}] per ADR-0004 § 2 redaction policy`);
70
+ }
71
+ }
72
+ function rejectUnknownFields(payload, allowedFields, eventType) {
73
+ const unknown = Object.keys(payload).filter((key) => !allowedFields.has(key));
74
+ if (unknown.length > 0) {
75
+ unknown.sort();
76
+ throw new PayloadValidationError(`${eventType}: unknown field(s) [${unknown.join(', ')}] not allowed by payload schema`);
77
+ }
78
+ }
79
+ function requireOptionalString(obj, field, eventType) {
80
+ if (field in obj && typeof obj[field] !== 'string') {
81
+ throw new PayloadValidationError(`${eventType}.${field}: must be string or absent, got ${obj[field] === null ? 'null' : typeof obj[field]}`);
82
+ }
83
+ }
84
+ function requireOptionalReasonCode(obj, field, eventType) {
85
+ if (!(field in obj))
86
+ return;
87
+ const value = obj[field];
88
+ if (typeof value !== 'string' || !REASON_CODE_PATTERN.test(value)) {
89
+ throw new PayloadValidationError(`${eventType}.${field}: must match ^[A-Z][A-Z0-9_]{1,63}$, got ${JSON.stringify(value)}`);
90
+ }
91
+ }
92
+ const REQUIRED_LEASE_KEYS = [
93
+ 'lease_event_schema_version',
94
+ 'lease_id_hash',
95
+ 'lifecycle',
96
+ 'observed_at',
97
+ ];
98
+ const ALLOWED_LEASE_KEYS = new Set([
99
+ 'lease_event_schema_version',
100
+ 'lease_id_hash',
101
+ 'lifecycle',
102
+ 'observed_at',
103
+ 'grantor_runtime_id',
104
+ 'tenant_id_ref',
105
+ 'step_id_ref',
106
+ 'run_id_ref',
107
+ 'artifact_hash_ref',
108
+ 'reason_code',
109
+ 'reason_text',
110
+ ]);
111
+ const LIFECYCLE_VALUES = new Set([
112
+ 'granted',
113
+ 'consumed',
114
+ 'expired',
115
+ 'revoked',
116
+ ]);
117
+ /**
118
+ * Throw `PayloadValidationError` if `payload` violates A.7 invariants.
119
+ *
120
+ * Mirrors `validate_lease_lifecycle_event_payload` in Python.
121
+ */
122
+ export function validateLeaseLifecycleEventPayload(payload) {
123
+ if (payload === null || typeof payload !== 'object' || Array.isArray(payload)) {
124
+ throw new PayloadValidationError(`lease_lifecycle_event payload must be object, got ${Array.isArray(payload) ? 'array' : payload === null ? 'null' : typeof payload}`);
125
+ }
126
+ const obj = payload;
127
+ rejectForbiddenFields(obj, 'lease_lifecycle_event');
128
+ rejectUnknownFields(obj, ALLOWED_LEASE_KEYS, 'lease_lifecycle_event');
129
+ const missing = REQUIRED_LEASE_KEYS.filter((k) => !(k in obj));
130
+ if (missing.length > 0) {
131
+ missing.sort();
132
+ throw new PayloadValidationError(`lease_lifecycle_event: missing required fields [${missing.join(', ')}]`);
133
+ }
134
+ if (obj.lease_event_schema_version !== 1) {
135
+ throw new PayloadValidationError(`lease_lifecycle_event: lease_event_schema_version must be 1, got ${JSON.stringify(obj.lease_event_schema_version)}`);
136
+ }
137
+ const leaseIdHash = obj.lease_id_hash;
138
+ if (typeof leaseIdHash !== 'string' || !HEX64.test(leaseIdHash)) {
139
+ throw new PayloadValidationError(`lease_lifecycle_event: lease_id_hash must be 64-hex string, got ${JSON.stringify(leaseIdHash)}`);
140
+ }
141
+ const lifecycle = obj.lifecycle;
142
+ if (typeof lifecycle !== 'string' || !LIFECYCLE_VALUES.has(lifecycle)) {
143
+ throw new PayloadValidationError(`lease_lifecycle_event: lifecycle must be one of [consumed, expired, granted, revoked], got ${JSON.stringify(lifecycle)}`);
144
+ }
145
+ requireIsoUtc(obj.observed_at, 'lease_lifecycle_event.observed_at');
146
+ if ('artifact_hash_ref' in obj) {
147
+ if (typeof obj.artifact_hash_ref !== 'string' || !HEX64.test(obj.artifact_hash_ref)) {
148
+ throw new PayloadValidationError(`lease_lifecycle_event: artifact_hash_ref (if present) must be 64-hex string, got ${JSON.stringify(obj.artifact_hash_ref)}`);
149
+ }
150
+ }
151
+ for (const optField of [
152
+ 'grantor_runtime_id',
153
+ 'tenant_id_ref',
154
+ 'step_id_ref',
155
+ 'run_id_ref',
156
+ 'reason_text',
157
+ ]) {
158
+ requireOptionalString(obj, optField, 'lease_lifecycle_event');
159
+ }
160
+ requireOptionalReasonCode(obj, 'reason_code', 'lease_lifecycle_event');
161
+ }
162
+ const REQUIRED_POLICY_KEYS = [
163
+ 'policy_event_schema_version',
164
+ 'policy_id',
165
+ 'rule_id',
166
+ 'decision',
167
+ 'observed_at',
168
+ ];
169
+ const ALLOWED_POLICY_KEYS = new Set([
170
+ 'policy_event_schema_version',
171
+ 'policy_id',
172
+ 'rule_id',
173
+ 'decision',
174
+ 'observed_at',
175
+ 'policy_version',
176
+ 'kind',
177
+ 'effect',
178
+ 'expression_hash',
179
+ 'evidence_refs',
180
+ 'reason_code',
181
+ 'reason_text',
182
+ ]);
183
+ const DECISION_VALUES = new Set([
184
+ 'allow',
185
+ 'deny',
186
+ 'abstain',
187
+ 'require_approval',
188
+ ]);
189
+ const EFFECT_VALUES = new Set(['INFO', 'WARN', 'BLOCK']);
190
+ /**
191
+ * Throw `PayloadValidationError` if `payload` violates A.8 invariants.
192
+ *
193
+ * Mirrors `validate_policy_check_event_payload` in Python.
194
+ */
195
+ export function validatePolicyCheckEventPayload(payload) {
196
+ if (payload === null || typeof payload !== 'object' || Array.isArray(payload)) {
197
+ throw new PayloadValidationError(`policy_check_event payload must be object, got ${Array.isArray(payload) ? 'array' : payload === null ? 'null' : typeof payload}`);
198
+ }
199
+ const obj = payload;
200
+ rejectForbiddenFields(obj, 'policy_check_event');
201
+ rejectUnknownFields(obj, ALLOWED_POLICY_KEYS, 'policy_check_event');
202
+ const missing = REQUIRED_POLICY_KEYS.filter((k) => !(k in obj));
203
+ if (missing.length > 0) {
204
+ missing.sort();
205
+ throw new PayloadValidationError(`policy_check_event: missing required fields [${missing.join(', ')}]`);
206
+ }
207
+ if (obj.policy_event_schema_version !== 1) {
208
+ throw new PayloadValidationError(`policy_check_event: policy_event_schema_version must be 1, got ${JSON.stringify(obj.policy_event_schema_version)}`);
209
+ }
210
+ for (const strField of ['policy_id', 'rule_id']) {
211
+ const v = obj[strField];
212
+ if (typeof v !== 'string' || v.length === 0) {
213
+ throw new PayloadValidationError(`policy_check_event.${strField}: must be non-empty string, got ${JSON.stringify(v)}`);
214
+ }
215
+ }
216
+ const decision = obj.decision;
217
+ if (typeof decision !== 'string' || !DECISION_VALUES.has(decision)) {
218
+ throw new PayloadValidationError(`policy_check_event: decision must be one of [abstain, allow, deny, require_approval], got ${JSON.stringify(decision)}`);
219
+ }
220
+ requireIsoUtc(obj.observed_at, 'policy_check_event.observed_at');
221
+ if ('policy_version' in obj) {
222
+ const pv = obj.policy_version;
223
+ if (typeof pv !== 'number' || !Number.isInteger(pv) || pv < 1) {
224
+ throw new PayloadValidationError(`policy_check_event.policy_version: must be integer >= 1, got ${JSON.stringify(pv)}`);
225
+ }
226
+ }
227
+ if ('effect' in obj) {
228
+ if (typeof obj.effect !== 'string' || !EFFECT_VALUES.has(obj.effect)) {
229
+ throw new PayloadValidationError(`policy_check_event.effect: must be one of [BLOCK, INFO, WARN] or absent, got ${JSON.stringify(obj.effect)}`);
230
+ }
231
+ }
232
+ if ('expression_hash' in obj) {
233
+ if (typeof obj.expression_hash !== 'string' || !HEX64.test(obj.expression_hash)) {
234
+ throw new PayloadValidationError(`policy_check_event.expression_hash: must be 64-hex string, got ${JSON.stringify(obj.expression_hash)}`);
235
+ }
236
+ }
237
+ if ('evidence_refs' in obj) {
238
+ if (!Array.isArray(obj.evidence_refs)) {
239
+ throw new PayloadValidationError(`policy_check_event.evidence_refs: must be array, got ${typeof obj.evidence_refs}`);
240
+ }
241
+ if (obj.evidence_refs.length > 256) {
242
+ throw new PayloadValidationError(`policy_check_event.evidence_refs: max 256 entries, got ${obj.evidence_refs.length}`);
243
+ }
244
+ const seen = new Set();
245
+ for (let i = 0; i < obj.evidence_refs.length; i++) {
246
+ const ref = obj.evidence_refs[i];
247
+ if (typeof ref !== 'string' || !HEX64.test(ref)) {
248
+ throw new PayloadValidationError(`policy_check_event.evidence_refs[${i}]: must be 64-hex string, got ${JSON.stringify(ref)}`);
249
+ }
250
+ if (seen.has(ref)) {
251
+ throw new PayloadValidationError(`policy_check_event.evidence_refs: duplicate entry ${JSON.stringify(ref)}`);
252
+ }
253
+ seen.add(ref);
254
+ }
255
+ }
256
+ for (const optField of ['kind', 'reason_code', 'reason_text']) {
257
+ if (optField === 'reason_code')
258
+ continue;
259
+ requireOptionalString(obj, optField, 'policy_check_event');
260
+ }
261
+ requireOptionalReasonCode(obj, 'reason_code', 'policy_check_event');
262
+ }
263
+ const REQUIRED_REPLAY_KEYS = [
264
+ 'replay_event_schema_version',
265
+ 'replay_run_id',
266
+ 'original_run_id',
267
+ 'input_hash_match',
268
+ 'artifact_hash_match',
269
+ 'audit_chain_match',
270
+ 'deterministic_result',
271
+ 'observed_at',
272
+ ];
273
+ const ALLOWED_REPLAY_KEYS = new Set([
274
+ 'replay_event_schema_version',
275
+ 'replay_run_id',
276
+ 'original_run_id',
277
+ 'input_hash_match',
278
+ 'artifact_hash_match',
279
+ 'audit_chain_match',
280
+ 'deterministic_result',
281
+ 'observed_at',
282
+ 'snapshot_id_ref',
283
+ 'diff_summary_hash',
284
+ 'reason_code',
285
+ 'reason_text',
286
+ ]);
287
+ /**
288
+ * Throw `PayloadValidationError` if `payload` violates A.9 invariants.
289
+ *
290
+ * Mirrors `validate_replay_event_payload` in Python.
291
+ */
292
+ export function validateReplayEventPayload(payload) {
293
+ if (payload === null || typeof payload !== 'object' || Array.isArray(payload)) {
294
+ throw new PayloadValidationError(`replay_event payload must be object, got ${Array.isArray(payload) ? 'array' : payload === null ? 'null' : typeof payload}`);
295
+ }
296
+ const obj = payload;
297
+ rejectForbiddenFields(obj, 'replay_event');
298
+ rejectUnknownFields(obj, ALLOWED_REPLAY_KEYS, 'replay_event');
299
+ const missing = REQUIRED_REPLAY_KEYS.filter((k) => !(k in obj));
300
+ if (missing.length > 0) {
301
+ missing.sort();
302
+ throw new PayloadValidationError(`replay_event: missing required fields [${missing.join(', ')}]`);
303
+ }
304
+ if (obj.replay_event_schema_version !== 1) {
305
+ throw new PayloadValidationError(`replay_event: replay_event_schema_version must be 1, got ${JSON.stringify(obj.replay_event_schema_version)}`);
306
+ }
307
+ for (const strField of ['replay_run_id', 'original_run_id']) {
308
+ const v = obj[strField];
309
+ if (typeof v !== 'string' || v.length === 0) {
310
+ throw new PayloadValidationError(`replay_event.${strField}: must be non-empty string, got ${JSON.stringify(v)}`);
311
+ }
312
+ }
313
+ for (const boolField of [
314
+ 'input_hash_match',
315
+ 'artifact_hash_match',
316
+ 'audit_chain_match',
317
+ 'deterministic_result',
318
+ ]) {
319
+ const v = obj[boolField];
320
+ if (typeof v !== 'boolean') {
321
+ throw new PayloadValidationError(`replay_event.${boolField}: must be boolean, got ${typeof v}`);
322
+ }
323
+ }
324
+ const expectedDet = obj.input_hash_match &&
325
+ obj.artifact_hash_match &&
326
+ obj.audit_chain_match;
327
+ if (obj.deterministic_result !== expectedDet) {
328
+ throw new PayloadValidationError(`replay_event.deterministic_result: must equal logical AND of input_hash_match, artifact_hash_match, audit_chain_match (got ${JSON.stringify(obj.deterministic_result)}, expected ${expectedDet})`);
329
+ }
330
+ requireIsoUtc(obj.observed_at, 'replay_event.observed_at');
331
+ if ('snapshot_id_ref' in obj) {
332
+ if (typeof obj.snapshot_id_ref !== 'string' || obj.snapshot_id_ref.length === 0) {
333
+ throw new PayloadValidationError(`replay_event.snapshot_id_ref: must be non-empty string, got ${JSON.stringify(obj.snapshot_id_ref)}`);
334
+ }
335
+ }
336
+ if ('diff_summary_hash' in obj) {
337
+ if (typeof obj.diff_summary_hash !== 'string' || !HEX64.test(obj.diff_summary_hash)) {
338
+ throw new PayloadValidationError(`replay_event.diff_summary_hash: must be 64-hex string, got ${JSON.stringify(obj.diff_summary_hash)}`);
339
+ }
340
+ }
341
+ for (const optField of ['reason_code', 'reason_text']) {
342
+ if (optField === 'reason_code')
343
+ continue;
344
+ requireOptionalString(obj, optField, 'replay_event');
345
+ }
346
+ requireOptionalReasonCode(obj, 'reason_code', 'replay_event');
347
+ }
348
+ //# sourceMappingURL=event_payloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event_payloads.js","sourceRoot":"","sources":["../src/event_payloads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Evidence event type constants — v1 taxonomy.
3
+ *
4
+ * These twelve strings are the canonical `event_type` identifiers for the
5
+ * v1 evidence taxonomy locked by ADR-0008 and specified in
6
+ * `docs/spec/evidence-event-taxonomy-v1.md`.
7
+ *
8
+ * Adapters MUST import these constants rather than embedding string
9
+ * literals. `ALL_EVENT_TYPES_V1` is a frozen Set exported for runtime
10
+ * "is this a known v1 type?" checks performed by exporters, verifiers,
11
+ * and the obligation registry — NOT by the substrate's canonicalization
12
+ * or hash-chain layers, which deliberately stay taxonomy-agnostic per
13
+ * ADR-0008 § Decision ("Substrate stays neutral").
14
+ *
15
+ * The taxonomy version is tracked separately from the chain schema
16
+ * version and the anchor schema version:
17
+ *
18
+ * EVIDENCE_TAXONOMY_VERSION // this file, value 1 in v1
19
+ * SCHEMA_VERSION // hashchain.ts, value 1 from ADR-0002
20
+ * anchor_schema_version // ADR-0003, value 1 in v0.1
21
+ */
22
+ export declare const EVIDENCE_TAXONOMY_VERSION: 1;
23
+ export declare const TOOL_CALL_EVENT: "tool_call_event";
24
+ export declare const POLICY_CHECK_EVENT: "policy_check_event";
25
+ export declare const HUMAN_APPROVAL_EVENT: "human_approval_event";
26
+ export declare const LEASE_LIFECYCLE_EVENT: "lease_lifecycle_event";
27
+ export declare const BUDGET_EVENT: "budget_event";
28
+ export declare const SETTLEMENT_EVENT: "settlement_event";
29
+ export declare const WORKER_ASSIGNMENT_EVENT: "worker_assignment_event";
30
+ export declare const RUNTIME_LIFECYCLE_EVENT: "runtime_lifecycle_event";
31
+ export declare const GATEWAY_DECISION_EVENT: "gateway_decision_event";
32
+ export declare const STATE_TRANSITION_EVENT: "state_transition_event";
33
+ export declare const EVAL_EVENT: "eval_event";
34
+ export declare const ROUTING_EVENT: "routing_event";
35
+ export type EventTypeV1 = typeof TOOL_CALL_EVENT | typeof POLICY_CHECK_EVENT | typeof HUMAN_APPROVAL_EVENT | typeof LEASE_LIFECYCLE_EVENT | typeof BUDGET_EVENT | typeof SETTLEMENT_EVENT | typeof WORKER_ASSIGNMENT_EVENT | typeof RUNTIME_LIFECYCLE_EVENT | typeof GATEWAY_DECISION_EVENT | typeof STATE_TRANSITION_EVENT | typeof EVAL_EVENT | typeof ROUTING_EVENT;
36
+ export declare const ALL_EVENT_TYPES_V1: ReadonlySet<EventTypeV1>;
37
+ /**
38
+ * Return `true` if `event_type` is one of the twelve v1 strings.
39
+ *
40
+ * Verifiers and exporters use this to distinguish "known v1 event" from
41
+ * "future-taxonomy / unknown event". The latter is not an error — v1
42
+ * verifiers are required to tolerate unknown event types per ADR-0008
43
+ * § Decision ("Substrate stays neutral") to remain forward-compatible
44
+ * with future taxonomy versions.
45
+ */
46
+ export declare function isKnownV1EventType(event_type: string): event_type is EventTypeV1;
47
+ //# sourceMappingURL=event_types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event_types.d.ts","sourceRoot":"","sources":["../src/event_types.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,eAAO,MAAM,yBAAyB,EAAG,CAAU,CAAC;AAEpD,eAAO,MAAM,eAAe,EAAG,iBAA0B,CAAC;AAC1D,eAAO,MAAM,kBAAkB,EAAG,oBAA6B,CAAC;AAChE,eAAO,MAAM,oBAAoB,EAAG,sBAA+B,CAAC;AACpE,eAAO,MAAM,qBAAqB,EAAG,uBAAgC,CAAC;AACtE,eAAO,MAAM,YAAY,EAAG,cAAuB,CAAC;AACpD,eAAO,MAAM,gBAAgB,EAAG,kBAA2B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,EAAG,yBAAkC,CAAC;AAC1E,eAAO,MAAM,uBAAuB,EAAG,yBAAkC,CAAC;AAC1E,eAAO,MAAM,sBAAsB,EAAG,wBAAiC,CAAC;AACxE,eAAO,MAAM,sBAAsB,EAAG,wBAAiC,CAAC;AACxE,eAAO,MAAM,UAAU,EAAG,YAAqB,CAAC;AAChD,eAAO,MAAM,aAAa,EAAG,eAAwB,CAAC;AAEtD,MAAM,MAAM,WAAW,GACnB,OAAO,eAAe,GACtB,OAAO,kBAAkB,GACzB,OAAO,oBAAoB,GAC3B,OAAO,qBAAqB,GAC5B,OAAO,YAAY,GACnB,OAAO,gBAAgB,GACvB,OAAO,uBAAuB,GAC9B,OAAO,uBAAuB,GAC9B,OAAO,sBAAsB,GAC7B,OAAO,sBAAsB,GAC7B,OAAO,UAAU,GACjB,OAAO,aAAa,CAAC;AAEzB,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,WAAW,CAatD,CAAC;AAEH;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,IAAI,WAAW,CAEhF"}
@@ -0,0 +1,63 @@
1
+ // SPDX-FileCopyrightText: 2026 The Attestplane Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Evidence event type constants — v1 taxonomy.
5
+ *
6
+ * These twelve strings are the canonical `event_type` identifiers for the
7
+ * v1 evidence taxonomy locked by ADR-0008 and specified in
8
+ * `docs/spec/evidence-event-taxonomy-v1.md`.
9
+ *
10
+ * Adapters MUST import these constants rather than embedding string
11
+ * literals. `ALL_EVENT_TYPES_V1` is a frozen Set exported for runtime
12
+ * "is this a known v1 type?" checks performed by exporters, verifiers,
13
+ * and the obligation registry — NOT by the substrate's canonicalization
14
+ * or hash-chain layers, which deliberately stay taxonomy-agnostic per
15
+ * ADR-0008 § Decision ("Substrate stays neutral").
16
+ *
17
+ * The taxonomy version is tracked separately from the chain schema
18
+ * version and the anchor schema version:
19
+ *
20
+ * EVIDENCE_TAXONOMY_VERSION // this file, value 1 in v1
21
+ * SCHEMA_VERSION // hashchain.ts, value 1 from ADR-0002
22
+ * anchor_schema_version // ADR-0003, value 1 in v0.1
23
+ */
24
+ export const EVIDENCE_TAXONOMY_VERSION = 1;
25
+ export const TOOL_CALL_EVENT = 'tool_call_event';
26
+ export const POLICY_CHECK_EVENT = 'policy_check_event';
27
+ export const HUMAN_APPROVAL_EVENT = 'human_approval_event';
28
+ export const LEASE_LIFECYCLE_EVENT = 'lease_lifecycle_event';
29
+ export const BUDGET_EVENT = 'budget_event';
30
+ export const SETTLEMENT_EVENT = 'settlement_event';
31
+ export const WORKER_ASSIGNMENT_EVENT = 'worker_assignment_event';
32
+ export const RUNTIME_LIFECYCLE_EVENT = 'runtime_lifecycle_event';
33
+ export const GATEWAY_DECISION_EVENT = 'gateway_decision_event';
34
+ export const STATE_TRANSITION_EVENT = 'state_transition_event';
35
+ export const EVAL_EVENT = 'eval_event';
36
+ export const ROUTING_EVENT = 'routing_event';
37
+ export const ALL_EVENT_TYPES_V1 = new Set([
38
+ TOOL_CALL_EVENT,
39
+ POLICY_CHECK_EVENT,
40
+ HUMAN_APPROVAL_EVENT,
41
+ LEASE_LIFECYCLE_EVENT,
42
+ BUDGET_EVENT,
43
+ SETTLEMENT_EVENT,
44
+ WORKER_ASSIGNMENT_EVENT,
45
+ RUNTIME_LIFECYCLE_EVENT,
46
+ GATEWAY_DECISION_EVENT,
47
+ STATE_TRANSITION_EVENT,
48
+ EVAL_EVENT,
49
+ ROUTING_EVENT,
50
+ ]);
51
+ /**
52
+ * Return `true` if `event_type` is one of the twelve v1 strings.
53
+ *
54
+ * Verifiers and exporters use this to distinguish "known v1 event" from
55
+ * "future-taxonomy / unknown event". The latter is not an error — v1
56
+ * verifiers are required to tolerate unknown event types per ADR-0008
57
+ * § Decision ("Substrate stays neutral") to remain forward-compatible
58
+ * with future taxonomy versions.
59
+ */
60
+ export function isKnownV1EventType(event_type) {
61
+ return ALL_EVENT_TYPES_V1.has(event_type);
62
+ }
63
+ //# sourceMappingURL=event_types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event_types.js","sourceRoot":"","sources":["../src/event_types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,sCAAsC;AACtC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAU,CAAC;AAEpD,MAAM,CAAC,MAAM,eAAe,GAAG,iBAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAA6B,CAAC;AAChE,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAA+B,CAAC;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAgC,CAAC;AACtE,MAAM,CAAC,MAAM,YAAY,GAAG,cAAuB,CAAC;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAkC,CAAC;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAkC,CAAC;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAiC,CAAC;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAiC,CAAC;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,YAAqB,CAAC;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,eAAwB,CAAC;AAgBtD,MAAM,CAAC,MAAM,kBAAkB,GAA6B,IAAI,GAAG,CAAc;IAC/E,eAAe;IACf,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;IACrB,YAAY;IACZ,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,sBAAsB;IACtB,UAAU;IACV,aAAa;CACd,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAQ,kBAA0C,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACrE,CAAC"}
@@ -14,6 +14,7 @@ export interface VerificationResult {
14
14
  }
15
15
  export declare function genesisHead(): ChainHead;
16
16
  export declare function hashEvent(event: AuditEvent): Uint8Array;
17
+ export declare function canonicalizeAuditEvent(event: AuditEvent): Uint8Array;
17
18
  export interface ChainExtendOptions {
18
19
  readonly now: Date;
19
20
  readonly event_id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"hashchain.d.ts","sourceRoot":"","sources":["../src/hashchain.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,YAAY,EAAE,UAA+B,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,WAAW,IAAI,SAAS,CAEvC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEvD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,kBAAkB,GAC1B,YAAY,CAyBd;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,kBAAkB,CA6B/E;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAIjE"}
1
+ {"version":3,"file":"hashchain.d.ts","sourceRoot":"","sources":["../src/hashchain.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElF,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,YAAY,EAAE,UAA+B,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,WAAW,IAAI,SAAS,CAEvC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEvD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEpE;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,kBAAkB,GAC1B,YAAY,CAyBd;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,kBAAkB,CA6B/E;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAIjE"}
package/dist/hashchain.js CHANGED
@@ -15,7 +15,10 @@ export function genesisHead() {
15
15
  return { seq: -1, event_hash: GENESIS_HASH };
16
16
  }
17
17
  export function hashEvent(event) {
18
- return new Uint8Array(createHash('sha256').update(canonicalize(event)).digest());
18
+ return new Uint8Array(createHash('sha256').update(canonicalizeAuditEvent(event)).digest());
19
+ }
20
+ export function canonicalizeAuditEvent(event) {
21
+ return canonicalize(canonicalEvent(event));
19
22
  }
20
23
  export function chainExtend(tip, draft, options) {
21
24
  if (Number.isNaN(options.now.getTime())) {
@@ -88,4 +91,25 @@ function bytesEqual(a, b) {
88
91
  }
89
92
  return true;
90
93
  }
94
+ function canonicalEvent(event) {
95
+ const timestamp = event.timestamp;
96
+ return {
97
+ ...event,
98
+ timestamp: timestamp instanceof Date ? formatDateUtcMicroseconds(timestamp, '$.timestamp') : timestamp,
99
+ };
100
+ }
101
+ function formatDateUtcMicroseconds(value, path) {
102
+ const ms = value.getTime();
103
+ if (Number.isNaN(ms)) {
104
+ throw new Error(`${path}: invalid Date (NaN time value)`);
105
+ }
106
+ const yyyy = value.getUTCFullYear().toString().padStart(4, '0');
107
+ const mm = (value.getUTCMonth() + 1).toString().padStart(2, '0');
108
+ const dd = value.getUTCDate().toString().padStart(2, '0');
109
+ const hh = value.getUTCHours().toString().padStart(2, '0');
110
+ const mi = value.getUTCMinutes().toString().padStart(2, '0');
111
+ const ss = value.getUTCSeconds().toString().padStart(2, '0');
112
+ const milli = value.getUTCMilliseconds().toString().padStart(3, '0');
113
+ return `${yyyy}-${mm}-${dd}T${hh}:${mi}:${ss}.${milli}000Z`;
114
+ }
91
115
  //# sourceMappingURL=hashchain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hashchain.js","sourceRoot":"","sources":["../src/hashchain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hashchain.js","sourceRoot":"","sources":["../src/hashchain.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,9 +5,30 @@
5
5
  * See https://github.com/attestplane/attestplane and
6
6
  * docs/adr/0002-substrate-data-model-and-hash-chain-v0.md for the design.
7
7
  */
8
+ export { AdapterError, AdapterTranslationError, GenericRuntimeAdapter, } from './adapters.js';
9
+ export { AdapterConformanceError, replayFixture, type AdapterCaseResult, type AdapterConformanceReport, type ReplayOptions, type TranslateAdapter, } from './adapter_conformance.js';
10
+ export { LangSmithAdapter, type LangSmithRun, } from './adapters/langsmith.js';
11
+ export { LangFuseAdapter, type LangFuseObservation, } from './adapters/langfuse.js';
12
+ export { ANCHOR_SCHEMA_VERSION, AnchorError, AnchorVerificationError, DEFAULT_ANCHOR_POLICY, MockTSAProvider, MultiTSAProvider, TSAProvider, TSAUnavailableError, makeAnchorPolicy, makeTimestampRequest, validateAnchorRecord, verifyChainWithAnchors, type AnchorPolicy, type AnchorRecord, type AnchorStatus, type AnchorVerificationResult, type CertStatus, type MockTSAProviderInput, type MultiTSAProviderInput, type SingleAnchorResult, type TimestampRequest, type VerifyChainWithAnchorsOptions, } from './anchoring.js';
13
+ export { parseTimestampResponse, verifyTimestampToken, type ParsedTimestampTs, type VerifyTimestampOptions, } from './rfc3161.js';
8
14
  export { CanonicalizationError, canonicalize } from './canonical.js';
15
+ export { CanonicalTextError, canonicalizeText, textHash, textHashHex, } from './canonical_text.js';
16
+ export { FORBIDDEN_PAYLOAD_FIELDS, PayloadValidationError, validateLeaseLifecycleEventPayload, validatePolicyCheckEventPayload, validateReplayEventPayload, type LeaseLifecycle, type LeaseLifecycleEventPayload, type PolicyCheckEventPayload, type PolicyDecision, type PolicyEffect, type ReplayEventPayload, } from './event_payloads.js';
17
+ export { verifyReplayManifest, type ChainEventForReplay, type ReplayCoverage, type ReplayManifest, type ReplayVerificationResult, } from './replay_verifier.js';
18
+ export { checkSettlementPrecondition, type ChainEventForSettlement, type SettlementPreconditionClaim, type SettlementVerificationResult, } from './settlement_verifier.js';
19
+ export { ALL_REASON_CODES_V1, REASON_CODE_DESCRIPTIONS, REASON_CODE_SCHEMA_VERSION, isKnownReasonCode, reasonCodeMatchesFormat, type ReasonCodeV1, } from './reason_codes.js';
20
+ export { ALL_EVENT_TYPES_V1, BUDGET_EVENT, EVAL_EVENT, EVIDENCE_TAXONOMY_VERSION, GATEWAY_DECISION_EVENT, HUMAN_APPROVAL_EVENT, LEASE_LIFECYCLE_EVENT, POLICY_CHECK_EVENT, ROUTING_EVENT, RUNTIME_LIFECYCLE_EVENT, SETTLEMENT_EVENT, STATE_TRANSITION_EVENT, TOOL_CALL_EVENT, WORKER_ASSIGNMENT_EVENT, isKnownV1EventType, type EventTypeV1, } from './event_types.js';
9
21
  export { GENESIS_HASH, SCHEMA_VERSION, chainExtend, genesisHead, hashEvent, headOf, verifyChain, type ChainExtendOptions, type VerificationResult, } from './hashchain.js';
10
22
  export { AttestSubstrate, type AppendOptions } from './substrate.js';
11
23
  export { makeEventDraft, makeSubjectRef, type AuditEvent, type ChainHead, type ChainedEvent, type EventDraft, type EventDraftInput, type SubjectRef, type SubjectScheme, } from './types.js';
12
- export declare const VERSION = "0.0.1-alpha.1";
24
+ export { DEFAULT_FORBIDDEN_FIELDS, ProofBundleBuilder, buildAuditorExport, deserializeSignatureRecord, serializeChainedEvent, serializeSignatureRecord, type AuditorExport, type AuditorExportOptions, type FrameworkMapping, type ImplementationStatus, type ProofBundle, type ProofBundleBuilderInput, type SerializedAuditEvent, type SerializedChainedEvent, type SerializedSignatureRecord, type SerializedSubjectRef, } from './proof_bundle.js';
25
+ export { DSSE_PAYLOAD_TYPE, IntotoError, PREDICATE_TYPE_V1, STATEMENT_TYPE, canonicalJsonBytes, dsseEnvelopeToStatement, proofBundleToInTotoStatement, statementToDsseEnvelope, type DsseEnvelope, type DsseSignature, type IntotoStatement, type IntotoSubject, } from './intoto.js';
26
+ export { ObligationRegistryError, loadAllRegistries, loadDoraArticle8, loadEuAiActArticle12, obligationById, obligationsByEventType, obligationsByImplementationStatus, type ImplementationStatus as ObligationImplementationStatus, type ObligationEntry, type Registry, } from './obligations.js';
27
+ export { BundleSchemaError, BundleVerificationError, shortSummary, verifyProofBundle, verifyProofBundleFile, type BundleVerificationResult, } from './verifier.js';
28
+ export { KeyBoundaryError, KeyProvider, KeyProviderError, SIGNATURE_SCHEMA_VERSION, SignatureVerificationError, SigningError, DEFAULT_SIGNATURE_POLICY, deriveKeyId, makeSignaturePolicy, validateSignatureRecord, type SignatureMode, type SignaturePolicy, type SignatureRecord, type SigningMaterial, } from './signing/base.js';
29
+ export { EnvKeyProvider, FileKeyProvider, InMemoryKeyProvider, MultiSignerProvider, exportPublicKeyDer, seedToPrivateKey, type EnvKeyProviderOptions, type FileKeyProviderOptions, type InMemoryKeyProviderOptions, } from './signing/providers.js';
30
+ export { Signer, buildPerEventPayload, buildSegmentHeadPayload, type SignerOptions, } from './signing/signer.js';
31
+ export { TrustRoots, TrustRootsError, loadTrustRoots, parseTrustRoots, type TrustRootEntry, } from './signing/trust_roots.js';
32
+ export { STATUS_RANK, verifyChainFull, verifyChainWithSignatures, type BundleVerificationResult as ChainBundleVerificationResult, type SignatureStatus, type SingleSignatureResult, type VerifyChainFullOptions, type VerifyChainWithSignaturesOptions, type VerifyChainWithSignaturesResult, } from './signing/verifier_ext.js';
33
+ export { VERSION } from './index_version.js';
13
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,OAAO,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}