/**
 * Signal aggregator for `sw:skill-refine`.
 *
 * Wraps `listRefinementsForSkill` and produces a shape consumed by both the
 * Haiku diff prompt and the `--show-signals` output: counts by source,
 * severity distribution, evidence excerpts, and the N-increment window.
 *
 * @module core/skill-refine/aggregator
 */
import type { RefinementSignal, SignalSeverity, SignalSource } from '../../types/skill-signals';
export interface AggregateResult {
    targetSkill: string;
    window: {
        lastNIncrements: number;
    };
    totalSignals: number;
    bySource: Record<SignalSource, number>;
    bySeverity: Record<SignalSeverity, number>;
    incrementIds: string[];
    signals: RefinementSignal[];
    evidence: string[];
}
export interface AggregateOptions {
    lastNIncrements?: number;
}
/**
 * Load + summarize refinement signals for `targetSkill` from the signals
 * file at `signalsFilePath`. When no signals exist, the result still carries
 * a valid shape with zeroed counts — callers can downstream-check `totalSignals`.
 */
export declare function aggregate(signalsFilePath: string, targetSkill: string, opts?: AggregateOptions): Promise<AggregateResult>;
/**
 * Pure summarizer — exposed for tests that want to feed signals directly.
 */
export declare function summarize(signals: RefinementSignal[], targetSkill: string, lastN: number): AggregateResult;
//# sourceMappingURL=aggregator.d.ts.map