import { Transport } from './transport';
export declare class TransportWithReconnect {
    #private;
    constructor(config: {
        transportBuilder: () => Promise<Transport>;
        reconnectBaseIntervalMs: number;
        reconnectMaxIntervalMs: number;
        onReconnectRetryBefore: (payload: {
            error: Error;
        }) => Promise<void>;
        onReconnectSucceeded: () => Promise<void>;
    });
    open(): Promise<void>;
    close(): Promise<void>;
    reconnect(): Promise<void>;
    read(): Promise<Uint8Array>;
    write(message: Uint8Array): Promise<void>;
    getUnreliable(): false | {
        read: () => Promise<Uint8Array>;
        write: (message: Uint8Array) => Promise<void>;
    };
    get address(): string;
    get negotiationParams(): import("./transport").NegotiationParams;
    get name(): import("./transport").TransportName;
}
