/** * Shared row <-> domain conversion functions for SQLite store modules. * * Eliminates duplication across sqlite-data-accessor.ts, tasks-sqlite.ts, * and session-store.ts. */ import type { Session, Task } from '@cleocode/contracts'; import type { NewTaskRow, SessionRow, TaskRow } from './tasks-schema.js'; /** Convert a database TaskRow to a domain Task object. */ export declare function rowToTask(row: TaskRow): Task; /** Convert a domain Task to a database row for insert/upsert. * * T877 invariant: when a task has a terminal status but no explicit * pipelineStage, derive it so the INSERT satisfies the SQLite trigger * `trg_tasks_status_pipeline_insert` (status=done requires * pipeline_stage IN (contribution, cancelled); status=cancelled requires * pipeline_stage=cancelled). This mirrors the runtime behaviour in * complete/cancel-ops and means callers never have to think about the * invariant — the canonical converter enforces it. */ export declare function taskToRow(task: Partial & { id: string; }): NewTaskRow; /** Convert a domain Task to a row suitable for archived tasks. */ export declare function archivedTaskToRow(task: Task): NewTaskRow; /** Convert a SessionRow to a domain Session. */ export declare function rowToSession(row: SessionRow): Session; //# sourceMappingURL=converters.d.ts.map