import { Counter, Histogram } from 'prom-client';
import { RabbitmqClient } from './RabbitmqClient';
import { RabbitmqConsumerConfig, RabbitmqClientConfig } from './RabbitmqConfig';
import { RepliesConsume } from './RabbitmqClient';
import { RabbitmqConsumerHandler, Message } from './RabbitmqConsumerHandler';
export declare class RabbitmqConsumer extends RabbitmqClient {
    consumeFailuresDelayed: Counter.Internal;
    consumeFailuresDLQ: Counter.Internal;
    consumeFailures: Counter.Internal;
    consumeDurationHistogram: Histogram.Internal;
    protected consumerConfig: RabbitmqConsumerConfig;
    protected messageHandler: RabbitmqConsumerHandler;
    protected consumerTag: string;
    constructor(clientConfig: RabbitmqClientConfig, name: string, consumerConfig: RabbitmqConsumerConfig, handler: RabbitmqConsumerHandler);
    init(addHandler?: boolean): Promise<void>;
    /**
     * Subscribe to a queue
     */
    subscribe(queueName: string, consumerConfig: RabbitmqConsumerConfig): Promise<RepliesConsume>;
    handleMessage(message: Message): Promise<void>;
    sendMessageToDlq(message: Message): void;
    sendMessageToDelayedQueue(message: Message, retriesCount: number, e: Error): void;
    stringyifyMessageContent(message: Message): string;
    /**
     *
     * @param retriesCount number
     * @reutrn number in milliseconds
     */
    getTtl(retriesCount?: number): number;
    allowRetry(retriesCount: number): boolean;
    close(): Promise<void>;
    protected cancelConsumerAndResubscribe(): Promise<void>;
}
