import { ClientEventMap, ClientHandlers, ConnectionOptions, Callback, ErrorCallback, Msg, MsgCallback, SubscribeOptions } from "./types";
import { ProtocolHandler, Subscription } from "./protocol";
import { Nuid } from "./nuid";
export declare function connect(opts: ConnectionOptions): Promise<Connection>;
export declare class Connection implements ClientHandlers {
    options: ConnectionOptions;
    protocol: ProtocolHandler;
    closeListeners: Callback[];
    errorListeners: ErrorCallback[];
    draining: boolean;
    nuid: Nuid;
    private constructor();
    static connect(opts: ConnectionOptions): Promise<Connection>;
    close(): void;
    publish(subject: string, data?: any, reply?: string): Connection;
    subscribe(subject: string, cb: MsgCallback, opts?: SubscribeOptions): Promise<Subscription>;
    request(subject: string, timeout?: number, data?: any): Promise<Msg>;
    flush(cb?: Function): Promise<void> | void;
    drain(): Promise<any>;
    errorHandler(error: Error): void;
    closeHandler(): void;
    addEventListener<K extends keyof ClientEventMap>(type: K, listener: (this: Connection, ev: ClientEventMap[K][]) => void): void;
    isClosed(): boolean;
    isDraining(): boolean;
}
//# sourceMappingURL=nats.d.ts.map