/// import * as amqp from 'amqplib'; import { EventEmitter } from 'events'; import { Channel } from './channel'; import Queue from './queue'; import getLogger from './logger'; export default class Rabbit extends EventEmitter { url: string; static STOP_PROPAGATION: { stopPropagation: boolean; }; static STOP_STREAM: string; static INSTANCE: Rabbit; consumeConnection: amqp.ChannelModel; publishConnection: amqp.ChannelModel; consumeChannel: Channel; publishChannel: Channel; connected: Promise; lock: Promise; queues: { [s: string]: Queue; }; connecting: boolean; prefetch: number; replyPattern: boolean; prefix: string; scheduledPublish: boolean; socketOptions: any; private defaultQueueType; logger: ReturnType; private readonly sigtermHandler; constructor(url: string, { prefetch, replyPattern, prefix, scheduledPublish, socketOptions, defaultQueueType, }?: { prefetch?: number; replyPattern?: boolean; prefix?: string; scheduledPublish?: boolean; socketOptions?: any; defaultQueueType?: string; }); private connect; reconnect(): Promise; private emitDisconnected; createChannel(connection: amqp.ChannelModel): Promise; initChannel(channel: Channel, publish?: boolean): Promise; private updateName; createQueue(name: string, options?: amqp.Options.AssertQueue & amqp.Options.Consume & { prefix?: string; prefetch?: any; }, handler?: (msg: any, ack: (error?: any, reply?: any) => any) => any): Promise; destroyQueue(name: string, prefix?: string): Promise; subscribe(name: any, handler: (msg: any, ack: (reply: any) => any) => any, prefix?: string): Promise; unsubscribe(name: any, prefix?: string): Promise; publish(name: string, obj: any, headers?: amqp.Options.Publish, prefix?: string): Promise; publishWithDelay(name: string, obj: any, properties?: amqp.Options.Publish, prefix?: string): Promise; getReply(name: string, obj: any, properties: amqp.Options.Publish, prefix?: string, timeout?: number): Promise; getTopicReply(topicName: string, content: any, properties: amqp.Options.Publish, prefix?: string, timeout?: number): Promise; publishExchange(exchange: string, routingKey: string, content: any, headers: amqp.Options.Publish, prefix?: string): Promise; publishTopic(topicName: string, content: any, headers?: amqp.Options.Publish, prefix?: string): Promise; bindToExchange(queueName: string, exchange: string, routingKey: string, prefix?: string): Promise; unbindFromExchange(queueName: string, exchange: any, topicName: any, prefix?: string): Promise; bindToTopic(queueName: string, topicName: string, prefix?: string): Promise; unbindFromTopic(queueName: string, topicName: string, prefix?: string): Promise; close(): Promise; private handleSigterm; }