export interface ActiveTenantOptions {
    /** Override config dir (tests). Defaults to `~/.vskill`. */
    configDir?: string;
    /** Filesystem adapter for tests. */
    fs?: ActiveTenantFs;
}
export interface ActiveTenantFs {
    existsSync(path: string): boolean;
    readFileSync(path: string): string;
    writeFileSync(path: string, content: string, mode: number): void;
    renameSync(oldPath: string, newPath: string): void;
    mkdirSync(path: string): void;
    unlinkSync(path: string): void;
}
/**
 * Read the active tenant slug. Returns null when the config file is
 * missing, unreadable, or has no `currentTenant` field.
 */
export declare function getActiveTenant(opts?: ActiveTenantOptions): string | null;
/**
 * Write the active tenant slug. Preserves unknown keys (read-modify-write
 * merge, AC-US3-06) and uses an atomic .tmp + rename so a concurrent CLI
 * + Studio write never observes a partial file.
 *
 * Pass `null` to clear `currentTenant` while preserving the rest of the
 * config (e.g. `vskill orgs use --clear` later).
 */
export declare function setActiveTenant(slug: string | null, opts?: ActiveTenantOptions): void;
/**
 * Read the entire config object (forward-compat — surfaces all keys, not
 * just `currentTenant`). Returns an empty object when the file is missing
 * or corrupt.
 */
export declare function readConfig(opts?: ActiveTenantOptions): Record<string, unknown>;
/** Resolve the path the helpers will read/write. Useful for diagnostics. */
export declare function getConfigPath(opts?: ActiveTenantOptions): string;
