import type { VaultCore, CoreError, CoreErrorCode, generatePassword, totpCode, matchUrl, coreVersion, parseSetupPayload, } from "./kv_wasm.js"; export * from "./kv_wasm.js"; type Async = F extends (...args: infer A) => infer R ? (...args: A) => Promise> : never; type CoreMethods = { [K in keyof VaultCore as K extends "free" | typeof Symbol.dispose ? never : K]: Async; }; /** `VaultCore` running in a Web Worker: same methods, all async, plus the free functions. */ export type RemoteVault = CoreMethods & { generatePassword: Async; totpCode: Async; matchUrl: Async; coreVersion: Async; parseSetupPayload: Async; /** Frees the core (zeroizing keys), releases the tab lock and terminates the worker. */ close(): Promise; }; /** `"InUse"`: another tab already has this vault open (one tab per vault). */ export type ClientErrorCode = CoreErrorCode | "InUse"; export interface ConnectOptions { /** IndexedDB database name. Default "kestrove". */ dbName?: string; /** Persist nothing (previews, tests). */ inMemory?: boolean; /** Bring your own worker (e.g. a bundler's `new Worker(new URL(...))`). It must run worker.js. */ worker?: Worker; } export function connectVault(options?: ConnectOptions): Promise;