import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { Options } from 'amqplib';
import { MessageBrokerOptions, Message, MessageHandler } from '../../interfaces/message.interfaces';
export declare class RabbitMQService implements OnModuleInit, OnModuleDestroy {
    private readonly options;
    private readonly logger;
    private connection;
    private channel;
    private readonly handlers;
    private isConnected;
    private connectionRetries;
    private readonly maxRetries;
    constructor(options: MessageBrokerOptions);
    getConnectionStatus(): boolean;
    onModuleInit(): Promise<void>;
    onModuleDestroy(): Promise<void>;
    connect(): Promise<void>;
    disconnect(): Promise<void>;
    createExchange(name: string, type?: string, options?: Options.AssertExchange): Promise<void>;
    createQueue(name: string, options?: Options.AssertQueue): Promise<void>;
    bindQueue(queue: string, exchange: string, routingKey: string): Promise<void>;
    publish(routingKey: string, message: Omit<Message, 'id' | 'timestamp'>): Promise<void>;
    publishToMany(routingKeys: string[], message: Omit<Message, 'id' | 'timestamp'>): Promise<void>;
    publishWithOptions(routingKey: string, message: Omit<Message, 'id' | 'timestamp'>, options: Record<string, any>): Promise<void>;
    subscribe(routingKey: string, handler: MessageHandler): Promise<void>;
    unsubscribe(routingKey: string, handler?: MessageHandler): Promise<void>;
    private createMessageHandler;
    private shouldRequeueMessage;
    private handleConnectionError;
    private handleConnectionClose;
    private restoreSubscriptions;
    pause(): Promise<void>;
    resume(): Promise<void>;
}
