import { ICallback } from '../async/index.js';
import { EventEmitter } from '../event/index.js';
import { IRedisClient, IRedisConfig, TRedisClientEvent } from './types/index.js';
export declare class RedisClientFactory extends EventEmitter<Pick<TRedisClientEvent, 'error'>> {
    protected instance: IRedisClient | null;
    protected locked: boolean;
    protected config: IRedisConfig;
    constructor(config: IRedisConfig);
    protected createClient(config: IRedisConfig, cb: ICallback<IRedisClient>): void;
    protected setupClient(client: IRedisClient, cb: ICallback<IRedisClient>): void;
    init: (cb: ICallback) => void;
    getSetInstance: (cb: ICallback<IRedisClient>) => void;
    shutdown: (cb: ICallback) => void;
    getInstance(): IRedisClient;
    protected createNodeRedisClient(config: IRedisConfig, cb: ICallback<IRedisClient>): void;
    protected createIORedisClient(config: IRedisConfig, cb: ICallback<IRedisClient>): void;
    protected initializeRedisClient(config: IRedisConfig, cb: ICallback<IRedisClient>): void;
    protected createRedisClient(config: IRedisConfig, cb: ICallback<IRedisClient>): void;
}
//# sourceMappingURL=redis-client-factory.d.ts.map