import { BrokerConfig, Callback, MessageOptions } from '../types';
export declare class Broker {
    private opts;
    private exchange;
    private rabbitMQ;
    private channel;
    private broadcastQueue;
    private closing;
    constructor(opts: BrokerConfig, exchange: string);
    connect(): Promise<void>;
    publish(key: string, data: unknown, options?: MessageOptions): Promise<void>;
    listen<T extends {
        pattern: string;
    }>(cb: Callback<{
        key: string;
        args: any;
        opts: {
            origin: string;
        };
    }>): Promise<void>;
    broadcast(key: string, data: unknown): Promise<void>;
    invoke<T>(key: string, data: unknown, options?: MessageOptions): Promise<T | undefined>;
    private send;
    close(): Promise<void>;
    private assertExchange;
    private assertBroadcast;
    generateCorrelationId(): string;
}
