import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * RenderColor displays a single solid color everywhere, and is a basic building-block for many other RenderPrograms.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import Matrix3 from '../../../dot/js/Matrix3.js';
import Vector2 from '../../../dot/js/Vector2.js';
import Vector3 from '../../../dot/js/Vector3.js';
import Vector4 from '../../../dot/js/Vector4.js';
import { RenderColorSpace, RenderEvaluationContext, RenderInstruction, RenderProgram } from '../imports.js';
export default class RenderColor extends RenderProgram {
    color: Vector4;
    constructor(color: Vector4);
    getName(): string;
    withChildren(children: RenderProgram[]): RenderColor;
    protected equalsTyped(other: this): boolean;
    evaluate(context: RenderEvaluationContext): Vector4;
    static applyProgram(vector: Vector4, color: Vector4): void;
    writeInstructions(instructions: RenderInstruction[]): void;
    protected getExtraDebugString(): string;
    static sRGBToLinear(sRGB: Vector4): Vector4;
    static linearToSRGB(linear: Vector4): Vector4;
    static linearToOklab(linear: Vector4): Vector4;
    static oklabToLinear(oklab: Vector4): Vector4;
    static multiplyMatrixTimesColor(matrix: Matrix3, color: Vector4): Vector4;
    static linearToLinearDisplayP3(color: Vector4): Vector4;
    static linearDisplayP3ToLinear(color: Vector4): Vector4;
    static linearDisplayP3ToDisplayP3(linear: Vector4): Vector4;
    static displayP3ToLinearDisplayP3(displayP3: Vector4): Vector4;
    static oklabToOklch(oklab: Vector4): Vector4;
    static oklchToOklab(oklch: Vector4): Vector4;
    static linearToOklch(linear: Vector4): Vector4;
    static oklchToLinear(oklch: Vector4): Vector4;
    static linearDisplayP3ToOklch(linear: Vector4): Vector4;
    static oklchToLinearDisplayP3(oklch: Vector4): Vector4;
    static convert(color: Vector4, fromSpace: RenderColorSpace, toSpace: RenderColorSpace): Vector4;
    static isColorInRange(color: Vector4): boolean;
    /**
     * Relative colorimetric mapping. We could add more of a perceptual intent, but this is a good start.
     *
     * Modeled after https://drafts.csswg.org/css-color-4/#binsearch
     */
    static gamutMapColor(color: Vector4, toOklab: (c: Vector4) => Vector4, fromOklab: (c: Vector4) => Vector4): Vector4;
    static gamutMapLinearSRGB(color: Vector4): Vector4;
    static gamutMapLinearDisplayP3(color: Vector4): Vector4;
    static gamutMapSRGB(color: Vector4): Vector4;
    static gamutMapDisplayP3(color: Vector4): Vector4;
    /**
     * OUTPUTS unpremultiplied sRGB, with a valid alpha value
     */
    static gamutMapPremultipliedSRGB(color: Vector4): Vector4;
    /**
     * OUTPUTS unpremultiplied Display P3, with a valid alpha value
     */
    static gamutMapPremultipliedDisplayP3(color: Vector4): Vector4;
    static oklabToLinearDisplayP3(oklab: Vector4): Vector4;
    static linearDisplayP3ToOklab(linearP3: Vector4): Vector4;
    static premultiply(color: Vector4): Vector4;
    static unpremultiply(color: Vector4): Vector4;
    static xyYToXYZ(xyY: Vector3): Vector3;
    static xyToXYZ(xy: Vector2): Vector3;
    static xyzToLinear(xyz: Vector4): Vector4;
    static linearToXYZ(linear: Vector4): Vector4;
    static getMatrixRGBToXYZ(redChromaticity: Vector2, greenChromaticity: Vector2, blueChromaticity: Vector2, whiteChromaticity: Vector2): Matrix3;
    static sRGBToXYZMatrix: Matrix3;
    static XYZTosRGBMatrix: Matrix3;
    static displayP3ToXYZMatrix: Matrix3;
    static XYZToDisplayP3Matrix: Matrix3;
    static sRGBToDisplayP3Matrix: Matrix3;
    static displayP3TosRGBMatrix: Matrix3;
    static canvasSupportsDisplayP3(): boolean;
    static ratioBlend(zeroColor: Vector4, oneColor: Vector4, ratio: number): Vector4;
    static readonly TRANSPARENT: RenderColor;
    serialize(): SerializedRenderColor;
    static deserialize(obj: SerializedRenderColor): RenderColor;
}
export type SerializedRenderColor = {
    type: 'RenderColor';
    color: {
        r: number;
        g: number;
        b: number;
        a: number;
    };
};
//# sourceMappingURL=RenderColor.d.ts.map