/** * Huffman decode: build decode table from weights, decode symbols. * Zstd Huffman streams are read backward. */ import type { BitReaderReverse } from '../bitstream/bitReaderReverse.js'; export interface HuffmanDecodeTable { symbol: Uint8Array; numBits: Uint8Array; maxNumBits: number; length: number; } /** * Convert weights to number of bits per symbol. * Weight = 0 means symbol not present. Weight 1 = least frequent, max weight = most frequent. * Number_of_Bits = Weight ? (Max_Number_of_Bits + 1 - Weight) : 0 */ export declare function weightsToNumBits(weights: readonly number[], maxNumBits: number): number[]; /** * Build Huffman decode table from symbol bit lengths. * Returns table indexed by prefix code (first maxNumBits bits). */ export declare function buildHuffmanDecodeTable(numBits: readonly number[], maxNumBits: number): HuffmanDecodeTable; /** * Decode one Huffman symbol. Reader must be positioned at start of code. */ export declare function decodeHuffmanSymbol(table: HuffmanDecodeTable, reader: BitReaderReverse): number;