/** @format */
import { Channel } from '../color/channel.js';
import { Color, ColorConvertOptions } from '../color/color.js';
import { Format } from '../color/format.js';
import { MemoryImage } from './image.js';
import { MemoryImageDataUint1 } from './image-data-uint1.js';
import { Palette } from './palette.js';
import { Pixel } from './pixel.js';
/**
 * Represents a pixel with 1-bit color depth.
 * Implements Pixel, Iterable<Pixel>, and Iterator<Pixel>.
 */
export declare class PixelUint1 implements Pixel, Iterable<Pixel>, Iterator<Pixel> {
    private _index;
    private _bitIndex;
    private _rowOffset;
    private readonly _image;
    /**
     * Gets the image data associated with this pixel.
     */
    get image(): MemoryImageDataUint1;
    private _x;
    /**
     * Gets the x-coordinate of the pixel.
     */
    get x(): number;
    private _y;
    /**
     * Gets the y-coordinate of the pixel.
     */
    get y(): number;
    /**
     * Gets the normalized x-coordinate of the pixel.
     */
    get xNormalized(): number;
    /**
     * Gets the normalized y-coordinate of the pixel.
     */
    get yNormalized(): number;
    /**
     * Gets the index of the pixel.
     */
    get index(): number;
    /**
     * Sets the index of the pixel.
     */
    set index(i: number);
    /**
     * Gets the raw data of the image.
     */
    get data(): Uint8Array;
    /**
     * Checks if the pixel is within the valid range of the image.
     */
    get isValid(): boolean;
    /**
     * Gets the width of the image.
     */
    get width(): number;
    /**
     * Gets the height of the image.
     */
    get height(): number;
    /**
     * Gets the number of channels in the pixel.
     */
    get length(): number;
    /**
     * Gets the number of channels in the image.
     */
    get numChannels(): number;
    /**
     * Gets the maximum value a channel can have.
     */
    get maxChannelValue(): number;
    /**
     * Gets the maximum value the index can have.
     */
    get maxIndexValue(): number;
    /**
     * Gets the format of the pixel.
     */
    get format(): Format;
    /**
     * Checks if the image format is LDR (Low Dynamic Range).
     */
    get isLdrFormat(): boolean;
    /**
     * Checks if the image format is HDR (High Dynamic Range).
     */
    get isHdrFormat(): boolean;
    /**
     * Checks if the image has a palette.
     */
    get hasPalette(): boolean;
    /**
     * Gets the palette associated with the image, if any.
     */
    get palette(): Palette | undefined;
    /**
     * Gets the red channel value.
     */
    get r(): number;
    /**
     * Sets the red channel value.
     */
    set r(r: number);
    /**
     * Gets the green channel value.
     */
    get g(): number;
    /**
     * Sets the green channel value.
     */
    set g(g: number);
    /**
     * Gets the blue channel value.
     */
    get b(): number;
    /**
     * Sets the blue channel value.
     */
    set b(b: number);
    /**
     * Gets the alpha channel value.
     */
    get a(): number;
    /**
     * Sets the alpha channel value.
     */
    set a(a: number);
    /**
     * Gets the normalized red channel value.
     */
    get rNormalized(): number;
    /**
     * Sets the normalized red channel value.
     */
    set rNormalized(v: number);
    /**
     * Gets the normalized green channel value.
     */
    get gNormalized(): number;
    /**
     * Sets the normalized green channel value.
     */
    set gNormalized(v: number);
    /**
     * Gets the normalized blue channel value.
     */
    get bNormalized(): number;
    /**
     * Sets the normalized blue channel value.
     */
    set bNormalized(v: number);
    /**
     * Gets the normalized alpha channel value.
     */
    get aNormalized(): number;
    /**
     * Sets the normalized alpha channel value.
     */
    set aNormalized(v: number);
    /**
     * Gets the luminance of the pixel.
     */
    get luminance(): number;
    /**
     * Gets the normalized luminance of the pixel.
     */
    get luminanceNormalized(): number;
    /**
     * Gets the length of the image data.
     */
    get imageLength(): number;
    /**
     * Constructs a new PixelUint1 instance.
     * @param {number} x - The x-coordinate of the pixel.
     * @param {number} y - The y-coordinate of the pixel.
     * @param {number} index - The index of the pixel.
     * @param {number} bitIndex - The bit index of the pixel.
     * @param {number} rowOffset - The row offset of the pixel.
     * @param {MemoryImageDataUint1} image - The image data associated with the pixel.
     */
    constructor(x: number, y: number, index: number, bitIndex: number, rowOffset: number, image: MemoryImageDataUint1);
    /**
     * Creates a new PixelUint1 instance from image data.
     * @param {MemoryImageDataUint1} image - The image data.
     * @returns {PixelUint1} The new PixelUint1 instance.
     */
    static imageData(image: MemoryImageDataUint1): PixelUint1;
    /**
     * Creates a new PixelUint1 instance from an image.
     * @param {MemoryImage} image - The image.
     * @returns {PixelUint1} The new PixelUint1 instance.
     */
    static image(image: MemoryImage): PixelUint1;
    /**
     * Creates a new PixelUint1 instance from another PixelUint1 instance.
     * @param {PixelUint1} other - The other PixelUint1 instance.
     * @returns {PixelUint1} The new PixelUint1 instance.
     */
    static from(other: PixelUint1): PixelUint1;
    /**
     * Gets the internal channel value.
     * @param {number} channel - The channel index.
     * @returns {number} The internal channel value.
     */
    private getChannelInternal;
    /**
     * Advances the iterator to the next pixel.
     * @returns {IteratorResult<Pixel>} The result of the iteration.
     */
    next(): IteratorResult<Pixel>;
    /**
     * Sets the position of the pixel.
     * @param {number} x - The x-coordinate.
     * @param {number} y - The y-coordinate.
     */
    setPosition(x: number, y: number): void;
    /**
     * Sets the normalized position of the pixel.
     * @param {number} x - The normalized x-coordinate.
     * @param {number} y - The normalized y-coordinate.
     */
    setPositionNormalized(x: number, y: number): void;
    /**
     * Gets the value of a specific channel.
     * @param {number | Channel} channel - The channel index or Channel enum.
     * @returns {number} The value of the specified channel.
     */
    getChannel(channel: number | Channel): number;
    /**
     * Gets the normalized value of a specific channel.
     * @param {Channel} channel - The Channel enum.
     * @returns {number} The normalized value of the specified channel.
     */
    getChannelNormalized(channel: Channel): number;
    /**
     * Sets the value of a specific channel.
     * @param {number} channel - The channel index.
     * @param {number} value - The value to set.
     */
    setChannel(channel: number, value: number): void;
    /**
     * Sets the color of the pixel.
     * @param {Color} color - The color to set.
     */
    set(color: Color): void;
    /**
     * Sets the RGB values of the pixel.
     * @param {number} r - The red value.
     * @param {number} g - The green value.
     * @param {number} b - The blue value.
     */
    setRgb(r: number, g: number, b: number): void;
    /**
     * Sets the RGBA values of the pixel.
     * @param {number} r - The red value.
     * @param {number} g - The green value.
     * @param {number} b - The blue value.
     * @param {number} a - The alpha value.
     */
    setRgba(r: number, g: number, b: number, a: number): void;
    /**
     * Converts the pixel data to an array.
     * @returns {number[]} The pixel data as an array.
     */
    toArray(): number[];
    /**
     * Checks if the pixel is equal to another pixel or array.
     * @param {Pixel | number[]} other - The other pixel or array.
     * @returns {boolean} True if the pixel is equal to the other pixel or array, false otherwise.
     */
    equals(other: Pixel | number[]): boolean;
    /**
     * Clones the pixel.
     * @returns {PixelUint1} The cloned PixelUint1 instance.
     */
    clone(): PixelUint1;
    /**
     * Converts the pixel to a different color format.
     *
     * @param {ColorConvertOptions} opt - The color conversion options.
     * @param {string} opt.format - The target color format (e.g., 'RGB', 'CMYK').
     * @param {number} opt.numChannels - The number of color channels in the target format.
     * @param {number} opt.alpha - The alpha transparency value in the target format.
     * @returns {Color} The converted color.
     */
    convert(opt: ColorConvertOptions): Color;
    /**
     * Returns a string representation of the pixel.
     * @returns {string} The string representation of the pixel.
     */
    toString(): string;
    /**
     * Returns an iterator for the pixel.
     * @returns {Iterator<Pixel>} The iterator for the pixel.
     */
    [Symbol.iterator](): Iterator<Pixel>;
}
