/** @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 { MemoryImageDataFloat32 } from './image-data-float32.js';
import { Palette } from './palette.js';
import { Pixel } from './pixel.js';
/**
 * Represents a pixel with float32 data.
 */
export declare class PixelFloat32 implements Pixel, Iterable<Pixel>, Iterator<Pixel> {
    /**
     * The index of the pixel.
     */
    private _index;
    /**
     * The image data associated with the pixel.
     */
    private readonly _image;
    /**
     * Gets the image data associated with the pixel.
     */
    get image(): MemoryImageDataFloat32;
    /**
     * The x-coordinate of the pixel.
     */
    private _x;
    /**
     * Gets the x-coordinate of the pixel.
     */
    get x(): number;
    /**
     * The y-coordinate of the pixel.
     */
    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 data of the pixel.
     */
    get data(): Float32Array;
    /**
     * Checks if the pixel is valid.
     */
    get isValid(): boolean;
    /**
     * Gets the width of the image.
     */
    get width(): number;
    /**
     * Gets the height of the image.
     */
    get height(): number;
    /**
     * Gets the length of the pixel data.
     */
    get length(): number;
    /**
     * Gets the number of channels in the pixel data.
     */
    get numChannels(): number;
    /**
     * Gets the maximum channel value.
     */
    get maxChannelValue(): number;
    /**
     * Gets the maximum index value.
     */
    get maxIndexValue(): number;
    /**
     * Gets the format of the pixel data.
     */
    get format(): Format;
    /**
     * Checks if the format is LDR.
     */
    get isLdrFormat(): boolean;
    /**
     * Checks if the format is HDR.
     */
    get isHdrFormat(): boolean;
    /**
     * Checks if the image has a palette.
     */
    get hasPalette(): boolean;
    /**
     * Gets the palette of the image.
     */
    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;
    /**
     * Constructs a new PixelFloat32 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 {MemoryImageDataFloat32} image - The image data associated with the pixel.
     */
    constructor(x: number, y: number, index: number, image: MemoryImageDataFloat32);
    /**
     * Creates a new PixelFloat32 instance from image data.
     * @param {MemoryImageDataFloat32} image - The image data.
     * @returns {PixelFloat32} The new PixelFloat32 instance.
     */
    static imageData(image: MemoryImageDataFloat32): PixelFloat32;
    /**
     * Creates a new PixelFloat32 instance from an image.
     * @param {MemoryImage} image - The image.
     * @returns {PixelFloat32} The new PixelFloat32 instance.
     */
    static image(image: MemoryImage): PixelFloat32;
    /**
     * Creates a new PixelFloat32 instance from another PixelFloat32 instance.
     * @param {PixelFloat32} other - The other PixelFloat32 instance.
     * @returns {PixelFloat32} The new PixelFloat32 instance.
     */
    static from(other: PixelFloat32): PixelFloat32;
    /**
     * 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 number or type.
     * @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 type.
     * @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 number.
     * @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 {PixelFloat32} The cloned pixel.
     */
    clone(): PixelFloat32;
    /**
     * Converts the pixel to a color.
     * @param {ColorConvertOptions} opt - The color conversion options.
     * @param {string} opt.format - The format to which the color should be converted (e.g., 'rgb', 'hex').
     * @param {number} opt.numChannels - The number of color channels to use in the conversion.
     * @param {number} opt.alpha - The alpha value for the color, representing its transparency.
     * @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>;
}
