import type { CompactResult, StoredArtifactMetadata, ToolExecutionInput } from "../types.js";
export type AnalysisEntry = {
    metadata: StoredArtifactMetadata;
};
export type DiscoverCandidate = {
    kind: "missing-rule" | "weak-rule";
    source?: string;
    signature: string;
    count: number;
    totalRawChars: number;
    avgRatio: number | null;
    sampleCommand: string;
    matchedReducer?: string;
};
export type DoctorReport = {
    totals: {
        entries: number;
        genericArtifacts: number;
        weakArtifacts: number;
        avgRatio: number | null;
    };
    health: "good" | "warn" | "poor";
    alerts: string[];
    topMissingCommands: DiscoverCandidate[];
    topWeakReducers: DiscoverCandidate[];
    topReducers: Array<{
        reducer: string;
        count: number;
    }>;
};
export type StatsReport = {
    source?: string;
    totals: {
        observedEntries: number;
        captureTruncatedEntries: number;
        observedRawChars: number;
        observedReducedChars: number;
        observedSavedChars: number;
        observedAvgRatio: number | null;
        observedSavingsPercent: number | null;
        entries: number;
        rawChars: number;
        reducedChars: number;
        savedChars: number;
        avgRatio: number | null;
        savingsPercent: number | null;
    };
    reducers: Array<{
        reducer: string;
        count: number;
        rawChars: number;
        reducedChars: number;
        savedChars: number;
        avgRatio: number | null;
    }>;
    commands: Array<{
        signature: string;
        count: number;
        rawChars: number;
        reducedChars: number;
        savedChars: number;
        avgRatio: number | null;
    }>;
    daily: Array<{
        day: string;
        count: number;
        rawChars: number;
        reducedChars: number;
        savedChars: number;
    }>;
    sources?: StatsSourceReport[];
};
export type StatsOptions = {
    timeZone?: string;
    source?: string;
    bySource?: boolean;
};
export type DiscoverOptions = {
    source?: string;
    bySource?: boolean;
};
export type StatsSourceReport = Omit<StatsReport, "sources"> & {
    source: string;
};
export declare function buildAnalysisEntry(input: ToolExecutionInput, result: CompactResult): AnalysisEntry;
export declare function discoverCandidates(entries: AnalysisEntry[], options?: DiscoverOptions): DiscoverCandidate[];
export declare function statsArtifacts(entries: AnalysisEntry[], options?: StatsOptions): StatsReport;
export declare function doctorArtifacts(entries: AnalysisEntry[]): DoctorReport;
