/**
 * Color utility functions, exposed as a Typescript class.
 * No external dependencies.
 * Special thanks for the RGB to CIE conversion code goes out to the Q42 team
 * for their Q42.HueApi work. Dank u!
 * More info: https://github.com/Q42/Q42.HueApi.
 *
 * https://github.com/bjohnso5/hue-hacking
 * Copyright (c) 2013 Bryan Johnson; Licensed MIT */
import { RGB, XYPoint } from './hue-interfaces.js';
export declare const CIERed: XYPoint;
export declare const CIELime: XYPoint;
export declare const CIEBlue: XYPoint;
export declare const hexFullRed = "FF0000";
export declare const hexFullGreen = "00FF00";
export declare const hexFullBlue = "0000FF";
export declare const hexFullWhite = "FFFFFF";
export declare class HueColors {
    constructor();
    private cssColors;
    /**
       * Parses a valid hex color string and returns the Red RGB integer value.
       *
       * @param {string} hex Hex color string.
       * @return {number} Red integer value.
       */
    private hexToRed;
    /**
       * Parses a valid hex color string and returns the Green RGB integer value.
       *
       * @param {string} hex Hex color string.
       * @return {number} Green integer value.
       */
    private hexToGreen;
    /**
       * Parses a valid hex color string and returns the Blue RGB integer value.
       *
       * @param {string} hex Hex color string.
       * @return {number} Blue integer value.
       */
    private hexToBlue;
    /**
       * Converts a valid hex color string to an RGB array.
       *
       * @param {string} h Hex color String (e.g. FF00FF)
       * @return {Array<number>} Array containing R, G, B values
       */
    private hexToRGB;
    /**
       * Converts an RGB component to a hex string.
       *
       * @param {number} c RGB value, integer between 0 and 255.
       * @returns {string} Hex value string (e.g. FF)
       */
    private componentToHex;
    /**
       * Converts RGB color components to a valid hex color string.
       *
       * @param {RGB} rgb RGB components with values between 0 and 255.
       * @returns {string} Hex color string (e.g. FF0000)
       */
    private rgbToHex;
    /**
       * Generates a random number between 'from' and 'to'.
       *
       * @param {number} from Number representing the start of a range.
       * @param {number} to Number representing the end of a range.
       */
    private randomFromInterval;
    /**
       * Return a random Integer in the range of 0 to 255, representing an RGB
       * color value.
       *
       * @return {number} Integer between 0 and 255.
       */
    private randomRGBValue;
    /**
       * Returns the cross product of two XYPoints.
       *
       * @param {XYPoint} p1 Point 1
       * @param {XYPoint} p2 Point 2
       * @return {number} Cross-product of the two XYPoints provided
       */
    private crossProduct;
    /**
       * Check if the provided XYPoint can be recreated by a Hue lamp.
       *
       * @param {XYPoint} p XYPoint to check
       * @return {boolean} Flag indicating if the point is within reproducible range
       */
    private checkPointInLampsReach;
    /**
       * Find the closest point on a line. This point will be reproducible by a Hue lamp.
       *
       * @param {XYPoint} A The point where the line starts
       * @param {XYPoint} B The point where the line ends
       * @param {XYPoint} P The point which is close to the line
       * @return {XYPoint} A point that is on the line, and closest to the XYPoint provided
       */
    private getClosestPointToLine;
    /**
       * Find the closest Hue-producible point to a provided point.
       *
       * @param {XYPoint} xyPoint The point to find the closest reproducible point to
       * @return {XYPoint} The closest Hue-reproducible point to the provided point
       */
    private getClosestPointToPoint;
    /**
       * Returns the distance between two XYPoints.
       *
       * @param {XYPoint} one The first point
       * @param {XYPoint} two The second point
       * @return {number} The distance between points one and two
       */
    private getDistanceBetweenTwoPoints;
    /**
       * Returns an XYPoint object containing the closest available CIE 1931
       * coordinates based on the RGB input values.
       *
       * @param {RGB} rgb RGB color object
       * @return {XYPoint} CIE 1931 XY coordinates, corrected for reproducibility
       */
    private getXYPointFromRGB;
    /**
       * Returns a rgb array for given x, y values. Not actually an inverse of
       * getXYPointFromRGB. Implementation of the instructions found on the
       * Philips Hue iOS SDK docs: http://goo.gl/kWKXKl
       *
       * @param {XYPoint} coords CIE 1931 x,y coordinates
       * @param {number} bri Brightness value between 0 and 1
       * @return {RGB} RGB color object
       */
    private getRGBFromXYAndBrightness;
    /**
       * Converts hexadecimal colors represented as a String to approximate
       * CIE 1931 coordinates. May not produce accurate values.
       *
       * @param {string} h Value representing a hexadecimal color value
       * @return {XYPoint} Approximate CIE 1931 x,y coordinates
       */
    hexToCIE1931(h: string): XYPoint;
    /**
       * Converts red, green and blue integer values to approximate CIE 1931
       * x and y coordinates. Algorithm from:
       * http://www.easyrgb.com/index.php?X=MATH&H=02#text2. May not produce
       * accurate values.
       *
       * @param {RGB} rgb RGB color object
       * @return {XYPoint} Approximate CIE 1931 x,y coordinates
       */
    rgbToCIE1931(rgb: RGB): XYPoint;
    /**
       * Returns the approximate CIE 1931 x,y coordinates represented by the
       * supplied hexColor parameter, or of a random color if the parameter
       * is not passed.
       *
       * @param {string} hexColor String representing a hexidecimal color value OR a named CSS color (e.g. "red", "yellow", etc.)
       * @return {XYPoint} Approximate CIE 1931 x,y coordinates
       */
    getCIEColor(hexColor?: string): XYPoint;
    /**
       * Returns the approximate hexColor represented by the supplied
       * CIE 1931 x,y coordinates and brightness value.
       *
       * @param {XYPoint} coords CIE 1931 coordinates
       * @param {number} bri value expressed between 0 and 1
       * @return {string} hex color string
       */
    CIE1931ToHex(coords: XYPoint, bri?: number): string;
    /**
       * Returns the approximate RGB values represented by the supplied
       * CIE 1931 x,y coordinates and brightness value.
       *
       * @param {XYPoint} coords CIE 1931 coordinates
       * @param {number} bri Brightness value expressed between 0 and 1
       * @return {string} CSS rgb color expression
       */
    CIE1931ToRGB(coords: XYPoint, bri?: number): RGB;
    /**
       * Convert a Mired temperature to its Kelvin equivalent.
       */
    miredToKelvin(mired: number): number;
    /**
       * Convert a Kelvin temperature to its Mired equivalent.
       */
    kelvinToMired(kelvin: number): number;
}
