/**
 * SQLite Workflow Step Repository
 *
 * Source-of-truth for workflow step lifecycle. All status
 * transitions are single-row UPDATEs that stamp `started_at` /
 * `finished_at` alongside the status change so a crash between
 * two statements never leaves dangling data.
 *
 * `ensureSteps` is idempotent: on first call it inserts the seed
 * list; on subsequent calls it just returns the existing rows.
 * The orchestrator uses this on every run so resuming an
 * interrupted workflow is a no-op for the repository.
 */
import type Database from 'better-sqlite3';
import type { IWorkflowStepRepository, StepSeed } from '../../application/ports/output/repositories/workflow-step-repository.interface.js';
import { type WorkflowStep, WorkflowStepStatus } from '../../domain/generated/output.js';
export declare class SQLiteWorkflowStepRepository implements IWorkflowStepRepository {
    private readonly db;
    constructor(db: Database.Database);
    create(step: WorkflowStep): Promise<void>;
    ensureSteps(sessionId: string, workflowId: string, featureId: string, seeds: readonly StepSeed[]): Promise<WorkflowStep[]>;
    findById(stepId: string): Promise<WorkflowStep | null>;
    listBySession(sessionId: string): Promise<WorkflowStep[]>;
    listByFeature(featureId: string): Promise<WorkflowStep[]>;
    updateStatus(stepId: string, status: WorkflowStepStatus, metadata?: Record<string, unknown>): Promise<void>;
    markAllRunningAsInterrupted(): Promise<number>;
    deleteByFeatureId(featureId: string): Promise<void>;
}
//# sourceMappingURL=sqlite-workflow-step.repository.d.ts.map