import type { DashboardAuditProfileSpan, DashboardAuditProfiler } from "./dashboard-route-types.js";
import type { AuditReport } from "../audit/types.js";
import type { QualityHistoryEntry } from "../quality/history.js";
import type { AgentId } from "../types.js";
import type { DashboardReport } from "./types.js";
/**
 * Home-card projection of the latest quality report, stripped to display totals.
 */
interface LatestQualitySummary {
    id: string;
    date: string;
    time: string;
    agent: AgentId;
    setupTotal: number;
    systemTotal: number;
    blockerCount: number;
    majorCount: number;
    minorCount: number;
    evidenceMethods: string[];
    scope: string | null;
}
/**
 * Decide whether to collect per-span audit timings for one request. Profiling is gated on both an
 * explicit opt-in and a trust signal so an untrusted caller cannot force the extra timing work.
 *
 * @param url - the request URL; profiling requires the `profile=true` query parameter
 * @param devMode - true when the server runs in dev mode; otherwise the `GOAT_FLOW_AUDIT_PROFILE=1`
 *   environment flag must be set to allow profiling on a packaged server
 * @returns true only when the request opts in AND the server is trusted to expose timings
 */
export declare function shouldProfileAuditRequest(url: URL, devMode: boolean): boolean;
export declare function createDashboardAuditProfiler(enabled: boolean): DashboardAuditProfiler;
export declare function appendAuditProfile<T extends object>(body: T, profiler: DashboardAuditProfiler): T & {
    _profile?: {
        summedSpanMs: number;
        spans: DashboardAuditProfileSpan[];
    };
};
/**
 * Project one quality-history entry into the compact Home-card summary, deriving severity counts and
 * the distinct evidence methods from its findings so the dashboard never loads the full report.
 *
 * @param entry - the latest matching history entry, or null when no history matches the filter
 * @returns the display summary, or null when entry is null - null means "no quality run to show yet"
 *   (an expected empty state, not an error)
 */
export declare function buildLatestQualitySummary(entry: QualityHistoryEntry | null): LatestQualitySummary | null;
export declare function buildAuditCacheSignature(projectPath: string, packageVersion: string): string;
/**
 * Attach compact Home-only learning-loop context (loop health plus recent lessons) to a dashboard
 * report, served from a per-project in-memory cache keyed by a content signature with a 60s TTL so
 * repeated Home loads avoid re-scanning `.goat-flow`. Returns a new report; the input is not mutated.
 *
 * @param report - the base dashboard report to extend; returned unchanged except for the two added fields
 * @param projectPath - absolute project root whose `.goat-flow` learning-loop content is summarised
 * @param fresh - when true, bypass the cache and recompute (used right after a fresh audit so the
 *   first response reflects current content)
 * @returns a copy of the report with `learningLoop` and `recentLessons` populated; `learningLoop` is
 *   null when the loop directories are absent or unreadable
 */
export declare function enrichDashboardReport(report: DashboardReport, projectPath: string, fresh?: boolean): DashboardReport;
/**
 * Assemble the `/api/audit` DashboardReport from one aggregate audit and the per-agent audits,
 * deriving agent cards from per-agent results and overall scopes/status from the aggregate. Always
 * runs learning-loop enrichment with fresh=true so a newly built report reflects current content.
 *
 * @param auditRpt - the aggregate (dashboard-wide) audit supplying scopes, overall status, and target
 * @param perAgentAudits - one entry per managed agent, each id paired with that agent's audit report;
 *   becomes the per-agent `agentScores` cards
 * @param projectPath - absolute project root, used for the learning-loop enrichment pass
 * @param profiler - optional per-request profiler; when present the enrichment pass is timed as a span
 * @returns the fully populated dashboard report ready to serialise to the client
 */
export declare function buildDashboardReport(auditRpt: AuditReport, perAgentAudits: {
    id: string;
    audit: AuditReport;
}[], projectPath: string, profiler?: DashboardAuditProfiler): DashboardReport;
export declare function readAuditCache(projectPath: string, packageVersion: string, signature: string): {
    report: DashboardReport;
    cachedAt: string;
} | null;
export declare function writeAuditCache(projectPath: string, packageVersion: string, signature: string, report: DashboardReport): void;
export declare function buildQualityAuditCacheKey(projectPath: string, agent: AgentId): string;
export {};
//# sourceMappingURL=dashboard-reporting.d.ts.map