import { MessageHandler, RequestManyOptions, RequestOptions, SendOptions, Subject, BrokerResponse } from './types/broker.js';
export interface Broker {
    get clientId(): number | undefined;
    get name(): string;
    connect(): Promise<this>;
    disconnect(): Promise<void>;
    createInbox(): string;
    on<T>(subject: Subject, listener: MessageHandler<T>): void;
    on<T>(subject: Subject, listener: MessageHandler<T>, queue: string | undefined): void;
    off<T>(subject: Subject, listener: MessageHandler<T>): void;
    send<T>(subject: Subject, data: T, options?: SendOptions): Promise<void>;
    requestMany<T, R>(subject: Subject, data: T, options?: RequestManyOptions): AsyncIterable<BrokerResponse<R>>;
    request<T, R>(subject: Subject, data: T, options?: RequestOptions): Promise<BrokerResponse<R | undefined>>;
}
