/** @type {WeakMap<WebTransportBase, import('./session.js').HttpWTSession>} */
/**
 * @typedef {import('./dom.js').WebTransportCloseInfo} WebTransportCloseInfo
 * @typedef {import('./dom.js').WebTransportBidirectionalStream} WebTransportBidirectionalStream
 * @typedef {import('./dom.js').WebTransportReceiveStream} WebTransportReceiveStream
 * @typedef {import('./dom.js').WebTransportSendStream} WebTransportSendStream
 * @typedef {import('./dom.js').WebTransportSendStreamOptions} WebTransportSendStreamOptions
 * @typedef {import('./session.js').HttpWTSession} HttpWTSession
 * @typedef { import('./session.js').HttpClient} HttpClient
 */
/**
 * @template T
 * @typedef {import('node:stream/web').ReadableStream<T>} ReadableStream<T>
 */
/**
 * @typedef {import('./dom.js').WebTransport} WebTransportInterface
 *
 * @implements {WebTransportInterface}
 */
export class WebTransportBase implements WebTransportInterface {
    /**
     * @param {string} url
     * @param {import('./dom.js').WebTransportOptions} [args]
     */
    constructor(url: string, args?: import("./dom.js").WebTransportOptions | undefined);
    ready: Promise<void>;
    closed: Promise<import("./dom.js").WebTransportCloseInfo>;
    draining: Promise<undefined>;
    datagrams: import("./dom.js").WebTransportDatagramDuplexStream;
    incomingBidirectionalStreams: globalThis.ReadableStream<import("./dom.js").WebTransportBidirectionalStream>;
    incomingUnidirectionalStreams: globalThis.ReadableStream<import("./dom.js").WebTransportReceiveStream>;
    sessionint: import("./session.js").HttpWTSession;
    /**
     * @param{import('./types.js').HttpWebTransportInit} args
     * @return {{sessionint: HttpWTSession, client: HttpClient}}
     * @abstract
     */
    createClient(args: import('./types.js').HttpWebTransportInit): {
        sessionint: HttpWTSession;
        client: HttpClient;
    };
    /**
     * @param{{client: HttpClient, sessionint: HttpWTSession, ourl: URL}} args
     * @abstract
     */
    startUpConnection({ client, sessionint, ourl }: {
        client: HttpClient;
        sessionint: HttpWTSession;
        ourl: URL;
    }): void;
    get reliability(): import("./dom.js").WebTransportReliabilityMode;
    get congestionControl(): import("./dom.js").WebTransportCongestionControl;
    get supportsReliableOnly(): boolean;
    getStats(): Promise<any>;
    /**
     * @param {WebTransportCloseInfo} [closeinfo]
     */
    close(closeinfo?: import("./dom.js").WebTransportCloseInfo | undefined): void;
    /**
     * @param {WebTransportSendStreamOptions} [opts]
     * @returns {Promise<WebTransportBidirectionalStream>}
     */
    createBidirectionalStream(opts?: import("./dom.js").WebTransportSendStreamOptions | undefined): Promise<WebTransportBidirectionalStream>;
    /**
     * @param {WebTransportSendStreamOptions} [opts]
     * @returns {Promise<WebTransportSendStream>}
     */
    createUnidirectionalStream(opts?: import("./dom.js").WebTransportSendStreamOptions | undefined): Promise<WebTransportSendStream>;
    get protocol(): string | undefined;
}
export type WebTransportCloseInfo = import('./dom.js').WebTransportCloseInfo;
export type WebTransportBidirectionalStream = import('./dom.js').WebTransportBidirectionalStream;
export type WebTransportReceiveStream = import('./dom.js').WebTransportReceiveStream;
export type WebTransportSendStream = import('./dom.js').WebTransportSendStream;
export type WebTransportSendStreamOptions = import('./dom.js').WebTransportSendStreamOptions;
export type HttpWTSession = import('./session.js').HttpWTSession;
export type HttpClient = import('./session.js').HttpClient;
/**
 * <T>
 */
export type ReadableStream<T> = import('node:stream/web').ReadableStream<T>;
export type WebTransportInterface = import('./dom.js').WebTransport;
//# sourceMappingURL=webtransportbase.d.ts.map