internxt-crypto 0.0.8-alpha → 0.0.10-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 (100) hide show
  1. package/README.md +0 -2
  2. package/dist/asymmetric-crypto.d.mts +41 -0
  3. package/dist/asymmetric-crypto.d.ts +41 -0
  4. package/dist/asymmetric-crypto.js +92 -0
  5. package/dist/asymmetric-crypto.js.map +1 -0
  6. package/dist/asymmetric-crypto.mjs +85 -0
  7. package/dist/asymmetric-crypto.mjs.map +1 -0
  8. package/dist/constants.d.mts +39 -0
  9. package/dist/constants.d.ts +39 -0
  10. package/dist/constants.js +80 -0
  11. package/dist/constants.js.map +1 -0
  12. package/dist/constants.mjs +42 -0
  13. package/dist/constants.mjs.map +1 -0
  14. package/dist/derive-key.d.mts +91 -0
  15. package/dist/derive-key.d.ts +91 -0
  16. package/dist/derive-key.js +795 -0
  17. package/dist/derive-key.js.map +1 -0
  18. package/dist/derive-key.mjs +784 -0
  19. package/dist/derive-key.mjs.map +1 -0
  20. package/dist/email-crypto.d.mts +106 -0
  21. package/dist/email-crypto.d.ts +106 -0
  22. package/dist/email-crypto.js +1409 -0
  23. package/dist/email-crypto.js.map +1 -0
  24. package/dist/email-crypto.mjs +1381 -0
  25. package/dist/email-crypto.mjs.map +1 -0
  26. package/dist/email-search.d.mts +228 -0
  27. package/dist/email-search.d.ts +228 -0
  28. package/dist/email-search.js +605 -0
  29. package/dist/email-search.js.map +1 -0
  30. package/dist/email-search.mjs +580 -0
  31. package/dist/email-search.mjs.map +1 -0
  32. package/dist/email-service.d.mts +38 -0
  33. package/dist/email-service.d.ts +38 -0
  34. package/dist/email-service.js +154 -0
  35. package/dist/email-service.js.map +1 -0
  36. package/dist/email-service.mjs +147 -0
  37. package/dist/email-service.mjs.map +1 -0
  38. package/dist/hash.d.mts +59 -0
  39. package/dist/hash.d.ts +59 -0
  40. package/dist/hash.js +95 -0
  41. package/dist/hash.js.map +1 -0
  42. package/dist/hash.mjs +85 -0
  43. package/dist/hash.mjs.map +1 -0
  44. package/dist/index.d.mts +35 -0
  45. package/dist/index.d.ts +35 -0
  46. package/dist/index.js +2697 -2054
  47. package/dist/index.js.map +1 -1
  48. package/dist/index.mjs +2138 -8187
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/keystore-crypto.d.mts +66 -0
  51. package/dist/keystore-crypto.d.ts +66 -0
  52. package/dist/keystore-crypto.js +530 -0
  53. package/dist/keystore-crypto.js.map +1 -0
  54. package/dist/keystore-crypto.mjs +501 -0
  55. package/dist/keystore-crypto.mjs.map +1 -0
  56. package/dist/keystore-service.d.mts +82 -0
  57. package/dist/keystore-service.d.ts +82 -0
  58. package/dist/keystore-service.js +349 -0
  59. package/dist/keystore-service.js.map +1 -0
  60. package/dist/keystore-service.mjs +342 -0
  61. package/dist/keystore-service.mjs.map +1 -0
  62. package/dist/kyber768-B87rMQ7u.d.mts +30 -0
  63. package/dist/kyber768-B87rMQ7u.d.ts +30 -0
  64. package/dist/post-quantum-crypto.d.mts +72 -0
  65. package/dist/post-quantum-crypto.d.ts +72 -0
  66. package/dist/post-quantum-crypto.js +96 -0
  67. package/dist/post-quantum-crypto.js.map +1 -0
  68. package/dist/post-quantum-crypto.mjs +90 -0
  69. package/dist/post-quantum-crypto.mjs.map +1 -0
  70. package/dist/storage-service.d.mts +53 -0
  71. package/dist/storage-service.d.ts +53 -0
  72. package/dist/storage-service.js +70 -0
  73. package/dist/storage-service.js.map +1 -0
  74. package/dist/storage-service.mjs +67 -0
  75. package/dist/storage-service.mjs.map +1 -0
  76. package/dist/symmetric-crypto.d.mts +56 -0
  77. package/dist/symmetric-crypto.d.ts +56 -0
  78. package/dist/symmetric-crypto.js +142 -0
  79. package/dist/symmetric-crypto.js.map +1 -0
  80. package/dist/symmetric-crypto.mjs +134 -0
  81. package/dist/symmetric-crypto.mjs.map +1 -0
  82. package/dist/types.d.mts +102 -0
  83. package/dist/types.d.ts +102 -0
  84. package/dist/types.js +14 -0
  85. package/dist/types.js.map +1 -0
  86. package/dist/types.mjs +12 -0
  87. package/dist/types.mjs.map +1 -0
  88. package/dist/utils-BDaK_d6T.d.ts +114 -0
  89. package/dist/utils-v34IRTIx.d.mts +114 -0
  90. package/dist/utils.d.mts +140 -0
  91. package/dist/utils.d.ts +140 -0
  92. package/dist/utils.js +313 -0
  93. package/dist/utils.js.map +1 -0
  94. package/dist/utils.mjs +273 -0
  95. package/dist/utils.mjs.map +1 -0
  96. package/package.json +83 -7
  97. package/dist/__vite-browser-external-Dyvby5gX.js +0 -2
  98. package/dist/__vite-browser-external-Dyvby5gX.js.map +0 -1
  99. package/dist/__vite-browser-external-l0sNRNKZ.mjs +0 -2
  100. package/dist/__vite-browser-external-l0sNRNKZ.mjs.map +0 -1
