/**
 * 插件事件总线
 * 用于插件间通信
 */
/**
 * 事件监听器类型
 */
export type EventListener<T = unknown> = (data: T) => void | Promise<void>;
/**
 * 事件元数据
 */
export interface EventMetadata {
    /**
     * 事件来源（插件名称）
     */
    source?: string;
    /**
     * 事件时间戳
     */
    timestamp: number;
    /**
     * 事件ID（用于追踪）
     */
    eventId?: string;
    /**
     * 事件优先级
     */
    priority?: number;
}
/**
 * 事件包装器
 */
export interface EventWrapper<T = unknown> {
    /**
     * 事件数据
     */
    data: T;
    /**
     * 事件元数据
     */
    metadata: EventMetadata;
}
/**
 * 事件总线配置
 */
export interface PluginEventBusConfig {
    /**
     * 是否启用事件追踪
     */
    enableTracking?: boolean;
    /**
     * 最大事件历史记录数
     */
    maxHistorySize?: number;
    /**
     * 是否启用事件验证
     */
    enableValidation?: boolean;
    /**
     * 事件验证函数
     */
    validator?: (event: string, data: unknown) => boolean;
}
/**
 * 事件总线
 */
export declare class PluginEventBus {
    private listeners;
    private eventHistory;
    private config;
    private eventCounter;
    /**
     * 订阅事件
     *
     * @param event - 事件名称
     * @param listener - 事件监听器（可以接收 EventWrapper 或直接数据）
     * @returns 取消订阅函数
     */
    on<T = unknown>(event: string, listener: EventListener<T | EventWrapper<T>>): () => void;
    /**
     * 取消订阅事件
     *
     * @param event - 事件名称
     * @param listener - 事件监听器
     */
    off<T = unknown>(event: string, listener: EventListener<T>): void;
    constructor(config?: PluginEventBusConfig);
    /**
     * 发布事件
     *
     * @param event - 事件名称
     * @param data - 事件数据
     * @param metadata - 事件元数据（可选）
     */
    emit<T = unknown>(event: string, data?: T, metadata?: Partial<EventMetadata>): Promise<void>;
    /**
     * 发布事件（仅数据，向后兼容）
     *
     * @param event - 事件名称
     * @param data - 事件数据
     */
    emitData<T = unknown>(event: string, data?: T): Promise<void>;
    /**
     * 一次性订阅事件
     *
     * @param event - 事件名称
     * @param listener - 事件监听器
     */
    once<T = unknown>(event: string, listener: EventListener<T>): void;
    /**
     * 清空所有事件监听器
     */
    clear(): void;
    /**
     * 获取事件监听器数量
     *
     * @param event - 事件名称，如果不提供则返回所有事件的监听器总数
     */
    listenerCount(event?: string): number;
    /**
     * 获取所有事件名称
     */
    eventNames(): string[];
    /**
     * 获取事件历史记录
     *
     * @param event - 事件名称（可选，如果提供则只返回该事件的历史）
     * @param limit - 限制返回的记录数
     * @returns 事件历史记录
     */
    getEventHistory(event?: string, limit?: number): Array<{
        event: string;
        data: unknown;
        metadata: EventMetadata;
    }>;
    /**
     * 清空事件历史记录
     */
    clearHistory(): void;
    /**
     * 请求-响应模式：发送请求并等待响应
     *
     * @param event - 事件名称
     * @param data - 请求数据
     * @param timeout - 超时时间（毫秒）
     * @returns 响应数据
     */
    request<TRequest = unknown, TResponse = unknown>(event: string, data?: TRequest, timeout?: number): Promise<TResponse>;
    /**
     * 请求-响应模式：注册请求处理器
     *
     * @param event - 事件名称
     * @param handler - 请求处理器
     * @returns 取消注册函数
     */
    onRequest<TRequest = unknown, TResponse = unknown>(event: string, handler: (data: TRequest, metadata: EventMetadata) => Promise<TResponse> | TResponse): () => void;
    /**
     * 获取配置
     */
    getConfig(): PluginEventBusConfig;
    /**
     * 更新配置
     */
    updateConfig(config: Partial<PluginEventBusConfig>): void;
}
/**
 * 全局插件事件总线实例
 */
export declare const pluginEventBus: PluginEventBus;
//# sourceMappingURL=PluginEventBus.d.ts.map