@oxy.so/contracts 1.1.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/identity.js +3 -2
  3. package/dist/cjs/identityMove.js +156 -0
  4. package/dist/cjs/identityProof.js +164 -0
  5. package/dist/cjs/identityRecovery.js +51 -0
  6. package/dist/cjs/index.js +75 -19
  7. package/dist/cjs/inference/catalogue.js +7 -6
  8. package/dist/cjs/inference/identifiers.js +3 -1
  9. package/dist/cjs/inference/providerConnection.js +1 -1
  10. package/dist/cjs/inference/request.js +15 -1
  11. package/dist/cjs/inference/streamEvents.js +24 -2
  12. package/dist/cjs/inference/version.js +1 -1
  13. package/dist/cjs/userResponse.js +82 -1
  14. package/dist/cjs/username.js +70 -2
  15. package/dist/cjs/webIdentityCarrier.js +181 -0
  16. package/dist/cjs/webauthn.js +14 -0
  17. package/dist/esm/.tsbuildinfo +1 -1
  18. package/dist/esm/identity.js +3 -2
  19. package/dist/esm/identityMove.js +148 -0
  20. package/dist/esm/identityProof.js +159 -0
  21. package/dist/esm/identityRecovery.js +48 -0
  22. package/dist/esm/index.js +16 -7
  23. package/dist/esm/inference/catalogue.js +7 -6
  24. package/dist/esm/inference/identifiers.js +2 -0
  25. package/dist/esm/inference/providerConnection.js +2 -2
  26. package/dist/esm/inference/request.js +14 -0
  27. package/dist/esm/inference/streamEvents.js +24 -2
  28. package/dist/esm/inference/version.js +1 -1
  29. package/dist/esm/userResponse.js +81 -0
  30. package/dist/esm/username.js +69 -1
  31. package/dist/esm/webIdentityCarrier.js +178 -0
  32. package/dist/esm/webauthn.js +14 -0
  33. package/dist/types/.tsbuildinfo +1 -1
  34. package/dist/types/accountGraph.d.ts +7 -7
  35. package/dist/types/agency.d.ts +24 -24
  36. package/dist/types/browserHub.d.ts +16 -16
  37. package/dist/types/deviceDirectory.d.ts +28 -28
  38. package/dist/types/externalIdentity.d.ts +21 -7
  39. package/dist/types/identity.d.ts +3 -2
  40. package/dist/types/identityMove.d.ts +185 -0
  41. package/dist/types/identityProof.d.ts +156 -0
  42. package/dist/types/identityRecovery.d.ts +246 -0
  43. package/dist/types/index.d.ts +14 -8
  44. package/dist/types/inference/catalogue.d.ts +21 -20
  45. package/dist/types/inference/embeddings.d.ts +12 -12
  46. package/dist/types/inference/errors.d.ts +4 -4
  47. package/dist/types/inference/identifiers.d.ts +2 -0
  48. package/dist/types/inference/inbox.d.ts +6 -6
  49. package/dist/types/inference/providerConnection.d.ts +40 -40
  50. package/dist/types/inference/request.d.ts +84 -36
  51. package/dist/types/inference/streamEvents.d.ts +69 -13
  52. package/dist/types/inference/usage.d.ts +8 -8
  53. package/dist/types/inference/version.d.ts +1 -1
  54. package/dist/types/keyRotation.d.ts +2 -2
  55. package/dist/types/oauth.d.ts +30 -30
  56. package/dist/types/sessionStatus.d.ts +6 -6
  57. package/dist/types/transparency.d.ts +10 -10
  58. package/dist/types/userResponse.d.ts +386 -18
  59. package/dist/types/username.d.ts +25 -2
  60. package/dist/types/webIdentityCarrier.d.ts +1130 -0
  61. package/dist/types/webauthn.d.ts +208 -0
  62. package/package.json +1 -1
  63. package/dist/cjs/devicePairing.js +0 -138
  64. package/dist/esm/devicePairing.js +0 -135
  65. package/dist/types/devicePairing.d.ts +0 -130
