import { TConsumerMessageHandler, TConsumerRedisKeys, TConsumerInfo, TQueueParams, IConfig, TConsumerHeartbeat } from '../../../types';
import { ConsumerHeartbeat } from './consumer-heartbeat';
import { Base } from '../base';
import { MessageHandlerRunner } from './consumer-message-handler/message-handler-runner';
import { RedisClient, WorkerRunner } from 'redis-smq-common';
import { ICallback, TUnaryFunction } from 'redis-smq-common/dist/types';
export declare class Consumer extends Base {
    protected readonly redisKeys: TConsumerRedisKeys;
    protected readonly messageHandlerRunner: MessageHandlerRunner;
    protected heartbeat: ConsumerHeartbeat | null;
    protected workerRunner: WorkerRunner | null;
    constructor(config?: IConfig, useMultiplexing?: boolean);
    protected setUpHeartbeat: (cb: ICallback<void>) => void;
    protected tearDownHeartbeat: (cb: ICallback<void>) => void;
    protected setUpConsumerWorkers: (cb: ICallback<void>) => void;
    protected initConsumerEventListeners: (cb: ICallback<void>) => void;
    protected tearDownConsumerWorkers: (cb: ICallback<void>) => void;
    protected runMessageHandlers: (cb: ICallback<void>) => void;
    protected shutdownMessageHandlers: (cb: ICallback<void>) => void;
    protected goingUp(): TUnaryFunction<ICallback<void>>[];
    protected goingDown(): TUnaryFunction<ICallback<void>>[];
    consume(queue: string | TQueueParams, messageHandler: TConsumerMessageHandler, cb: ICallback<void>): void;
    cancel(queue: string | TQueueParams, cb: ICallback<void>): void;
    getQueues(): TQueueParams[];
    getRedisKeys(): TConsumerRedisKeys;
    static getConsumersHeartbeats(redisClient: RedisClient, consumersIds: string[], cb: ICallback<Record<string, TConsumerHeartbeat | false>>): void;
    static getConsumerHeartbeat(redisClient: RedisClient, consumerId: string, cb: ICallback<TConsumerHeartbeat | false>): void;
    static getQueueConsumers(redisClient: RedisClient, queue: TQueueParams, transform: boolean | undefined, cb: ICallback<Record<string, TConsumerInfo | string>>): void;
    static getQueueConsumerIds(redisClient: RedisClient, queue: TQueueParams, cb: ICallback<string[]>): void;
    static countQueueConsumers(redisClient: RedisClient, queue: TQueueParams, cb: ICallback<number>): void;
}
