import amqplib, { Options } from 'amqplib'; import { MessageErrorHandler, MessageHandlerErrorBehavior } from './rabbitmq.error.behaviors'; export interface RabbitMQExchangeConfig { name: string; type?: string; options?: Options.AssertExchange; queues?: ExchangeQueuesOptions[]; } export interface ExchangeQueuesOptions { routingKey: string | string[]; queue?: string; queueOptions?: QueueOptions; /** * A function that will be called if an error is thrown during processing of an incoming message */ errorHandler?: MessageErrorHandler; allowNonJsonMessages?: boolean; } export interface QueueOptions extends amqplib.Options.AssertQueue { } export interface RabbitQueueMetadata { exchange: string; routingKey: string | string[]; queue?: string; queueOptions?: QueueOptions; /** * A function that will be called if an error is thrown during processing of an incoming message */ errorHandler?: MessageErrorHandler; allowNonJsonMessages?: boolean; } export interface RabbitmqComponentConfig { options?: string | Options.Connect; producer?: { idleTimeoutMillis?: number; }; consumer?: { retries: number; interval: number; }; exchanges?: RabbitMQExchangeConfig[]; defaultExchangeType?: string; defaultExchangeOptions?: Options.AssertExchange; defaultQueueOptions?: QueueOptions; defaultSubscribeErrorBehavior?: MessageHandlerErrorBehavior; defaultConsumerErrorBehavior?: MessageHandlerErrorBehavior; prefetchCount?: number; } export declare const ConfigDefaults: RabbitmqComponentConfig;