/**
 * Settings Database Mapper
 *
 * Maps between Settings domain objects and SQLite database rows.
 *
 * Mapping Rules:
 * - TypeScript objects (camelCase) ↔ SQL columns (snake_case)
 * - Nested objects flattened to columns (e.g., models.analyze → model_analyze)
 * - Booleans stored as INTEGER (0 = false, 1 = true)
 * - Dates stored as ISO 8601 strings
 * - Optional fields stored as NULL when missing
 */
import type { Settings } from '../../../../domain/generated/output.js';
/**
 * Database row type matching the settings table schema.
 * Uses snake_case column names with flattened nested objects.
 */
export interface SettingsRow {
    id: string;
    created_at: string;
    updated_at: string;
    model_analyze: string;
    model_requirements: string;
    model_plan: string;
    model_implement: string;
    model_default: string;
    user_name: string | null;
    user_email: string | null;
    user_github_username: string | null;
    user_preferred_language: string;
    env_default_editor: string;
    env_shell_preference: string;
    env_terminal_preference: string;
    sys_auto_update: number;
    sys_log_level: string;
    agent_type: string;
    agent_auth_method: string;
    agent_token: string | null;
    notif_in_app_enabled: number;
    notif_browser_enabled: number;
    notif_desktop_enabled: number;
    notif_evt_agent_started: number;
    notif_evt_phase_completed: number;
    notif_evt_waiting_approval: number;
    notif_evt_agent_completed: number;
    notif_evt_agent_failed: number;
    notif_evt_pr_merged: number;
    notif_evt_pr_closed: number;
    notif_evt_pr_checks_passed: number;
    notif_evt_pr_checks_failed: number;
    notif_evt_pr_blocked: number;
    notif_evt_merge_review_ready: number;
    workflow_open_pr_on_impl_complete: number;
    ci_max_fix_attempts: number | null;
    ci_watch_timeout_ms: number | null;
    ci_log_max_chars: number | null;
    ci_watch_enabled: number;
    stage_timeout_analyze_ms: number | null;
    stage_timeout_requirements_ms: number | null;
    stage_timeout_research_ms: number | null;
    stage_timeout_plan_ms: number | null;
    stage_timeout_implement_ms: number | null;
    stage_timeout_fast_implement_ms: number | null;
    stage_timeout_merge_ms: number | null;
    analyze_repo_timeout_analyze_ms: number | null;
    onboarding_complete: number;
    approval_gate_allow_prd: number;
    approval_gate_allow_plan: number;
    approval_gate_allow_merge: number;
    approval_gate_push_on_impl_complete: number;
    workflow_enable_evidence: number;
    workflow_commit_evidence: number;
    hide_ci_status: number;
    default_fast_mode: number;
    feature_flag_env_deploy: number;
    feature_flag_debug: number;
    feature_flag_react_file_manager: number;
    feature_flag_projects: number;
    feature_flag_code_review: number;
    feature_flag_collaboration: number;
    feature_flag_bedrock_integration: number;
    interactive_agent_enabled: number;
    interactive_agent_auto_timeout_minutes: number;
    interactive_agent_max_concurrent_sessions: number;
    auto_archive_delay_minutes: number;
    fab_position_swapped: number;
    skill_injection_enabled: number;
    skill_injection_skills: string | null;
    default_home_page: string;
}
/**
 * Maps Settings domain object to database row.
 * Flattens nested objects and converts types for SQL storage.
 *
 * @param settings - Settings domain object
 * @returns Database row object with snake_case columns
 */
export declare function toDatabase(settings: Settings): SettingsRow;
/**
 * Maps database row to Settings domain object.
 * Reconstructs nested objects and converts types from SQL.
 *
 * @param row - Database row with snake_case columns
 * @returns Settings domain object with camelCase properties
 */
export declare function fromDatabase(row: SettingsRow): Settings;
//# sourceMappingURL=settings.mapper.d.ts.map