import { ClassConstructor } from 'class-transformer';
import { BrokerConfigInterface } from './broker-config.interface';
import { EventSubscriber } from './event-subscriber';
import { ValidationMiddleware } from './validation/validation-middleware';
export declare class RabbitMQSubscriber implements EventSubscriber {
    private readonly config;
    private static instance;
    private channel;
    private server;
    private createdQueue;
    private readonly consumeHandlers;
    private readonly usingRandomQueueName;
    private readonly queueName;
    private readonly logger;
    private readonly eventRetryTimeoutSeconds;
    private readonly consumeTimeoutSeconds;
    private readonly autoAcknowledge;
    private readonly isExclusive;
    private readonly autoDeleteQueue;
    private isConsuming;
    private constructor();
    subscribe(bindingKey: string, onConsume: (message: Record<string, unknown>) => Promise<void>, messageClass: ClassConstructor<any>, enableLogging?: boolean): Promise<void>;
    private startEventSubscribe;
    startReceivingMessages(): Promise<void>;
    private findConsumeHandler;
    close(): Promise<void>;
    setValidationMiddleware(middleware: ValidationMiddleware): void;
    private getChannel;
    private getServer;
    private connect;
    static getInstance(config: BrokerConfigInterface): RabbitMQSubscriber;
}
