export interface IEvent {
    type: Readonly<string>;
}
export type Listener<E extends IEvent> = (event: E) => any;
export declare class EventManager<E extends IEvent = IEvent> {
    protected readonly listeners: {
        [key: string]: Listener<E>[];
    };
    getListeners(event: string): Listener<E>[];
    getEvents(): string[];
    extend(eventManager: EventManager): void;
    forwardTo(eventManager: EventManager): () => void;
    on<Event extends E>(event: Event['type'] | Event['type'][], listener: Listener<Event>): () => void;
    emitAsync(event: E): Promise<void>;
    emitAll(event: E): Promise<void>;
    emit(event: E): void;
    protected getListenerArray(event: string): Listener<E>[];
}
//# sourceMappingURL=event-manager.d.ts.map