/**
 * EventAggregator — 信号聚类引擎（受 Continue EditAggregator 启发）
 *
 * 在短时间窗口内将多个同类事件聚合为一个 batch 事件，避免：
 *   1. SignalCollector 对相同类型的信号重复触发 AI 分析
 *   2. 高频操作（如连续文件保存）产生大量冗余事件
 *   3. 多个 Guard 违规在同一编辑中重复推送
 *
 * 聚合策略:
 *   时间窗口 — 同 key 事件在 windowMs 内合并为一个 batch
 *   空间聚类 — 支持自定义 key 提取函数（如按文件路径/违规规则分组）
 *   去重 —— 已处理的事件在 dedupeWindowMs 内不重复触发
 *
 * 用法:
 *   const agg = new EventAggregator({ windowMs: 5000 });
 *   agg.on('batch', (key, events) => { ... });
 *   agg.push('file_change', { filePath: 'a.js' });
 *   // 5 秒内的多次 push 会合并为一次 batch 回调
 */
export declare class EventAggregator {
    #private;
    /**
     * @param [opts.windowMs=5000] 聚合时间窗口（毫秒）
     * @param [opts.maxBatch=50] 单次 batch 最大事件数
     * @param [opts.dedupeMs=60000] 相同事件去重窗口（毫秒）
     */
    constructor({ windowMs, maxBatch, dedupeMs, }?: {
        windowMs?: number | undefined;
        maxBatch?: number | undefined;
        dedupeMs?: number | undefined;
    });
    /**
     * 推送一个事件到聚合器
     * @param key 聚合键（如 'file_change', 'guard_violation'）
     * @param event 事件数据
     * @param [opts.dedupeId] 去重标识（默认为 JSON hash）
     */
    push(key: string, event: Record<string, unknown>, { dedupeId }?: {
        dedupeId?: string;
    }): void;
    /** 注册 batch 事件监听器 */
    on(eventName: string, fn: (key: string, events: Record<string, unknown>[]) => void): void;
    /** 立即刷新所有待处理 bucket */
    flushAll(): void;
    /** 停止所有计时器 */
    destroy(): void;
    /** 获取待处理事件数 */
    get pendingCount(): number;
}
export default EventAggregator;
