/**
 * AgentEventBus — Agent 间事件通信总线
 *
 * 借鉴 AutoGen Core Event-Driven 架构 + RxJS Observable 模式:
 *   - Agent 间松耦合通信（publish/subscribe）
 *   - 支持同步和异步事件处理
 *   - 内置事件过滤、优先级、TTL
 *   - 支持 request/reply 模式（Agent 间 RPC）
 *
 * @module AgentEventBus
 */
import { EventEmitter } from 'node:events';
/** 标准事件类型 */
export declare const AgentEvents: Readonly<{
    AGENT_CREATED: "agent:created";
    AGENT_STARTED: "agent:started";
    AGENT_COMPLETED: "agent:completed";
    AGENT_FAILED: "agent:failed";
    AGENT_ABORTED: "agent:aborted";
    TOOL_CALL_START: "tool:call:start";
    TOOL_CALL_END: "tool:call:end";
    LLM_CALL_START: "llm:call:start";
    LLM_CALL_END: "llm:call:end";
    STEP_COMPLETED: "step:completed";
    HANDOFF_REQUEST: "handoff:request";
    HANDOFF_ACCEPT: "handoff:accept";
    HANDOFF_RESULT: "handoff:result";
    PROGRESS: "progress";
    THINKING: "thinking";
    STREAM_DELTA: "stream:delta";
    USER_INPUT: "user:input";
    LARK_MESSAGE: "lark:message";
    SCAN_REQUEST: "scan:request";
}>;
export declare class AgentEventBus extends EventEmitter {
    #private;
    constructor();
    /** 获取全局单例 */
    static getInstance(): AgentEventBus;
    /** 重置单例（测试用） */
    static resetInstance(): void;
    /**
     * 发布事件（广播）
     * @param type 事件类型
     * @param payload 事件数据
     * @param [opts.source] 发送者 agentId
     * @param [opts.target] 目标 agentId
     * @param [opts.correlationId] 关联 ID
     */
    publish(type: string, payload?: Record<string, unknown>, opts?: {
        source?: string;
        target?: string;
        correlationId?: string;
    }): void;
    /**
     * 订阅事件
     * @param type 事件类型
     * @param handler 处理函数 (event) => void
     * @returns 取消订阅函数
     */
    subscribe(type: string, handler: (event: Record<string, unknown>) => void): () => void;
    /**
     * Request/Reply 模式 — 发送请求并等待响应
     * @param requestType 请求事件类型
     * @param payload 请求数据
     * @param [opts.timeout=30000] 超时毫秒
     * @param [opts.source] 发送者
     * @returns 响应事件
     */
    request(requestType: string, payload?: Record<string, unknown>, opts?: {
        timeout?: number;
        source?: string;
    }): Promise<unknown>;
    /** 获取事件统计 */
    getStats(): {
        totalEvents: number;
        subscriptionTopics: number;
        pendingReplies: number;
    };
}
export default AgentEventBus;
