import Rabbit from './rabbit'; import * as amqp from 'amqplib'; import Queue from './queue'; import getLogger from './logger'; declare abstract class BaseQueueHandler { queueName: string; rabbit: Rabbit; dlqName: string; retries: number; retryDelay: number; logger: ReturnType; queue: Queue; dlq: Queue; logEnabled: boolean; created: Promise; scope: 'SINGLETON' | 'PROTOTYPE'; prefetch?: number; options: amqp.Options.AssertQueue & amqp.Options.Consume; migrateQueue: boolean; static SCOPES: { singleton: 'SINGLETON'; prototype: 'PROTOTYPE'; }; constructor(queueName: string, rabbit: Rabbit, { retries, retryDelay, logEnabled, scope, createAndSubscribeToQueue, prefetch, migrateQueue, options }?: { retries?: number; retryDelay?: number; logEnabled?: boolean; scope?: "SINGLETON" | "PROTOTYPE"; createAndSubscribeToQueue?: boolean; prefetch?: number; migrateQueue?: boolean; options?: amqp.Options.AssertQueue; }); getDlq(): string; getCorrelationId(msg: amqp.Message, _event?: any): any; getQueueOptions(): amqp.Options.AssertQueue & amqp.Options.Consume; getDlqOptions(): amqp.Options.AssertQueue & amqp.Options.Consume; static prototypeFactory(queueName: string, rabbit: Rabbit, options?: {}): T; createQueues(): Promise; tryHandle(retries: any, msg: amqp.Message, ack: (error: any, reply: any) => any): Promise; handleError(err: any, msg: any): void; logError(err: any): void; getTime(): number; logTime(startTime: number, correlationId: string): void; setTimeout(time: any): Promise; retry(retries: any, msg: any, ack: any): Promise; abstract handle(data: { msg: amqp.Message; event: any; correlationId: string; startTime: number; }): any; afterDlq(data: { msg: amqp.Message; event: any; }): void; addToDLQ(retries: any, msg: amqp.Message, ack: any): Promise; } export default BaseQueueHandler;