import '../../../globals.js';
/**
 * RenderProgram to convert between color spaces. Should not change whether something is transparent or opaque
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import Vector4 from '../../../dot/js/Vector4.js';
import Constructor from '../../../phet-core/js/types/Constructor.js';
import { RenderColorSpace, RenderEvaluationContext, RenderProgram, SerializedRenderProgram } from '../imports.js';
export default abstract class RenderColorSpaceConversion extends RenderProgram {
    readonly program: RenderProgram;
    readonly convert: (color: Vector4) => Vector4;
    inverse?: Constructor<RenderColorSpaceConversion>;
    protected constructor(program: RenderProgram, convert: (color: Vector4) => Vector4);
    static convert(renderProgram: RenderProgram, fromSpace: RenderColorSpace, toSpace: RenderColorSpace): RenderProgram;
    protected getSimplified(children: RenderProgram[]): RenderProgram | null;
    evaluate(context: RenderEvaluationContext): Vector4;
    static displayP3ToSRGB(renderProgram: RenderProgram): RenderProgram;
    static sRGBToDisplayP3(renderProgram: RenderProgram): RenderProgram;
    static displayP3ToLinearSRGB(renderProgram: RenderProgram): RenderProgram;
    static linearSRGBToDisplayP3(renderProgram: RenderProgram): RenderProgram;
    static oklabToSRGB(renderProgram: RenderProgram): RenderProgram;
    static sRGBToOklab(renderProgram: RenderProgram): RenderProgram;
    static oklabToDisplayP3(renderProgram: RenderProgram): RenderProgram;
    static displayP3ToOklab(renderProgram: RenderProgram): RenderProgram;
    static premulSRGBToPremulLinearSRGB(renderProgram: RenderProgram): RenderProgram;
    static premulLinearSRGBToPremulSRGB(renderProgram: RenderProgram): RenderProgram;
    static premulLinearSRGBToPremulDisplayP3(renderProgram: RenderProgram): RenderProgram;
    static premulDisplayP3ToPremulLinearSRGB(renderProgram: RenderProgram): RenderProgram;
    static premulDisplayP3ToPremulSRGB(renderProgram: RenderProgram): RenderProgram;
    static premulSRGBToPremulDisplayP3(renderProgram: RenderProgram): RenderProgram;
    static premulOklabToPremulSRGB(renderProgram: RenderProgram): RenderProgram;
    static premulSRGBToPremulOklab(renderProgram: RenderProgram): RenderProgram;
    static premulOklabToPremulDisplayP3(renderProgram: RenderProgram): RenderProgram;
    static premulDisplayP3ToPremulOklab(renderProgram: RenderProgram): RenderProgram;
    serialize(): SerializedRenderColorSpaceConversion;
    static deserialize(obj: SerializedRenderColorSpaceConversion): RenderColorSpaceConversion;
}
export type SerializedRenderColorSpaceConversion = {
    type: 'RenderColorSpaceConversion';
    subtype: string;
    program: SerializedRenderProgram;
};
//# sourceMappingURL=RenderColorSpaceConversion.d.ts.map