/**
 * 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
 */
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;
    repository_path: string;
    branch: string;
    lifecycle: string;
    messages: string;
    plan: string | null;
    related_artifacts: string;
    agent_run_id: string | null;
    spec_path: string | 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