import * as nats from 'nats';
import { Broker } from './broker.js';
import { RequestOptions, SendOptions, BrokerResponse, Subject, RequestManyOptions, MessageHandler } from './types/broker.js';
export type { ConnectionOptions } from 'nats';
export declare class NatsBroker implements Broker {
    readonly options: nats.ConnectionOptions;
    clientId: number | undefined;
    private readonly ee;
    private connection;
    private connectionClosedWaiter;
    private readonly codec;
    private subscriptions;
    constructor(options: nats.ConnectionOptions);
    get name(): string;
    connect(): Promise<this>;
    disconnect(): Promise<void>;
    createInbox(): string;
    private decode;
    private handleMessageFromSubscription;
    private encodeHeaders;
    private decodeHeaders;
    private subscribe;
    private unsubscribe;
    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): AsyncIterableIterator<BrokerResponse<R>>;
    request<T, R>(subject: Subject, data: T, options?: RequestOptions): Promise<BrokerResponse<R>>;
}
