import { ComponentSpec } from './component-spec';
import { DataStream } from './data-stream';
import { FrameHeader } from './frame-header';
import { HuffmanTable } from './huffman-table';
import { QuantizationTable } from './quantization-table';
import { ScanHeader } from './scan-header';
export declare class Decoder {
    static IDCT_P: number[];
    static TABLE: number[];
    static MAX_HUFFMAN_SUBTREE: number;
    static MSB: number;
    static RESTART_MARKER_BEGIN: number;
    static RESTART_MARKER_END: number;
    buffer: ArrayBuffer | null;
    stream: DataStream | null;
    frame: FrameHeader;
    huffTable: HuffmanTable;
    quantTable: QuantizationTable;
    scan: ScanHeader;
    DU: number[][][];
    HuffTab: number[][][];
    IDCT_Source: number[];
    nBlock: number[];
    acTab: number[][];
    dcTab: number[][];
    qTab: number[][];
    marker: number;
    markerIndex: number;
    numComp: number;
    restartInterval: number;
    selection: number;
    xDim: number;
    yDim: number;
    xLoc: number;
    yLoc: number;
    outputData: Uint8Array | Uint16Array | null;
    restarting: boolean;
    mask: number;
    numBytes: number;
    precision: number | undefined;
    components: Array<typeof ComponentSpec>;
    getter: null | ((index: number, compOffset: number) => number);
    setter: null | ((index: number, val: number, compOffset?: number) => void);
    output: null | ((PRED: number[]) => void);
    selector: null | ((compOffset?: number) => number);
    /**
     * The Decoder constructor.
     * @property {number} numBytes - number of bytes per component
     * @type {Function}
     */
    constructor(buffer?: ArrayBuffer | null, numBytes?: number);
    /**
     * Returns decompressed data.
     */
    decompress(buffer: ArrayBuffer, offset: number, length: number): ArrayBuffer;
    decode(buffer?: ArrayBuffer, offset?: number, length?: number, numBytes?: number): Uint8Array<ArrayBufferLike> | Uint16Array<ArrayBufferLike>;
    decodeUnit(prev: number[], temp: number[], index: number[]): number;
    select1(compOffset?: number): number;
    select2(compOffset?: number): number;
    select3(compOffset?: number): number;
    select4(compOffset?: number): number;
    select5(compOffset?: number): number;
    select6(compOffset?: number): number;
    select7(compOffset?: number): number;
    decodeRGB(prev: number[], temp: number[], index: number[]): number;
    decodeSingle(prev: number[], temp: number[], index: number[]): number;
    getHuffmanValue(table: number[], temp: number[], index: number[]): number;
    getn(PRED: number[], n: number, temp: number[], index: number[]): number;
    getPreviousX(compOffset?: number): number;
    getPreviousXY(compOffset?: number): number;
    getPreviousY(compOffset?: number): number;
    isLastPixel(): boolean;
    outputSingle(PRED: number[]): void;
    outputRGB(PRED: number[]): void;
    setValue8(index: number, val: number): void;
    getValue8(index: number): number;
    setValueRGB(index: number, val: number, compOffset?: number): void;
    getValueRGB(index: number, compOffset: number): number;
    readApp(): number | null;
    readComment(): string | null;
    readNumber(): number | null;
}
