@vaultsandbox/client 0.5.1 → 0.6.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 (47) hide show
  1. package/README.md +3 -1
  2. package/dist/client.d.ts +41 -12
  3. package/dist/client.js +97 -34
  4. package/dist/client.js.map +1 -1
  5. package/dist/crypto/constants.d.ts +52 -3
  6. package/dist/crypto/constants.js +56 -3
  7. package/dist/crypto/constants.js.map +1 -1
  8. package/dist/crypto/decrypt.d.ts +1 -0
  9. package/dist/crypto/decrypt.js +65 -6
  10. package/dist/crypto/decrypt.js.map +1 -1
  11. package/dist/crypto/keypair.d.ts +2 -7
  12. package/dist/crypto/keypair.js +9 -11
  13. package/dist/crypto/keypair.js.map +1 -1
  14. package/dist/crypto/signature.js +5 -3
  15. package/dist/crypto/signature.js.map +1 -1
  16. package/dist/crypto/utils.d.ts +1 -0
  17. package/dist/crypto/utils.js +7 -1
  18. package/dist/crypto/utils.js.map +1 -1
  19. package/dist/email.js +1 -0
  20. package/dist/email.js.map +1 -1
  21. package/dist/http/api-client.d.ts +2 -1
  22. package/dist/http/api-client.js +7 -2
  23. package/dist/http/api-client.js.map +1 -1
  24. package/dist/inbox.d.ts +71 -3
  25. package/dist/inbox.js +127 -7
  26. package/dist/inbox.js.map +1 -1
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/strategies/delivery-strategy.d.ts +4 -2
  30. package/dist/strategies/polling-strategy.d.ts +2 -2
  31. package/dist/strategies/polling-strategy.js +39 -18
  32. package/dist/strategies/polling-strategy.js.map +1 -1
  33. package/dist/strategies/sse-strategy.d.ts +7 -2
  34. package/dist/strategies/sse-strategy.js +108 -21
  35. package/dist/strategies/sse-strategy.js.map +1 -1
  36. package/dist/sync/inbox-sync.d.ts +31 -0
  37. package/dist/sync/inbox-sync.js +52 -0
  38. package/dist/sync/inbox-sync.js.map +1 -0
  39. package/dist/types/index.d.ts +21 -11
  40. package/dist/types/index.js.map +1 -1
  41. package/dist/utils/email-utils.d.ts +1 -1
  42. package/dist/utils/email-utils.js +9 -8
  43. package/dist/utils/email-utils.js.map +1 -1
  44. package/dist/utils/hash.d.ts +15 -0
  45. package/dist/utils/hash.js +31 -0
  46. package/dist/utils/hash.js.map +1 -0
  47. package/package.json +1 -1
package/dist/inbox.js CHANGED
@@ -2,9 +2,11 @@
2
2
  * Inbox class - manages email retrieval and decryption for a single inbox
3
3
  */
4
4
  import createDebug from 'debug';
5
- import { decryptRaw } from './crypto/decrypt.js';
5
+ import { decryptMetadata, decryptRaw } from './crypto/decrypt.js';
6
6
  import { decryptEmailData } from './utils/email-utils.js';
7
- import { toBase64 } from './crypto/utils.js';
7
+ import { toBase64Url } from './crypto/utils.js';
8
+ import { EXPORT_VERSION } from './crypto/constants.js';
9
+ import { computeEmailsHash } from './utils/hash.js';
8
10
  import { TimeoutError, StrategyError } from './types/index.js';
9
11
  const debug = createDebug('vaultsandbox:inbox');
10
12
  /**
@@ -24,6 +26,7 @@ export class Inbox {
24
26
  apiClient;
25
27
  serverPublicKey;
26
28
  strategy = null;
29
+ emailCache = new Map();
27
30
  /**
28
31
  * @internal
29
32
  * Do not construct this class directly. Use `VaultSandboxClient.createInbox()` instead.
@@ -47,13 +50,13 @@ export class Inbox {
47
50
  debug('Set delivery strategy for inbox %s', this.emailAddress);
48
51
  }
49
52
  /**
50
- * Retrieves all emails from the inbox.
53
+ * Retrieves all emails from the inbox with full content.
51
54
  *
52
55
  * @returns A promise that resolves to an array of `Email` instances.
53
56
  */
