import { BaseEventBusService } from '../../../base-event-bus.service.js';
import type { Logger } from '../../../util/logger.js';
export type RedisEventBusServiceConfig = {
    database?: number;
    keyPrefix?: string;
    name?: string;
    logger?: Logger;
    password?: string;
    url?: string;
    username?: string;
};
export default class RedisEventBusService<E extends string = string> extends BaseEventBusService<E> {
    #private;
    static readonly DEFAULT_KEY_PREFIX = "events";
    constructor(config: RedisEventBusServiceConfig);
    on<T>(eventName: E, listener: (data: T) => void): void;
    once<T>(eventName: E, listener: (data: T) => void): void;
    off(eventName: E): void;
    send(eventName: E, data?: unknown): void;
    sendAndWait<T>(sendEventName: E, successEventName: E, errorEventName: E, data?: unknown): Promise<T>;
    start(): Promise<void>;
    stop(): Promise<void>;
}
