import { IEventBusConfig, TEventBusEvent } from './types/index.js';
import { Runnable } from '../runnable/index.js';
import { ILogger } from '../logger/index.js';
import { ICallback } from '../async/index.js';
export declare class EventBus<Events extends TEventBusEvent> extends Runnable<Events> {
    private readonly namespace;
    protected logger: ILogger;
    constructor(config?: IEventBusConfig, namespace?: string);
    protected toNamespacedEvent(event: string): string;
    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;
    removeListener<E extends keyof Events>(event: E, listener: Events[E]): this;
    removeAllListeners<E extends keyof Events>(event?: E): this;
    protected goingDown(): ((cb: ICallback<void>) => void)[];
}
//# sourceMappingURL=event-bus.d.ts.map