import type { LoggerService, OnModuleDestroy } from '@nestjs/common';
import type { AmqpConnectionManager, ChannelWrapper } from 'amqp-connection-manager';
import type { ConfirmChannel } from 'amqplib';
import { ExchangeOptions } from '../interface';
/**
 * Review the work with connections & channels, according to these recommendations.
 * https://www.cloudamqp.com/blog/2018-01-19-part4-rabbitmq-13-common-errors.html
 */
export declare abstract class PubsubManager implements OnModuleDestroy {
    private connection$;
    private readonly connectionName?;
    private readonly urls;
    protected readonly assertExchangeOptions: ExchangeOptions;
    private readonly connectionManagerOptions;
    protected get connection(): AmqpConnectionManager;
    private channelWrapper$;
    protected get channelWrapper(): ChannelWrapper;
    setupChannel(_channel: ConfirmChannel): Promise<void>;
    protected initConnectionIfRequired(): void;
    protected initChannelIfRequired(): void;
    onModuleDestroy(): Promise<void>;
    protected logger(): LoggerService;
}
