import type { JaitDB } from "../db/connection.js";
export type ThemeMode = "light" | "dark" | "system";
export type SttProvider = "wyoming" | "whisper" | "gpt" | "elevenlabs";
export type ChatProvider = "jait" | "codex" | "claude-code";
export type JaitBackend = "openai" | "openrouter" | "ollama";
/** Reasoning effort levels for reasoning-capable models (OpenAI o-series / GPT-5, etc). */
export type ReasoningEffort = "minimal" | "low" | "medium" | "high";
export declare const REASONING_EFFORT_VALUES: Set<ReasoningEffort>;
export interface UserRecord {
    id: string;
    username: string;
    createdAt: string;
    updatedAt: string;
}
export interface UserSettingsRecord {
    userId: string;
    theme: ThemeMode;
    apiKeys: Record<string, string>;
    disabledTools: string[];
    sttProvider: SttProvider;
    chatProvider: ChatProvider;
    jaitBackend: JaitBackend;
    recentModels: string[];
    selectedModel: string | null;
    reasoningEffort: ReasoningEffort | null;
    projectPickerPath: string | null;
    projectPickerNodeId: string | null;
    updatedAt: string;
}
export declare class UserService {
    private readonly db;
    constructor(db: JaitDB);
    countUsers(): number;
    findByUsername(username: string): UserRecord | null;
    findById(id: string): UserRecord | null;
    createUser(username: string, password: string): UserRecord;
    verifyCredentials(username: string, password: string): UserRecord | null;
    getSettings(userId: string): UserSettingsRecord;
    updateSettings(userId: string, patch: {
        theme?: ThemeMode;
        apiKeys?: Record<string, string>;
        disabledTools?: string[];
        sttProvider?: SttProvider;
        chatProvider?: ChatProvider;
        jaitBackend?: JaitBackend;
        recentModels?: string[];
        selectedModel?: string | null;
        reasoningEffort?: ReasoningEffort | null;
        projectPickerPath?: string | null;
        projectPickerNodeId?: string | null;
    }): UserSettingsRecord;
    bindSessionToUser(userId: string, sessionId: string): boolean;
    clearArchivedSessions(userId: string): number;
}
//# sourceMappingURL=users.d.ts.map