import { type AccountRepository } from './account-repository.js'; export { isSafeEmail, resolvedAccountFile } from './account-paths.js'; export { save } from './accounts-save.js'; export { load } from './accounts-load.js'; export declare function getCurrent(claudeJsonPath: string): string; export declare function list(accountsDirPath: string, deps?: { repo?: AccountRepository; }): string[]; export declare function remove(email: string, accountsDirPath: string, deps?: { repo?: AccountRepository; }): void; /** * Remove an account, refusing to drop the currently-active one. The * "active?" check and the unlink share a single `withLock` so a switch * happening concurrently can't sneak through between the two reads. * * Throws if the target is the active account; this is a hard error, * not a silent no-op — callers want to surface "switch first" to the * user. ENOENT bubbles up unchanged from `remove()`. */ export declare function removeSafely(email: string, claudeJsonPath: string, accountsDirPath: string, deps?: { repo?: AccountRepository; }): void; /** * Re-save the active account's snapshot when `~/.claude.json` has been * mutated externally (typically by a `/login` issued from inside a * running claude session). Without this, the snapshot keeps the * tokens captured at the last `claude switch` and silently drifts — * a later `profile import ` would replay stale tokens, claude * would 401, user would re-login again, vicious loop. * * Idempotent: when the snapshot's mtime is at-or-after claude.json's, * this is a no-op. The save only runs when claude.json is the newer * source. Failures are silent — drift is a UX issue, not a hard error. */ export declare function syncActiveSnapshotIfStale(claudeJsonPath: string, accountsDirPath: string): boolean;