/**
 * Interactive Session Database Mapper
 *
 * Maps between InteractiveSession domain objects and SQLite database rows.
 *
 * Mapping Rules:
 * - TypeScript objects (camelCase) <-> SQL columns (snake_case)
 * - Dates stored as INTEGER (unix milliseconds)
 * - Optional stoppedAt stored as NULL when absent
 * - InteractiveSessionStatus stored as string enum values
 */
import type { InteractiveSession } from '../../../../domain/generated/output.js';
/**
 * Database row type matching the interactive_sessions table schema.
 * Uses snake_case column names.
 */
export interface InteractiveSessionRow {
    id: string;
    feature_id: string;
    status: string;
    agent_session_id: string | null;
    turn_status: string;
    started_at: number;
    stopped_at: number | null;
    last_activity_at: number;
    created_at: number;
    updated_at: number;
    total_cost_usd: number;
    total_input_tokens: number;
    total_output_tokens: number;
    total_turns: number;
}
/**
 * InteractiveSession extended with DB columns that are not yet in the
 * TypeSpec-generated domain type (turn_status, agent_session_id, totals).
 * These fields are populated by fromDatabase and are available at runtime.
 */
export type InteractiveSessionFull = InteractiveSession & {
    turnStatus: string;
    agentSessionId: string | null;
    totalCostUsd: number;
    totalInputTokens: number;
    totalOutputTokens: number;
    totalTurns: number;
};
/**
 * Maps InteractiveSession domain object to database row.
 * Converts Date objects to unix milliseconds for SQL storage.
 */
export declare function toDatabase(session: InteractiveSession): InteractiveSessionRow;
/**
 * Maps database row to InteractiveSessionFull (InteractiveSession + extra DB columns).
 * Converts unix milliseconds back to Date objects.
 */
export declare function fromDatabase(row: InteractiveSessionRow): InteractiveSessionFull;
//# sourceMappingURL=interactive-session.mapper.d.ts.map