@@ -0,0 +1,228 @@
1
+ import { IDBPDatabase, DBSchema } from 'idb';
2
+ import { StoredEmail, Email, MailCache, EmailSearchResult } from './types.mjs';
3
+ import { Index } from 'flexsearch';
4
+
5
+ type MailDB = IDBPDatabase<EncryptedSearchDB>;
6
+ interface EncryptedSearchDB extends DBSchema {
7
+ email: {
8
+ key: string;
9
+ value: StoredEmail;
10
+ indexes: {
11
+ byTime: number[];
12
+ };
13
+ };
14
+ }
15
+ /**
16
+ * Opens IndexedDB database for the given user
17
+ *
18
+ * @param userID - The user ID
19
+ * @returns The database
20
+ */
21
+ declare const openDatabase: (userID: string) => Promise<MailDB>;
22
+ /**
23
+ * Closes the IndexedDB database
24
+ *
25
+ * @param esDB - The database
26
+ */
27
+ declare const closeDatabase: (esDB: MailDB) => void;
28
+ /**
29
+ * Deletes IndexedDB database for the given user
30
+ *
31
+ * @param userID - The user ID
32
+ * @returns The database
33
+ */
34
+ declare const deleteDatabase: (userID: string) => Promise<void>;
35
+ /**
36
+ * Derives database encryption key for the given user
37
+ *
38
+ * @param userID - The user ID
39
+ * @returns The symmetric CryptoKey for protecting database
40
+ */
41
+ declare const deriveIndexKey: (baseKey: Uint8Array) => Promise<CryptoKey>;
42
+ /**
43
+ * Encrypts the given email and stores it in the IndexedDB database
44
+ *
45
+ * @param newEmailToStore - The email for storing
46
+ * @param indexKey - The symmetric CryptoKey key for protecting database
47
+ * @param esDB - The database
48
+ */
49
+ declare const encryptAndStoreEmail: (newEmailToStore: Email, indexKey: CryptoKey, esDB: MailDB) => Promise<void>;
50
+ /**
51
+ * Encrypts the given set of emails and stores it in the IndexedDB database
52
+ *
53
+ * @param newEmailsToStore - The set of emails for storing
54
+ * @param indexKey - The symmetric CryptoKey key for protecting database
55
+ * @param esDB - The database
56
+ */
57
+ declare const encryptAndStoreManyEmail: (newEmailsToStore: Email[], indexKey: CryptoKey, esDB: MailDB) => Promise<void>;
58
+ /**
59
+ * Fetches the email from the database and decrypts it
60
+ *
61
+ * @param emailID - The email identifier
62
+ * @param indexKey - The symmetric CryptoKey key for protecting database
63
+ * @param encryptedEmail - The encrypted email
64
+ * @returns The decrypted email
65
+ */
66
+ declare const getAndDecryptEmail: (emailID: string, indexKey: CryptoKey, esDB: MailDB) => Promise<Email>;
67
+ /**
68
+ * Fetches all email from the database and decrypts them
69
+ *
70
+ * @param indexKey - The symmetric CryptoKey key for protecting database
71
+ * @param esDB - The database
72
+ * @returns The decrypted emails
73
+ */
74
+ declare const getAndDecryptAllEmails: (indexKey: CryptoKey, esDB: MailDB) => Promise<Email[]>;
75
+ /**
76
+ * Deletes the email from the database
77
+ *
78
+ * @param emailID - The email identifier
79
+ * @param esDB - The database
80
+ */
81
+ declare const deleteEmail: (emailID: string, esDB: MailDB) => Promise<void>;
82
+ /**
83
+ * Returns the number of stored email
84
+ *
85
+ * @param esDB - The database
86
+ * @returns The number of stored emails
87
+ */
88
+ declare const getEmailCount: (esDB: MailDB) => Promise<number>;
89
+ /**
90
+ * Removes the given number of oldests emails from the database
91
+ *
92
+ * @param emailsToDelete - The number of emails to delete
93
+ * @param esDB - The database
94
+ */
95
+ declare const deleteOldestEmails: (emailsToDelete: number, esDB: MailDB) => Promise<void>;
96
+ /**
97
+ * Enforces the maximum email number in the database
98
+ *
99
+ * @param esDB - The database
100
+ * @param max - The maximum allowed number of emails
101
+ */
102
+ declare const enforceMaxEmailNumber: (esDB: MailDB, max: number) => Promise<void>;
103
+ /**
104
+ * Fetches all emails from the database, decrypts them and sortes the results based on the creation time (newest first)
105
+ *
106
+ * @param esDB - The database
107
+ * @param indexKey - The symmetric CryptoKey key for protecting database
108
+ * @returns The number of stored emails
109
+ */
110
+ declare const getAllEmailsSortedNewestFirst: (esDB: MailDB, indexKey: CryptoKey) => Promise<Email[]>;
111
+ /**
112
+ * Fetches all emails from the database, decrypts them and sortes the results based on the creation time (oldest first)
113
+ *
114
+ * @param esDB - The database
115
+ * @param indexKey - The symmetric CryptoKey key for protecting database
116
+ * @returns The number of stored emails
117
+ */
118
+ declare const getAllEmailsSortedOldestFirst: (esDB: MailDB, indexKey: CryptoKey) => Promise<Email[]>;
119
+ /**
120
+ * Fetches a batch of emails from the database, decrypts them and sortes the results based on the creation time (newest first)
121
+ *
122
+ * @param esDB - The database
123
+ * @param indexKey - The symmetric CryptoKey key for protecting database
124
+ * @param batchSize - The size of the batch
125
+ * @param startCursor - The starting point (optional). If not given, starts from the beginning
126
+ * @returns The number of stored emails
127
+ */
128
+ declare const getEmailBatch: (esDB: MailDB, indexKey: CryptoKey, batchSize: number, startCursor?: IDBValidKey) => Promise<{
129
+ emails: Email[];
130
+ nextCursor?: IDBValidKey;
131
+ }>;
132
+
133
+ /**
134
+ * Fetches all emails from the database in batches and cahces them
135
+ *
136
+ * @param indexKey - The symmetric CryptoKey key for protecting database
137
+ * @param esCache - The cache to add emails too
138
+ * @param esDB - The database
139
+ */
140
+ declare const createCacheFromDB: (indexKey: CryptoKey, esDB: MailDB) => Promise<MailCache<Email>>;
141
+ /**
142
+ * Gets an email from the cache
143
+ *
144
+ * @param emailID - The email identifier
145
+ * @param esCache - The email cache
146
+ * @returns The found email or throws an error
147
+ */
148
+ declare const getEmailFromCache: (emailID: string, esCache: MailCache<Email>) => Promise<Email>;
149
+ /**
150
+ * Removes the email from cache
151
+ *
152
+ * @param emailID - The email identifier
153
+ * @param esCache - The email cache
154
+ */
155
+ declare const deleteEmailFromCache: (emailID: string, esCache: MailCache<Email>) => Promise<void>;
156
+ /**
157
+ * Adds emails to the cache
158
+ *
159
+ * @param emails - The emails to add
160
+ * @param esCache - The email cache
161
+ * @returns TRUE if all emails were added sucessfully, or FALSE and error reason.
162
+ */
163
+ declare function addEmailsToCache(emails: Email[], esCache: MailCache<Email>): {
164
+ success: boolean;
165
+ reason?: string;
166
+ };
167
+ /**
168
+ * Adds email to the cache
169
+ *
170
+ * @param email - The email to add
171
+ * @param esCache - The email cache
172
+ * @returns TRUE if the email was added sucessfully, or FALSE and error reason.
173
+ */
174
+ declare const addEmailToCache: (email: Email, esCache: MailCache<Email>) => {
175
+ success: boolean;
176
+ reason?: string;
177
+ };
178
+
179
+ interface EmailSearchIndex {
180
+ subjectIndex: Index;
181
+ bodyIndex: Index;
182
+ fromIndex: Index;
183
+ toIndex: Index;
184
+ isReady: boolean;
185
+ }
186
+ /**
187
+ * Adds the given email to the email search index
188
+ *
189
+ * @param email - The email to add
190
+ * @param searchIndex - The email search index
191
+ */
192
+ declare const addEmailToSearchIndex: (email: Email, searchIndex: EmailSearchIndex) => void;
193
+ /**
194
+ * Removes the email from the email search index
195
+ *
196
+ * @param emailID - The email identifier
197
+ * @param searchIndex - The email search index
198
+ */
199
+ declare const removeEmailFromSearchIndex: (emailID: string, searchIndex: EmailSearchIndex) => void;
200
+ /**
201
+ * Buils the email search index from the email cache
202
+ *
203
+ * @param esCache - The email cache
204
+ * @returns The email search index
205
+ */
206
+ declare const buildSearchIndexFromCache: (esCache: MailCache<Email>) => Promise<EmailSearchIndex>;
207
+ interface SearchOptions {
208
+ fields?: ('subject' | 'body' | 'from' | 'to')[];
209
+ limit?: number;
210
+ boost?: {
211
+ subject?: number;
212
+ body?: number;
213
+ from?: number;
214
+ to?: number;
215
+ };
216
+ }
217
+ /**
218
+ * Searches in teh
219
+ *
220
+ * @param query - The string to search for
221
+ * @param esCache - The email cache
222
+ * @param searchIndex - The email search index
223
+ * @param opetions - The optional search limitations
224
+ * @returns The result of the email search (emails ans their corresponding result weights)
225
+ */
226
+ declare const searchEmails: (query: string, esCache: MailCache<Email>, searchIndex: EmailSearchIndex, options?: SearchOptions) => Promise<EmailSearchResult[]>;
227
+
228
+ export { type EmailSearchIndex, type EncryptedSearchDB, type MailDB, type SearchOptions, addEmailToCache, addEmailToSearchIndex, addEmailsToCache, buildSearchIndexFromCache, closeDatabase, createCacheFromDB, deleteDatabase, deleteEmail, deleteEmailFromCache, deleteOldestEmails, deriveIndexKey, encryptAndStoreEmail, encryptAndStoreManyEmail, enforceMaxEmailNumber, getAllEmailsSortedNewestFirst, getAllEmailsSortedOldestFirst, getAndDecryptAllEmails, getAndDecryptEmail, getEmailBatch, getEmailCount, getEmailFromCache, openDatabase, removeEmailFromSearchIndex, searchEmails };
@@ -0,0 +1,228 @@
1
+ import { IDBPDatabase, DBSchema } from 'idb';
2
+ import { StoredEmail, Email, MailCache, EmailSearchResult } from './types.js';
3
+ import { Index } from 'flexsearch';
4
+
5
+ type MailDB = IDBPDatabase<EncryptedSearchDB>;
6
+ interface EncryptedSearchDB extends DBSchema {
7
+ email: {
8
+ key: string;
9
+ value: StoredEmail;
10
+ indexes: {
11
+ byTime: number[];
12
+ };
13
+ };
14
+ }
15
+ /**
16
+ * Opens IndexedDB database for the given user
17
+ *
18
+ * @param userID - The user ID
19
+ * @returns The database
20
+ */
21
+ declare const openDatabase: (userID: string) => Promise<MailDB>;
22
+ /**
23
+ * Closes the IndexedDB database
24
+ *
25
+ * @param esDB - The database
26
+ */
27
+ declare const closeDatabase: (esDB: MailDB) => void;
28
+ /**
29
+ * Deletes IndexedDB database for the given user
30
+ *
31
+ * @param userID - The user ID
32
+ * @returns The database
33
+ */
34
+ declare const deleteDatabase: (userID: string) => Promise<void>;
35
+ /**
36
+ * Derives database encryption key for the given user
37
+ *
38
+ * @param userID - The user ID
39
+ * @returns The symmetric CryptoKey for protecting database
40
+ */
41
+ declare const deriveIndexKey: (baseKey: Uint8Array) => Promise<CryptoKey>;
42
+ /**
43
+ * Encrypts the given email and stores it in the IndexedDB database
44
+ *
45
+ * @param newEmailToStore - The email for storing
46
+ * @param indexKey - The symmetric CryptoKey key for protecting database
47
+ * @param esDB - The database
48
+ */
49
+ declare const encryptAndStoreEmail: (newEmailToStore: Email, indexKey: CryptoKey, esDB: MailDB) => Promise<void>;
50
+ /**
51
+ * Encrypts the given set of emails and stores it in the IndexedDB database
52
+ *
53
+ * @param newEmailsToStore - The set of emails for storing
54
+ * @param indexKey - The symmetric CryptoKey key for protecting database
55
+ * @param esDB - The database
56
+ */
57
+ declare const encryptAndStoreManyEmail: (newEmailsToStore: Email[], indexKey: CryptoKey, esDB: MailDB) => Promise<void>;
58
+ /**
59
+ * Fetches the email from the database and decrypts it
60
+ *
61
+ * @param emailID - The email identifier
62
+ * @param indexKey - The symmetric CryptoKey key for protecting database
63
+ * @param encryptedEmail - The encrypted email
64
+ * @returns The decrypted email
65
+ */
66
+ declare const getAndDecryptEmail: (emailID: string, indexKey: CryptoKey, esDB: MailDB) => Promise<Email>;
67
+ /**
68
+ * Fetches all email from the database and decrypts them
69
+ *
70
+ * @param indexKey - The symmetric CryptoKey key for protecting database
71
+ * @param esDB - The database
72
+ * @returns The decrypted emails
73
+ */
74
+ declare const getAndDecryptAllEmails: (indexKey: CryptoKey, esDB: MailDB) => Promise<Email[]>;
75
+ /**
76
+ * Deletes the email from the database
77
+ *
78
+ * @param emailID - The email identifier
79
+ * @param esDB - The database
80
+ */
81
+ declare const deleteEmail: (emailID: string, esDB: MailDB) => Promise<void>;
82
+ /**
83
+ * Returns the number of stored email
84
+ *
85
+ * @param esDB - The database
86
+ * @returns The number of stored emails
87
+ */
88
+ declare const getEmailCount: (esDB: MailDB) => Promise<number>;
89
+ /**
90
+ * Removes the given number of oldests emails from the database
91
+ *
92
+ * @param emailsToDelete - The number of emails to delete
93
+ * @param esDB - The database
94
+ */
95
+ declare const deleteOldestEmails: (emailsToDelete: number, esDB: MailDB) => Promise<void>;
96
+ /**
97
+ * Enforces the maximum email number in the database
98
+ *
99
+ * @param esDB - The database
100
+ * @param max - The maximum allowed number of emails
101
+ */
102
+ declare const enforceMaxEmailNumber: (esDB: MailDB, max: number) => Promise<void>;
103
+ /**
104
+ * Fetches all emails from the database, decrypts them and sortes the results based on the creation time (newest first)
105
+ *
106
+ * @param esDB - The database
107
+ * @param indexKey - The symmetric CryptoKey key for protecting database
108
+ * @returns The number of stored emails
109
+ */
110
+ declare const getAllEmailsSortedNewestFirst: (esDB: MailDB, indexKey: CryptoKey) => Promise<Email[]>;
111
+ /**
112
+ * Fetches all emails from the database, decrypts them and sortes the results based on the creation time (oldest first)
113
+ *
114
+ * @param esDB - The database
115
+ * @param indexKey - The symmetric CryptoKey key for protecting database
116
+ * @returns The number of stored emails
117
+ */
118
+ declare const getAllEmailsSortedOldestFirst: (esDB: MailDB, indexKey: CryptoKey) => Promise<Email[]>;
119
+ /**
120
+ * Fetches a batch of emails from the database, decrypts them and sortes the results based on the creation time (newest first)
121
+ *
122
+ * @param esDB - The database
123
+ * @param indexKey - The symmetric CryptoKey key for protecting database
124
+ * @param batchSize - The size of the batch
125
+ * @param startCursor - The starting point (optional). If not given, starts from the beginning
126
+ * @returns The number of stored emails
127
+ */
128
+ declare const getEmailBatch: (esDB: MailDB, indexKey: CryptoKey, batchSize: number, startCursor?: IDBValidKey) => Promise<{
129
+ emails: Email[];
130
+ nextCursor?: IDBValidKey;
131
+ }>;
132
+
133
+ /**
134
+ * Fetches all emails from the database in batches and cahces them
135
+ *
136
+ * @param indexKey - The symmetric CryptoKey key for protecting database
137
+ * @param esCache - The cache to add emails too
138
+ * @param esDB - The database
139
+ */
140
+ declare const createCacheFromDB: (indexKey: CryptoKey, esDB: MailDB) => Promise<MailCache<Email>>;
141
+ /**
142
+ * Gets an email from the cache
143
+ *
144
+ * @param emailID - The email identifier
145
+ * @param esCache - The email cache
146
+ * @returns The found email or throws an error
147
+ */
148
+ declare const getEmailFromCache: (emailID: string, esCache: MailCache<Email>) => Promise<Email>;
149
+ /**
150
+ * Removes the email from cache
151
+ *
152
+ * @param emailID - The email identifier
153
+ * @param esCache - The email cache
154
+ */
155
+ declare const deleteEmailFromCache: (emailID: string, esCache: MailCache<Email>) => Promise<void>;
156
+ /**
157
+ * Adds emails to the cache
158
+ *
159
+ * @param emails - The emails to add
160
+ * @param esCache - The email cache
161
+ * @returns TRUE if all emails were added sucessfully, or FALSE and error reason.
162
+ */
163
+ declare function addEmailsToCache(emails: Email[], esCache: MailCache<Email>): {
164
+ success: boolean;
165
+ reason?: string;
166
+ };
167
+ /**
168
+ * Adds email to the cache
169
+ *
170
+ * @param email - The email to add
171
+ * @param esCache - The email cache
172
+ * @returns TRUE if the email was added sucessfully, or FALSE and error reason.
173
+ */
174
+ declare const addEmailToCache: (email: Email, esCache: MailCache<Email>) => {
175
+ success: boolean;
176
+ reason?: string;
177
+ };
178
+
179
+ interface EmailSearchIndex {
180
+ subjectIndex: Index;
181
+ bodyIndex: Index;
182
+ fromIndex: Index;
183
+ toIndex: Index;
184
+ isReady: boolean;
185
+ }
186
+ /**
187
+ * Adds the given email to the email search index
188
+ *
189
+ * @param email - The email to add
190
+ * @param searchIndex - The email search index
191
+ */
192
+ declare const addEmailToSearchIndex: (email: Email, searchIndex: EmailSearchIndex) => void;
193
+ /**
194
+ * Removes the email from the email search index
195
+ *
196
+ * @param emailID - The email identifier
197
+ * @param searchIndex - The email search index
198
+ */
199
+ declare const removeEmailFromSearchIndex: (emailID: string, searchIndex: EmailSearchIndex) => void;
200
+ /**
201
+ * Buils the email search index from the email cache
202
+ *
203
+ * @param esCache - The email cache
204
+ * @returns The email search index
205
+ */
206
+ declare const buildSearchIndexFromCache: (esCache: MailCache<Email>) => Promise<EmailSearchIndex>;
207
+ interface SearchOptions {
208
+ fields?: ('subject' | 'body' | 'from' | 'to')[];
209
+ limit?: number;
210
+ boost?: {
211
+ subject?: number;
212
+ body?: number;
213
+ from?: number;
214
+ to?: number;
215
+ };
216
+ }
217
+ /**
218
+ * Searches in teh
219
+ *
220
+ * @param query - The string to search for
221
+ * @param esCache - The email cache
222
+ * @param searchIndex - The email search index
223
+ * @param opetions - The optional search limitations
224
+ * @returns The result of the email search (emails ans their corresponding result weights)
225
+ */
226
+ declare const searchEmails: (query: string, esCache: MailCache<Email>, searchIndex: EmailSearchIndex, options?: SearchOptions) => Promise<EmailSearchResult[]>;
227
+
228
+ export { type EmailSearchIndex, type EncryptedSearchDB, type MailDB, type SearchOptions, addEmailToCache, addEmailToSearchIndex, addEmailsToCache, buildSearchIndexFromCache, closeDatabase, createCacheFromDB, deleteDatabase, deleteEmail, deleteEmailFromCache, deleteOldestEmails, deriveIndexKey, encryptAndStoreEmail, encryptAndStoreManyEmail, enforceMaxEmailNumber, getAllEmailsSortedNewestFirst, getAllEmailsSortedOldestFirst, getAndDecryptAllEmails, getAndDecryptEmail, getEmailBatch, getEmailCount, getEmailFromCache, openDatabase, removeEmailFromSearchIndex, searchEmails };