import { ReadableStream, WritableStream } from 'web-streams-polyfill';
type WebTransportOptions = {
    allowPooling: boolean;
    serverCertificateHashes: any;
};
type WebTransportStats = {
    timestamp: number;
    bytesSent: number;
    packetsSent: number;
    packetsLost: number;
    numOutgoingStreamsCreated: number;
    numIncomingStreamsCreated: number;
    bytesReceived: number;
    packetsReceived: number;
    smoothedRtt: number;
    rttVariation: number;
    minRtt: number;
    numReceivedDatagramsDropped: number;
};
type WebTransportCloseInfo = {
    closeCode: number;
    reason: string;
};
type WebTransportDatagramDuplexStream = {
    get readable(): ReadableStream;
    get writable(): WritableStream;
    get maxDatagramSize(): number;
    incomingMaxAge(): number | undefined;
    outgoingMaxAge(): number | undefined;
    incomingHighWaterMark(): number;
    outgoingHighWaterMark(): number;
};
type WebTransportBidirectionalStream = {
    get readable(): ReadableStream;
    get writable(): WritableStream;
};
declare class WebTransport {
    constructor(url: string, options?: WebTransportOptions);
    getStats(): Promise<WebTransportStats>;
    get ready(): Promise<void>;
    get closed(): Promise<WebTransportCloseInfo>;
    close(closeInfo?: WebTransportCloseInfo): void;
    get datagrams(): WebTransportDatagramDuplexStream;
    createBidirectionalStream(): Promise<WebTransportBidirectionalStream>;
    /** a ReadableStream of WebTransportBidirectionalStream objects */
    get incomingBidirectionalStreams(): ReadableStream;
    createUnidirectionalStream(): Promise<WritableStream>;
    get incomingUnidirectionalStreams(): ReadableStream;
}
export declare const createWebTransport: (url: string, options?: WebTransportOptions | undefined) => WebTransport;
export {};
