import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import { Channel, ConfirmChannel, ConsumeMessage, Options, Replies } from 'amqplib';
import { IExchange, IQueue, TypeQueue, IBindQueue, ISendMessage, ISendToReplyQueueOptions, IRMQOptions } from './interfaces';
export declare class RmqNestjsConnectService implements OnModuleInit, OnModuleDestroy {
    private readonly RMQOptions;
    private connection;
    private baseChannel;
    private replyToChannel;
    isConnected: boolean;
    private logger;
    private isInitialized;
    constructor(RMQOptions: IRMQOptions);
    onModuleInit(): Promise<void>;
    assertExchange(options: IExchange): Promise<Replies.AssertExchange>;
    ack(...params: Parameters<Channel['ack']>): ReturnType<Channel['ack']>;
    nack(...params: Parameters<Channel['nack']>): ReturnType<Channel['nack']>;
    assertQueue(typeQueue: TypeQueue, options?: IQueue): Promise<Replies.AssertQueue>;
    getBaseChannel(): Promise<Channel | ConfirmChannel>;
    bindQueue(bindQueue: IBindQueue): Promise<void>;
    sendToReplyQueue(sendToQueueOptions: ISendToReplyQueueOptions): Promise<void>;
    listenReplyQueue(queue: string, listenQueue: (msg: ConsumeMessage | null) => void, consumeOptions?: Options.Consume): Promise<void>;
    listenQueue(queue: string, listenQueue: (msg: ConsumeMessage | null) => void, consumeOptions?: Options.Consume): Promise<void>;
    publish(sendMessage: ISendMessage, confirmationFunction?: (err: any, ok: Replies.Empty) => void): Promise<void>;
    private setUpConnect;
    private reconnect;
    private setUpChannels;
    private prefetch;
    sendToQueue(queue: string, content: Buffer, options?: Options.Publish): Promise<boolean>;
    private initializationCheck;
    private createChannel;
    private createConfirmChannel;
    onModuleDestroy(): Promise<void>;
}