54
57
  async listEmails() {
55
58
  debug('Listing emails for inbox %s', this.emailAddress);
56
- const emailsData = await this.apiClient.listEmails(this.emailAddress);
59
+ const emailsData = await this.apiClient.listEmails(this.emailAddress, true);
57
60
  debug('Retrieved %d raw email data entries', emailsData.length);
58
61
  const emails = [];
59
62
  for (const emailData of emailsData) {
@@ -63,6 +66,29 @@ export class Inbox {
63
66
  debug('Successfully decrypted %d emails for inbox %s', emails.length, this.emailAddress);
64
67
  return emails;
65
68
  }
69
+ /**
70
+ * Retrieves all emails from the inbox with metadata only (no content).
71
+ *
72
+ * @returns A promise that resolves to an array of email metadata.
73
+ */
74
+ async listEmailsMetadataOnly() {
75
+ debug('Listing email metadata for inbox %s', this.emailAddress);
76
+ const emailsData = await this.apiClient.listEmails(this.emailAddress, false);
77
+ debug('Retrieved %d raw email data entries', emailsData.length);
78
+ const emails = [];
79
+ for (const emailData of emailsData) {
80
+ const metadata = await decryptMetadata(emailData.encryptedMetadata, this.keypair);
81
+ emails.push({
82
+ id: emailData.id,
83
+ from: metadata.from,
84
+ subject: metadata.subject,
85
+ receivedAt: new Date(metadata.receivedAt ?? emailData.receivedAt),
86
+ isRead: emailData.isRead,
87
+ });
88
+ }
89
+ debug('Successfully decrypted %d email metadata for inbox %s', emails.length, this.emailAddress);
90
+ return emails;
91
+ }
66
92
  /**
67
93
  * Retrieves a specific email by its ID.
68
94
  *
@@ -130,6 +156,7 @@ export class Inbox {
130
156
  let subscription;
131
157
  let timeoutTimer;
132
158
  // Centralized cleanup to prevent memory leaks
159
+ /* istanbul ignore next 4 - defensive checks for race conditions */
133
160
  const cleanup = () => {
134
161
  if (timeoutTimer)
135
162
  clearTimeout(timeoutTimer);
@@ -209,17 +236,17 @@ export class Inbox {
209
236
  }
210
237
  /**
211
238
  * Exports this inbox, including its key material, for backup/sharing.
212
- * Keys are returned in plain base64 to keep import/export symmetric.
239
+ * See vaultsandbox-spec.md Section 9: Inbox Export Format
213
240
  */
214
241
  export() {
215
242
  debug('Exporting inbox %s with key material', this.emailAddress);
216
243
  const exportedData = {
244
+ version: EXPORT_VERSION,
217
245
  emailAddress: this.emailAddress,
218
246
  expiresAt: this.expiresAt.toISOString(),
219
247
  inboxHash: this.inboxHash,
220
248
  serverSigPk: this.serverPublicKey,
221
- publicKeyB64: toBase64(this.keypair.publicKey),
222
- secretKeyB64: toBase64(this.keypair.secretKey),
249
+ secretKey: toBase64Url(this.keypair.secretKey),
223
250
  exportedAt: new Date().toISOString(),
224
251
  };
225
252
  debug('Successfully exported inbox %s', this.emailAddress);
@@ -239,5 +266,98 @@ export class Inbox {
239
266
  debug('Sync status for inbox %s: %d emails, hash: %s', this.emailAddress, syncStatus.emailCount, syncStatus.emailsHash);
240
267
  return syncStatus;
241
268
  }
269
+ // ===== Email Cache Management =====
270
+ /**
271
+ * Gets all email IDs currently in the local cache.
272
+ *
273
+ * @returns An array of email IDs.
274
+ */
275
+ getEmailIds() {
276
+ return Array.from(this.emailCache.keys());
277
+ }
278
+ /**
279
+ * Gets the local email cache.
280
+ *
281
+ * @returns The email cache map.
282
+ * @internal
283
+ */
284
+ getEmailCache() {
285
+ return this.emailCache;
286
+ }
287
+ /**
288
+ * Adds an email to the local cache.
289
+ *
290
+ * @param email - The email data to add.
291
+ * @returns `true` if the email was added, `false` if it already existed.
292
+ */
293
+ addEmail(email) {
294
+ if (this.emailCache.has(email.id)) {
295
+ debug('Email %s already exists in cache for inbox %s', email.id, this.emailAddress);
296
+ return false;
297
+ }
298
+ this.emailCache.set(email.id, email);
299
+ debug('Added email %s to cache for inbox %s', email.id, this.emailAddress);
300
+ return true;
301
+ }
302
+ /**
303
+ * Removes an email from the local cache.
304
+ *
305
+ * @param emailId - The ID of the email to remove.
306
+ * @returns `true` if the email was removed, `false` if it didn't exist.
307
+ */
308
+ removeEmail(emailId) {
309
+ const removed = this.emailCache.delete(emailId);
310
+ if (removed) {
311
+ debug('Removed email %s from cache for inbox %s', emailId, this.emailAddress);
312
+ }
313
+ return removed;
314
+ }
315
+ /**
316
+ * Checks if an email exists in the local cache.
317
+ *
318
+ * @param emailId - The ID of the email to check.
319
+ * @returns `true` if the email exists, `false` otherwise.
320
+ */
321
+ hasEmail(emailId) {
322
+ return this.emailCache.has(emailId);
323
+ }
324
+ /**
325
+ * Computes the hash of the local email cache.
326
+ *
327
+ * This hash can be compared with the server's hash to detect changes.
328
+ * Uses the algorithm: BASE64URL(SHA256(SORT(emailIds).join(",")))
329
+ *
330
+ * @returns The computed hash of local email IDs.
331
+ */
332
+ computeLocalHash() {
333
+ const hash = computeEmailsHash(this.getEmailIds());
334
+ debug('Computed local hash for inbox %s: %s', this.emailAddress, hash);
335
+ return hash;
336
+ }
337
+ /**
338
+ * Clears all emails from the local cache.
339
+ */
340
+ clearEmailCache() {
341
+ this.emailCache.clear();
342
+ debug('Cleared email cache for inbox %s', this.emailAddress);
343
+ }
344
+ /**
345
+ * Gets the keypair for this inbox.
346
+ *
347
+ * @returns The keypair.
348
+ * @internal
349
+ */
350
+ getKeypair() {
351
+ return this.keypair;
352
+ }
353
+ /**
354
+ * Gets the API client for this inbox.
355
+ *
356
+ * @returns The API client.
357
+ * @internal
358
+ */
359
+ getApiClient() {
360
+ return this.apiClient;
361
+ }
242
362
  }
243
363
  //# sourceMappingURL=inbox.js.map
package/dist/inbox.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../src/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../src/inbox.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  export { VaultSandboxClient, InboxMonitor } from './client.js';
7
7
  export { Inbox } from './inbox.js';
8
8
  export { Email } from './email.js';
9
- export type { ClientConfig, CreateInboxOptions, InboxData, SyncStatus, WaitOptions, WaitForCountOptions, IEmail, AttachmentData, RawEmail, SPFResult, DKIMResult, DMARCResult, ReverseDNSResult, AuthResultsData, AuthResults, AuthValidation, ServerInfo, Subscription, ExportedInboxData, } from './types/index.js';
9
+ export type { ClientConfig, CreateInboxOptions, InboxData, SyncStatus, WaitOptions, WaitForCountOptions, IEmail, IEmailMetadata, AttachmentData, RawEmail, SPFResult, DKIMResult, DMARCResult, ReverseDNSResult, AuthResultsData, AuthResults, AuthValidation, ServerInfo, Subscription, ExportedInboxData, } from './types/index.js';
10
10
  export { VaultSandboxError, ApiError, NetworkError, TimeoutError, DecryptionError, SignatureVerificationError, InboxNotFoundError, EmailNotFoundError, InboxAlreadyExistsError, InvalidImportDataError, StrategyError, SSEError, } from './types/index.js';
11
11
  export { generateKeypair } from './crypto/keypair.js';
12
12
  export { decrypt, decryptMetadata, decryptParsed, decryptRaw } from './crypto/decrypt.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAyBnC,0EAA0E;AAC1E,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA0BnC,0EAA0E;AAC1E,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { IEmail, WaitOptions, Subscription, Keypair } from '../types/index.js';
1
+ import type { IEmail, WaitOptions, Subscription, Keypair, EmailData } from '../types/index.js';
2
2
  /**
3
3
  * DeliveryStrategy defines the interface for email delivery mechanisms.
4
4
  * Implementations include SSE (real-time) and Polling (fallback).
@@ -19,9 +19,11 @@ export interface DeliveryStrategy {
19
19
  * @param inboxHash - The inbox hash for SSE subscription
20
20
  * @param keypair - Keypair for decryption
21
21
  * @param callback - Function to call when new email arrives
22
+ * @param emailCache - Optional local email cache for sync operations
23
+ * @param onEmailDeleted - Optional callback when email is deleted from server
22
24
  * @returns Subscription object with unsubscribe method
23
25
  */
24
- subscribe(emailAddress: string, inboxHash: string, keypair: Keypair, callback: (email: IEmail) => void | Promise<void>): Subscription;
26
+ subscribe(emailAddress: string, inboxHash: string, keypair: Keypair, callback: (email: IEmail) => void | Promise<void>, emailCache?: Map<string, EmailData>, onEmailDeleted?: (emailId: string) => void): Subscription;
25
27
  /**
26
28
  * Close and cleanup resources
27
29
  */
@@ -2,7 +2,7 @@
2
2
  * PollingStrategy - Smart polling implementation with exponential backoff
3
3
  */
4
4
  import type { ApiClient } from '../http/api-client.js';
5
- import type { Keypair, IEmail, WaitOptions, Subscription } from '../types/index.js';
5
+ import type { Keypair, EmailData, IEmail, WaitOptions, Subscription } from '../types/index.js';
6
6
  import type { DeliveryStrategy } from './delivery-strategy.js';
7
7
  export interface PollingConfig {
8
8
  initialInterval?: number;
@@ -28,7 +28,7 @@ export declare class PollingStrategy implements DeliveryStrategy {
28
28
  /**
29
29
  * Subscribe to new email notifications (polling-based)
30
30
  */
31
- subscribe(emailAddress: string, _inboxHash: string, keypair: Keypair, callback: (email: IEmail) => void | Promise<void>): Subscription;
31
+ subscribe(emailAddress: string, _inboxHash: string, keypair: Keypair, callback: (email: IEmail) => void | Promise<void>, emailCache?: Map<string, EmailData>, onEmailDeleted?: (emailId: string) => void): Subscription;
32
32
  /**
33
33
  * Close and cleanup resources
34
34
  */
@@ -5,6 +5,7 @@ import createDebug from 'debug';
5
5
  import { TimeoutError, InboxNotFoundError } from '../types/index.js';
6
6
  import { decryptEmailData, findMatchingEmail } from '../utils/email-utils.js';
7
7
  import { sleep } from '../utils/sleep.js';
8
+ import { syncInbox } from '../sync/inbox-sync.js';
8
9
  const debug = createDebug('vaultsandbox:polling-strategy');
9
10
  export class PollingStrategy {
10
11
  apiClient;
@@ -23,6 +24,7 @@ export class PollingStrategy {
23
24
  * Waits for an email matching the specified criteria using smart polling
24
25
  */
25
26
  async waitForEmail(emailAddress, _inboxHash, keypair, options = {}) {
27
+ /* istanbul ignore next 2 - compile-time defaults, only one branch taken per execution */
26
28
  const timeout = options.timeout ?? 30000;
27
29
  const pollInterval = options.pollInterval ?? this.initialInterval;
28
30
  const startTime = Date.now();
@@ -36,8 +38,8 @@ export class PollingStrategy {
36
38
  if (lastHash === null || syncStatus.emailsHash !== lastHash) {
37
39
  lastHash = syncStatus.emailsHash;
38
40
  if (syncStatus.emailCount > 0) {
39
- // Hash changed - fetch full email list
40
- const emailsData = await this.apiClient.listEmails(emailAddress);
41
+ // Hash changed - fetch full email list with content
42
+ const emailsData = await this.apiClient.listEmails(emailAddress, true);
41
43
  const emails = await this.decryptEmails(emailsData, keypair, emailAddress);
42
44
  const matchingEmail = findMatchingEmail(emails, options);
43
45
  if (matchingEmail) {
@@ -50,6 +52,7 @@ export class PollingStrategy {
50
52
  // Calculate remaining time before timeout
51
53
  const remainingTime = timeout - (Date.now() - startTime);
52
54
  // If we've already exceeded timeout, exit immediately
55
+ /* istanbul ignore next - race condition guard between loop condition and remaining time calculation */
53
56
  if (remainingTime <= 0) {
54
57
  break;
55
58
  }
@@ -61,6 +64,9 @@ export class PollingStrategy {
61
64
  // Wait before next poll
62
65
  await sleep(waitTime);
63
66
  // Increase backoff for next iteration (if no changes detected)
67
+ // Note: This condition is always true when reached because lastHash is set to
68
+ // syncStatus.emailsHash above, or the if-block was skipped because they were equal
69
+ /* istanbul ignore else - false branch unreachable with current logic */
64
70
  if (syncStatus.emailsHash === lastHash) {
65
71
  currentBackoff = Math.min(currentBackoff * this.backoffMultiplier, this.maxBackoff);
66
72
  }
@@ -92,30 +98,45 @@ export class PollingStrategy {
92
98
  /**
93
99
  * Subscribe to new email notifications (polling-based)
94
100
  */
95
- subscribe(emailAddress, _inboxHash, keypair, callback) {
101
+ subscribe(emailAddress, _inboxHash, keypair, callback, emailCache, onEmailDeleted) {
96
102
  let isActive = true;
103
+ const localCache = emailCache ?? new Map();
97
104
  const seenEmails = new Set();
98
105
  // Start polling loop
99
106
  const poll = async () => {
100
107
  while (isActive) {
101
108
  try {
102
- const emailsData = await this.apiClient.listEmails(emailAddress);
103
- const emails = await this.decryptEmails(emailsData, keypair, emailAddress);
104
- // Notify about new emails we haven't seen
105
- for (const email of emails) {
106
- if (!seenEmails.has(email.id)) {
107
- seenEmails.add(email.id);
108
- try {
109
- const result = callback(email);
110
- // Handle case where callback returns a promise
111
- if (result instanceof Promise) {
112
- result.catch((error) => {
113
- debug('Error in async subscription callback: %O', error);
114
- });
109
+ // Use hash-based sync to detect changes efficiently
110
+ const result = await syncInbox(this.apiClient, emailAddress, localCache);
111
+ if (!result.unchanged) {
112
+ // Process new emails
113
+ for (const emailData of result.added) {
114
+ if (!seenEmails.has(emailData.id)) {
115
+ seenEmails.add(emailData.id);
116
+ localCache.set(emailData.id, emailData);
117
+ try {
118
+ // Fetch full email content for new emails
119
+ const fullEmailData = await this.apiClient.getEmail(emailAddress, emailData.id);
120
+ const email = await decryptEmailData(fullEmailData, keypair, emailAddress, this.apiClient);
121
+ const callbackResult = callback(email);
122
+ // Handle case where callback returns a promise
123
+ if (callbackResult instanceof Promise) {
124
+ callbackResult.catch((error) => {
125
+ debug('Error in async subscription callback: %O', error);
126
+ });
127
+ }
128
+ }
129
+ catch (error) {
130
+ debug('Error processing new email %s: %O', emailData.id, error);
115
131
  }
116
132
  }
117
- catch (error) {
118
- debug('Error in subscription callback: %O', error);
133
+ }
134
+ // Process deleted emails
135
+ for (const emailId of result.deleted) {
136
+ localCache.delete(emailId);
137
+ seenEmails.delete(emailId);
138
+ if (onEmailDeleted) {
139
+ onEmailDeleted(emailId);
119
140
  }
120
141
  }
121
142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"polling-strategy.js","sourceRoot":"","sources":["../../src/strategies/polling-strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"polling-strategy.js","sourceRoot":"","sources":["../../src/strategies/polling-strategy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ApiClient } from '../http/api-client.js';
2
- import type { Keypair, IEmail, WaitOptions, Subscription, SSEConfig } from '../types/index.js';
2
+ import type { Keypair, IEmail, WaitOptions, Subscription, SSEConfig, EmailData } from '../types/index.js';
3
3
  import type { DeliveryStrategy } from './delivery-strategy.js';
4
4
  export declare class SSEStrategy implements DeliveryStrategy {
5
5
  private apiClient;
@@ -21,7 +21,7 @@ export declare class SSEStrategy implements DeliveryStrategy {
21
21
  /**
22
22
  * Subscribe to new email notifications for a specific inbox
23
23
  */
24
- subscribe(emailAddress: string, inboxHash: string, keypair: Keypair, callback: (email: IEmail) => void | Promise<void>): Subscription;
24
+ subscribe(emailAddress: string, inboxHash: string, keypair: Keypair, callback: (email: IEmail) => void | Promise<void>, emailCache?: Map<string, EmailData>, onEmailDeleted?: (emailId: string) => void): Subscription;
25
25
  /**
26
26
  * Connect to SSE endpoint
27
27
  */
@@ -34,6 +34,11 @@ export declare class SSEStrategy implements DeliveryStrategy {
34
34
  * Handle connection error and attempt reconnection
35
35
  */
36
36
  private handleConnectionError;
37
+ /**
38
+ * Sync all subscribed inboxes after reconnection.
39
+ * This catches any emails that arrived during the disconnect window.
40
+ */
41
+ private syncAllInboxes;
37
42
  /**
38
43
  * Reconnect with updated inbox list
39
44
  */