import { ICallback, ILogger, Runnable, Timer } from 'redis-smq-common';
import { TConsumerMessageHandlerRunnerEvent } from '../../event-bus/index.js';
import { IQueueParsedParams } from '../../queue-manager/index.js';
import { MessageHandler } from '../message-handler/message-handler.js';
import { IConsumerMessageHandlerParams, TConsumerMessageHandler } from '../message-handler/types/index.js';
import { IConsumerContext } from '../types/consumer-context.js';
import { QueueStateChangeHandler } from './queue-state-change-handler.js';
import { IConsumerQueuesWithStatus } from '../types/index.js';
export declare class MessageHandlerRunner extends Runnable<TConsumerMessageHandlerRunnerEvent> {
    protected readonly handlerReconciliationInterval = 5000;
    protected readonly consumerContext: IConsumerContext;
    protected readonly supervisorTimer: Timer;
    protected readonly queueStateChangeHandler: QueueStateChangeHandler;
    protected logger: ILogger;
    protected messageHandlerInstances: MessageHandler[];
    protected messageHandlers: IConsumerMessageHandlerParams[];
    constructor(consumerContext: IConsumerContext);
    protected getQueueIdentifier(queue: IQueueParsedParams): string;
    protected isSameQueue(q1: IQueueParsedParams, q2: IQueueParsedParams): boolean;
    protected isQueueActive(queue: IQueueParsedParams): boolean;
    protected isQueueStopped(queue: IQueueParsedParams): boolean;
    protected isQueuePaused(queue: IQueueParsedParams): boolean;
    protected isQueueLocked(queue: IQueueParsedParams): boolean;
    protected scheduleReconciliation: () => void;
    protected reconcileHandlers: () => void;
    protected getMessageHandlerInstance(queue: IQueueParsedParams): MessageHandler | undefined;
    getMessageHandler(queue: IQueueParsedParams): IConsumerMessageHandlerParams | undefined;
    protected createMessageHandlerInstance(handlerParams: IConsumerMessageHandlerParams): MessageHandler;
    protected runMessageHandler(handlerParams: IConsumerMessageHandlerParams, cb: ICallback): void;
    protected shutdownMessageHandler(messageHandler: MessageHandler, cb: ICallback): void;
    protected runMessageHandlers: (cb: ICallback) => void;
    protected shutDownMessageHandlers: (cb: ICallback) => void;
    protected goingUp(): ((cb: ICallback) => void)[];
    protected goingDown(): ((cb: ICallback) => void)[];
    protected handleError(err: Error): void;
    stopMessageHandler(queue: IQueueParsedParams, cb: ICallback<boolean>): void;
    startMessageHandler(queue: IQueueParsedParams, cb: ICallback<boolean>): void;
    removeMessageHandler(queue: IQueueParsedParams, cb: ICallback): void;
    addMessageHandler(queue: IQueueParsedParams, messageHandler: TConsumerMessageHandler, cb: ICallback<void>): void;
    getQueueWithStatus(): IConsumerQueuesWithStatus[];
    getQueues(): IQueueParsedParams[];
    getActiveQueues(): IQueueParsedParams[];
    getStoppedQueues(): IQueueParsedParams[];
    getPausedQueues(): IQueueParsedParams[];
    getLockedQueues(): IQueueParsedParams[];
    isMessageHandlerStopped(queue: IQueueParsedParams): boolean;
    isMessageHandlerRunning(queue: IQueueParsedParams): boolean;
    getHandlerCount(): {
        total: number;
        active: number;
        stopped: number;
        paused: number;
        locked: number;
    };
}
//# sourceMappingURL=message-handler-runner.d.ts.map