import type { JSONSchemaType } from 'ajv'; import type { Access, AnyObject, Telemetry } from '../typings'; import type { Route } from './broker'; import amqplib, { ConsumeMessage } from 'amqplib'; import Broker from './broker'; export default class AMQPClient extends Broker { static ERRORS: { NOT_CONNECTED: Error; }; private _connection; private _channel; private _queue; private _alreadyConnected; private _connectionId; private _connectionUrls; private _closing; private _consumerTag; private _consuming; private _consumerTags; constructor(config: any, telemetry?: Telemetry); get connection(): amqplib.ChannelModel; get channel(): amqplib.Channel; mapRoutingKey(topic: string, schema: JSONSchemaType): Route & { routingKey: string; }; connect(): Promise; init(): Promise; end(): Promise; authenticate(tokens: Access[], handler: (...args: any[]) => Promise): (event: any, route: any, headers: any, opts: any) => Promise | undefined; nackIfFirstSeen(message: ConsumeMessage): void; onMessage(message: ConsumeMessage | null): void; emptyQueue(): Promise; publish(topic: string, payload: object, options?: object): Promise; consume(queueConfig: { name: string; }, consumeOptions?: amqplib.Options.Consume): Promise; resubscribe(): Promise[]>; subscribe(topic: string, schema: JSONSchemaType, queueConfig?: any): Promise; next(topic: string, timeout?: number, cb?: (opts: any) => Promise): Promise; }