import { ICallback } from '../async/index.js';
import { IEventBusRedisConfig, TEventBusEvent } from './types/index.js';
import { RedisClientFactory } from '../redis-client/index.js';
import { EventBus } from './event-bus.js';
export declare class EventBusRedis<Events extends TEventBusEvent> extends EventBus<Events> {
    protected pubClient: RedisClientFactory;
    protected subClient: RedisClientFactory;
    private readonly subscribedEvents;
    constructor(config: IEventBusRedisConfig, namespace?: 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?: Extract<E, string>): this;
    private ensureSubscribed;
    private ensureUnsubscribed;
    private syncSubscriptionsWithListeners;
    private getListenerEventNames;
    protected goingUp(): ((cb: ICallback<void>) => void)[];
    protected goingDown(): ((cb: ICallback<void>) => void)[];
}
//# sourceMappingURL=event-bus-redis.d.ts.map