/** @format */
import { Color } from '../../color/color.js';
import { InputBuffer } from '../../common/input-buffer.js';
import { PaletteUint8 } from '../../image/palette-uint8.js';
import { DecodeInfo } from '../decode-info.js';
import { BmpCompressionMode } from './bmp-compression-mode.js';
import { BmpFileHeader } from './bmp-file-header.js';
/**
 * Class representing BMP information and decoding logic.
 */
export declare class BmpInfo implements DecodeInfo {
    private readonly _startPos;
    private _redShift;
    private _redScale;
    private _greenShift;
    private _greenScale;
    private _blueShift;
    private _blueScale;
    private _alphaShift;
    private _alphaScale;
    private readonly _width;
    /**
     * Gets the width of the BMP image.
     */
    get width(): number;
    protected readonly _height: number;
    /**
     * Gets the height of the BMP image.
     */
    get height(): number;
    private readonly _backgroundColor;
    /**
     * Gets the background color of the BMP image.
     */
    get backgroundColor(): Color | undefined;
    private readonly _numFrames;
    /**
     * Gets the number of frames in the BMP image.
     */
    get numFrames(): number;
    private readonly _header;
    /**
     * Gets the BMP file header.
     */
    get header(): BmpFileHeader;
    private readonly _headerSize;
    /**
     * Gets the size of the BMP header.
     */
    get headerSize(): number;
    private readonly _planes;
    /**
     * Gets the number of planes in the BMP image.
     */
    get planes(): number;
    private readonly _bitsPerPixel;
    /**
     * Gets the bits per pixel of the BMP image.
     */
    get bitsPerPixel(): number;
    private readonly _compression;
    /**
     * Gets the compression mode of the BMP image.
     */
    get compression(): BmpCompressionMode;
    private readonly _imageSize;
    /**
     * Gets the size of the BMP image.
     */
    get imageSize(): number;
    private readonly _xppm;
    /**
     * Gets the horizontal resolution (pixels per meter) of the BMP image.
     */
    get xppm(): number;
    private readonly _yppm;
    /**
     * Gets the vertical resolution (pixels per meter) of the BMP image.
     */
    get yppm(): number;
    private readonly _totalColors;
    /**
     * Gets the total number of colors in the BMP image.
     */
    get totalColors(): number;
    private readonly _importantColors;
    /**
     * Gets the number of important colors in the BMP image.
     */
    get importantColors(): number;
    private _redMask;
    /**
     * Gets the red mask value.
     */
    get redMask(): number;
    private _greenMask;
    /**
     * Gets the green mask value.
     */
    get greenMask(): number;
    private _blueMask;
    /**
     * Gets the blue mask value.
     */
    get blueMask(): number;
    private _alphaMask;
    /**
     * Gets the alpha mask value.
     */
    get alphaMask(): number;
    private _palette;
    /**
     * Gets the palette of the BMP image.
     */
    get palette(): PaletteUint8 | undefined;
    /**
     * Determines if the BMP image is read bottom-up.
     */
    get readBottomUp(): boolean;
    /**
     * Determines if the alpha channel should be ignored.
     */
    get ignoreAlphaChannel(): boolean;
    /**
     * Initializes a new instance of the BmpInfo class.
     * @param {InputBuffer<Uint8Array>} p - The input buffer.
     * @param {BmpFileHeader} [header] - Optional BMP file header.
     */
    constructor(p: InputBuffer<Uint8Array>, header?: BmpFileHeader);
    /**
     * Reads the palette from the input buffer.
     * @param {InputBuffer<Uint8Array>} input - The input buffer.
     */
    private readPalette;
    /**
     * Decodes a pixel from the input buffer.
     * @param {InputBuffer<Uint8Array>} input - The input buffer.
     * @param {(r: number, g: number, b: number, a: number) => void} pixel - The callback function to handle the decoded pixel.
     * @throws {LibError} Throws an error if the bitsPerPixel or compression is unsupported.
     */
    decodePixel(input: InputBuffer<Uint8Array>, pixel: (r: number, g: number, b: number, a: number) => void): void;
}
