import { Matrix3 } from "three/src/Three";
import type { ReadonlyMatrix3 } from "../math/ReadonlyMatrix3";
import type { ReadonlyColor } from "./ReadonlyColor";
/**
 * represents a color by its red, green, blue and alpha components in the range [0, 1]
 */
export declare class Color implements ReadonlyColor {
    private _r;
    private _g;
    private _b;
    private _a;
    constructor();
    constructor(r: number, g: number, b: number);
    constructor(r: number, g: number, b: number, a: number);
    /**
     * set the color
     * @param r red component
     * @param g green component
     * @param b blue component
     * @param a alpha component
     */
    set(r: number, g: number, b: number, a?: number): Color;
    /**
     * copy the color to this color
     * @param color colot that copy to this color
     */
    copy(color: ReadonlyColor): Color;
    /**
     * clone the color
     */
    clone(): Color;
    /**
     * get the red component of the color
     */
    get r(): number;
    /**
     * set the red component of the color
     * value will be clamped between 0 and 1
     */
    set r(value: number);
    /**
     * get the green component of the color
     */
    get g(): number;
    /**
     * set the green component of the color
     * value will be clamped between 0 and 1
     */
    set g(value: number);
    /**
     * get the blue component of the color
     */
    get b(): number;
    /**
     * set the blue component of the color
     * value will be clamped between 0 and 1
     */
    set b(value: number);
    /**
     * get the alpha component of the color
     */
    get a(): number;
    /**
     * set the alpha component of the color
     * value will be clamped between 0 and 1
     */
    set a(value: number);
    /**
     * get the color as a string with the format rgb(r, g, b)
     * r, g, b values is range [0, 255]
     * @returns
     */
    toString(): string;
    /**
     * get the color as a string with the format rgba(r, g, b, a)
     * r, g, b values is range [0, 255]
     * a value is range [0, 1]
     * @returns
     */
    toStringWithAlpha(): string;
    /**
     * get the color as a hex string with the format #rrggbb it loses alpha information
     * @returns
     */
    toHex(): string;
    /**
     * get the color as a hex string with the format #rrggbbaa
     * @returns
     */
    toHexWithAlpha(): string;
    /**
     * get the color as an array with the format [r, g, b, a]
     * @returns
     */
    toArray(): number[];
    /**
     * build a color from a hex string with the format #rrggbb alpha is set to 1
     * @param hex
     * @returns
     */
    static fromHex(hex: string): Color;
    /**
     * build a color from an array with the format [r, g, b, a]
     * @param array
     * @returns
     */
    static fromArray(array: number[]): Color;
    /**
     * build a color from a string with the format rgba(r, g, b, a)
     * @param str
     * @returns
     */
    static fromString(str: string): Color;
    hueRotate(angle?: number, buffer?: Matrix3): void;
    grayscale(value?: number, buffer?: Matrix3): void;
    sepia(value?: number, buffer?: Matrix3): void;
    saturate(value?: number, buffer?: Matrix3): void;
    brightness(value?: number): void;
    contrast(value?: number): void;
    invert(value?: number): void;
    multiplyMatrix(matrix: ReadonlyMatrix3): Color;
    linear(slope?: number, intercept?: number): Color;
    hsl(): {
        h: number;
        s: number;
        l: number;
    };
}
