/**
 * @param{Number|bigint} int
 * @returns {Number}
 */
export function lengthVarInt(int: number | bigint): number;
export class ParserBase {
    static PADDING: number;
    static WT_RESET_STREAM: number;
    static WT_STOP_SENDING: number;
    static WT_STREAM_WOFIN: number;
    static WT_STREAM_WFIN: number;
    static WT_MAX_DATA: number;
    static WT_MAX_STREAM_DATA: number;
    static WT_MAX_STREAMS_BIDI: number;
    static WT_MAX_STREAMS_UNIDI: number;
    static WT_DATA_BLOCKED: number;
    static WT_STREAM_DATA_BLOCKED: number;
    static WT_STREAMS_BLOCKED_UNIDI: number;
    static WT_STREAMS_BLOCKED_BIDI: number;
    static WT_CLOSE_SESSION: number;
    static WT_DRAIN_SESSION: number;
    static DATAGRAM: number;
    /**
     * @param {import('../types').ParserInit} arg
     */
    constructor({ nativesession, isclient, initialStreamSendWindowOffsetBidi, initialStreamSendWindowOffsetUnidi, initialStreamReceiveWindowOffset, streamShouldAutoTuneReceiveWindow, streamReceiveWindowSizeLimit }: import('../types').ParserInit);
    session: any;
    isclient: boolean;
    /** @type {boolean} */
    blocked: boolean;
    initialStreamSendWindowOffsetUnidi: number;
    initialStreamSendWindowOffsetBidi: number;
    initialStreamReceiveWindowOffset: number;
    streamShouldAutoTuneReceiveWindow: boolean;
    streamReceiveWindowSizeLimit: number;
    /** @type {Map<bigint,Http2WebTransportStream>} */
    wtstreams: Map<bigint, Http2WebTransportStream>;
    scheduler: PriorityScheduler;
    /**
     * @abstract
     * @param {Buffer|Uint8Array} data
     */
    parseData(data: Buffer | Uint8Array): void;
    /**
     * @abstract
     * @param{{type: Number, headerVints: Array<Number|bigint>, payload: Uint8Array|undefined, end?: () => void}} bs
     */
    writeCapsule({ type, headerVints, payload, end }: {
        type: number;
        headerVints: Array<number | bigint>;
        payload: Uint8Array | undefined;
        end?: () => void;
    }): void;
    /**
     * @abstract
     * @return{boolean}
     */
    initialParametersMandatory(): boolean;
    /**
     * @param{{code: Number, reason: string}}arg
     */
    sendClose({ code, reason }: {
        code: number;
        reason: string;
    }): void;
    /**
     * @param {bigint} streamid
     * @param {{sendOrder: number,sendGroupId: bigint}} priority
     */
    newStream(streamid: bigint, priority: {
        sendOrder: number;
        sendGroupId: bigint;
    }): Http2WebTransportStream | undefined;
    scheduleDrainWrites(): void;
    _scheduledDrainWriteCall: Promise<void> | undefined;
    drainWrites(): void;
    /**
     * @param {bigint|undefined} val
     */
    onMaxData(val: bigint | undefined): void;
    /**
     * @param {bigint} streamid
     * @param {bigint} offset
     */
    onMaxStreamData(streamid: bigint, offset: bigint): void;
    /**
     * @param {bigint|undefined} maxOpenStreams
     */
    onMaxStreamUniDi(maxOpenStreams: bigint | undefined): void;
    /**
     * @param {bigint|undefined} maxOpenStreams
     */
    onMaxStreamBiDi(maxOpenStreams: bigint | undefined): void;
    /**
     * @param {bigint|undefined} val
     */
    onDataBlocked(val: bigint | undefined): void;
    /**
     * @param {bigint} streamid
     * @param {bigint} offset
     */
    onStreamDataBlocked(streamid: bigint, offset: bigint): void;
    /**
     * @param {bigint|undefined} maxstreams
     */
    onStreamsBlockedBidi(maxstreams: bigint | undefined): void;
    /**
     * @param {bigint|undefined} maxstreams
     */
    onStreamsBlockedUnidi(maxstreams: bigint | undefined): void;
    /**
     * @param {{code:  number, reason: string}} opts
     */
    onCloseWebTransportSession({ code, reason }: {
        code: number;
        reason: string;
    }): void;
    onDrain(): void;
    /**
     *
     * @param {bigint} streamid
     */
    shouldYieldStream(streamid: bigint): boolean;
    /**
     *
     * @param {bigint} streamid
     */
    scheduleDrainWriteStream(streamid: bigint): void;
    /**
     *
     * @param {bigint} streamid
     */
    removeStream(streamid: bigint): void;
    /**
     *
     * @param {bigint} streamid
     * @param {{sendOrder: number, sendGroupId: bigint}} arg2
     */
    streamUpdateSendOrderAndGroup(streamid: bigint, { sendOrder, sendGroupId }: {
        sendOrder: number;
        sendGroupId: bigint;
    }): void;
    /**
     * @param {number} code
     */
    closeHttp2Stream(code: number): void;
}
import { Http2WebTransportStream } from "./stream.js";
import { PriorityScheduler } from "./priorityscheduler.js";
//# sourceMappingURL=parserbase.d.ts.map