import { Buffer } from 'node:buffer';
import { ESubProtocol } from './ESubProtocol.js';
import { IVBANHeaderCommon } from './IVBANHeaderCommon.js';
import { IVBANHeader } from './IVBANHeader.js';
export declare class VBANPacket {
    /**
     * the subProtocol of this packet
     * {@link ESubProtocol}
     */
    subProtocol: ESubProtocol;
    /**
     * the name of the current stream .
     * Voicemeeter rely on it to allow a packet or not
     */
    streamName: string;
    /**
     * Sample Rate for this stream
     */
    sr: number;
    /**
     * frameCounter allow checking if you receive frame in order, and without losing them
     */
    frameCounter: number;
    static readonly frameCounters: Map<string, number>;
    static getSampleRate(srIndex?: number): number;
    static parsePacketHeader(headersBuffer: Buffer): IVBANHeaderCommon;
    static parsePacket(packet: Buffer): {
        headers: IVBANHeaderCommon;
        data: Buffer;
    };
    /**
     * Extract headers and data from UDPPacket, each Packet will continue the process
     * @deprecated
     */
    static prepareFromUDPPacket(headersBuffer: Buffer, checkSR?: boolean): IVBANHeaderCommon;
    /**
     * common constructor
     */
    constructor(headers: IVBANHeader);
    /**
     * Convert a VBANPacket to a UDP packet
     */
    protected static convertToUDPPacket(headers: Omit<IVBANHeaderCommon, 'srIndex'>, data: Buffer, sampleRate?: number): Buffer;
    /**
     * EXPERIMENTAL - DO NOT USE
     *
     * @experimental
     */
    static checkFrameCounter(headers: VBANPacket): void;
    toUDPPacket(): Buffer;
}
