import { Channel } from "amqplib";
import { IBus } from "../../application/iBus";
import { GenericMessage, MessageContext, RedeliveryInput, ScheduleInput, ConsumerParams } from "../../application/utils/types";
export declare class RabbitMQBus implements IBus {
    private readonly channel;
    constructor(channel: Channel);
    publish<TMessage extends GenericMessage>(topicName: string, message: TMessage): Promise<void>;
    send<TMessage extends GenericMessage>(queueName: string, message: TMessage, _: {}): Promise<void>;
    redelivery<TMessageContext extends MessageContext<TMessage>, TMessage extends GenericMessage>(params: RedeliveryInput<TMessageContext, TMessage>): Promise<void>;
    schedule<TMessage extends GenericMessage>(params: ScheduleInput<TMessage>): Promise<void>;
    consume<TMessage extends GenericMessage>(params: ConsumerParams<TMessage>): Promise<void>;
    private secondLevelResilience;
    private publishInExchange;
    private sendInQueue;
}
