///
import * as amqplib from "amqplib";
import { TokenUser, User } from "@openiap/openflow-api";
import { Span } from "@opentelemetry/api";
import * as events from "events";
type QueueOnMessage = (msg: string, options: QueueMessageOptions, ack: any, done: any) => void;
export type exchangealgorithm = "direct" | "fanout" | "topic" | "header";
export type QueueMessageOptions = {
correlationId: string;
replyTo: string;
consumerTag: string;
routingKey: string;
exchangename: string;
priority: number;
};
export type AssertQueue = {
consumerCount: number;
messageCount: number;
queue: string;
};
export declare class Deferred {
promise: Promise;
reject: any;
resolve: any;
constructor();
}
export declare class amqpqueue {
queue: string;
queuename: string;
callback: QueueOnMessage;
ok: AssertQueue;
QueueOptions: any;
consumerTag: string;
}
export declare class amqpexchange {
exchange: string;
algorithm: string;
routingkey: string;
queue: amqpqueue;
callback: QueueOnMessage;
ok: amqplib.Replies.AssertExchange;
ExchangeOptions: any;
}
export declare interface amqpwrapper {
on(event: 'connected', listener: () => void): this;
on(event: 'disconnected', listener: () => void): this;
on(event: string, listener: Function): this;
}
export declare class amqpwrapper extends events.EventEmitter {
static waitFor(condition: any, callback: any): void;
static asyncWaitFor(condition: any): Promise;
connected: boolean;
private conn;
private channel;
private connectionstring;
AssertExchangeOptions: any;
AssertQueueOptions: amqplib.Options.AssertQueue;
private activecalls;
private queues;
private exchanges;
private replyqueue;
private static _instance;
static Instance(): amqpwrapper;
static SetInstance(instance: amqpwrapper): void;
constructor(connectionstring: string);
private timeout;
queuemessagecounter: object;
incqueuemessagecounter(queuename: string): number;
conn_error(error: any): void;
conn_close(): void;
channel_error(error: any): void;
connect(parent: Span): Promise;
shutdown(): void;
reply_queue_message(msg: any, options: QueueMessageOptions, ack: any, done: any): void;
reply_queue_return(e1: any): Promise;
reply_queue_close(msg: any): Promise;
AddReplyQueue(parent: Span): Promise;
RemoveQueueConsumer(user: TokenUser | User, queue: amqpqueue, parent: Span): Promise;
AddQueueConsumer(user: TokenUser | User, queuename: string, QueueOptions: any, jwt: string, callback: QueueOnMessage, parent: Span): Promise;
AddExchangeConsumer(user: TokenUser | User, exchange: string, algorithm: exchangealgorithm, routingkey: string, ExchangeOptions: any, jwt: string, addqueue: boolean, callback: QueueOnMessage, parent: Span): Promise;
OnMessage(sender: amqpqueue, msg: amqplib.ConsumeMessage, callback: QueueOnMessage): void;
sendWithReply(exchange: string, queue: string, data: any, expiration: number, correlationId: string, routingkey: string, span: Span): Promise;
sendWithReplyTo(exchange: string, queue: string, replyTo: string, data: any, expiration: number, correlationId: string, routingkey: string, span: Span, priority?: number): Promise;
send(exchange: string, queue: string, data: any, expiration: number, correlationId: string, routingkey: string, span: Span, priority?: number): Promise;
Adddlx(span: Span): Promise;
IsMyconsumerTag(consumerTag: string): boolean;
IsMyQueue(queuename: string): boolean;
of_logger_ready: boolean;
AddOFLogExchange(parent: Span): Promise;
AddOFExchange(parent: Span): Promise;
}
export {};