import { Logger } from '@nestjs/common/services/logger.service';
import { ClientProxy, ReadPacket, WritePacket } from '@nestjs/microservices';
import { AmqpConnectionManager, ChannelWrapper } from 'amqp-connection-manager';
import { Channel, Connection } from 'amqplib';
import { EventEmitter } from 'events';
import { Observable, ReplaySubject } from 'rxjs';
import { ExchangeRmqOptions } from './options';
export declare const REPLY_QUEUE = "amq.rabbitmq.reply-to";
export interface RmqExchangeOptions {
    options?: ExchangeRmqOptions;
}
export declare class ClientRMQExchange extends ClientProxy {
    protected readonly options: ExchangeRmqOptions;
    protected readonly logger: Logger;
    protected connection$: ReplaySubject<Connection>;
    protected client: AmqpConnectionManager | null;
    protected channel: ChannelWrapper | null;
    protected responseEmitter: EventEmitter;
    constructor(options: ExchangeRmqOptions, logger?: Logger);
    isConnected(): boolean | null;
    close(): void;
    connect(): Promise<Connection>;
    createChannel(): Promise<void>;
    createClient(): AmqpConnectionManager;
    mergeDisconnectEvent<T = any>(instance: any, source$: Observable<T>): Observable<T>;
    convertConnectionToPromise(): Promise<Connection>;
    setupExchange(channel: Channel, resolve: () => unknown): Promise<void>;
    consumeChannel(channel: Channel): Promise<void>;
    handleError(client: AmqpConnectionManager): void;
    handleDisconnectError(client: AmqpConnectionManager): void;
    handleMessage(packet: unknown, callback: (packet: WritePacket) => any): Promise<void>;
    handleMessage(packet: unknown, options: Record<string, unknown>, callback: (packet: WritePacket) => any): Promise<void>;
    protected publish(message: ReadPacket, callback: (packet: WritePacket) => any): () => void;
    protected dispatchEvent(packet: ReadPacket): Promise<any>;
    protected initializeSerializer(options: ExchangeRmqOptions): void;
    protected initializeDeserializer(options: ExchangeRmqOptions): void;
    protected mergeHeaders(requestHeaders?: Record<string, string>): Record<string, string> | undefined;
    protected parseMessageContent(content: Buffer): any;
}
//# sourceMappingURL=client-rmq-exchange.d.ts.map