import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import { INotifyReply, IPublishOptions, ISerDes, TypeRmqInterceptor, TypeRmqMiddleware, IRMQOptions, IModuleBroker } from './interfaces';
import { Channel, Options } from 'amqplib';
import { MetaTagsScannerService, RmqErrorService } from './common';
import { RmqNestjsConnectService } from './rmq-connect.service';
import { ModuleRef } from '@nestjs/core';
export declare class RmqService implements OnModuleInit, OnModuleDestroy {
    private readonly moduleRef;
    private readonly rmqNestjsConnectService;
    private readonly metaTagsScannerService;
    private readonly rmqErrorService;
    private readonly RMQOptions;
    private readonly options;
    private readonly serDes;
    private readonly interceptors;
    private readonly middlewares;
    private readonly moduleToken;
    private sendResponseEmitter;
    private extendedOptions;
    private rmqMessageTags;
    private replyToQueue;
    private exchange;
    private isInitialized;
    private connected;
    private logger;
    constructor(moduleRef: ModuleRef, rmqNestjsConnectService: RmqNestjsConnectService, metaTagsScannerService: MetaTagsScannerService, rmqErrorService: RmqErrorService, RMQOptions: IRMQOptions, options: IModuleBroker, serDes: ISerDes, interceptors: TypeRmqInterceptor[], middlewares: TypeRmqMiddleware[], moduleToken: string);
    onModuleInit(): Promise<void>;
    healthCheck(): boolean;
    private init;
    send<IMessage, IReply>(topic: string, message: IMessage, options?: IPublishOptions): Promise<IReply>;
    notify<IMessage>(topic: string, message: IMessage, options?: Options.Publish): Promise<INotifyReply>;
    private listenQueue;
    private handle;
    private reverseInterceptors;
    private executeMiddlewares;
    private interceptorsReverse;
    private getInterceptors;
    private getConsumer;
    private deserializeMessage;
    private getMiddlewares;
    private validate;
    private handleMessage;
    private sendReply;
    private listenReplyQueue;
    private bindQueueExchange;
    private assertReplyQueue;
    private buildErrorResponse;
    ack(...params: Parameters<Channel['ack']>): ReturnType<Channel['ack']>;
    nack(...params: Parameters<Channel['nack']>): ReturnType<Channel['nack']>;
    private initializationCheck;
    private getRouteByTopic;
    private scanMetaTags;
    onModuleDestroy(): Promise<void>;
}
