/**
 * Filter wake cycles to remove noise: compaction-only cycles, cycles with
 * only a finish tool call, cycles that ended in API errors, and pure heartbeat
 * cycles (no user interrupts).  Heartbeat cycles with user interrupts pass
 * through to the main output since they contain interactive work.
 */
import type { WakeCycle } from "./types.js";
export interface FilterStats {
    input: number;
    compactionOnly: number;
    lacksRealToolCall: number;
    apiError: number;
    heartbeat: number;
    output: number;
}
export declare function emptyFilterStats(): FilterStats;
export declare function mergeFilterStats(a: FilterStats, b: FilterStats): FilterStats;
export interface FilterResult {
    filtered: WakeCycle[];
    heartbeatCycles: WakeCycle[];
    stats: FilterStats;
}
/**
 * Filter a list of wake cycles, removing noise and pure heartbeat cycles.
 * Heartbeat cycles with user interrupts stay in `filtered` (they contain
 * interactive work).  Pure heartbeat cycles are returned separately.
 */
export declare function filterCycles(cycles: WakeCycle[]): FilterResult;
//# sourceMappingURL=filter.d.ts.map