import { IConfiguration } from "../../server";
import { BrokerResolver } from "../BrokerResolver";
import { AmqpBroker, IAmqpConfig, TopicBasedAmqpConfig } from "./AmqpBroker";
import { TopicBasedAmqpBroker } from "./TopicBasedAmqpBroker";
import { BrokerBuilder } from "../BrokerBuilder";
export declare class AmqpBrokerBuilder extends BrokerBuilder<AmqpBroker, IAmqpConfig> {
    constructor(config: IConfiguration);
}
export declare class TopicBasedAmqpBuilder extends BrokerBuilder<TopicBasedAmqpBroker, TopicBasedAmqpConfig> {
    constructor(config: IConfiguration);
}
declare module "../../server/OptionsBuilder" {
    interface OptionsBuilder {
        useAmqpBroker(builder: BrokerResolver<AmqpBrokerBuilder>): AmqpBroker;
        /**
         * Build a topic based amqp broker
         * Use this broker instead of simple AMQP broker, if you need requests to pass through a topic exchange
         * and route using automatic RoutingKeys
         * @param builder
         */
        useTopicBasedAmqpBroker(builder: BrokerResolver<TopicBasedAmqpBuilder>): TopicBasedAmqpBroker;
    }
}
export * from './AmqpClient';
export * from './TopicBasedAmqpBroker';
export * from './AmqpBroker';
export { TopicBasedAmqpConfig } from "./AmqpBroker";
export { IAmqpConnectionHooks } from "./AmqpBroker";
export { IAmqpBindingConfig } from "./AmqpBroker";
