export declare abstract class AbstractEventEmitter<EventName extends string, EventListenerTypeMap extends Record<EventName, (...args: any[]) => any>> {
    private listeners;
    getListeners(eventName: EventName): Array<EventListenerTypeMap[EventName]>;
    on: <E extends EventName>(eventName: E, listener: EventListenerTypeMap[E]) => void;
    off: <E extends EventName>(eventName: E, toRemove: EventListenerTypeMap[E]) => void;
    emit: <E extends EventName>(eventName: E, ...data: Parameters<EventListenerTypeMap[E]>) => void;
}
