/**
 * 应用级事件总线
 * 提供高性能、类型安全、可观测的事件通信能力
 */
import type { EventListener, EventMetadata, EventMiddleware, EventListenerOptions, AppEventBusConfig, EventStats } from './types';
/**
 * 事件历史记录
 */
interface EventHistoryRecord {
    event: string;
    data: unknown;
    metadata: EventMetadata;
    executionTime?: number;
}
/**
 * 应用事件总线
 */
export declare class AppEventBus {
    /**
     * 事件监听器映射表
     * 使用 Map + Set 结构提高性能
     */
    private listeners;
    /**
     * 事件历史记录
     */
    private eventHistory;
    /**
     * 事件中间件列表
     */
    private middlewares;
    /**
     * 事件统计信息
     */
    private stats;
    /**
     * 配置
     */
    private config;
    /**
     * 事件计数器（用于生成唯一事件ID）
     */
    private eventCounter;
    /**
     * 监听器ID计数器
     */
    private listenerIdCounter;
    constructor(config?: AppEventBusConfig);
    /**
     * 订阅事件
     *
     * @param event - 事件名称
     * @param listener - 事件监听器
     * @param options - 监听器选项
     * @returns 取消订阅函数
     *
     * @example
     * ```typescript
     * const unsubscribe = eventBus.on('user:login', (data, metadata) => {
     *   console.log('用户登录:', data);
     * });
     *
     * // 取消订阅
     * unsubscribe();
     * ```
     */
    on<T = unknown>(event: string, listener: EventListener<T>, options?: EventListenerOptions): () => void;
    /**
     * 取消订阅事件
     *
     * @param event - 事件名称
     * @param listener - 事件监听器（可选，不提供则取消该事件的所有监听器）
     */
    off<T = unknown>(event: string, listener?: EventListener<T>): void;
    /**
     * 一次性订阅事件
     *
     * @param event - 事件名称
     * @param listener - 事件监听器
     * @param options - 监听器选项
     */
    once<T = unknown>(event: string, listener: EventListener<T>, options?: Omit<EventListenerOptions, 'once'>): () => void;
    /**
     * 发布事件
     *
     * @param event - 事件名称
     * @param data - 事件数据
     * @param metadata - 事件元数据（可选）
     *
     * @example
     * ```typescript
     * await eventBus.emit('user:login', {
     *   userId: '123',
     *   username: 'john',
     * });
     * ```
     */
    emit<T = unknown>(event: string, data?: T, metadata?: Partial<EventMetadata>): Promise<void>;
    /**
     * 同步发布事件（不等待异步监听器完成）
     *
     * @param event - 事件名称
     * @param data - 事件数据
     * @param metadata - 事件元数据（可选）
     */
    emitSync<T = unknown>(event: string, data?: T, metadata?: Partial<EventMetadata>): void;
    /**
     * 注册事件中间件
     *
     * @param middleware - 中间件函数
     * @returns 取消注册函数
     *
     * @example
     * ```typescript
     * const unsubscribe = eventBus.use((event, data, metadata, next) => {
     *   console.log('事件触发:', event);
     *   return next();
     * });
     * ```
     */
    use(middleware: EventMiddleware): () => void;
    /**
     * 清空所有事件监听器
     */
    clear(): void;
    /**
     * 清空事件历史记录
     */
    clearHistory(): void;
    /**
     * 获取事件监听器数量
     *
     * @param event - 事件名称（可选，不提供则返回所有事件的监听器总数）
     */
    listenerCount(event?: string): number;
    /**
     * 获取所有事件名称
     */
    eventNames(): string[];
    /**
     * 获取事件历史记录
     *
     * @param event - 事件名称（可选，如果提供则只返回该事件的历史）
     * @param limit - 限制返回的记录数
     */
    getEventHistory(event?: string, limit?: number): EventHistoryRecord[];
    /**
     * 获取事件统计信息
     *
     * @param event - 事件名称（可选，不提供则返回所有事件的统计）
     */
    getStats(event?: string): EventStats | Map<string, EventStats>;
    /**
     * 获取配置
     */
    getConfig(): AppEventBusConfig;
    /**
     * 更新配置
     */
    updateConfig(config: Partial<AppEventBusConfig>): void;
    /**
     * 销毁事件总线（清理所有资源）
     */
    destroy(): void;
    /**
     * 获取完整事件名称（包含命名空间前缀）
     */
    private getFullEventName;
    /**
     * 记录事件历史
     */
    private recordEventHistory;
    /**
     * 更新统计信息
     */
    private updateStats;
}
export {};
//# sourceMappingURL=AppEventBus.d.ts.map