import { Heartbeat, ICallback, IRedisClient, Runnable } from 'redis-smq-common';
import { IHeartbeatPayload } from '../common/index.js';
import { IQueueParsedParams, TQueueExtendedParams } from '../queue-manager/index.js';
import { MessageHandlerRunner } from './message-handler-runner/message-handler-runner.js';
import { TConsumerMessageHandler } from './message-handler/types/index.js';
import { IConsumerContext } from './types/consumer-context.js';
import { IConsumerOptions, IConsumerParsedOptions, IConsumerQueuesWithStatus } from './types/index.js';
import { TConsumerEvent } from '../event-bus/index.js';
export declare class Consumer extends Runnable<TConsumerEvent> {
    private static defaultOptions;
    protected readonly consumerContext: IConsumerContext;
    protected messageHandlerRunner: MessageHandlerRunner;
    protected logger: import("redis-smq-common").ILogger;
    protected heartbeat: Heartbeat<IHeartbeatPayload> | null;
    protected consumerOptions: IConsumerParsedOptions;
    protected redisClient: IRedisClient | null;
    constructor(consumerOptions?: IConsumerOptions);
    protected initRedisClient: (cb: ICallback) => void;
    protected releaseRedisClient: (cb: ICallback) => void;
    protected setUpHeartbeat: (cb: ICallback<void>) => void;
    protected shutdownHeartbeat: (cb: ICallback<void>) => void;
    protected runMessageHandlers: (cb: ICallback<void>) => void;
    protected shutdownMessageHandlers: (cb: ICallback<void>) => void;
    protected goingUp(): ((cb: ICallback<void>) => void)[];
    protected goingDown(): ((cb: ICallback<void>) => void)[];
    protected finalizeUp(): void;
    protected finalizeDown(): void;
    protected handleError(err: Error): void;
    consume(queue: TQueueExtendedParams, messageHandler: TConsumerMessageHandler): Promise<void>;
    consume(queue: TQueueExtendedParams, messageHandler: TConsumerMessageHandler, cb: ICallback<void>): void;
    cancel(queue: TQueueExtendedParams): Promise<void>;
    cancel(queue: TQueueExtendedParams, cb: ICallback<void>): void;
    getQueues(): IQueueParsedParams[];
    getQueuesWithStatus(): IConsumerQueuesWithStatus[];
    static setDefaultOptions(options: IConsumerOptions): void;
    static getDefaultOptions(): IConsumerParsedOptions;
}
//# sourceMappingURL=consumer.d.ts.map