import { DashboardMessageBusClientOptions, SendOptions, ResolvedDashboardMessageBusClientOptions, SubscriptionOptions } from "./types";
import { Message, Response } from "@truffle/dashboard-message-bus-common";
import { DashboardMessageBusSubscription, PublishMessageLifecycle } from "./lifecycle";
export declare class DashboardMessageBusClient {
    private _options;
    private _publishConnection;
    private _subscribeConnection;
    private _subscriptions;
    get options(): ResolvedDashboardMessageBusClientOptions;
    constructor(options: DashboardMessageBusClientOptions);
    ready(): Promise<void>;
    publish<MessageType extends Message, ResponseType extends Response>(options: SendOptions): Promise<PublishMessageLifecycle<MessageType, ResponseType>>;
    subscribe<MessageType extends Message>(options: SubscriptionOptions): DashboardMessageBusSubscription<MessageType>;
    close(force?: boolean): Promise<void>;
    waitForOutstandingPromises(): Promise<void>;
    private _messageHandler;
    private _withRetriesAsync;
}
