import { ICallback, ILogger, IRedisClient, PanicError, Runnable, Timer, WorkerCluster } from 'redis-smq-common';
import { TConsumerMessageHandlerEvent, TRedisSMQEvent } from '../../event-bus/index.js';
import { IRedisSMQParsedConfig } from '../../config-manager/index.js';
import { IQueueParsedParams } from '../../queue-manager/index.js';
import { ConsumeMessage } from './consume-message/consume-message.js';
import { DequeueMessage } from './dequeue-message/dequeue-message.js';
import { IConsumerMessageHandlerParams } from './types/index.js';
import { IConsumerContext } from '../types/consumer-context.js';
export declare class MessageHandler extends Runnable<TConsumerMessageHandlerEvent> {
    protected readonly consumerContext: IConsumerContext;
    protected readonly config: IRedisSMQParsedConfig;
    protected logger: ILogger;
    protected queue: IQueueParsedParams;
    protected dequeueMessage: DequeueMessage | null;
    protected consumeMessage: ConsumeMessage | null;
    protected messageHandler: import("./types/message-handler.js").TConsumerMessageHandler;
    protected autoDequeue: boolean;
    protected queueWorkerCluster: WorkerCluster | null;
    protected redisClient: IRedisClient | null;
    protected timer: Timer;
    protected ephemeralConsumerGroupId: string | null;
    constructor(consumerContext: IConsumerContext, handlerParams: IConsumerMessageHandlerParams, autoDequeue?: boolean);
    protected getRedisClient(): IRedisClient | PanicError;
    protected onMessageReceived: TRedisSMQEvent['consumer.dequeueMessage.messageReceived'];
    protected onMessageNext: TRedisSMQEvent['consumer.dequeueMessage.nextMessage'];
    protected handleError(err: Error): void;
    protected runWorkerCluster: (cb: ICallback) => void;
    protected shutdownWorkerCluster: (cb: ICallback) => void;
    protected createDequeueMessageInstance(): DequeueMessage;
    protected goingUp(): ((cb: ICallback) => void)[];
    protected goingDown(): ((cb: ICallback) => void)[];
    processMessage(messageId: string): void;
    next(): void;
    dequeue(): void;
    getQueue(): IQueueParsedParams;
}
//# sourceMappingURL=message-handler.d.ts.map