export declare class EventEmitter<T extends {
    [event: string]: any;
} = {}> {
    private listeners;
    on<TEventName extends keyof T>(event: TEventName, listener: (data: T[TEventName]) => void | any): void;
    once<TEventName extends keyof T>(event: TEventName, listener: (data: T[TEventName]) => void | any): void;
    off<TEventName extends keyof T>(event: TEventName, listener: (data: T[TEventName]) => void | any): void;
    emit<TEventName extends keyof T>(event: TEventName, data?: T[TEventName]): void;
    dispose(): void;
}
