import type { CompilerShadowReport } from './shadow-report.js';
export interface CompilerShadowRunSummary {
    total: number;
    matched: number;
    mismatched: number;
    truncated: number;
    dropped: number;
}
export interface CompilerShadowRunSnapshot {
    revision: number;
    completed: boolean;
    reports: CompilerShadowReport[];
    summary: CompilerShadowRunSummary;
}
export declare class CompilerShadowReportSession {
    private readonly maxReports;
    private readonly reportsByScope;
    private revision;
    private dropped;
    private completed;
    private disposed;
    constructor(maxReports?: number);
    beginRun(): number;
    record(report: CompilerShadowReport, revision?: number): boolean;
    getRevision(): number;
    completeRun(revision?: number): CompilerShadowRunSnapshot | undefined;
    snapshot(): CompilerShadowRunSnapshot;
    dispose(): void;
    private ensureActive;
}
export declare function getCompilerShadowReportSession(owner: object): CompilerShadowReportSession;
export declare function beginCompilerShadowRun(owner: object): number;
export declare function getCompilerShadowRunRevision(owner: object): number;
export declare function recordCompilerShadowReport(owner: object, report: CompilerShadowReport, revision?: number | undefined): boolean;
export declare function getCompilerShadowRunSnapshot(owner: object): CompilerShadowRunSnapshot;
export declare function completeCompilerShadowReportRun(owner: object, revision?: number | undefined): CompilerShadowRunSnapshot | undefined;
export declare function disposeCompilerShadowReportSession(owner: object): void;
