import type { IEventBus, IEventManager, EventManagerConfig } from './event-interfaces';
import { EventPerformanceOptimizer } from './event-performance';
export declare abstract class BaseEventManager<T extends Record<string, any>> implements IEventManager<T> {
    protected eventBus: IEventBus;
    protected config: EventManagerConfig;
    protected performanceOptimizer: EventPerformanceOptimizer;
    private callbackMap;
    constructor(eventBus: IEventBus, config?: EventManagerConfig);
    on<K extends keyof T>(type: K, callback: (event: T[K]) => void): void;
    off<K extends keyof T>(type: K, callback?: (event: T[K]) => void): void;
    emit<K extends keyof T>(type: K, event: T[K]): void;
    getListenerCount(type?: keyof T): number;
    clearAllListeners(): void;
    getStatistics(): {
        totalEvents: number;
        listenersByType: Record<string, number>;
        totalListeners: number;
    };
    protected validateEvent(eventType: string, event: any): boolean;
    protected abstract getEventTypes(): string[];
}
