/**
 * Feature Database Mapper
 *
 * Maps between Feature domain objects and SQLite database rows.
 *
 * Mapping Rules:
 * - TypeScript objects (camelCase) <-> SQL columns (snake_case)
 * - Dates stored as INTEGER (unix milliseconds)
 * - Optional fields stored as NULL when missing
 * - Arrays/objects stored as JSON TEXT
 * - SdlcLifecycle stored as string value
 * - ApprovalGates flattened to allow_prd, allow_plan, allow_merge columns
 * - PullRequest flattened to pr_url, pr_number, pr_status, commit_hash, ci_status columns
 * - allowMerge also written to auto_merge for backward compatibility
 */
import type { Feature } from '../../../../domain/generated/output.js';
/**
 * Database row type matching the features table schema.
 * Uses snake_case column names.
 */
export interface FeatureRow {
    id: string;
    name: string;
    slug: string;
    description: string;
    user_query: string;
    repository_path: string;
    branch: string;
    lifecycle: string;
    messages: string;
    plan: string | null;
    related_artifacts: string;
    agent_run_id: string | null;
    spec_path: string | null;
    application_id: string | null;
    build_mode: string;
    fast: number;
    push: number;
    open_pr: number;
    fork_and_pr: number;
    commit_specs: number;
    ci_watch_enabled: number;
    enable_evidence: number;
    commit_evidence: number;
    auto_merge: number;
    allow_prd: number;
    allow_plan: number;
    allow_merge: number;
    worktree_path: string | null;
    repository_id: string | null;
    pr_url: string | null;
    pr_number: number | null;
    pr_status: string | null;
    commit_hash: string | null;
    ci_status: string | null;
    ci_fix_attempts: number | null;
    ci_fix_history: string | null;
    pr_mergeable: number | null;
    upstream_pr_url: string | null;
    upstream_pr_number: number | null;
    upstream_pr_status: string | null;
    parent_id: string | null;
    previous_lifecycle: string | null;
    attachments: string;
    inject_skills: number;
    injected_skills: string | null;
    bedrock_enabled: number;
    deleted_at: number | null;
    created_at: number;
    updated_at: number;
}
/**
 * Maps Feature domain object to database row.
 * Converts Date objects to unix milliseconds and complex fields to JSON for SQL storage.
 *
 * @param feature - Feature domain object
 * @returns Database row object with snake_case columns
 */
export declare function toDatabase(feature: Feature): FeatureRow;
/**
 * Maps database row to Feature domain object.
 * Converts unix milliseconds back to Date objects and JSON strings to arrays/objects.
 *
 * @param row - Database row with snake_case columns
 * @returns Feature domain object with camelCase properties
 */
export declare function fromDatabase(row: FeatureRow): Feature;
//# sourceMappingURL=feature.mapper.d.ts.map