@@ -0,0 +1,1130 @@
1
+ /**
2
+ * Web identity holder contract — the sealed envelope that lets a browser hold an
3
+ * account's self-custody root without Oxy ever being able to use it (ADR 0024).
4
+ *
5
+ * A root is a BIP-39 phrase (12–24 words) whose seed's first 32 bytes are the
6
+ * secp256k1 key — exactly the Commons derivation — or, for a few imported
7
+ * identities, a raw private key that never had a phrase. On the web it travels as:
8
+ *
9
+ * secret ── XChaCha20-Poly1305 under a random DEK ──▶ sealedSecret
10
+ * DEK ── XChaCha20-Poly1305 under KEK_i ──▶ wraps[i]
11
+ * KEK_i = HKDF(PRF output of passkey i)
12
+ *
13
+ * The server stores the envelope and can open NONE of it: the PRF output never
14
+ * leaves the user's authenticator, and the secret is never uploaded. The AEAD
15
+ * associated data binds the secret to the root's public key and kind, and each
16
+ * wrap to its credential and RP ID, so a re-labelled or transplanted envelope
17
+ * fails to open instead of decrypting into the wrong identity.
18
+ *
19
+ * Platform-agnostic — zod only, ESM-safe (no `require()`).
20
+ */
21
+ import { z } from 'zod';
22
+ /** The envelope scheme. A scheme change is a new literal, never a mutation. */
23
+ export declare const WEB_IDENTITY_ENVELOPE_VERSION: 2;
24
+ /**
25
+ * What an envelope seals. A raw-key identity stays a raw-key identity:
26
+ * nothing ever derives or displays a phrase for it.
27
+ */
28
+ export declare const WEB_IDENTITY_SECRET_KINDS: readonly ["mnemonic-entropy", "raw-private-key"];
29
+ export type WebIdentitySecretKind = (typeof WEB_IDENTITY_SECRET_KINDS)[number];
30
+ /**
31
+ * The identity's secp256k1 public key in Oxy's canonical form: uncompressed SEC1
32
+ * (`04` + 64 bytes), lowercase hex — what `KeyManager.derivePublicKey` produces
33
+ * and `users.public_key` stores.
34
+ */
35
+ export declare const webIdentityPublicKeySchema: z.ZodString;
36
+ /** A WebAuthn credential id, base64url as the browser reports it. */
37
+ export declare const webauthnCredentialIdSchema: z.ZodString;
38
+ /** A WebAuthn RP ID: a bare registrable host name, lowercase. */
39
+ export declare const webauthnRpIdSchema: z.ZodString;
40
+ /** One passkey's wrap of the envelope's data key. */
41
+ export declare const webIdentityWrapSchema: z.ZodObject<{
42
+ credentialId: z.ZodString;
43
+ /** 24-byte XChaCha20-Poly1305 nonce. */
44
+ nonce: z.ZodString;
45
+ /** The 32-byte DEK sealed under this passkey's KEK, with the 16-byte tag appended (48 bytes). */
46
+ wrappedKey: z.ZodString;
47
+ createdAt: z.ZodString;
48
+ /** The RP ID the passkey was created under, asserted explicitly by every later ceremony (ADR 0024 D2). */
49
+ rpId: z.ZodString;
50
+ /**
51
+ * When this passkey's PRF output was shown to open the envelope. A wrap is a
52
+ * root HOLDER only once this is set; a login passkey never is by default.
53
+ */
54
+ verifiedAt: z.ZodOptional<z.ZodString>;
55
+ }, "strip", z.ZodTypeAny, {
56
+ credentialId: string;
57
+ createdAt: string;
58
+ nonce: string;
59
+ wrappedKey: string;
60
+ rpId: string;
61
+ verifiedAt?: string | undefined;
62
+ }, {
63
+ credentialId: string;
64
+ createdAt: string;
65
+ nonce: string;
66
+ wrappedKey: string;
67
+ rpId: string;
68
+ verifiedAt?: string | undefined;
69
+ }>;
70
+ /**
71
+ * The sealed identity as it is stored (server copy and local copy alike).
72
+ *
73
+ * `wraps` holds one entry per passkey able to open it; at least one, and a
74
+ * bounded number so an envelope cannot grow without limit.
75
+ */
76
+ export declare const webIdentityEnvelopeSchema: z.ZodEffects<z.ZodObject<{
77
+ version: z.ZodLiteral<2>;
78
+ algorithm: z.ZodLiteral<"xchacha20poly1305">;
79
+ publicKey: z.ZodString;
80
+ secretKind: z.ZodEnum<["mnemonic-entropy", "raw-private-key"]>;
81
+ /** 24-byte nonce of the secret seal. */
82
+ secretNonce: z.ZodString;
83
+ /**
84
+ * The sealed secret, tag appended: 16/20/24/28/32 bytes of BIP-39 entropy
85
+ * (12–24 words) or a 32-byte private key, plus 16.
86
+ */
87
+ sealedSecret: z.ZodString;
88
+ wraps: z.ZodArray<z.ZodObject<{
89
+ credentialId: z.ZodString;
90
+ /** 24-byte XChaCha20-Poly1305 nonce. */
91
+ nonce: z.ZodString;
92
+ /** The 32-byte DEK sealed under this passkey's KEK, with the 16-byte tag appended (48 bytes). */
93
+ wrappedKey: z.ZodString;
94
+ createdAt: z.ZodString;
95
+ /** The RP ID the passkey was created under, asserted explicitly by every later ceremony (ADR 0024 D2). */
96
+ rpId: z.ZodString;
97
+ /**
98
+ * When this passkey's PRF output was shown to open the envelope. A wrap is a
99
+ * root HOLDER only once this is set; a login passkey never is by default.
100
+ */
101
+ verifiedAt: z.ZodOptional<z.ZodString>;
102
+ }, "strip", z.ZodTypeAny, {
103
+ credentialId: string;
104
+ createdAt: string;
105
+ nonce: string;
106
+ wrappedKey: string;
107
+ rpId: string;
108
+ verifiedAt?: string | undefined;
109
+ }, {
110
+ credentialId: string;
111
+ createdAt: string;
112
+ nonce: string;
113
+ wrappedKey: string;
114
+ rpId: string;
115
+ verifiedAt?: string | undefined;
116
+ }>, "many">;
117
+ }, "strip", z.ZodTypeAny, {
118
+ version: 2;
119
+ publicKey: string;
120
+ algorithm: "xchacha20poly1305";
121
+ secretKind: "mnemonic-entropy" | "raw-private-key";
122
+ secretNonce: string;
123
+ sealedSecret: string;
124
+ wraps: {
125
+ credentialId: string;
126
+ createdAt: string;
127
+ nonce: string;
128
+ wrappedKey: string;
129
+ rpId: string;
130
+ verifiedAt?: string | undefined;
131
+ }[];
132
+ }, {
133
+ version: 2;
134
+ publicKey: string;
135
+ algorithm: "xchacha20poly1305";
136
+ secretKind: "mnemonic-entropy" | "raw-private-key";
137
+ secretNonce: string;
138
+ sealedSecret: string;
139
+ wraps: {
140
+ credentialId: string;
141
+ createdAt: string;
142
+ nonce: string;
143
+ wrappedKey: string;
144
+ rpId: string;
145
+ verifiedAt?: string | undefined;
146
+ }[];
147
+ }>, {
148
+ version: 2;
149
+ publicKey: string;
150
+ algorithm: "xchacha20poly1305";
151
+ secretKind: "mnemonic-entropy" | "raw-private-key";
152
+ secretNonce: string;
153
+ sealedSecret: string;
154
+ wraps: {
155
+ credentialId: string;
156
+ createdAt: string;
157
+ nonce: string;
158
+ wrappedKey: string;
159
+ rpId: string;
160
+ verifiedAt?: string | undefined;
161
+ }[];
162
+ }, {
163
+ version: 2;
164
+ publicKey: string;
165
+ algorithm: "xchacha20poly1305";
166
+ secretKind: "mnemonic-entropy" | "raw-private-key";
167
+ secretNonce: string;
168
+ sealedSecret: string;
169
+ wraps: {
170
+ credentialId: string;
171
+ createdAt: string;
172
+ nonce: string;
173
+ wrappedKey: string;
174
+ rpId: string;
175
+ verifiedAt?: string | undefined;
176
+ }[];
177
+ }>;
178
+ /**
179
+ * `PUT /identity/web-envelope` — store or replace the caller's envelope.
180
+ *
181
+ * Refused unless `envelope.publicKey` is the identity key already linked to the
182
+ * account: an envelope can only ever carry the account's own identity.
183
+ */
184
+ export declare const webIdentityEnvelopeUploadSchema: z.ZodObject<{
185
+ envelope: z.ZodEffects<z.ZodObject<{
186
+ version: z.ZodLiteral<2>;
187
+ algorithm: z.ZodLiteral<"xchacha20poly1305">;
188
+ publicKey: z.ZodString;
189
+ secretKind: z.ZodEnum<["mnemonic-entropy", "raw-private-key"]>;
190
+ /** 24-byte nonce of the secret seal. */
191
+ secretNonce: z.ZodString;
192
+ /**
193
+ * The sealed secret, tag appended: 16/20/24/28/32 bytes of BIP-39 entropy
194
+ * (12–24 words) or a 32-byte private key, plus 16.
195
+ */
196
+ sealedSecret: z.ZodString;
197
+ wraps: z.ZodArray<z.ZodObject<{
198
+ credentialId: z.ZodString;
199
+ /** 24-byte XChaCha20-Poly1305 nonce. */
200
+ nonce: z.ZodString;
201
+ /** The 32-byte DEK sealed under this passkey's KEK, with the 16-byte tag appended (48 bytes). */
202
+ wrappedKey: z.ZodString;
203
+ createdAt: z.ZodString;
204
+ /** The RP ID the passkey was created under, asserted explicitly by every later ceremony (ADR 0024 D2). */
205
+ rpId: z.ZodString;
206
+ /**
207
+ * When this passkey's PRF output was shown to open the envelope. A wrap is a
208
+ * root HOLDER only once this is set; a login passkey never is by default.
209
+ */
210
+ verifiedAt: z.ZodOptional<z.ZodString>;
211
+ }, "strip", z.ZodTypeAny, {
212
+ credentialId: string;
213
+ createdAt: string;
214
+ nonce: string;
215
+ wrappedKey: string;
216
+ rpId: string;
217
+ verifiedAt?: string | undefined;
218
+ }, {
219
+ credentialId: string;
220
+ createdAt: string;
221
+ nonce: string;
222
+ wrappedKey: string;
223
+ rpId: string;
224
+ verifiedAt?: string | undefined;
225
+ }>, "many">;
226
+ }, "strip", z.ZodTypeAny, {
227
+ version: 2;
228
+ publicKey: string;
229
+ algorithm: "xchacha20poly1305";
230
+ secretKind: "mnemonic-entropy" | "raw-private-key";
231
+ secretNonce: string;
232
+ sealedSecret: string;
233
+ wraps: {
234
+ credentialId: string;
235
+ createdAt: string;
236
+ nonce: string;
237
+ wrappedKey: string;
238
+ rpId: string;
239
+ verifiedAt?: string | undefined;
240
+ }[];
241
+ }, {
242
+ version: 2;
243
+ publicKey: string;
244
+ algorithm: "xchacha20poly1305";
245
+ secretKind: "mnemonic-entropy" | "raw-private-key";
246
+ secretNonce: string;
247
+ sealedSecret: string;
248
+ wraps: {
249
+ credentialId: string;
250
+ createdAt: string;
251
+ nonce: string;
252
+ wrappedKey: string;
253
+ rpId: string;
254
+ verifiedAt?: string | undefined;
255
+ }[];
256
+ }>, {
257
+ version: 2;
258
+ publicKey: string;
259
+ algorithm: "xchacha20poly1305";
260
+ secretKind: "mnemonic-entropy" | "raw-private-key";
261
+ secretNonce: string;
262
+ sealedSecret: string;
263
+ wraps: {
264
+ credentialId: string;
265
+ createdAt: string;
266
+ nonce: string;
267
+ wrappedKey: string;
268
+ rpId: string;
269
+ verifiedAt?: string | undefined;
270
+ }[];
271
+ }, {
272
+ version: 2;
273
+ publicKey: string;
274
+ algorithm: "xchacha20poly1305";
275
+ secretKind: "mnemonic-entropy" | "raw-private-key";
276
+ secretNonce: string;
277
+ sealedSecret: string;
278
+ wraps: {
279
+ credentialId: string;
280
+ createdAt: string;
281
+ nonce: string;
282
+ wrappedKey: string;
283
+ rpId: string;
284
+ verifiedAt?: string | undefined;
285
+ }[];
286
+ }>;
287
+ }, "strip", z.ZodTypeAny, {
288
+ envelope: {
289
+ version: 2;
290
+ publicKey: string;
291
+ algorithm: "xchacha20poly1305";
292
+ secretKind: "mnemonic-entropy" | "raw-private-key";
293
+ secretNonce: string;
294
+ sealedSecret: string;
295
+ wraps: {
296
+ credentialId: string;
297
+ createdAt: string;
298
+ nonce: string;
299
+ wrappedKey: string;
300
+ rpId: string;
301
+ verifiedAt?: string | undefined;
302
+ }[];
303
+ };
304
+ }, {
305
+ envelope: {
306
+ version: 2;
307
+ publicKey: string;
308
+ algorithm: "xchacha20poly1305";
309
+ secretKind: "mnemonic-entropy" | "raw-private-key";
310
+ secretNonce: string;
311
+ sealedSecret: string;
312
+ wraps: {
313
+ credentialId: string;
314
+ createdAt: string;
315
+ nonce: string;
316
+ wrappedKey: string;
317
+ rpId: string;
318
+ verifiedAt?: string | undefined;
319
+ }[];
320
+ };
321
+ }>;
322
+ /** A root holder as the status read reports it — metadata only, nothing that opens anything. */
323
+ export declare const webIdentityHolderSchema: z.ZodObject<{
324
+ credentialId: z.ZodString;
325
+ rpId: z.ZodString;
326
+ verifiedAt: z.ZodNullable<z.ZodString>;
327
+ createdAt: z.ZodString;
328
+ }, "strip", z.ZodTypeAny, {
329
+ credentialId: string;
330
+ createdAt: string;
331
+ verifiedAt: string | null;
332
+ rpId: string;
333
+ }, {
334
+ credentialId: string;
335
+ createdAt: string;
336
+ verifiedAt: string | null;
337
+ rpId: string;
338
+ }>;
339
+ /**
340
+ * `GET /identity/web-envelope` — the caller's envelope and the readiness facts
341
+ * ADR 0024 D5 keeps separate. A client decides what to show from these fields
342
+ * WITHOUT decrypting anything.
343
+ */
344
+ export declare const webIdentityEnvelopeResponseSchema: z.ZodObject<{
345
+ envelope: z.ZodNullable<z.ZodEffects<z.ZodObject<{
346
+ version: z.ZodLiteral<2>;
347
+ algorithm: z.ZodLiteral<"xchacha20poly1305">;
348
+ publicKey: z.ZodString;
349
+ secretKind: z.ZodEnum<["mnemonic-entropy", "raw-private-key"]>;
350
+ /** 24-byte nonce of the secret seal. */
351
+ secretNonce: z.ZodString;
352
+ /**
353
+ * The sealed secret, tag appended: 16/20/24/28/32 bytes of BIP-39 entropy
354
+ * (12–24 words) or a 32-byte private key, plus 16.
355
+ */
356
+ sealedSecret: z.ZodString;
357
+ wraps: z.ZodArray<z.ZodObject<{
358
+ credentialId: z.ZodString;
359
+ /** 24-byte XChaCha20-Poly1305 nonce. */
360
+ nonce: z.ZodString;
361
+ /** The 32-byte DEK sealed under this passkey's KEK, with the 16-byte tag appended (48 bytes). */
362
+ wrappedKey: z.ZodString;
363
+ createdAt: z.ZodString;
364
+ /** The RP ID the passkey was created under, asserted explicitly by every later ceremony (ADR 0024 D2). */
365
+ rpId: z.ZodString;
366
+ /**
367
+ * When this passkey's PRF output was shown to open the envelope. A wrap is a
368
+ * root HOLDER only once this is set; a login passkey never is by default.
369
+ */
370
+ verifiedAt: z.ZodOptional<z.ZodString>;
371
+ }, "strip", z.ZodTypeAny, {
372
+ credentialId: string;
373
+ createdAt: string;
374
+ nonce: string;
375
+ wrappedKey: string;
376
+ rpId: string;
377
+ verifiedAt?: string | undefined;
378
+ }, {
379
+ credentialId: string;
380
+ createdAt: string;
381
+ nonce: string;
382
+ wrappedKey: string;
383
+ rpId: string;
384
+ verifiedAt?: string | undefined;
385
+ }>, "many">;
386
+ }, "strip", z.ZodTypeAny, {
387
+ version: 2;
388
+ publicKey: string;
389
+ algorithm: "xchacha20poly1305";
390
+ secretKind: "mnemonic-entropy" | "raw-private-key";
391
+ secretNonce: string;
392
+ sealedSecret: string;
393
+ wraps: {
394
+ credentialId: string;
395
+ createdAt: string;
396
+ nonce: string;
397
+ wrappedKey: string;
398
+ rpId: string;
399
+ verifiedAt?: string | undefined;
400
+ }[];
401
+ }, {
402
+ version: 2;
403
+ publicKey: string;
404
+ algorithm: "xchacha20poly1305";
405
+ secretKind: "mnemonic-entropy" | "raw-private-key";
406
+ secretNonce: string;
407
+ sealedSecret: string;
408
+ wraps: {
409
+ credentialId: string;
410
+ createdAt: string;
411
+ nonce: string;
412
+ wrappedKey: string;
413
+ rpId: string;
414
+ verifiedAt?: string | undefined;
415
+ }[];
416
+ }>, {
417
+ version: 2;
418
+ publicKey: string;
419
+ algorithm: "xchacha20poly1305";
420
+ secretKind: "mnemonic-entropy" | "raw-private-key";
421
+ secretNonce: string;
422
+ sealedSecret: string;
423
+ wraps: {
424
+ credentialId: string;
425
+ createdAt: string;
426
+ nonce: string;
427
+ wrappedKey: string;
428
+ rpId: string;
429
+ verifiedAt?: string | undefined;
430
+ }[];
431
+ }, {
432
+ version: 2;
433
+ publicKey: string;
434
+ algorithm: "xchacha20poly1305";
435
+ secretKind: "mnemonic-entropy" | "raw-private-key";
436
+ secretNonce: string;
437
+ sealedSecret: string;
438
+ wraps: {
439
+ credentialId: string;
440
+ createdAt: string;
441
+ nonce: string;
442
+ wrappedKey: string;
443
+ rpId: string;
444
+ verifiedAt?: string | undefined;
445
+ }[];
446
+ }>>;
447
+ /** The revision a write must name as `expectedRevision`; `0` when there is no envelope. */
448
+ revision: z.ZodNumber;
449
+ /** Whether the account has a linked root at all (it may live only in Commons). */
450
+ rootLinked: z.ZodBoolean;
451
+ /** The web wraps, as metadata. */
452
+ holders: z.ZodArray<z.ZodObject<{
453
+ credentialId: z.ZodString;
454
+ rpId: z.ZodString;
455
+ verifiedAt: z.ZodNullable<z.ZodString>;
456
+ createdAt: z.ZodString;
457
+ }, "strip", z.ZodTypeAny, {
458
+ credentialId: string;
459
+ createdAt: string;
460
+ verifiedAt: string | null;
461
+ rpId: string;
462
+ }, {
463
+ credentialId: string;
464
+ createdAt: string;
465
+ verifiedAt: string | null;
466
+ rpId: string;
467
+ }>, "many">;
468
+ /** When the owner confirmed the recovery material is written down, or `null`. */
469
+ phraseConfirmedAt: z.ZodNullable<z.ZodString>;
470
+ /** When the recovery material was shown to re-derive this root, or `null`. */
471
+ recoveryVerifiedAt: z.ZodNullable<z.ZodString>;
472
+ updatedAt: z.ZodNullable<z.ZodString>;
473
+ }, "strip", z.ZodTypeAny, {
474
+ updatedAt: string | null;
475
+ revision: number;
476
+ rootLinked: boolean;
477
+ phraseConfirmedAt: string | null;
478
+ recoveryVerifiedAt: string | null;
479
+ envelope: {
480
+ version: 2;
481
+ publicKey: string;
482
+ algorithm: "xchacha20poly1305";
483
+ secretKind: "mnemonic-entropy" | "raw-private-key";
484
+ secretNonce: string;
485
+ sealedSecret: string;
486
+ wraps: {
487
+ credentialId: string;
488
+ createdAt: string;
489
+ nonce: string;
490
+ wrappedKey: string;
491
+ rpId: string;
492
+ verifiedAt?: string | undefined;
493
+ }[];
494
+ } | null;
495
+ holders: {
496
+ credentialId: string;
497
+ createdAt: string;
498
+ verifiedAt: string | null;
499
+ rpId: string;
500
+ }[];
501
+ }, {
502
+ updatedAt: string | null;
503
+ revision: number;
504
+ rootLinked: boolean;
505
+ phraseConfirmedAt: string | null;
506
+ recoveryVerifiedAt: string | null;
507
+ envelope: {
508
+ version: 2;
509
+ publicKey: string;
510
+ algorithm: "xchacha20poly1305";
511
+ secretKind: "mnemonic-entropy" | "raw-private-key";
512
+ secretNonce: string;
513
+ sealedSecret: string;
514
+ wraps: {
515
+ credentialId: string;
516
+ createdAt: string;
517
+ nonce: string;
518
+ wrappedKey: string;
519
+ rpId: string;
520
+ verifiedAt?: string | undefined;
521
+ }[];
522
+ } | null;
523
+ holders: {
524
+ credentialId: string;
525
+ createdAt: string;
526
+ verifiedAt: string | null;
527
+ rpId: string;
528
+ }[];
529
+ }>;
530
+ /** A root proof, plus the envelope revision the write expects to replace. */
531
+ export declare const webIdentityEnvelopeProofFieldsSchema: z.ZodObject<{
532
+ proof: z.ZodObject<{
533
+ v: z.ZodLiteral<2>;
534
+ challenge: z.ZodString;
535
+ expiresAt: z.ZodNumber;
536
+ signature: z.ZodString;
537
+ }, "strip", z.ZodTypeAny, {
538
+ expiresAt: number;
539
+ signature: string;
540
+ v: 2;
541
+ challenge: string;
542
+ }, {
543
+ expiresAt: number;
544
+ signature: string;
545
+ v: 2;
546
+ challenge: string;
547
+ }>;
548
+ expectedRevision: z.ZodNumber;
549
+ }, "strip", z.ZodTypeAny, {
550
+ proof: {
551
+ expiresAt: number;
552
+ signature: string;
553
+ v: 2;
554
+ challenge: string;
555
+ };
556
+ expectedRevision: number;
557
+ }, {
558
+ proof: {
559
+ expiresAt: number;
560
+ signature: string;
561
+ v: 2;
562
+ challenge: string;
563
+ };
564
+ expectedRevision: number;
565
+ }>;
566
+ /**
567
+ * `POST /identity/web-envelope/phrase-confirmed`, `/recovery-verified` and
568
+ * `DELETE /identity/web-envelope` prove control of the root, not just a bearer.
569
+ */
570
+ export declare const webIdentityEnvelopeActionSchema: z.ZodObject<{
571
+ proof: z.ZodObject<{
572
+ v: z.ZodLiteral<2>;
573
+ challenge: z.ZodString;
574
+ expiresAt: z.ZodNumber;
575
+ signature: z.ZodString;
576
+ }, "strip", z.ZodTypeAny, {
577
+ expiresAt: number;
578
+ signature: string;
579
+ v: 2;
580
+ challenge: string;
581
+ }, {
582
+ expiresAt: number;
583
+ signature: string;
584
+ v: 2;
585
+ challenge: string;
586
+ }>;
587
+ expectedRevision: z.ZodNumber;
588
+ }, "strict", z.ZodTypeAny, {
589
+ proof: {
590
+ expiresAt: number;
591
+ signature: string;
592
+ v: 2;
593
+ challenge: string;
594
+ };
595
+ expectedRevision: number;
596
+ }, {
597
+ proof: {
598
+ expiresAt: number;
599
+ signature: string;
600
+ v: 2;
601
+ challenge: string;
602
+ };
603
+ expectedRevision: number;
604
+ }>;
605
+ /** `PUT /identity/web-envelope` body. */
606
+ export declare const webIdentityEnvelopePutSchema: z.ZodObject<{
607
+ envelope: z.ZodEffects<z.ZodObject<{
608
+ version: z.ZodLiteral<2>;
609
+ algorithm: z.ZodLiteral<"xchacha20poly1305">;
610
+ publicKey: z.ZodString;
611
+ secretKind: z.ZodEnum<["mnemonic-entropy", "raw-private-key"]>;
612
+ /** 24-byte nonce of the secret seal. */
613
+ secretNonce: z.ZodString;
614
+ /**
615
+ * The sealed secret, tag appended: 16/20/24/28/32 bytes of BIP-39 entropy
616
+ * (12–24 words) or a 32-byte private key, plus 16.
617
+ */
618
+ sealedSecret: z.ZodString;
619
+ wraps: z.ZodArray<z.ZodObject<{
620
+ credentialId: z.ZodString;
621
+ /** 24-byte XChaCha20-Poly1305 nonce. */
622
+ nonce: z.ZodString;
623
+ /** The 32-byte DEK sealed under this passkey's KEK, with the 16-byte tag appended (48 bytes). */
624
+ wrappedKey: z.ZodString;
625
+ createdAt: z.ZodString;
626
+ /** The RP ID the passkey was created under, asserted explicitly by every later ceremony (ADR 0024 D2). */
627
+ rpId: z.ZodString;
628
+ /**
629
+ * When this passkey's PRF output was shown to open the envelope. A wrap is a
630
+ * root HOLDER only once this is set; a login passkey never is by default.
631
+ */
632
+ verifiedAt: z.ZodOptional<z.ZodString>;
633
+ }, "strip", z.ZodTypeAny, {
634
+ credentialId: string;
635
+ createdAt: string;
636
+ nonce: string;
637
+ wrappedKey: string;
638
+ rpId: string;
639
+ verifiedAt?: string | undefined;
640
+ }, {
641
+ credentialId: string;
642
+ createdAt: string;
643
+ nonce: string;
644
+ wrappedKey: string;
645
+ rpId: string;
646
+ verifiedAt?: string | undefined;
647
+ }>, "many">;
648
+ }, "strip", z.ZodTypeAny, {
649
+ version: 2;
650
+ publicKey: string;
651
+ algorithm: "xchacha20poly1305";
652
+ secretKind: "mnemonic-entropy" | "raw-private-key";
653
+ secretNonce: string;
654
+ sealedSecret: string;
655
+ wraps: {
656
+ credentialId: string;
657
+ createdAt: string;
658
+ nonce: string;
659
+ wrappedKey: string;
660
+ rpId: string;
661
+ verifiedAt?: string | undefined;
662
+ }[];
663
+ }, {
664
+ version: 2;
665
+ publicKey: string;
666
+ algorithm: "xchacha20poly1305";
667
+ secretKind: "mnemonic-entropy" | "raw-private-key";
668
+ secretNonce: string;
669
+ sealedSecret: string;
670
+ wraps: {
671
+ credentialId: string;
672
+ createdAt: string;
673
+ nonce: string;
674
+ wrappedKey: string;
675
+ rpId: string;
676
+ verifiedAt?: string | undefined;
677
+ }[];
678
+ }>, {
679
+ version: 2;
680
+ publicKey: string;
681
+ algorithm: "xchacha20poly1305";
682
+ secretKind: "mnemonic-entropy" | "raw-private-key";
683
+ secretNonce: string;
684
+ sealedSecret: string;
685
+ wraps: {
686
+ credentialId: string;
687
+ createdAt: string;
688
+ nonce: string;
689
+ wrappedKey: string;
690
+ rpId: string;
691
+ verifiedAt?: string | undefined;
692
+ }[];
693
+ }, {
694
+ version: 2;
695
+ publicKey: string;
696
+ algorithm: "xchacha20poly1305";
697
+ secretKind: "mnemonic-entropy" | "raw-private-key";
698
+ secretNonce: string;
699
+ sealedSecret: string;
700
+ wraps: {
701
+ credentialId: string;
702
+ createdAt: string;
703
+ nonce: string;
704
+ wrappedKey: string;
705
+ rpId: string;
706
+ verifiedAt?: string | undefined;
707
+ }[];
708
+ }>;
709
+ } & {
710
+ proof: z.ZodObject<{
711
+ v: z.ZodLiteral<2>;
712
+ challenge: z.ZodString;
713
+ expiresAt: z.ZodNumber;
714
+ signature: z.ZodString;
715
+ }, "strip", z.ZodTypeAny, {
716
+ expiresAt: number;
717
+ signature: string;
718
+ v: 2;
719
+ challenge: string;
720
+ }, {
721
+ expiresAt: number;
722
+ signature: string;
723
+ v: 2;
724
+ challenge: string;
725
+ }>;
726
+ expectedRevision: z.ZodNumber;
727
+ }, "strict", z.ZodTypeAny, {
728
+ proof: {
729
+ expiresAt: number;
730
+ signature: string;
731
+ v: 2;
732
+ challenge: string;
733
+ };
734
+ envelope: {
735
+ version: 2;
736
+ publicKey: string;
737
+ algorithm: "xchacha20poly1305";
738
+ secretKind: "mnemonic-entropy" | "raw-private-key";
739
+ secretNonce: string;
740
+ sealedSecret: string;
741
+ wraps: {
742
+ credentialId: string;
743
+ createdAt: string;
744
+ nonce: string;
745
+ wrappedKey: string;
746
+ rpId: string;
747
+ verifiedAt?: string | undefined;
748
+ }[];
749
+ };
750
+ expectedRevision: number;
751
+ }, {
752
+ proof: {
753
+ expiresAt: number;
754
+ signature: string;
755
+ v: 2;
756
+ challenge: string;
757
+ };
758
+ envelope: {
759
+ version: 2;
760
+ publicKey: string;
761
+ algorithm: "xchacha20poly1305";
762
+ secretKind: "mnemonic-entropy" | "raw-private-key";
763
+ secretNonce: string;
764
+ sealedSecret: string;
765
+ wraps: {
766
+ credentialId: string;
767
+ createdAt: string;
768
+ nonce: string;
769
+ wrappedKey: string;
770
+ rpId: string;
771
+ verifiedAt?: string | undefined;
772
+ }[];
773
+ };
774
+ expectedRevision: number;
775
+ }>;
776
+ /**
777
+ * A WebAuthn assertion by one of the account's EXISTING passkeys whose
778
+ * `clientDataJSON.challenge` is the proof challenge — the fresh use of the
779
+ * existing factor a keyless account needs before its first root is linked.
780
+ */
781
+ export declare const webauthnAssertionResponseSchema: z.ZodObject<{
782
+ id: z.ZodString;
783
+ rawId: z.ZodString;
784
+ type: z.ZodLiteral<"public-key">;
785
+ response: z.ZodObject<{
786
+ clientDataJSON: z.ZodString;
787
+ authenticatorData: z.ZodString;
788
+ signature: z.ZodString;
789
+ userHandle: z.ZodOptional<z.ZodString>;
790
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
791
+ clientDataJSON: z.ZodString;
792
+ authenticatorData: z.ZodString;
793
+ signature: z.ZodString;
794
+ userHandle: z.ZodOptional<z.ZodString>;
795
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
796
+ clientDataJSON: z.ZodString;
797
+ authenticatorData: z.ZodString;
798
+ signature: z.ZodString;
799
+ userHandle: z.ZodOptional<z.ZodString>;
800
+ }, z.ZodTypeAny, "passthrough">>;
801
+ clientExtensionResults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
802
+ authenticatorAttachment: z.ZodOptional<z.ZodString>;
803
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
804
+ id: z.ZodString;
805
+ rawId: z.ZodString;
806
+ type: z.ZodLiteral<"public-key">;
807
+ response: z.ZodObject<{
808
+ clientDataJSON: z.ZodString;
809
+ authenticatorData: z.ZodString;
810
+ signature: z.ZodString;
811
+ userHandle: z.ZodOptional<z.ZodString>;
812
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
813
+ clientDataJSON: z.ZodString;
814
+ authenticatorData: z.ZodString;
815
+ signature: z.ZodString;
816
+ userHandle: z.ZodOptional<z.ZodString>;
817
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
818
+ clientDataJSON: z.ZodString;
819
+ authenticatorData: z.ZodString;
820
+ signature: z.ZodString;
821
+ userHandle: z.ZodOptional<z.ZodString>;
822
+ }, z.ZodTypeAny, "passthrough">>;
823
+ clientExtensionResults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
824
+ authenticatorAttachment: z.ZodOptional<z.ZodString>;
825
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
826
+ id: z.ZodString;
827
+ rawId: z.ZodString;
828
+ type: z.ZodLiteral<"public-key">;
829
+ response: z.ZodObject<{
830
+ clientDataJSON: z.ZodString;
831
+ authenticatorData: z.ZodString;
832
+ signature: z.ZodString;
833
+ userHandle: z.ZodOptional<z.ZodString>;
834
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
835
+ clientDataJSON: z.ZodString;
836
+ authenticatorData: z.ZodString;
837
+ signature: z.ZodString;
838
+ userHandle: z.ZodOptional<z.ZodString>;
839
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
840
+ clientDataJSON: z.ZodString;
841
+ authenticatorData: z.ZodString;
842
+ signature: z.ZodString;
843
+ userHandle: z.ZodOptional<z.ZodString>;
844
+ }, z.ZodTypeAny, "passthrough">>;
845
+ clientExtensionResults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
846
+ authenticatorAttachment: z.ZodOptional<z.ZodString>;
847
+ }, z.ZodTypeAny, "passthrough">>;
848
+ /**
849
+ * `POST /identity/web-envelope/establish` body — an account's FIRST root, linked
850
+ * and stored with its envelope in ONE transaction: one root proof
851
+ * (`web_envelope_establish`, digest of the envelope) plus a fresh `assertion` by
852
+ * an existing passkey over the same challenge.
853
+ */
854
+ export declare const webIdentityEnvelopeEstablishSchema: z.ZodObject<{
855
+ envelope: z.ZodEffects<z.ZodObject<{
856
+ version: z.ZodLiteral<2>;
857
+ algorithm: z.ZodLiteral<"xchacha20poly1305">;
858
+ publicKey: z.ZodString;
859
+ secretKind: z.ZodEnum<["mnemonic-entropy", "raw-private-key"]>;
860
+ /** 24-byte nonce of the secret seal. */
861
+ secretNonce: z.ZodString;
862
+ /**
863
+ * The sealed secret, tag appended: 16/20/24/28/32 bytes of BIP-39 entropy
864
+ * (12–24 words) or a 32-byte private key, plus 16.
865
+ */
866
+ sealedSecret: z.ZodString;
867
+ wraps: z.ZodArray<z.ZodObject<{
868
+ credentialId: z.ZodString;
869
+ /** 24-byte XChaCha20-Poly1305 nonce. */
870
+ nonce: z.ZodString;
871
+ /** The 32-byte DEK sealed under this passkey's KEK, with the 16-byte tag appended (48 bytes). */
872
+ wrappedKey: z.ZodString;
873
+ createdAt: z.ZodString;
874
+ /** The RP ID the passkey was created under, asserted explicitly by every later ceremony (ADR 0024 D2). */
875
+ rpId: z.ZodString;
876
+ /**
877
+ * When this passkey's PRF output was shown to open the envelope. A wrap is a
878
+ * root HOLDER only once this is set; a login passkey never is by default.
879
+ */
880
+ verifiedAt: z.ZodOptional<z.ZodString>;
881
+ }, "strip", z.ZodTypeAny, {
882
+ credentialId: string;
883
+ createdAt: string;
884
+ nonce: string;
885
+ wrappedKey: string;
886
+ rpId: string;
887
+ verifiedAt?: string | undefined;
888
+ }, {
889
+ credentialId: string;
890
+ createdAt: string;
891
+ nonce: string;
892
+ wrappedKey: string;
893
+ rpId: string;
894
+ verifiedAt?: string | undefined;
895
+ }>, "many">;
896
+ }, "strip", z.ZodTypeAny, {
897
+ version: 2;
898
+ publicKey: string;
899
+ algorithm: "xchacha20poly1305";
900
+ secretKind: "mnemonic-entropy" | "raw-private-key";
901
+ secretNonce: string;
902
+ sealedSecret: string;
903
+ wraps: {
904
+ credentialId: string;
905
+ createdAt: string;
906
+ nonce: string;
907
+ wrappedKey: string;
908
+ rpId: string;
909
+ verifiedAt?: string | undefined;
910
+ }[];
911
+ }, {
912
+ version: 2;
913
+ publicKey: string;
914
+ algorithm: "xchacha20poly1305";
915
+ secretKind: "mnemonic-entropy" | "raw-private-key";
916
+ secretNonce: string;
917
+ sealedSecret: string;
918
+ wraps: {
919
+ credentialId: string;
920
+ createdAt: string;
921
+ nonce: string;
922
+ wrappedKey: string;
923
+ rpId: string;
924
+ verifiedAt?: string | undefined;
925
+ }[];
926
+ }>, {
927
+ version: 2;
928
+ publicKey: string;
929
+ algorithm: "xchacha20poly1305";
930
+ secretKind: "mnemonic-entropy" | "raw-private-key";
931
+ secretNonce: string;
932
+ sealedSecret: string;
933
+ wraps: {
934
+ credentialId: string;
935
+ createdAt: string;
936
+ nonce: string;
937
+ wrappedKey: string;
938
+ rpId: string;
939
+ verifiedAt?: string | undefined;
940
+ }[];
941
+ }, {
942
+ version: 2;
943
+ publicKey: string;
944
+ algorithm: "xchacha20poly1305";
945
+ secretKind: "mnemonic-entropy" | "raw-private-key";
946
+ secretNonce: string;
947
+ sealedSecret: string;
948
+ wraps: {
949
+ credentialId: string;
950
+ createdAt: string;
951
+ nonce: string;
952
+ wrappedKey: string;
953
+ rpId: string;
954
+ verifiedAt?: string | undefined;
955
+ }[];
956
+ }>;
957
+ } & {
958
+ proof: z.ZodObject<{
959
+ v: z.ZodLiteral<2>;
960
+ challenge: z.ZodString;
961
+ expiresAt: z.ZodNumber;
962
+ signature: z.ZodString;
963
+ }, "strip", z.ZodTypeAny, {
964
+ expiresAt: number;
965
+ signature: string;
966
+ v: 2;
967
+ challenge: string;
968
+ }, {
969
+ expiresAt: number;
970
+ signature: string;
971
+ v: 2;
972
+ challenge: string;
973
+ }>;
974
+ assertion: z.ZodObject<{
975
+ id: z.ZodString;
976
+ rawId: z.ZodString;
977
+ type: z.ZodLiteral<"public-key">;
978
+ response: z.ZodObject<{
979
+ clientDataJSON: z.ZodString;
980
+ authenticatorData: z.ZodString;
981
+ signature: z.ZodString;
982
+ userHandle: z.ZodOptional<z.ZodString>;
983
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
984
+ clientDataJSON: z.ZodString;
985
+ authenticatorData: z.ZodString;
986
+ signature: z.ZodString;
987
+ userHandle: z.ZodOptional<z.ZodString>;
988
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
989
+ clientDataJSON: z.ZodString;
990
+ authenticatorData: z.ZodString;
991
+ signature: z.ZodString;
992
+ userHandle: z.ZodOptional<z.ZodString>;
993
+ }, z.ZodTypeAny, "passthrough">>;
994
+ clientExtensionResults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
995
+ authenticatorAttachment: z.ZodOptional<z.ZodString>;
996
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
997
+ id: z.ZodString;
998
+ rawId: z.ZodString;
999
+ type: z.ZodLiteral<"public-key">;
1000
+ response: z.ZodObject<{
1001
+ clientDataJSON: z.ZodString;
1002
+ authenticatorData: z.ZodString;
1003
+ signature: z.ZodString;
1004
+ userHandle: z.ZodOptional<z.ZodString>;
1005
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1006
+ clientDataJSON: z.ZodString;
1007
+ authenticatorData: z.ZodString;
1008
+ signature: z.ZodString;
1009
+ userHandle: z.ZodOptional<z.ZodString>;
1010
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1011
+ clientDataJSON: z.ZodString;
1012
+ authenticatorData: z.ZodString;
1013
+ signature: z.ZodString;
1014
+ userHandle: z.ZodOptional<z.ZodString>;
1015
+ }, z.ZodTypeAny, "passthrough">>;
1016
+ clientExtensionResults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1017
+ authenticatorAttachment: z.ZodOptional<z.ZodString>;
1018
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1019
+ id: z.ZodString;
1020
+ rawId: z.ZodString;
1021
+ type: z.ZodLiteral<"public-key">;
1022
+ response: z.ZodObject<{
1023
+ clientDataJSON: z.ZodString;
1024
+ authenticatorData: z.ZodString;
1025
+ signature: z.ZodString;
1026
+ userHandle: z.ZodOptional<z.ZodString>;
1027
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1028
+ clientDataJSON: z.ZodString;
1029
+ authenticatorData: z.ZodString;
1030
+ signature: z.ZodString;
1031
+ userHandle: z.ZodOptional<z.ZodString>;
1032
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1033
+ clientDataJSON: z.ZodString;
1034
+ authenticatorData: z.ZodString;
1035
+ signature: z.ZodString;
1036
+ userHandle: z.ZodOptional<z.ZodString>;
1037
+ }, z.ZodTypeAny, "passthrough">>;
1038
+ clientExtensionResults: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1039
+ authenticatorAttachment: z.ZodOptional<z.ZodString>;
1040
+ }, z.ZodTypeAny, "passthrough">>;
1041
+ }, "strict", z.ZodTypeAny, {
1042
+ proof: {
1043
+ expiresAt: number;
1044
+ signature: string;
1045
+ v: 2;
1046
+ challenge: string;
1047
+ };
1048
+ envelope: {
1049
+ version: 2;
1050
+ publicKey: string;
1051
+ algorithm: "xchacha20poly1305";
1052
+ secretKind: "mnemonic-entropy" | "raw-private-key";
1053
+ secretNonce: string;
1054
+ sealedSecret: string;
1055
+ wraps: {
1056
+ credentialId: string;
1057
+ createdAt: string;
1058
+ nonce: string;
1059
+ wrappedKey: string;
1060
+ rpId: string;
1061
+ verifiedAt?: string | undefined;
1062
+ }[];
1063
+ };
1064
+ assertion: {
1065
+ type: "public-key";
1066
+ id: string;
1067
+ rawId: string;
1068
+ response: {
1069
+ signature: string;
1070
+ clientDataJSON: string;
1071
+ authenticatorData: string;
1072
+ userHandle?: string | undefined;
1073
+ } & {
1074
+ [k: string]: unknown;
1075
+ };
1076
+ clientExtensionResults?: Record<string, unknown> | undefined;
1077
+ authenticatorAttachment?: string | undefined;
1078
+ } & {
1079
+ [k: string]: unknown;
1080
+ };
1081
+ }, {
1082
+ proof: {
1083
+ expiresAt: number;
1084
+ signature: string;
1085
+ v: 2;
1086
+ challenge: string;
1087
+ };
1088
+ envelope: {
1089
+ version: 2;
1090
+ publicKey: string;
1091
+ algorithm: "xchacha20poly1305";
1092
+ secretKind: "mnemonic-entropy" | "raw-private-key";
1093
+ secretNonce: string;
1094
+ sealedSecret: string;
1095
+ wraps: {
1096
+ credentialId: string;
1097
+ createdAt: string;
1098
+ nonce: string;
1099
+ wrappedKey: string;
1100
+ rpId: string;
1101
+ verifiedAt?: string | undefined;
1102
+ }[];
1103
+ };
1104
+ assertion: {
1105
+ type: "public-key";
1106
+ id: string;
1107
+ rawId: string;
1108
+ response: {
1109
+ signature: string;
1110
+ clientDataJSON: string;
1111
+ authenticatorData: string;
1112
+ userHandle?: string | undefined;
1113
+ } & {
1114
+ [k: string]: unknown;
1115
+ };
1116
+ clientExtensionResults?: Record<string, unknown> | undefined;
1117
+ authenticatorAttachment?: string | undefined;
1118
+ } & {
1119
+ [k: string]: unknown;
1120
+ };
1121
+ }>;
1122
+ export type WebIdentityWrap = z.infer<typeof webIdentityWrapSchema>;
1123
+ export type WebIdentityEnvelope = z.infer<typeof webIdentityEnvelopeSchema>;
1124
+ export type WebIdentityHolder = z.infer<typeof webIdentityHolderSchema>;
1125
+ export type WebIdentityEnvelopeAction = z.infer<typeof webIdentityEnvelopeActionSchema>;
1126
+ export type WebauthnAssertionResponse = z.infer<typeof webauthnAssertionResponseSchema>;
1127
+ export type WebIdentityEnvelopeUpload = z.infer<typeof webIdentityEnvelopeUploadSchema>;
1128
+ export type WebIdentityEnvelopeResponse = z.infer<typeof webIdentityEnvelopeResponseSchema>;
1129
+ export type WebIdentityEnvelopePut = z.infer<typeof webIdentityEnvelopePutSchema>;
1130
+ export type WebIdentityEnvelopeEstablish = z.infer<typeof webIdentityEnvelopeEstablishSchema>;