@vaultkeepr/core 0.1.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.
- package/LICENSE +21 -0
- package/dist/index.d.mts +793 -0
- package/dist/index.d.ts +793 -0
- package/dist/index.js +15392 -0
- package/dist/index.mjs +15185 -0
- package/package.json +58 -0
- package/src/index.ts +52 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,793 @@
|
|
|
1
|
+
import { LocalAccount } from 'viem/accounts';
|
|
2
|
+
export { bytesToHex, hexToBytes } from '@noble/hashes/utils.js';
|
|
3
|
+
|
|
4
|
+
interface VaultEntry {
|
|
5
|
+
id: string;
|
|
6
|
+
url: string;
|
|
7
|
+
username: string;
|
|
8
|
+
password: string;
|
|
9
|
+
notes?: string;
|
|
10
|
+
folder?: string;
|
|
11
|
+
title?: string;
|
|
12
|
+
urls?: VaultEntryUri[];
|
|
13
|
+
customFields?: CustomField[];
|
|
14
|
+
totpSecret?: string;
|
|
15
|
+
totpAlgorithm?: string;
|
|
16
|
+
notesMasked?: boolean;
|
|
17
|
+
useCount?: number;
|
|
18
|
+
lastUsedAt?: number;
|
|
19
|
+
createdAt?: string;
|
|
20
|
+
modifiedAt?: number;
|
|
21
|
+
customGroup?: string;
|
|
22
|
+
tags?: string[];
|
|
23
|
+
favorite?: boolean;
|
|
24
|
+
color?: string;
|
|
25
|
+
passwordHistory?: {
|
|
26
|
+
password: string;
|
|
27
|
+
changedAt: number;
|
|
28
|
+
}[];
|
|
29
|
+
passwordMaxAgeDays?: number;
|
|
30
|
+
passwordChangedAt?: number;
|
|
31
|
+
}
|
|
32
|
+
interface CustomField {
|
|
33
|
+
name: string;
|
|
34
|
+
value: string;
|
|
35
|
+
type: "text" | "hidden" | "url" | "boolean";
|
|
36
|
+
}
|
|
37
|
+
type VaultEntryUriMatchType = "exact" | "hostname" | "baseDomain" | "never";
|
|
38
|
+
interface VaultEntryUri {
|
|
39
|
+
uri: string;
|
|
40
|
+
matchType?: VaultEntryUriMatchType;
|
|
41
|
+
}
|
|
42
|
+
interface FolderNode {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
parentId: string | null;
|
|
46
|
+
icon?: string;
|
|
47
|
+
sortOrder: number;
|
|
48
|
+
createdAt: number;
|
|
49
|
+
}
|
|
50
|
+
interface PasskeyEntry {
|
|
51
|
+
id: string;
|
|
52
|
+
type: "passkey";
|
|
53
|
+
rpId: string;
|
|
54
|
+
rpName: string;
|
|
55
|
+
userName: string;
|
|
56
|
+
userDisplayName: string;
|
|
57
|
+
userId: string;
|
|
58
|
+
credentialId: string;
|
|
59
|
+
privateKeyHex: string;
|
|
60
|
+
publicKeyHex: string;
|
|
61
|
+
algorithm: -7;
|
|
62
|
+
counter: number;
|
|
63
|
+
createdAt: string;
|
|
64
|
+
lastUsedAt?: string;
|
|
65
|
+
transports?: string[];
|
|
66
|
+
url: string;
|
|
67
|
+
folder: "passkeys";
|
|
68
|
+
username: string;
|
|
69
|
+
password: string;
|
|
70
|
+
notes?: string;
|
|
71
|
+
}
|
|
72
|
+
interface SeedPhraseEntry {
|
|
73
|
+
id: string;
|
|
74
|
+
type: "seed";
|
|
75
|
+
walletName: string;
|
|
76
|
+
wordCount: 12 | 15 | 18 | 21 | 24;
|
|
77
|
+
derivationPath?: string;
|
|
78
|
+
network?: string;
|
|
79
|
+
createdAt: string;
|
|
80
|
+
url: string;
|
|
81
|
+
folder: "seeds";
|
|
82
|
+
username: string;
|
|
83
|
+
password: string;
|
|
84
|
+
notes?: string;
|
|
85
|
+
}
|
|
86
|
+
type SecureDocumentType = "cni" | "passport" | "permit" | "rib" | "insurance" | "other";
|
|
87
|
+
interface DocumentOcrData {
|
|
88
|
+
fullName?: string;
|
|
89
|
+
firstName?: string;
|
|
90
|
+
lastName?: string;
|
|
91
|
+
documentNumber?: string;
|
|
92
|
+
expiryDate?: string;
|
|
93
|
+
birthDate?: string;
|
|
94
|
+
nationality?: string;
|
|
95
|
+
gender?: string;
|
|
96
|
+
documentType?: string;
|
|
97
|
+
issuingAuthority?: string;
|
|
98
|
+
rawText?: string;
|
|
99
|
+
faceImageBase64?: string;
|
|
100
|
+
}
|
|
101
|
+
interface SecureDocument {
|
|
102
|
+
id: string;
|
|
103
|
+
type: SecureDocumentType;
|
|
104
|
+
label: string;
|
|
105
|
+
fragments: string[];
|
|
106
|
+
nonce: string;
|
|
107
|
+
nfcFaceFragments?: string[];
|
|
108
|
+
nfcFaceNonce?: string;
|
|
109
|
+
blurredThumbnail: string;
|
|
110
|
+
ocr?: DocumentOcrData;
|
|
111
|
+
originalSize: number;
|
|
112
|
+
mimeType: string;
|
|
113
|
+
addedAt: string;
|
|
114
|
+
modifiedAt?: number;
|
|
115
|
+
}
|
|
116
|
+
type CloudFileCategory = "photo" | "document";
|
|
117
|
+
interface CloudFile {
|
|
118
|
+
id: string;
|
|
119
|
+
category: CloudFileCategory;
|
|
120
|
+
fileName: string;
|
|
121
|
+
folder?: string;
|
|
122
|
+
fragments: string[];
|
|
123
|
+
nonce: string;
|
|
124
|
+
thumbnail?: string;
|
|
125
|
+
originalSize: number;
|
|
126
|
+
mimeType: string;
|
|
127
|
+
fragmentCount: number;
|
|
128
|
+
contentHash: string;
|
|
129
|
+
description?: string;
|
|
130
|
+
tags?: string[];
|
|
131
|
+
favorite?: boolean;
|
|
132
|
+
addedAt: string;
|
|
133
|
+
modifiedAt?: number;
|
|
134
|
+
}
|
|
135
|
+
declare const DEFAULT_FRAGMENT_COUNT = 4;
|
|
136
|
+
interface Vault {
|
|
137
|
+
version: number;
|
|
138
|
+
createdAt: string;
|
|
139
|
+
entries: VaultEntry[];
|
|
140
|
+
folders: string[];
|
|
141
|
+
folderTree?: FolderNode[];
|
|
142
|
+
documents?: SecureDocument[];
|
|
143
|
+
cloudFiles?: CloudFile[];
|
|
144
|
+
cloudFolders?: string[];
|
|
145
|
+
cloudQuotaUsed?: number;
|
|
146
|
+
folderTombstones?: Record<string, number>;
|
|
147
|
+
cloudFolderTombstones?: Record<string, number>;
|
|
148
|
+
entryTombstones?: Record<string, number>;
|
|
149
|
+
legacyContacts?: LegacyContact[];
|
|
150
|
+
prfCredentials?: PrfCredentialRecord[];
|
|
151
|
+
monitoredEmails?: string[];
|
|
152
|
+
}
|
|
153
|
+
interface PrfCredentialRecord {
|
|
154
|
+
credentialId: string;
|
|
155
|
+
prfSalt: string;
|
|
156
|
+
authenticatorType: string;
|
|
157
|
+
deviceName: string;
|
|
158
|
+
createdAt: string;
|
|
159
|
+
lastUsedAt: string | null;
|
|
160
|
+
passwordHash: string;
|
|
161
|
+
}
|
|
162
|
+
interface LegacyContact {
|
|
163
|
+
label: string;
|
|
164
|
+
email?: string;
|
|
165
|
+
telegram?: string;
|
|
166
|
+
address?: string;
|
|
167
|
+
publicKey?: string;
|
|
168
|
+
status: "pending" | "confirmed";
|
|
169
|
+
addedAt: string;
|
|
170
|
+
}
|
|
171
|
+
interface EncryptedVault {
|
|
172
|
+
ciphertext: string;
|
|
173
|
+
nonce: string;
|
|
174
|
+
envelope?: string;
|
|
175
|
+
commitment?: string;
|
|
176
|
+
version: number;
|
|
177
|
+
}
|
|
178
|
+
interface KeyEnvelope {
|
|
179
|
+
ephemeralPublicKey: string;
|
|
180
|
+
ciphertext: string;
|
|
181
|
+
nonce: string;
|
|
182
|
+
}
|
|
183
|
+
interface VaultPayload {
|
|
184
|
+
ciphertext: string;
|
|
185
|
+
nonce: string;
|
|
186
|
+
envelope: KeyEnvelope;
|
|
187
|
+
version: number;
|
|
188
|
+
}
|
|
189
|
+
type FragmentDestination = "device" | "ipfs" | "contact" | "smartcontract" | "api";
|
|
190
|
+
declare const FRAGMENTED_DEFAULT_THRESHOLD = 3;
|
|
191
|
+
declare const FRAGMENTED_DEFAULT_TOTAL = 5;
|
|
192
|
+
interface FragmentedConfig {
|
|
193
|
+
threshold: number;
|
|
194
|
+
total: number;
|
|
195
|
+
distribution: Record<FragmentDestination, number>;
|
|
196
|
+
}
|
|
197
|
+
interface FragmentedPayload {
|
|
198
|
+
version: 5;
|
|
199
|
+
ciphertext: string;
|
|
200
|
+
nonce: string;
|
|
201
|
+
commitment?: string;
|
|
202
|
+
threshold: number;
|
|
203
|
+
total: number;
|
|
204
|
+
lookupIdHash: string;
|
|
205
|
+
updatedAt?: number;
|
|
206
|
+
}
|
|
207
|
+
interface EncryptedFragmentPayload {
|
|
208
|
+
version: 5;
|
|
209
|
+
fragmentIndex: number;
|
|
210
|
+
ciphertext: string;
|
|
211
|
+
nonce: string;
|
|
212
|
+
}
|
|
213
|
+
interface FragmentedManifest {
|
|
214
|
+
version: 5;
|
|
215
|
+
lookupIdHash: string;
|
|
216
|
+
vaultCid: string;
|
|
217
|
+
threshold: number;
|
|
218
|
+
total: number;
|
|
219
|
+
partCids: Record<number, string>;
|
|
220
|
+
updatedAt: number;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
declare const ENTRY_GROUP_IDS: readonly ["identifiants", "cartes", "notes", "identites", "seeds"];
|
|
224
|
+
type EntryGroupId = (typeof ENTRY_GROUP_IDS)[number];
|
|
225
|
+
declare const ENTRY_GROUP_LABELS: Record<EntryGroupId, string>;
|
|
226
|
+
declare const DEFAULT_ENTRY_GROUP: EntryGroupId;
|
|
227
|
+
declare const BUILTIN_FOLDER_IDS: Record<EntryGroupId | "passkeys", string>;
|
|
228
|
+
declare const BUILTIN_FOLDER_NODES: FolderNode[];
|
|
229
|
+
declare function getEntryGroupLabel(folder: string | undefined): string;
|
|
230
|
+
declare function resolveFolderName(folderId: string | undefined, folderTree: FolderNode[] | undefined): string;
|
|
231
|
+
|
|
232
|
+
declare function generateMasterKey(): Uint8Array;
|
|
233
|
+
declare function encryptVault(plaintext: string | Uint8Array, masterKey: Uint8Array, opts?: {
|
|
234
|
+
wipeKeyAfterUse?: boolean;
|
|
235
|
+
}): EncryptedVault;
|
|
236
|
+
declare function decryptVault(encrypted: EncryptedVault, masterKey: Uint8Array, opts?: {
|
|
237
|
+
wipeKeyAfterUse?: boolean;
|
|
238
|
+
}): string | Uint8Array;
|
|
239
|
+
declare function compressVault(vaultJson: string): Promise<Uint8Array>;
|
|
240
|
+
declare function decompressVault(data: Uint8Array): Promise<string>;
|
|
241
|
+
|
|
242
|
+
declare function secureWipe(buf: Uint8Array | null): void;
|
|
243
|
+
declare function secureCompare(a: Uint8Array, b: Uint8Array): boolean;
|
|
244
|
+
|
|
245
|
+
interface Argon2Options {
|
|
246
|
+
t?: number;
|
|
247
|
+
m?: number;
|
|
248
|
+
p?: number;
|
|
249
|
+
dkLen?: number;
|
|
250
|
+
}
|
|
251
|
+
declare function deriveKeyFromPasswordArgon2(password: string, salt: Uint8Array, opts?: Argon2Options): Uint8Array;
|
|
252
|
+
declare function generateSaltArgon2(): Uint8Array;
|
|
253
|
+
declare function normalizeSignatureForKdf(signatureHex: string): string;
|
|
254
|
+
declare function deriveKeyFromPasswordAndSignatureArgon2(password: string, signatureHex: string, salt: Uint8Array): Uint8Array;
|
|
255
|
+
declare function deriveKeyFromPasswordAndSignatureLegacy(password: string, signatureHex: string, salt: Uint8Array): Uint8Array;
|
|
256
|
+
|
|
257
|
+
declare function createKeyEnvelope(masterKey: Uint8Array, recipientPublicKeyHex: string): KeyEnvelope;
|
|
258
|
+
declare function decryptKeyEnvelope(envelope: KeyEnvelope, recipientPrivateKeyHex: string): Uint8Array;
|
|
259
|
+
|
|
260
|
+
declare function createEmptyVault(): Vault;
|
|
261
|
+
declare function createEntry(entry: Omit<VaultEntry, "id">): VaultEntry;
|
|
262
|
+
declare function addEntry(vault: Vault, entry: Omit<VaultEntry, "id">): Vault;
|
|
263
|
+
declare function updateEntry(vault: Vault, id: string, updates: Partial<Omit<VaultEntry, "id">>): Vault;
|
|
264
|
+
declare function removeEntry(vault: Vault, id: string): Vault;
|
|
265
|
+
declare function createFolder(vault: Vault, name: string, parentId?: string | null): Vault;
|
|
266
|
+
declare function renameFolder(vault: Vault, folderId: string, newName: string): Vault;
|
|
267
|
+
declare function moveFolder(vault: Vault, folderId: string, newParentId: string | null): Vault;
|
|
268
|
+
declare function deleteUserFolder(vault: Vault, folderId: string): Vault;
|
|
269
|
+
declare function parseVault(json: string): Vault;
|
|
270
|
+
declare function serializeVault(vault: Vault): string;
|
|
271
|
+
declare function createExportPayload(vault: Vault, secretKey?: string): string;
|
|
272
|
+
declare function updateEntryUseCount(vault: Vault, entryId: string, increment?: number): Promise<Vault>;
|
|
273
|
+
declare function getMostUsedEntries(vault: Vault, count?: number): VaultEntry[];
|
|
274
|
+
interface MergeImportStats {
|
|
275
|
+
added: number;
|
|
276
|
+
skipped: number;
|
|
277
|
+
enriched: number;
|
|
278
|
+
}
|
|
279
|
+
interface MergeImportResult {
|
|
280
|
+
entries: VaultEntry[];
|
|
281
|
+
stats: MergeImportStats;
|
|
282
|
+
}
|
|
283
|
+
declare function normalizeUrl(raw: string): string;
|
|
284
|
+
declare function entryFingerprint(entry: {
|
|
285
|
+
url?: string;
|
|
286
|
+
username?: string;
|
|
287
|
+
password?: string;
|
|
288
|
+
notes?: string;
|
|
289
|
+
folder?: string;
|
|
290
|
+
}): string;
|
|
291
|
+
declare function mergeImportedEntries(existing: VaultEntry[], imported: VaultEntry[]): MergeImportResult;
|
|
292
|
+
declare function deduplicateEntries(entries: VaultEntry[]): {
|
|
293
|
+
entries: VaultEntry[];
|
|
294
|
+
removed: number;
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
declare function createVaultPayload(vaultJson: string, walletPublicKeyHex: string): {
|
|
298
|
+
payload: VaultPayload;
|
|
299
|
+
masterKey: Uint8Array;
|
|
300
|
+
};
|
|
301
|
+
declare function parseVaultPayload(json: string): VaultPayload;
|
|
302
|
+
|
|
303
|
+
declare const PAYLOAD_VERSION_V1 = 1;
|
|
304
|
+
declare const PAYLOAD_VERSION_V2 = 2;
|
|
305
|
+
declare const PAYLOAD_VERSION_V3 = 3;
|
|
306
|
+
declare const PAYLOAD_VERSION_V4 = 4;
|
|
307
|
+
declare const PAYLOAD_VERSION_CURRENT = 4;
|
|
308
|
+
declare const MOBILE_MIN_PAYLOAD_VERSION = 3;
|
|
309
|
+
declare const MOBILE_MAX_PAYLOAD_VERSION = 4;
|
|
310
|
+
declare const EXTENSION_MIN_PAYLOAD_VERSION = 2;
|
|
311
|
+
declare const EXTENSION_MAX_PAYLOAD_VERSION = 4;
|
|
312
|
+
type PayloadVersion = typeof PAYLOAD_VERSION_V1 | typeof PAYLOAD_VERSION_V2 | typeof PAYLOAD_VERSION_V3 | typeof PAYLOAD_VERSION_V4;
|
|
313
|
+
declare function isCurrentPayloadVersion(version: number): boolean;
|
|
314
|
+
declare function isAcceptablePayloadVersion(version: number, platform: "mobile" | "extension"): boolean;
|
|
315
|
+
|
|
316
|
+
interface SkippedItem {
|
|
317
|
+
source: string;
|
|
318
|
+
type: string;
|
|
319
|
+
name: string;
|
|
320
|
+
reason: string;
|
|
321
|
+
}
|
|
322
|
+
declare function isOnePasswordPif(content: string): boolean;
|
|
323
|
+
declare function import1PasswordPif(content: string): Vault;
|
|
324
|
+
declare function importBitwardenJson(json: string): Vault;
|
|
325
|
+
declare function importCsv(csv: string): Vault;
|
|
326
|
+
declare function isProtonPassExport(jsonStr: string): boolean;
|
|
327
|
+
declare function importProtonPassJson(json: string): Vault;
|
|
328
|
+
declare function encryptPgpContent(plaintext: string, passphrase: string): Promise<string>;
|
|
329
|
+
declare function decryptPgpContent(encryptedContent: string | Uint8Array, passphrase: string): Promise<string>;
|
|
330
|
+
interface PgpImportResult {
|
|
331
|
+
vault: Vault;
|
|
332
|
+
secretKey?: string;
|
|
333
|
+
}
|
|
334
|
+
declare function importFromPgp(encryptedContent: string | Uint8Array, passphrase: string, vaultKeeperPassword?: string): Promise<PgpImportResult>;
|
|
335
|
+
interface ImportVaultTextResult {
|
|
336
|
+
vault: Vault;
|
|
337
|
+
skipped?: SkippedItem[];
|
|
338
|
+
}
|
|
339
|
+
declare function importVaultText(content: string | Uint8Array): Promise<ImportVaultTextResult>;
|
|
340
|
+
|
|
341
|
+
interface EncryptedExportPayload {
|
|
342
|
+
version: number;
|
|
343
|
+
format: string;
|
|
344
|
+
salt: string;
|
|
345
|
+
nonce: string;
|
|
346
|
+
ciphertext: string;
|
|
347
|
+
commitment?: string;
|
|
348
|
+
exportedAt?: string;
|
|
349
|
+
secretKey?: string;
|
|
350
|
+
kdf?: {
|
|
351
|
+
name: string;
|
|
352
|
+
t: number;
|
|
353
|
+
m: number;
|
|
354
|
+
p: number;
|
|
355
|
+
dkLen: number;
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
declare function exportEncryptedVault(vault: Vault, password: string, secretKey?: string, argon2Opts?: Argon2Options, precomputed?: {
|
|
359
|
+
key: Uint8Array;
|
|
360
|
+
salt: Uint8Array;
|
|
361
|
+
}): Promise<string>;
|
|
362
|
+
declare function isEncryptedExport(jsonStr: string): boolean;
|
|
363
|
+
interface EncryptedImportResult {
|
|
364
|
+
vault: Vault;
|
|
365
|
+
secretKey?: string;
|
|
366
|
+
}
|
|
367
|
+
declare function importEncryptedVault(encryptedJson: string, password: string, argon2Opts?: Argon2Options): Promise<EncryptedImportResult>;
|
|
368
|
+
|
|
369
|
+
interface SkippedExport {
|
|
370
|
+
id: string;
|
|
371
|
+
title?: string;
|
|
372
|
+
folder?: string;
|
|
373
|
+
reason: string;
|
|
374
|
+
}
|
|
375
|
+
interface ExportResult {
|
|
376
|
+
content: string;
|
|
377
|
+
baseName: string;
|
|
378
|
+
mimeType: string;
|
|
379
|
+
extension: string;
|
|
380
|
+
skipped: SkippedExport[];
|
|
381
|
+
}
|
|
382
|
+
declare function exportCsv(vault: Vault, opts?: {
|
|
383
|
+
variant?: "chrome" | "bitwarden";
|
|
384
|
+
}): ExportResult;
|
|
385
|
+
declare function exportBitwardenJson(vault: Vault): ExportResult;
|
|
386
|
+
declare function exportProtonPassJson(vault: Vault): ExportResult;
|
|
387
|
+
|
|
388
|
+
declare function getChecksumAddress(address: string): string;
|
|
389
|
+
|
|
390
|
+
type TOTPAlgorithm = "SHA-1" | "SHA-256" | "SHA-512";
|
|
391
|
+
declare function getTOTPCode(secretBase32: string, algorithm?: TOTPAlgorithm, digits?: number, period?: number): string;
|
|
392
|
+
declare function getTOTPRemainingSeconds(period?: number): number;
|
|
393
|
+
declare function parseTOTPUri(uri: string): {
|
|
394
|
+
secret: string;
|
|
395
|
+
algorithm: TOTPAlgorithm;
|
|
396
|
+
digits: number;
|
|
397
|
+
period: number;
|
|
398
|
+
issuer?: string;
|
|
399
|
+
account?: string;
|
|
400
|
+
} | null;
|
|
401
|
+
|
|
402
|
+
type CardBrand = "visa" | "mastercard" | "amex" | "discover" | null;
|
|
403
|
+
declare function digitsOnly(value: string): string;
|
|
404
|
+
declare function getCardBrand(number: string): CardBrand;
|
|
405
|
+
declare function getLast4(number: string): string;
|
|
406
|
+
declare function maskCardNumber(number: string): string;
|
|
407
|
+
declare function formatCardNumber(number: string, brand?: CardBrand | null): string;
|
|
408
|
+
declare function formatCardDisplayMasked(rawDigits: string, brand?: CardBrand | null): string;
|
|
409
|
+
declare const CARD_BRAND_LABELS: Record<NonNullable<CardBrand>, string>;
|
|
410
|
+
|
|
411
|
+
type PwnedPasswordFetchOptions = {
|
|
412
|
+
signal?: AbortSignal;
|
|
413
|
+
fetchFn?: typeof fetch;
|
|
414
|
+
};
|
|
415
|
+
declare function getPwnedPasswordCount(password: string, options?: PwnedPasswordFetchOptions): Promise<number>;
|
|
416
|
+
|
|
417
|
+
declare function uniformRandom(max: number): number;
|
|
418
|
+
interface GeneratePasswordOptions {
|
|
419
|
+
length?: number;
|
|
420
|
+
upper?: boolean;
|
|
421
|
+
lower?: boolean;
|
|
422
|
+
numbers?: boolean;
|
|
423
|
+
symbols?: boolean;
|
|
424
|
+
}
|
|
425
|
+
declare function generatePassword(opts?: GeneratePasswordOptions): string;
|
|
426
|
+
interface GeneratePassphraseOptions {
|
|
427
|
+
wordCount?: number;
|
|
428
|
+
separator?: string;
|
|
429
|
+
capitalize?: boolean;
|
|
430
|
+
}
|
|
431
|
+
declare function generatePassphrase(opts?: GeneratePassphraseOptions): string;
|
|
432
|
+
|
|
433
|
+
interface ErrorReport {
|
|
434
|
+
ts: string;
|
|
435
|
+
component: string;
|
|
436
|
+
message: string;
|
|
437
|
+
stack: string | null;
|
|
438
|
+
runtime: "extension" | "ios" | "android" | "web";
|
|
439
|
+
version: string | null;
|
|
440
|
+
}
|
|
441
|
+
declare function captureError(error: Error | string, component: string, runtime: ErrorReport["runtime"], options?: {
|
|
442
|
+
stack?: string | null;
|
|
443
|
+
version?: string | null;
|
|
444
|
+
}): ErrorReport;
|
|
445
|
+
declare function getErrorBuffer(): readonly ErrorReport[];
|
|
446
|
+
declare function clearErrorBuffer(): void;
|
|
447
|
+
declare function formatErrorReport(): string;
|
|
448
|
+
declare function sendErrorReport(endpoint: string, report?: ErrorReport): Promise<boolean>;
|
|
449
|
+
|
|
450
|
+
interface EmailBreach {
|
|
451
|
+
name: string;
|
|
452
|
+
date: string;
|
|
453
|
+
description?: string;
|
|
454
|
+
logoPath?: string;
|
|
455
|
+
dataClasses?: string[];
|
|
456
|
+
}
|
|
457
|
+
interface EmailBreachResult {
|
|
458
|
+
email: string;
|
|
459
|
+
found: boolean;
|
|
460
|
+
breachCount: number;
|
|
461
|
+
breaches: EmailBreach[];
|
|
462
|
+
checked: boolean;
|
|
463
|
+
error?: string;
|
|
464
|
+
}
|
|
465
|
+
interface EmailBreachReport {
|
|
466
|
+
results: EmailBreachResult[];
|
|
467
|
+
breachedCount: number;
|
|
468
|
+
checkedCount: number;
|
|
469
|
+
totalCount: number;
|
|
470
|
+
}
|
|
471
|
+
declare function checkEmailBreaches(emails: string[], opts?: {
|
|
472
|
+
signal?: AbortSignal;
|
|
473
|
+
onProgress?: (result: EmailBreachResult, index: number, total: number) => void;
|
|
474
|
+
}): Promise<EmailBreachReport>;
|
|
475
|
+
|
|
476
|
+
type PasswordStrength = "critical" | "weak" | "fair" | "strong";
|
|
477
|
+
interface PasswordHealthEntry {
|
|
478
|
+
entryId: string;
|
|
479
|
+
url: string;
|
|
480
|
+
username: string;
|
|
481
|
+
strength: PasswordStrength;
|
|
482
|
+
score: number;
|
|
483
|
+
issues: string[];
|
|
484
|
+
reusedWith: string[];
|
|
485
|
+
ageMonths: number | null;
|
|
486
|
+
expired: boolean;
|
|
487
|
+
twoFactorMissing: boolean;
|
|
488
|
+
unsecureUrl: boolean;
|
|
489
|
+
}
|
|
490
|
+
interface PasswordHealthReport {
|
|
491
|
+
entries: PasswordHealthEntry[];
|
|
492
|
+
overallScore: number;
|
|
493
|
+
stats: {
|
|
494
|
+
total: number;
|
|
495
|
+
critical: number;
|
|
496
|
+
weak: number;
|
|
497
|
+
fair: number;
|
|
498
|
+
strong: number;
|
|
499
|
+
reused: number;
|
|
500
|
+
empty: number;
|
|
501
|
+
expired: number;
|
|
502
|
+
twoFactorMissing: number;
|
|
503
|
+
unsecureWebsites: number;
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
declare function scorePassword(password: string): {
|
|
507
|
+
score: number;
|
|
508
|
+
strength: PasswordStrength;
|
|
509
|
+
issues: string[];
|
|
510
|
+
};
|
|
511
|
+
declare function analyzeVaultHealth(entries: VaultEntry[]): PasswordHealthReport;
|
|
512
|
+
|
|
513
|
+
interface BreachResult {
|
|
514
|
+
entryId: string;
|
|
515
|
+
url: string;
|
|
516
|
+
username: string;
|
|
517
|
+
breachCount: number;
|
|
518
|
+
checked: boolean;
|
|
519
|
+
error?: string;
|
|
520
|
+
}
|
|
521
|
+
interface BreachReport {
|
|
522
|
+
results: BreachResult[];
|
|
523
|
+
breachedCount: number;
|
|
524
|
+
checkedCount: number;
|
|
525
|
+
totalCount: number;
|
|
526
|
+
}
|
|
527
|
+
declare function checkVaultBreaches(entries: VaultEntry[], opts?: {
|
|
528
|
+
signal?: AbortSignal;
|
|
529
|
+
onProgress?: (result: BreachResult, index: number, total: number) => void;
|
|
530
|
+
delayMs?: number;
|
|
531
|
+
}): Promise<BreachReport>;
|
|
532
|
+
|
|
533
|
+
interface PasskeyKeyPair {
|
|
534
|
+
privateKey: Uint8Array;
|
|
535
|
+
publicKey: Uint8Array;
|
|
536
|
+
publicKeyCose: Uint8Array;
|
|
537
|
+
}
|
|
538
|
+
declare function generatePasskeyKeyPair(): PasskeyKeyPair;
|
|
539
|
+
declare function generateCredentialId(): Uint8Array;
|
|
540
|
+
declare function publicKeyToCose(publicKey: Uint8Array): Uint8Array;
|
|
541
|
+
declare const P256_SPKI_HEADER: Uint8Array<ArrayBuffer>;
|
|
542
|
+
declare function publicKeyToSpki(publicKey: Uint8Array): Uint8Array;
|
|
543
|
+
declare function signPasskeyAssertion(privateKey: Uint8Array, authenticatorData: Uint8Array, clientDataHash: Uint8Array): Uint8Array;
|
|
544
|
+
declare function verifyPasskeyAssertion(publicKey: Uint8Array, authenticatorData: Uint8Array, clientDataHash: Uint8Array, signature: Uint8Array): boolean;
|
|
545
|
+
declare function rpIdHash(rpId: string): Uint8Array;
|
|
546
|
+
declare function buildAuthDataForCreate(rpId: string, credentialId: Uint8Array, publicKeyCose: Uint8Array, counter?: number): Uint8Array;
|
|
547
|
+
declare function buildAuthDataForGet(rpId: string, counter: number, userVerification?: "required" | "preferred" | "discouraged"): Uint8Array;
|
|
548
|
+
declare function buildAttestationObject(authData: Uint8Array): Uint8Array;
|
|
549
|
+
declare function toBase64Url(bytes: Uint8Array): string;
|
|
550
|
+
declare function fromBase64Url(str: string): Uint8Array;
|
|
551
|
+
|
|
552
|
+
declare function encryptPasskeyPrivateKey(privateKey: Uint8Array, masterKey: Uint8Array, credentialId: string): string;
|
|
553
|
+
declare function decryptPasskeyPrivateKey(encryptedHex: string, masterKey: Uint8Array, credentialId: string): Uint8Array;
|
|
554
|
+
declare function isPasskeyPrivateKeyEncrypted(privateKeyHex: string): boolean;
|
|
555
|
+
|
|
556
|
+
interface PasskeyPrfCredential {
|
|
557
|
+
credentialId: string;
|
|
558
|
+
prfSalt: string;
|
|
559
|
+
deviceName: string;
|
|
560
|
+
createdAt: string;
|
|
561
|
+
lastUsedAt?: string;
|
|
562
|
+
authenticatorType: "platform" | "cross-platform";
|
|
563
|
+
}
|
|
564
|
+
declare function isWebAuthnSupported(): boolean;
|
|
565
|
+
declare function isPrfSupported(): Promise<boolean>;
|
|
566
|
+
declare function generatePrfSalt(): Uint8Array;
|
|
567
|
+
declare function deriveKeyFromPrfResult(prfOutput: Uint8Array): Uint8Array;
|
|
568
|
+
declare function enrollPasskeyForPrf(userId: string, userName: string): Promise<{
|
|
569
|
+
credentialId: string;
|
|
570
|
+
prfSalt: string;
|
|
571
|
+
authenticatorType: "platform" | "cross-platform";
|
|
572
|
+
} | null>;
|
|
573
|
+
declare function deriveKeyFromPasskeyPrf(credentialId: string, prfSaltHex: string): Promise<Uint8Array | null>;
|
|
574
|
+
|
|
575
|
+
type Argon2ProviderFn = (input: Uint8Array, salt: Uint8Array, opts: {
|
|
576
|
+
t: number;
|
|
577
|
+
m: number;
|
|
578
|
+
p: number;
|
|
579
|
+
dkLen: number;
|
|
580
|
+
}) => Promise<Uint8Array> | Uint8Array;
|
|
581
|
+
declare function setArgon2Provider(fn: Argon2ProviderFn): void;
|
|
582
|
+
declare function getHiddenWalletLegacy(masterPassword: string, secretKey?: string): LocalAccount;
|
|
583
|
+
declare function getHiddenWalletPrivateKey(masterPassword: string, secretKey?: string): Promise<`0x${string}`>;
|
|
584
|
+
declare function getHiddenWalletFromPassword(masterPassword: string, secretKey?: string): Promise<LocalAccount>;
|
|
585
|
+
declare function clearHiddenWalletCache(): void;
|
|
586
|
+
declare const FRAGMENT_DOMAIN: {
|
|
587
|
+
readonly name: "VaultKeeperFragments";
|
|
588
|
+
readonly version: "1";
|
|
589
|
+
readonly chainId: 8453;
|
|
590
|
+
};
|
|
591
|
+
declare const FRAGMENT_TYPES: {
|
|
592
|
+
StoreFragmentMeta: {
|
|
593
|
+
name: string;
|
|
594
|
+
type: string;
|
|
595
|
+
}[];
|
|
596
|
+
};
|
|
597
|
+
declare function signStoreFragmentMeta(masterPassword: string, lookupIdHash: string, encryptedPayload: string, secretKey?: string): Promise<{
|
|
598
|
+
signature: string;
|
|
599
|
+
owner: string;
|
|
600
|
+
}>;
|
|
601
|
+
declare function signStoreFragmentMetaWithSigner(signer: {
|
|
602
|
+
signTypedData: (params: {
|
|
603
|
+
domain: typeof FRAGMENT_DOMAIN;
|
|
604
|
+
types: typeof FRAGMENT_TYPES;
|
|
605
|
+
primaryType: "StoreFragmentMeta";
|
|
606
|
+
message: Record<string, unknown>;
|
|
607
|
+
}) => Promise<`0x${string}`>;
|
|
608
|
+
address: `0x${string}`;
|
|
609
|
+
}, lookupIdHash: string, encryptedPayload: string): Promise<{
|
|
610
|
+
signature: string;
|
|
611
|
+
owner: string;
|
|
612
|
+
}>;
|
|
613
|
+
|
|
614
|
+
declare function splitBuffer(data: Uint8Array, count: number): Uint8Array[];
|
|
615
|
+
declare function mergeFragments(fragments: Uint8Array[]): Uint8Array;
|
|
616
|
+
declare function encryptAndFragmentDocument(imageData: Uint8Array, masterKey: Uint8Array, fragmentCount?: number): Promise<{
|
|
617
|
+
fragments: Uint8Array[];
|
|
618
|
+
nonce: string;
|
|
619
|
+
}>;
|
|
620
|
+
declare function reassembleAndDecryptDocument(fragments: Uint8Array[], nonce: string, masterKey: Uint8Array): Promise<Uint8Array>;
|
|
621
|
+
declare function generateBlurredThumbnailCanvas(imageBase64: string, targetWidth?: number): Promise<string>;
|
|
622
|
+
declare function generateDocumentId(): string;
|
|
623
|
+
|
|
624
|
+
interface MRZResult {
|
|
625
|
+
type: "TD1" | "TD2" | "TD3" | "FRENCH_CNI";
|
|
626
|
+
fullName: string;
|
|
627
|
+
surname: string;
|
|
628
|
+
givenNames: string;
|
|
629
|
+
documentNumber: string;
|
|
630
|
+
birthDate: string;
|
|
631
|
+
expiryDate?: string;
|
|
632
|
+
sex: "M" | "F" | "X";
|
|
633
|
+
nationality: string;
|
|
634
|
+
issuer: string;
|
|
635
|
+
valid: boolean;
|
|
636
|
+
}
|
|
637
|
+
declare function parseMRZ(lines: string[]): MRZResult | undefined;
|
|
638
|
+
|
|
639
|
+
declare function calculateMrzChecksum(str: string): number;
|
|
640
|
+
declare function cleanMrzField(str: string): string;
|
|
641
|
+
declare function parseMrzDate(str: string): string;
|
|
642
|
+
|
|
643
|
+
declare function deriveMrzKseed(docNumber: string, birthDate: string, expiryDate: string): Uint8Array;
|
|
644
|
+
declare function deriveNfcKey(kseed: Uint8Array, counter: 1 | 2): Uint8Array;
|
|
645
|
+
declare function buildMutualAuthData(_s: Uint8Array, _r: Uint8Array, _k: Uint8Array): Uint8Array;
|
|
646
|
+
|
|
647
|
+
declare function generateNfcDeviceSecret(): Uint8Array;
|
|
648
|
+
declare function encryptNfcPayload(masterPassword: string, deviceSecret: Uint8Array, pin: string): string;
|
|
649
|
+
declare function decryptNfcPayload(payload: string, deviceSecret: Uint8Array, pin: string): string;
|
|
650
|
+
declare function isNfcPayloadV2(payload: string): boolean;
|
|
651
|
+
declare function isNfcPayloadV3(payload: string): boolean;
|
|
652
|
+
declare function isNfcPayloadV1(payload: string): boolean;
|
|
653
|
+
|
|
654
|
+
declare const SHARE_VERSION = 2;
|
|
655
|
+
interface SharePayload {
|
|
656
|
+
version: typeof SHARE_VERSION;
|
|
657
|
+
type: "credentials" | "note" | "file" | "link" | "cloud_file";
|
|
658
|
+
username?: string;
|
|
659
|
+
password?: string;
|
|
660
|
+
url?: string;
|
|
661
|
+
totpSecret?: string;
|
|
662
|
+
noteTitle?: string;
|
|
663
|
+
noteContent?: string;
|
|
664
|
+
linkUrl?: string;
|
|
665
|
+
linkTitle?: string;
|
|
666
|
+
fileName?: string;
|
|
667
|
+
fileMimeType?: string;
|
|
668
|
+
fileData?: string;
|
|
669
|
+
fileSize?: number;
|
|
670
|
+
message?: string;
|
|
671
|
+
senderLabel?: string;
|
|
672
|
+
createdAt: number;
|
|
673
|
+
}
|
|
674
|
+
interface ShareCreationResult {
|
|
675
|
+
encryptedBlob: string;
|
|
676
|
+
shareId: string;
|
|
677
|
+
privateKeyHex: string;
|
|
678
|
+
publicKeyHex: string;
|
|
679
|
+
pin: string;
|
|
680
|
+
apiPinHash: string;
|
|
681
|
+
}
|
|
682
|
+
interface ShareOptions {
|
|
683
|
+
ttl: "1h" | "24h" | "7d";
|
|
684
|
+
maxViews: number;
|
|
685
|
+
senderLabel?: string;
|
|
686
|
+
}
|
|
687
|
+
declare function generateSharePin(): string;
|
|
688
|
+
declare function computeApiPinHash(pin: string): string;
|
|
689
|
+
declare function createSecureShare(payload: Omit<SharePayload, "version" | "createdAt">, pin?: string): ShareCreationResult;
|
|
690
|
+
declare function decryptSecureShare(blobHex: string, keyHex: string, pin: string): SharePayload;
|
|
691
|
+
declare function buildShareUrl(baseUrl: string, shareId: string, keyHex: string): string;
|
|
692
|
+
declare function parseShareUrl(url: string): {
|
|
693
|
+
shareId: string;
|
|
694
|
+
publicKeyHex: string;
|
|
695
|
+
} | null;
|
|
696
|
+
declare function ttlToMs(ttl: "1h" | "24h" | "7d"): number;
|
|
697
|
+
|
|
698
|
+
type PasswordStrengthLevel = "weak" | "medium" | "strong";
|
|
699
|
+
interface PasswordStrengthResult {
|
|
700
|
+
score: number;
|
|
701
|
+
feedback: string[];
|
|
702
|
+
strength: PasswordStrengthLevel;
|
|
703
|
+
}
|
|
704
|
+
declare function calculatePasswordStrength(password: string): PasswordStrengthResult;
|
|
705
|
+
|
|
706
|
+
declare function threeWayMerge(base: Vault | null | undefined, local: Vault, remote: Vault): Vault;
|
|
707
|
+
declare function mergeFolders(base: string[] | null, local: string[], remote: string[], baseTombstones: Record<string, number>, localTombstones: Record<string, number>, remoteTombstones: Record<string, number>, now: number): {
|
|
708
|
+
names: string[];
|
|
709
|
+
tombstones: Record<string, number>;
|
|
710
|
+
};
|
|
711
|
+
declare function deleteFolder(vault: Vault, name: string, now?: number): Vault;
|
|
712
|
+
declare function deleteCloudFolder(vault: Vault, name: string, now?: number): Vault;
|
|
713
|
+
declare function deleteVaultEntry(vault: Vault, entryId: string, now?: number): Vault;
|
|
714
|
+
declare function mergeFolderTrees(local: FolderNode[], remote: FolderNode[]): FolderNode[];
|
|
715
|
+
|
|
716
|
+
declare const PAIR_URI_SCHEME = "vk-pair://";
|
|
717
|
+
interface PairKeypair {
|
|
718
|
+
privateKey: Uint8Array;
|
|
719
|
+
publicKeyHex: string;
|
|
720
|
+
}
|
|
721
|
+
interface PairPayload {
|
|
722
|
+
version: 1;
|
|
723
|
+
vault: unknown;
|
|
724
|
+
masterPassword: string;
|
|
725
|
+
authType: "password" | "passkey";
|
|
726
|
+
walletAddress?: string;
|
|
727
|
+
licenseKey?: string;
|
|
728
|
+
secretKey?: string;
|
|
729
|
+
transferredAt: number;
|
|
730
|
+
}
|
|
731
|
+
interface ParsedPairUri {
|
|
732
|
+
sessionId: string;
|
|
733
|
+
publicKeyHex: string;
|
|
734
|
+
}
|
|
735
|
+
declare function generatePairKeypair(): PairKeypair;
|
|
736
|
+
declare function derivePairSecret(myPrivateKey: Uint8Array, theirPublicKeyHex: string): Uint8Array;
|
|
737
|
+
declare function encryptForPair(plaintext: string, sharedSecret: Uint8Array): string;
|
|
738
|
+
declare function decryptFromPair(encryptedHex: string, sharedSecret: Uint8Array): string;
|
|
739
|
+
declare const PAIR_SEND_URI_SCHEME = "vk-pair-send://";
|
|
740
|
+
declare function buildPairUri(sessionId: string, publicKeyHex: string): string;
|
|
741
|
+
declare function buildPairSendUri(sessionId: string, publicKeyHex: string): string;
|
|
742
|
+
declare function parsePairUri(uri: string): ParsedPairUri | null;
|
|
743
|
+
declare function parsePairSendUri(uri: string): ParsedPairUri | null;
|
|
744
|
+
declare function isPairUri(uri: string): boolean;
|
|
745
|
+
declare function isPairSendUri(uri: string): boolean;
|
|
746
|
+
declare function buildPairPayload(vault: unknown, masterPassword: string, authType: "password" | "passkey", walletAddress?: string, licenseKey?: string, secretKey?: string): PairPayload;
|
|
747
|
+
declare function parsePairPayload(json: string): PairPayload;
|
|
748
|
+
|
|
749
|
+
declare const BIP39_WORDLIST: string[];
|
|
750
|
+
declare function suggestBip39Words(prefix: string, limit?: number): string[];
|
|
751
|
+
|
|
752
|
+
declare const EFF_WORDLIST: string[];
|
|
753
|
+
|
|
754
|
+
interface PasswordEntropyResult {
|
|
755
|
+
entropyBits: number;
|
|
756
|
+
poolSize: number;
|
|
757
|
+
charsetEntropyBits: number;
|
|
758
|
+
dictionaryPenaltyBits: number;
|
|
759
|
+
patternPenaltyBits: number;
|
|
760
|
+
effectiveBits: number;
|
|
761
|
+
crackTimeDisplay: string;
|
|
762
|
+
strength: PasswordEntropyLevel;
|
|
763
|
+
}
|
|
764
|
+
type PasswordEntropyLevel = "critical" | "weak" | "fair" | "strong" | "excellent";
|
|
765
|
+
declare function estimatePasswordEntropy(password: string): PasswordEntropyResult;
|
|
766
|
+
|
|
767
|
+
interface AutoTagResult {
|
|
768
|
+
tags: Record<string, string[]>;
|
|
769
|
+
}
|
|
770
|
+
interface BreachSummaryResult {
|
|
771
|
+
severity: "low" | "medium" | "high" | "critical";
|
|
772
|
+
riskType: string;
|
|
773
|
+
summary: string;
|
|
774
|
+
dataAtRisk: string[];
|
|
775
|
+
actions: string[];
|
|
776
|
+
contextNote: string;
|
|
777
|
+
}
|
|
778
|
+
declare const VALID_TAGS: readonly ["banking", "social", "email", "shopping", "dev", "gaming", "streaming", "cloud", "education", "health", "travel", "government", "crypto", "news", "work", "other"];
|
|
779
|
+
type ValidTag = typeof VALID_TAGS[number];
|
|
780
|
+
declare const TAG_COLORS: Record<string, string>;
|
|
781
|
+
declare function getTagColor(tag: string): string;
|
|
782
|
+
declare class VaultKeepR_SLM {
|
|
783
|
+
constructor(_proxyUrl?: string);
|
|
784
|
+
private classifyDomain;
|
|
785
|
+
categorizeEntries(entries: {
|
|
786
|
+
id: string;
|
|
787
|
+
url: string;
|
|
788
|
+
username: string;
|
|
789
|
+
}[], _lang?: string, onProgress?: (done: number, total: number) => void): Promise<AutoTagResult>;
|
|
790
|
+
summarizeBreach(breachCount: number, siteUrl: string, lang?: string): Promise<BreachSummaryResult>;
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
export { type AutoTagResult, BIP39_WORDLIST, BUILTIN_FOLDER_IDS, BUILTIN_FOLDER_NODES, type BreachReport, type BreachResult, type BreachSummaryResult, CARD_BRAND_LABELS, type CardBrand, type CloudFile, type CloudFileCategory, type CustomField, DEFAULT_ENTRY_GROUP, DEFAULT_FRAGMENT_COUNT, type DocumentOcrData, EFF_WORDLIST, ENTRY_GROUP_IDS, ENTRY_GROUP_LABELS, EXTENSION_MAX_PAYLOAD_VERSION, EXTENSION_MIN_PAYLOAD_VERSION, type EmailBreach, type EmailBreachReport, type EmailBreachResult, type EncryptedExportPayload, type EncryptedFragmentPayload, type EncryptedImportResult, type EncryptedVault, type EntryGroupId, type ErrorReport, type ExportResult, FRAGMENTED_DEFAULT_THRESHOLD, FRAGMENTED_DEFAULT_TOTAL, type FolderNode, type FragmentDestination, type FragmentedConfig, type FragmentedManifest, type FragmentedPayload, type GeneratePassphraseOptions, type GeneratePasswordOptions, type ImportVaultTextResult, type KeyEnvelope, type LegacyContact, MOBILE_MAX_PAYLOAD_VERSION, MOBILE_MIN_PAYLOAD_VERSION, type MRZResult, type MergeImportResult, type MergeImportStats, P256_SPKI_HEADER, PAIR_SEND_URI_SCHEME, PAIR_URI_SCHEME, PAYLOAD_VERSION_CURRENT, PAYLOAD_VERSION_V1, PAYLOAD_VERSION_V2, PAYLOAD_VERSION_V3, PAYLOAD_VERSION_V4, type PairKeypair, type PairPayload, type ParsedPairUri, type PasskeyEntry, type PasskeyKeyPair, type PasskeyPrfCredential, type PasswordHealthEntry, type PasswordHealthReport, type PasswordStrength, type PasswordStrengthLevel, type PasswordStrengthResult, type PayloadVersion, type PgpImportResult, type PrfCredentialRecord, type PwnedPasswordFetchOptions, type SecureDocument, type SecureDocumentType, type SeedPhraseEntry, type ShareCreationResult, type ShareOptions, type SharePayload, type SkippedExport, type SkippedItem, TAG_COLORS, type TOTPAlgorithm, VALID_TAGS, type ValidTag, type Vault, type VaultEntry, type VaultEntryUri, type VaultEntryUriMatchType, VaultKeepR_SLM, type VaultPayload, addEntry, analyzeVaultHealth, buildAttestationObject, buildAuthDataForCreate, buildAuthDataForGet, buildMutualAuthData, buildPairPayload, buildPairSendUri, buildPairUri, buildShareUrl, calculateMrzChecksum, calculatePasswordStrength, captureError, checkEmailBreaches, checkVaultBreaches, cleanMrzField, clearErrorBuffer, clearHiddenWalletCache, compressVault, computeApiPinHash, createEmptyVault, createEntry, createExportPayload, createFolder, createKeyEnvelope, createSecureShare, createVaultPayload, decompressVault, decryptFromPair, decryptKeyEnvelope, decryptNfcPayload, decryptPasskeyPrivateKey, decryptPgpContent, decryptSecureShare, decryptVault, deduplicateEntries, deleteCloudFolder, deleteFolder, deleteUserFolder, deleteVaultEntry, deriveKeyFromPasskeyPrf, deriveKeyFromPasswordAndSignatureArgon2, deriveKeyFromPasswordAndSignatureLegacy, deriveKeyFromPasswordArgon2, deriveKeyFromPrfResult, deriveMrzKseed, deriveNfcKey, derivePairSecret, digitsOnly, encryptAndFragmentDocument, encryptForPair, encryptNfcPayload, encryptPasskeyPrivateKey, encryptPgpContent, encryptVault, enrollPasskeyForPrf, entryFingerprint, estimatePasswordEntropy, exportBitwardenJson, exportCsv, exportEncryptedVault, exportProtonPassJson, formatCardDisplayMasked, formatCardNumber, formatErrorReport, fromBase64Url, generateBlurredThumbnailCanvas, generateCredentialId, generateDocumentId, generateMasterKey, generateNfcDeviceSecret, generatePairKeypair, generatePasskeyKeyPair, generatePassphrase, generatePassword, generatePrfSalt, generateSaltArgon2, generateSharePin, getCardBrand, getChecksumAddress, getEntryGroupLabel, getErrorBuffer, getHiddenWalletFromPassword, getHiddenWalletLegacy, getHiddenWalletPrivateKey, getLast4, getMostUsedEntries, getPwnedPasswordCount, getTOTPCode, getTOTPRemainingSeconds, getTagColor, import1PasswordPif, importBitwardenJson, importCsv, importEncryptedVault, importFromPgp, importProtonPassJson, importVaultText, isAcceptablePayloadVersion, isCurrentPayloadVersion, isEncryptedExport, isNfcPayloadV1, isNfcPayloadV2, isNfcPayloadV3, isOnePasswordPif, isPairSendUri, isPairUri, isPasskeyPrivateKeyEncrypted, isPrfSupported, isProtonPassExport, isWebAuthnSupported, maskCardNumber, mergeFolderTrees, mergeFolders, mergeFragments, mergeImportedEntries, moveFolder, normalizeSignatureForKdf, normalizeUrl, parseMRZ, parseMrzDate, parsePairPayload, parsePairSendUri, parsePairUri, parseShareUrl, parseTOTPUri, parseVault, parseVaultPayload, publicKeyToCose, publicKeyToSpki, reassembleAndDecryptDocument, removeEntry, renameFolder, resolveFolderName, rpIdHash, scorePassword, secureCompare, secureWipe, sendErrorReport, serializeVault, setArgon2Provider, signPasskeyAssertion, signStoreFragmentMeta, signStoreFragmentMetaWithSigner, splitBuffer, suggestBip39Words, threeWayMerge, toBase64Url, ttlToMs, uniformRandom, updateEntry, updateEntryUseCount, verifyPasskeyAssertion };
|