import { OnApplicationBootstrap } from '@nestjs/common';
import { PublishOptions } from 'amqp-connection-manager/dist/types/ChannelWrapper';
import { ConsumeMessage, Message } from 'amqplib';
import { ReplaySubject } from 'rxjs';
export type MessageHandler = (msg: ConsumeMessage) => Promise<void> | void;
export declare class AmqpService implements OnApplicationBootstrap {
    readonly initialized: ReplaySubject<boolean>;
    readonly isReady: Promise<true>;
    private readonly exchangeOptions;
    private exchange;
    private readonly queueOptions;
    private readonly options;
    private readonly channelOptions;
    private connection;
    readonly isConnected: Promise<boolean>;
    private channel;
    private queue;
    private replayQueue;
    private readonly responseEmitter;
    private readonly handler;
    private readonly logger;
    onApplicationBootstrap(): Promise<void>;
    init(): Promise<void>;
    ack(message: Message, allToUp?: boolean): void;
    nack(message: Message, allUpTo?: boolean, requeue?: boolean): void;
    addHandler(routingKey: string, handler: MessageHandler): Promise<void>;
    bind(pattern: string): Promise<void>;
    unbind(pattern: string): Promise<void>;
    send<T>(routingKey: string, data: any, options?: PublishOptions): Promise<T>;
    emit(routingKey: string, data: any, options?: PublishOptions): Promise<void>;
    replay(replayQueue: string, data: any, options?: PublishOptions): Promise<void>;
    private consumeReplayQueue;
    private consumeQueue;
}
//# sourceMappingURL=amqp.service.d.ts.map