@affectively/aeon 1.3.0 → 1.3.1

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 (43) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +342 -342
  3. package/dist/compression/index.cjs.map +1 -1
  4. package/dist/compression/index.js.map +1 -1
  5. package/dist/core/index.d.cts +213 -213
  6. package/dist/core/index.d.ts +213 -213
  7. package/dist/crypto/index.cjs.map +1 -1
  8. package/dist/crypto/index.d.cts +441 -441
  9. package/dist/crypto/index.d.ts +441 -441
  10. package/dist/crypto/index.js.map +1 -1
  11. package/dist/distributed/index.cjs.map +1 -1
  12. package/dist/distributed/index.d.cts +1005 -1005
  13. package/dist/distributed/index.d.ts +1005 -1005
  14. package/dist/distributed/index.js.map +1 -1
  15. package/dist/index.cjs +32 -723
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +50 -5
  18. package/dist/index.d.ts +50 -5
  19. package/dist/index.js +29 -722
  20. package/dist/index.js.map +1 -1
  21. package/dist/offline/index.cjs.map +1 -1
  22. package/dist/offline/index.d.cts +148 -148
  23. package/dist/offline/index.d.ts +148 -148
  24. package/dist/offline/index.js.map +1 -1
  25. package/dist/optimization/index.cjs.map +1 -1
  26. package/dist/optimization/index.js.map +1 -1
  27. package/dist/persistence/index.cjs.map +1 -1
  28. package/dist/persistence/index.d.cts +57 -57
  29. package/dist/persistence/index.d.ts +57 -57
  30. package/dist/persistence/index.js.map +1 -1
  31. package/dist/presence/index.cjs.map +1 -1
  32. package/dist/presence/index.js.map +1 -1
  33. package/dist/{types-B7gCpNX9.d.cts → types-B7CxsoLh.d.cts} +30 -30
  34. package/dist/{types-B7gCpNX9.d.ts → types-B7CxsoLh.d.ts} +30 -30
  35. package/dist/utils/index.cjs.map +1 -1
  36. package/dist/utils/index.d.cts +35 -35
  37. package/dist/utils/index.d.ts +35 -35
  38. package/dist/utils/index.js.map +1 -1
  39. package/dist/versioning/index.cjs.map +1 -1
  40. package/dist/versioning/index.d.cts +1 -1
  41. package/dist/versioning/index.d.ts +1 -1
  42. package/dist/versioning/index.js.map +1 -1
  43. package/package.json +196 -196
