import type { AgentId } from "../types.js";
import type { QualityMode, SavedQualityFinding, SavedQualityReport } from "./schema.js";
/** Parsed quality report; invariant: filename-derived ids are the cross-run diff keys. */
export interface QualityHistoryEntry {
    id: string;
    path: string;
    date: string;
    time: string;
    agent: AgentId;
    randomId: string;
    report: SavedQualityReport;
}
/** Display row for history tables after same-agent deltas have been calculated. */
export interface QualityHistoryRow {
    id: string;
    date: string;
    agent: AgentId;
    qualityMode: QualityMode;
    setupTotal: number;
    systemTotal: number;
    setupDelta: number | null;
    blockerCount: number;
    majorCount: number;
    minorCount: number;
    /** Distinct evidence methods used across this run's findings. Lets the
     *  dashboard distinguish runtime-probe runs from static-only runs. */
    evidenceMethods: SavedQualityFinding["evidence_method"][];
}
/** Finding summary row shared by resolved, new, persisted, and stuck diff sections. */
export interface QualityDiffFindingRow {
    id: string;
    severity: SavedQualityFinding["severity"];
    type: SavedQualityFinding["type"];
    summary: string;
}
/** Diff result for two same-agent, same-mode quality-history entries. */
export interface QualityDiffResult {
    from: QualityHistoryEntry;
    to: QualityHistoryEntry;
    setupDelta: number;
    systemDelta: number;
    resolved: QualityDiffFindingRow[];
    newFindings: QualityDiffFindingRow[];
    persisted: QualityDiffFindingRow[];
    stuck: QualityDiffFindingRow[];
}
/**
 * Load every saved quality-history report from disk.
 *
 * Reports malformed files as warnings and skips them because agent-written
 * history must be non-blocking. Invariant: returned entries stay newest-first
 * and use filename-derived ids for stable diff selection.
 *
 * @param projectPath - Project root containing `.goat-flow/logs/quality`.
 * @returns Parsed entries sorted newest-first plus non-fatal parse warnings.
 */
export declare function loadQualityHistory(projectPath: string): {
    entries: QualityHistoryEntry[];
    warnings: string[];
};
/**
 * Load only the newest dashboard-sized quality-history window. For selected
 * agent tables, one extra matching entry is parsed so the oldest displayed row
 * can still calculate its delta without parsing the whole history directory.
 *
 * @param projectPath - Project root containing `.goat-flow/logs/quality`.
 * @param options - Agent/mode filters and optional dashboard row limit.
 * @returns Bounded entries sorted newest-first plus non-fatal parse warnings.
 */
export declare function loadQualityHistoryWindow(projectPath: string, options: {
    agent: AgentId | null;
    limit: number | null;
    qualityMode?: QualityMode | null;
}): {
    entries: QualityHistoryEntry[];
    warnings: string[];
};
/**
 * Find the latest quality report for one agent/mode without parsing all files.
 * Scans filenames newest-first, filters by agent from the filename, and parses
 * only matching JSON until a valid entry is found.
 *
 * @param projectPath - Project root containing `.goat-flow/logs/quality`.
 * @param agent - Agent whose newest report should be found.
 * @param qualityMode - Optional mode filter; `null` accepts any mode.
 * @returns Latest valid entry plus warnings for malformed matching files.
 */
export declare function findLatestQualityReport(projectPath: string, agent: AgentId, qualityMode?: QualityMode | null): {
    entry: QualityHistoryEntry | null;
    warnings: string[];
};
/**
 * Select visible quality-history entries after agent, mode, and limit filters.
 *
 * @param entries - Pre-sorted quality-history entries.
 * @param options - Filter and limit options from CLI or dashboard callers.
 * @returns Filtered entries, preserving input order.
 */
export declare function selectQualityHistoryEntries(entries: QualityHistoryEntry[], options: {
    agent: AgentId | null;
    limit: number | null;
    qualityMode?: QualityMode | null;
}): QualityHistoryEntry[];
/**
 * Build display rows with same-agent, same-mode setup deltas.
 *
 * @param entries - Pre-sorted quality-history entries.
 * @param options - Filter and limit options from CLI or dashboard callers.
 * @returns History table rows, preserving newest-first order.
 */
export declare function buildQualityHistoryRows(entries: QualityHistoryEntry[], options: {
    agent: AgentId | null;
    limit: number | null;
    qualityMode?: QualityMode | null;
}): QualityHistoryRow[];
/** Build the diff between two quality-history runs. */
export declare function buildQualityDiff(entries: QualityHistoryEntry[], options: {
    agent: AgentId | null;
    pair: string | null;
    qualityMode?: QualityMode | null;
}): {
    ok: true;
    diff: QualityDiffResult;
} | {
    ok: false;
    error: string;
};
export { renderQualityDiffText, renderQualityHistoryText, } from "./history-render.js";
//# sourceMappingURL=history.d.ts.map