export type Detach = () => void;
export type Listener<T> = (event: T) => void;
export declare class EventBus<EventName extends string | number | symbol, Event> {
    private listenerMap;
    constructor();
    on(name: EventName, listener: Listener<Event>): () => void;
    once(name: EventName, listener: Listener<Event>): () => void;
    private off;
    dispatch(name: EventName, event: Event): void;
    dispose(): void;
}
