type Topic = string;
export interface ViewerEvent {
    topic: Topic;
    payload?: any;
}
export type EventListener = (e: any) => void;
interface SingleEventListener {
    fn: EventListener;
    once: true;
}
export default class EventBus {
    private eventListenerMap;
    constructor(disableLog?: boolean);
    getEventListenerMap(): {
        [x: string]: (SingleEventListener | EventListener)[];
    };
    on(topic: Topic, listener: EventListener, once?: boolean): void;
    once(topic: Topic, listener: EventListener): void;
    off(topic: Topic, listener: EventListener): void;
    emit(topic: Topic, payload?: any): void;
    removeAllListeners(): void;
}
export {};