@@ -1,446 +1,446 @@
1
- /**
2
- * Aeon Crypto Types
3
- *
4
- * Type definitions for cryptographic operations in Aeon.
5
- * These are compatible with @affectively/ucan and @affectively/zk-encryption.
6
- */
7
- /**
8
- * Decentralized Identifier (DID)
9
- * Format: did:method:identifier
10
- */
11
- type DID = `did:${string}:${string}`;
12
- /**
13
- * Supported signing algorithms
14
- */
15
- type SigningAlgorithm = 'ES256' | 'Ed25519' | 'ES384' | 'ES512';
16
- /**
17
- * Key pair for signing and verification
18
- */
19
- interface KeyPair {
20
- algorithm: SigningAlgorithm;
21
- publicKey: JsonWebKey;
22
- privateKey?: JsonWebKey;
23
- fingerprint: string;
24
- }
25
- /**
26
- * Identity representing a user or node
27
- */
28
- interface Identity {
29
- did: DID;
30
- signingKey: KeyPair;
31
- encryptionKey?: KeyPair;
32
- createdAt: number;
33
- displayName?: string;
34
- }
35
- /**
36
- * UCAN Capability structure
37
- */
38
- interface Capability {
39
- can: string;
40
- with: string;
41
- constraints?: Record<string, unknown>;
42
- }
43
- /**
44
- * UCAN Token payload
45
- */
46
- interface UCANPayload {
47
- iss: DID;
48
- aud: DID;
49
- exp: number;
50
- nbf?: number;
51
- iat?: number;
52
- nonce?: string;
53
- jti?: string;
54
- att: Capability[];
55
- prf?: string[];
56
- fct?: Record<string, unknown>;
57
- }
58
- /**
59
- * Parsed UCAN Token
60
- */
61
- interface UCANToken {
62
- payload: UCANPayload;
63
- raw: string;
64
- signature: Uint8Array;
65
- algorithm: string;
66
- }
67
- /**
68
- * UCAN verification result
69
- */
70
- interface VerificationResult {
71
- valid: boolean;
72
- payload?: UCANPayload;
73
- error?: string;
74
- expired?: boolean;
75
- shouldRotate?: boolean;
76
- expiresIn?: number;
77
- }
78
- /**
79
- * Encryption algorithms supported
80
- */
81
- type EncryptionAlgorithm = 'ECIES-P256' | 'AES-256-GCM';
82
- /**
83
- * HKDF domain separator categories
84
- */
85
- type DomainCategory =
86
- | 'default'
87
- | 'sync'
88
- | 'message'
89
- | 'api-key'
90
- | 'personal-data'
91
- | string;
92
- /**
93
- * EC Key pair for ECDH operations
94
- */
95
- interface ECKeyPair {
96
- publicKey: JsonWebKey;
97
- privateKey: JsonWebKey;
98
- keyId: string;
99
- createdAt: string;
100
- }
101
- /**
102
- * Encrypted data envelope
103
- */
104
- interface EncryptedPayload {
105
- alg: EncryptionAlgorithm;
106
- ct: string;
107
- iv: string;
108
- tag: string;
109
- epk?: JsonWebKey;
110
- category?: DomainCategory;
111
- nonce?: string;
112
- encryptedAt: number;
113
- }
114
- /**
115
- * Decryption result
116
- */
117
- interface DecryptionResult {
118
- plaintext: Uint8Array;
119
- category?: DomainCategory;
120
- encryptedAt: number;
121
- }
122
- /**
123
- * Aeon encryption mode
124
- */
125
- type AeonEncryptionMode =
126
- | 'none'
127
- | 'transport'
128
- | 'at-rest'
129
- | 'end-to-end';
130
- /**
131
- * Aeon sync capability namespace
132
- */
133
- declare const AEON_CAPABILITIES: {
134
- readonly SYNC_READ: 'aeon:sync:read';
135
- readonly SYNC_WRITE: 'aeon:sync:write';
136
- readonly SYNC_ADMIN: 'aeon:sync:admin';
137
- readonly NODE_REGISTER: 'aeon:node:register';
138
- readonly NODE_HEARTBEAT: 'aeon:node:heartbeat';
139
- readonly REPLICATE_READ: 'aeon:replicate:read';
140
- readonly REPLICATE_WRITE: 'aeon:replicate:write';
141
- readonly STATE_READ: 'aeon:state:read';
142
- readonly STATE_WRITE: 'aeon:state:write';
143
- readonly STATE_RECONCILE: 'aeon:state:reconcile';
144
- };
145
- type AeonCapability =
146
- (typeof AEON_CAPABILITIES)[keyof typeof AEON_CAPABILITIES];
147
- /**
148
- * Crypto configuration for Aeon
149
- */
150
- interface AeonCryptoConfig {
151
- /** Default encryption mode for sync messages */
152
- defaultEncryptionMode: AeonEncryptionMode;
153
- /** Require all messages to be signed */
154
- requireSignatures: boolean;
155
- /** Require UCAN capability verification */
156
- requireCapabilities: boolean;
157
- /** Allowed signature algorithms */
158
- allowedSignatureAlgorithms: string[];
159
- /** Allowed encryption algorithms */
160
- allowedEncryptionAlgorithms: string[];
161
- /** UCAN audience DID for verification */
162
- ucanAudience?: string;
163
- /** Session key expiration (ms) */
164
- sessionKeyExpiration?: number;
165
- }
166
- /**
167
- * Default crypto configuration
168
- */
169
- declare const DEFAULT_CRYPTO_CONFIG: AeonCryptoConfig;
170
- /**
171
- * Authenticated sync message fields
172
- */
173
- interface AuthenticatedMessageFields {
174
- /** Sender DID */
175
- senderDID?: string;
176
- /** Receiver DID */
177
- receiverDID?: string;
178
- /** UCAN token for capability verification */
179
- ucan?: string;
180
- /** Message signature (base64url) */
181
- signature?: string;
182
- /** Whether payload is encrypted */
183
- encrypted?: boolean;
184
- }
185
- /**
186
- * Secure sync session
187
- */
188
- interface SecureSyncSession {
189
- id: string;
190
- initiator: string;
191
- participants: string[];
192
- sessionKey?: Uint8Array;
193
- encryptionMode: AeonEncryptionMode;
194
- requiredCapabilities: string[];
195
- status: 'pending' | 'active' | 'completed' | 'failed';
196
- startTime: string;
197
- endTime?: string;
198
- }
199
- /**
200
- * Node with identity information
201
- */
202
- interface SecureNodeInfo {
203
- id: string;
204
- did?: string;
205
- publicSigningKey?: JsonWebKey;
206
- publicEncryptionKey?: JsonWebKey;
207
- capabilities?: string[];
208
- lastSeen?: number;
209
- }
210
- /**
211
- * Capability verification result
212
- */
213
- interface AeonCapabilityResult {
214
- authorized: boolean;
215
- error?: string;
216
- issuer?: string;
217
- grantedCapabilities?: Array<{
218
- can: string;
219
- with: string;
220
- }>;
221
- }
222
- /**
223
- * Signed data envelope for sync operations
224
- */
225
- interface SignedSyncData<T = unknown> {
226
- payload: T;
227
- signature: string;
228
- signer: string;
229
- algorithm: string;
230
- signedAt: number;
1
+ /**
2
+ * Aeon Crypto Types
3
+ *
4
+ * Type definitions for cryptographic operations in Aeon.
5
+ * These are compatible with @affectively/ucan and @affectively/zk-encryption.
6
+ */
7
+ /**
8
+ * Decentralized Identifier (DID)
9
+ * Format: did:method:identifier
10
+ */
11
+ type DID = `did:${string}:${string}`;
12
+ /**
13
+ * Supported signing algorithms
14
+ */
15
+ type SigningAlgorithm = 'ES256' | 'Ed25519' | 'ES384' | 'ES512';
16
+ /**
17
+ * Key pair for signing and verification
18
+ */
19
+ interface KeyPair {
20
+ algorithm: SigningAlgorithm;
21
+ publicKey: JsonWebKey;
22
+ privateKey?: JsonWebKey;
23
+ fingerprint: string;
24
+ }
25
+ /**
26
+ * Identity representing a user or node
27
+ */
28
+ interface Identity {
29
+ did: DID;
30
+ signingKey: KeyPair;
31
+ encryptionKey?: KeyPair;
32
+ createdAt: number;
33
+ displayName?: string;
34
+ }
35
+ /**
36
+ * UCAN Capability structure
37
+ */
38
+ interface Capability {
39
+ can: string;
40
+ with: string;
41
+ constraints?: Record<string, unknown>;
42
+ }
43
+ /**
44
+ * UCAN Token payload
45
+ */
46
+ interface UCANPayload {
47
+ iss: DID;
48
+ aud: DID;
49
+ exp: number;
50
+ nbf?: number;
51
+ iat?: number;
52
+ nonce?: string;
53
+ jti?: string;
54
+ att: Capability[];
55
+ prf?: string[];
56
+ fct?: Record<string, unknown>;
57
+ }
58
+ /**
59
+ * Parsed UCAN Token
60
+ */
61
+ interface UCANToken {
62
+ payload: UCANPayload;
63
+ raw: string;
64
+ signature: Uint8Array;
65
+ algorithm: string;
66
+ }
67
+ /**
68
+ * UCAN verification result
69
+ */
70
+ interface VerificationResult {
71
+ valid: boolean;
72
+ payload?: UCANPayload;
73
+ error?: string;
74
+ expired?: boolean;
75
+ shouldRotate?: boolean;
76
+ expiresIn?: number;
77
+ }
78
+ /**
79
+ * Encryption algorithms supported
80
+ */
81
+ type EncryptionAlgorithm = 'ECIES-P256' | 'AES-256-GCM';
82
+ /**
83
+ * HKDF domain separator categories
84
+ */
85
+ type DomainCategory =
86
+ | 'default'
87
+ | 'sync'
88
+ | 'message'
89
+ | 'api-key'
90
+ | 'personal-data'
91
+ | string;
92
+ /**
93
+ * EC Key pair for ECDH operations
94
+ */
95
+ interface ECKeyPair {
96
+ publicKey: JsonWebKey;
97
+ privateKey: JsonWebKey;
98
+ keyId: string;
99
+ createdAt: string;
100
+ }
101
+ /**
102
+ * Encrypted data envelope
103
+ */
104
+ interface EncryptedPayload {
105
+ alg: EncryptionAlgorithm;
106
+ ct: string;
107
+ iv: string;
108
+ tag: string;
109
+ epk?: JsonWebKey;
110
+ category?: DomainCategory;
111
+ nonce?: string;
112
+ encryptedAt: number;
113
+ }
114
+ /**
115
+ * Decryption result
116
+ */
117
+ interface DecryptionResult {
118
+ plaintext: Uint8Array;
119
+ category?: DomainCategory;
120
+ encryptedAt: number;
121
+ }
122
+ /**
123
+ * Aeon encryption mode
124
+ */
125
+ type AeonEncryptionMode =
126
+ | 'none'
127
+ | 'transport'
128
+ | 'at-rest'
129
+ | 'end-to-end';
130
+ /**
131
+ * Aeon sync capability namespace
132
+ */
133
+ declare const AEON_CAPABILITIES: {
134
+ readonly SYNC_READ: 'aeon:sync:read';
135
+ readonly SYNC_WRITE: 'aeon:sync:write';
136
+ readonly SYNC_ADMIN: 'aeon:sync:admin';
137
+ readonly NODE_REGISTER: 'aeon:node:register';
138
+ readonly NODE_HEARTBEAT: 'aeon:node:heartbeat';
139
+ readonly REPLICATE_READ: 'aeon:replicate:read';
140
+ readonly REPLICATE_WRITE: 'aeon:replicate:write';
141
+ readonly STATE_READ: 'aeon:state:read';
142
+ readonly STATE_WRITE: 'aeon:state:write';
143
+ readonly STATE_RECONCILE: 'aeon:state:reconcile';
144
+ };
145
+ type AeonCapability =
146
+ (typeof AEON_CAPABILITIES)[keyof typeof AEON_CAPABILITIES];
147
+ /**
148
+ * Crypto configuration for Aeon
149
+ */
150
+ interface AeonCryptoConfig {
151
+ /** Default encryption mode for sync messages */
152
+ defaultEncryptionMode: AeonEncryptionMode;
153
+ /** Require all messages to be signed */
154
+ requireSignatures: boolean;
155
+ /** Require UCAN capability verification */
156
+ requireCapabilities: boolean;
157
+ /** Allowed signature algorithms */
158
+ allowedSignatureAlgorithms: string[];
159
+ /** Allowed encryption algorithms */
160
+ allowedEncryptionAlgorithms: string[];
161
+ /** UCAN audience DID for verification */
162
+ ucanAudience?: string;
163
+ /** Session key expiration (ms) */
164
+ sessionKeyExpiration?: number;
165
+ }
166
+ /**
167
+ * Default crypto configuration
168
+ */
169
+ declare const DEFAULT_CRYPTO_CONFIG: AeonCryptoConfig;
170
+ /**
171
+ * Authenticated sync message fields
172
+ */
173
+ interface AuthenticatedMessageFields {
174
+ /** Sender DID */
175
+ senderDID?: string;
176
+ /** Receiver DID */
177
+ receiverDID?: string;
178
+ /** UCAN token for capability verification */
179
+ ucan?: string;
180
+ /** Message signature (base64url) */
181
+ signature?: string;
182
+ /** Whether payload is encrypted */
183
+ encrypted?: boolean;
184
+ }
185
+ /**
186
+ * Secure sync session
187
+ */
188
+ interface SecureSyncSession {
189
+ id: string;
190
+ initiator: string;
191
+ participants: string[];
192
+ sessionKey?: Uint8Array;
193
+ encryptionMode: AeonEncryptionMode;
194
+ requiredCapabilities: string[];
195
+ status: 'pending' | 'active' | 'completed' | 'failed';
196
+ startTime: string;
197
+ endTime?: string;
198
+ }
199
+ /**
200
+ * Node with identity information
201
+ */
202
+ interface SecureNodeInfo {
203
+ id: string;
204
+ did?: string;
205
+ publicSigningKey?: JsonWebKey;
206
+ publicEncryptionKey?: JsonWebKey;
207
+ capabilities?: string[];
208
+ lastSeen?: number;
209
+ }
210
+ /**
211
+ * Capability verification result
212
+ */
213
+ interface AeonCapabilityResult {
214
+ authorized: boolean;
215
+ error?: string;
216
+ issuer?: string;
217
+ grantedCapabilities?: Array<{
218
+ can: string;
219
+ with: string;
220
+ }>;
221
+ }
222
+ /**
223
+ * Signed data envelope for sync operations
224
+ */
225
+ interface SignedSyncData<T = unknown> {
226
+ payload: T;
227
+ signature: string;
228
+ signer: string;
229
+ algorithm: string;
230
+ signedAt: number;
231
231
  }
232
232
 
233
- /**
234
- * Aeon Crypto Provider Interface
235
- *
236
- * Abstract interface for cryptographic operations.
237
- * Aeon core remains zero-dependency - crypto is injected through this interface.
238
- */
239
-
240
- /**
241
- * Abstract crypto provider interface
242
- *
243
- * Implementations use @affectively/ucan and @affectively/zk-encryption
244
- * or other compatible libraries.
245
- */
246
- interface ICryptoProvider {
247
- /**
248
- * Generate a new identity with DID and key pairs
249
- */
250
- generateIdentity(displayName?: string): Promise<{
251
- did: string;
252
- publicSigningKey: JsonWebKey;
253
- publicEncryptionKey?: JsonWebKey;
254
- }>;
255
- /**
256
- * Get the local identity's DID
257
- */
258
- getLocalDID(): string | null;
259
- /**
260
- * Export local identity's public info for sharing
261
- */
262
- exportPublicIdentity(): Promise<SecureNodeInfo | null>;
263
- /**
264
- * Register a known remote node's public keys
265
- */
266
- registerRemoteNode(node: SecureNodeInfo): Promise<void>;
267
- /**
268
- * Get a remote node's public key
269
- */
270
- getRemotePublicKey(did: string): Promise<JsonWebKey | null>;
271
- /**
272
- * Sign data with local identity's private key
273
- */
274
- sign(data: Uint8Array): Promise<Uint8Array>;
275
- /**
276
- * Sign structured data and wrap in SignedSyncData envelope
277
- */
278
- signData<T>(data: T): Promise<SignedSyncData<T>>;
279
- /**
280
- * Verify a signature from a remote node
281
- */
282
- verify(
283
- did: string,
284
- signature: Uint8Array,
285
- data: Uint8Array
286
- ): Promise<boolean>;
287
- /**
288
- * Verify a SignedSyncData envelope
289
- */
290
- verifySignedData<T>(signedData: SignedSyncData<T>): Promise<boolean>;
291
- /**
292
- * Encrypt data for a recipient
293
- */
294
- encrypt(
295
- plaintext: Uint8Array,
296
- recipientDID: string
297
- ): Promise<{
298
- alg: string;
299
- ct: string;
300
- iv: string;
301
- tag: string;
302
- epk?: JsonWebKey;
303
- encryptedAt: number;
304
- }>;
305
- /**
306
- * Decrypt data
307
- */
308
- decrypt(
309
- encrypted: {
310
- alg: string;
311
- ct: string;
312
- iv: string;
313
- tag: string;
314
- epk?: JsonWebKey;
315
- },
316
- senderDID?: string
317
- ): Promise<Uint8Array>;
318
- /**
319
- * Derive or get a session key for communication with a peer
320
- */
321
- getSessionKey(peerDID: string): Promise<Uint8Array>;
322
- /**
323
- * Encrypt with a session key
324
- */
325
- encryptWithSessionKey(
326
- plaintext: Uint8Array,
327
- sessionKey: Uint8Array
328
- ): Promise<{
329
- alg: string;
330
- ct: string;
331
- iv: string;
332
- tag: string;
333
- encryptedAt: number;
334
- }>;
335
- /**
336
- * Decrypt with a session key
337
- */
338
- decryptWithSessionKey(
339
- encrypted: {
340
- ct: string;
341
- iv: string;
342
- tag: string;
343
- },
344
- sessionKey: Uint8Array
345
- ): Promise<Uint8Array>;
346
- /**
347
- * Create a UCAN token
348
- */
349
- createUCAN(
350
- audience: string,
351
- capabilities: Array<{
352
- can: string;
353
- with: string;
354
- }>,
355
- options?: {
356
- expirationSeconds?: number;
357
- proofs?: string[];
358
- }
359
- ): Promise<string>;
360
- /**
361
- * Verify a UCAN token
362
- */
363
- verifyUCAN(
364
- token: string,
365
- options?: {
366
- expectedAudience?: string;
367
- requiredCapabilities?: Array<{
368
- can: string;
369
- with: string;
370
- }>;
371
- }
372
- ): Promise<AeonCapabilityResult>;
373
- /**
374
- * Delegate capabilities
375
- */
376
- delegateCapabilities(
377
- parentToken: string,
378
- audience: string,
379
- capabilities: Array<{
380
- can: string;
381
- with: string;
382
- }>,
383
- options?: {
384
- expirationSeconds?: number;
385
- }
386
- ): Promise<string>;
387
- /**
388
- * Compute hash of data
389
- */
390
- hash(data: Uint8Array): Promise<Uint8Array>;
391
- /**
392
- * Generate random bytes
393
- */
394
- randomBytes(length: number): Uint8Array;
395
- /**
396
- * Check if crypto is properly initialized
397
- */
398
- isInitialized(): boolean;
399
- }
400
- /**
401
- * Null crypto provider for when crypto is disabled
402
- *
403
- * All operations either throw or return permissive defaults.
404
- */
405
- declare class NullCryptoProvider implements ICryptoProvider {
406
- private notConfiguredError;
407
- generateIdentity(): Promise<{
408
- did: string;
409
- publicSigningKey: JsonWebKey;
410
- publicEncryptionKey?: JsonWebKey;
411
- }>;
412
- getLocalDID(): string | null;
413
- exportPublicIdentity(): Promise<SecureNodeInfo | null>;
414
- registerRemoteNode(): Promise<void>;
415
- getRemotePublicKey(): Promise<JsonWebKey | null>;
416
- sign(): Promise<Uint8Array>;
417
- signData<T>(_data: T): Promise<SignedSyncData<T>>;
418
- verify(): Promise<boolean>;
419
- verifySignedData(): Promise<boolean>;
420
- encrypt(): Promise<{
421
- alg: string;
422
- ct: string;
423
- iv: string;
424
- tag: string;
425
- epk?: JsonWebKey;
426
- encryptedAt: number;
427
- }>;
428
- decrypt(): Promise<Uint8Array>;
429
- getSessionKey(): Promise<Uint8Array>;
430
- encryptWithSessionKey(): Promise<{
431
- alg: string;
432
- ct: string;
433
- iv: string;
434
- tag: string;
435
- encryptedAt: number;
436
- }>;
437
- decryptWithSessionKey(): Promise<Uint8Array>;
438
- createUCAN(): Promise<string>;
439
- verifyUCAN(): Promise<AeonCapabilityResult>;
440
- delegateCapabilities(): Promise<string>;
441
- hash(): Promise<Uint8Array>;
442
- randomBytes(length: number): Uint8Array;
443
- isInitialized(): boolean;
233
+ /**
234
+ * Aeon Crypto Provider Interface
235
+ *
236
+ * Abstract interface for cryptographic operations.
237
+ * Aeon core remains zero-dependency - crypto is injected through this interface.
238
+ */
239
+
240
+ /**
241
+ * Abstract crypto provider interface
242
+ *
243
+ * Implementations use @affectively/ucan and @affectively/zk-encryption
244
+ * or other compatible libraries.
245
+ */
246
+ interface ICryptoProvider {
247
+ /**
248
+ * Generate a new identity with DID and key pairs
249
+ */
250
+ generateIdentity(displayName?: string): Promise<{
251
+ did: string;
252
+ publicSigningKey: JsonWebKey;
253
+ publicEncryptionKey?: JsonWebKey;
254
+ }>;
255
+ /**
256
+ * Get the local identity's DID
257
+ */
258
+ getLocalDID(): string | null;
259
+ /**
260
+ * Export local identity's public info for sharing
261
+ */
262
+ exportPublicIdentity(): Promise<SecureNodeInfo | null>;
263
+ /**
264
+ * Register a known remote node's public keys
265
+ */
266
+ registerRemoteNode(node: SecureNodeInfo): Promise<void>;
267
+ /**
268
+ * Get a remote node's public key
269
+ */
270
+ getRemotePublicKey(did: string): Promise<JsonWebKey | null>;
271
+ /**
272
+ * Sign data with local identity's private key
273
+ */
274
+ sign(data: Uint8Array): Promise<Uint8Array>;
275
+ /**
276
+ * Sign structured data and wrap in SignedSyncData envelope
277
+ */
278
+ signData<T>(data: T): Promise<SignedSyncData<T>>;
279
+ /**
280
+ * Verify a signature from a remote node
281
+ */
282
+ verify(
283
+ did: string,
284
+ signature: Uint8Array,
285
+ data: Uint8Array
286
+ ): Promise<boolean>;
287
+ /**
288
+ * Verify a SignedSyncData envelope
289
+ */
290
+ verifySignedData<T>(signedData: SignedSyncData<T>): Promise<boolean>;
291
+ /**
292
+ * Encrypt data for a recipient
293
+ */
294
+ encrypt(
295
+ plaintext: Uint8Array,
296
+ recipientDID: string
297
+ ): Promise<{
298
+ alg: string;
299
+ ct: string;
300
+ iv: string;
301
+ tag: string;
302
+ epk?: JsonWebKey;
303
+ encryptedAt: number;
304
+ }>;
305
+ /**
306
+ * Decrypt data
307
+ */
308
+ decrypt(
309
+ encrypted: {
310
+ alg: string;
311
+ ct: string;
312
+ iv: string;
313
+ tag: string;
314
+ epk?: JsonWebKey;
315
+ },
316
+ senderDID?: string
317
+ ): Promise<Uint8Array>;
318
+ /**
319
+ * Derive or get a session key for communication with a peer
320
+ */
321
+ getSessionKey(peerDID: string): Promise<Uint8Array>;
322
+ /**
323
+ * Encrypt with a session key
324
+ */
325
+ encryptWithSessionKey(
326
+ plaintext: Uint8Array,
327
+ sessionKey: Uint8Array
328
+ ): Promise<{
329
+ alg: string;
330
+ ct: string;
331
+ iv: string;
332
+ tag: string;
333
+ encryptedAt: number;
334
+ }>;
335
+ /**
336
+ * Decrypt with a session key
337
+ */
338
+ decryptWithSessionKey(
339
+ encrypted: {
340
+ ct: string;
341
+ iv: string;
342
+ tag: string;
343
+ },
344
+ sessionKey: Uint8Array
345
+ ): Promise<Uint8Array>;
346
+ /**
347
+ * Create a UCAN token
348
+ */
349
+ createUCAN(
350
+ audience: string,
351
+ capabilities: Array<{
352
+ can: string;
353
+ with: string;
354
+ }>,
355
+ options?: {
356
+ expirationSeconds?: number;
357
+ proofs?: string[];
358
+ }
359
+ ): Promise<string>;
360
+ /**
361
+ * Verify a UCAN token
362
+ */
363
+ verifyUCAN(
364
+ token: string,
365
+ options?: {
366
+ expectedAudience?: string;
367
+ requiredCapabilities?: Array<{
368
+ can: string;
369
+ with: string;
370
+ }>;
371
+ }
372
+ ): Promise<AeonCapabilityResult>;
373
+ /**
374
+ * Delegate capabilities
375
+ */
376
+ delegateCapabilities(
377
+ parentToken: string,
378
+ audience: string,
379
+ capabilities: Array<{
380
+ can: string;
381
+ with: string;
382
+ }>,
383
+ options?: {
384
+ expirationSeconds?: number;
385
+ }
386
+ ): Promise<string>;
387
+ /**
388
+ * Compute hash of data
389
+ */
390
+ hash(data: Uint8Array): Promise<Uint8Array>;
391
+ /**
392
+ * Generate random bytes
393
+ */
394
+ randomBytes(length: number): Uint8Array;
395
+ /**
396
+ * Check if crypto is properly initialized
397
+ */
398
+ isInitialized(): boolean;
399
+ }
400
+ /**
401
+ * Null crypto provider for when crypto is disabled
402
+ *
403
+ * All operations either throw or return permissive defaults.
404
+ */
405
+ declare class NullCryptoProvider implements ICryptoProvider {
406
+ private notConfiguredError;
407
+ generateIdentity(): Promise<{
408
+ did: string;
409
+ publicSigningKey: JsonWebKey;
410
+ publicEncryptionKey?: JsonWebKey;
411
+ }>;
412
+ getLocalDID(): string | null;
413
+ exportPublicIdentity(): Promise<SecureNodeInfo | null>;
414
+ registerRemoteNode(): Promise<void>;
415
+ getRemotePublicKey(): Promise<JsonWebKey | null>;
416
+ sign(): Promise<Uint8Array>;
417
+ signData<T>(_data: T): Promise<SignedSyncData<T>>;
418
+ verify(): Promise<boolean>;
419
+ verifySignedData(): Promise<boolean>;
420
+ encrypt(): Promise<{
421
+ alg: string;
422
+ ct: string;
423
+ iv: string;
424
+ tag: string;
425
+ epk?: JsonWebKey;
426
+ encryptedAt: number;
427
+ }>;
428
+ decrypt(): Promise<Uint8Array>;
429
+ getSessionKey(): Promise<Uint8Array>;
430
+ encryptWithSessionKey(): Promise<{
431
+ alg: string;
432
+ ct: string;
433
+ iv: string;
434
+ tag: string;
435
+ encryptedAt: number;
436
+ }>;
437
+ decryptWithSessionKey(): Promise<Uint8Array>;
438
+ createUCAN(): Promise<string>;
439
+ verifyUCAN(): Promise<AeonCapabilityResult>;
440
+ delegateCapabilities(): Promise<string>;
441
+ hash(): Promise<Uint8Array>;
442
+ randomBytes(length: number): Uint8Array;
443
+ isInitialized(): boolean;
444
444
  }
445
445
 
446
446
  export { AEON_CAPABILITIES, type AeonCapability, type AeonCapabilityResult, type AeonCryptoConfig, type AeonEncryptionMode, type AuthenticatedMessageFields, type Capability, DEFAULT_CRYPTO_CONFIG, type DID, type DecryptionResult, type DomainCategory, type ECKeyPair, type EncryptedPayload, type EncryptionAlgorithm, type ICryptoProvider, type Identity, type KeyPair, NullCryptoProvider, type SecureNodeInfo, type SecureSyncSession, type SignedSyncData, type SigningAlgorithm, type UCANPayload, type UCANToken, type VerificationResult };