export interface PrecheckResult {
    ok: boolean;
    checks: Array<{
        name: string;
        ok: boolean;
        detail: string;
    }>;
}
export declare function runPrecheck(): PrecheckResult;
export declare function maskToken(token: string): string;
/**
 * Persist optional LLM provider API keys into the project `.env`. Only keys
 * with non-empty values are written; existing keys are replaced; absent keys
 * are left untouched. Returns the list of keys actually saved (lower-cased
 * provider names — useful for the wizard summary).
 *
 * Spec: only writes when the caller passes something. The wizard collects
 * pasted strings; empty pastes mean "skip". No remote validation here — the
 * Brain layer probes providers at runtime and falls back per the configured
 * model chain.
 */
export interface ApiKeyMap {
    openai?: string;
    anthropic?: string;
    gemini?: string;
    openrouter?: string;
    elevenlabs?: string;
}
export declare function providedApiKeyEnvNames(keys: ApiKeyMap): string[];
export declare function saveApiKeysToEnv(root: string, keys: ApiKeyMap): {
    saved: string[];
    path: string;
};
export declare function saveTelegramConfig(root: string, token?: string, chatId?: string): {
    saved: boolean;
    path: string;
    maskedToken?: string;
};
export declare function validateTelegramToken(token?: string): {
    ok: boolean;
    detail: string;
};
export declare function checkTelegram409Conflict(root: string, token?: string): {
    ok: boolean;
    detail: string;
};
export declare function writeTelegramLock(root: string, token?: string): void;
export declare function validateTelegramChatId(token?: string, chatId?: string): {
    ok: boolean;
    detail: string;
};
export declare function chatSmoke(root?: string): {
    ok: boolean;
    detail: string;
};
