import { ICallback } from '../async/index.js';
import { EventEmitter } from '../event/index.js';
import { IEventBus, TEventBusEvent } from './types/index.js';
export declare class EventBus<Events extends TEventBusEvent> extends EventEmitter<Events> implements IEventBus<Events> {
    protected connected: boolean;
    protected constructor();
    emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>): boolean;
    on<E extends keyof Events>(event: E, listener: Events[E]): this;
    once<E extends keyof Events>(event: E, listener: Events[E]): this;
    removeAllListeners<E extends keyof Events>(event?: Extract<E, string>): this;
    removeListener<E extends keyof Events>(event: E, listener: Events[E]): this;
    shutdown(cb: ICallback<void>): void;
    static createInstance<T extends TEventBusEvent>(cb: ICallback<IEventBus<T>>): void;
}
//# sourceMappingURL=event-bus.d.ts.map