import type { CiGateRunRecord } from '../types/ciGateContracts';
export interface CiGateRunStoreOptions {
    /** Override the on-disk database path. `:memory:` for ephemeral tests. */
    dbPath?: string;
    /** Override the retention window for tests. */
    retentionMs?: number;
}
export interface CiGateRunListOptions {
    gateId?: string;
    status?: CiGateRunRecord['result']['status'];
    ciSource?: string;
    /** Newest-first cap; defaults to 50, hard ceiling 200. */
    limit?: number;
}
/**
 * SQLite-backed store. Wraps a single connection — single-process
 * writers only, mirroring `BaselineStore`. Tests should construct
 * with `dbPath: ':memory:'` so each suite gets an isolated store.
 */
export declare class CiGateRunStore {
    private readonly db;
    private readonly retentionMs;
    private readonly insertStmt;
    private readonly evictStmt;
    private readonly getStmt;
    constructor(opts?: CiGateRunStoreOptions);
    close(): void;
    /**
     * Append a run. Eviction of expired rows runs inside the same
     * transaction so a long-lived process never accumulates beyond the
     * retention window — an important property for the tests that
     * exercise this through the route layer.
     */
    recordRun(record: CiGateRunRecord): void;
    getRun(runId: string): CiGateRunRecord | undefined;
    listRuns(opts?: CiGateRunListOptions): CiGateRunRecord[];
    private applyMigrations;
}
//# sourceMappingURL=ciGateRunStore.d.ts.map