type EventPayload = any;
export type EventBusCallback = (payload?: EventPayload) => void;
export declare class EventBus<T extends string> {
    private queue;
    private onceQueue;
    private allQueue;
    constructor();
    on(name: T, callback: EventBusCallback): void;
    once(name: T, callback: EventBusCallback): void;
    off(name: T, callback?: EventBusCallback): void;
    emit(name: T, payload?: EventPayload): void;
    addListener(listener: (name: T, payload?: EventPayload) => void): void;
    removeListener(listener: (name: T, payload?: EventPayload) => void): void;
}
export {};
