import { IConfig, IRequiredConfig, TQueueParams } from '../../../types';
import { RedisClient } from 'redis-smq-common';
import { ICallback, ICompatibleLogger } from 'redis-smq-common/dist/types';
import { FanOutExchange } from './fan-out-exchange';
export declare class FanOutExchangeManager {
    protected config: IRequiredConfig;
    protected redisClient: RedisClient;
    protected logger: ICompatibleLogger;
    protected constructor(config: IRequiredConfig, redisClient: RedisClient, logger: ICompatibleLogger);
    createExchange(exchange: FanOutExchange, cb: ICallback<void>): void;
    deleteExchange(exchange: FanOutExchange, cb: ICallback<void>): void;
    bindQueue(queue: TQueueParams | string, exchange: FanOutExchange, cb: ICallback<void>): void;
    unbindQueue(queue: TQueueParams | string, exchange: FanOutExchange, cb: ICallback<void>): void;
    getExchanges(cb: ICallback<string[]>): void;
    getExchangeQueues(exchange: FanOutExchange, cb: ICallback<TQueueParams[]>): void;
    getQueueExchange(queue: TQueueParams | string, cb: ICallback<FanOutExchange | null>): void;
    quit(cb: ICallback<void>): void;
    static getExchangeQueues(redisClient: RedisClient, exchange: FanOutExchange, cb: ICallback<TQueueParams[]>): void;
    static getQueueExchange(config: IRequiredConfig, redisClient: RedisClient, queue: TQueueParams | string, cb: ICallback<FanOutExchange | null>): void;
    static createInstance(config: IConfig | undefined, cb: ICallback<FanOutExchangeManager>): void;
}
