export declare function color(red255: number, green255: number, blue255: number, alpha1?: number): Color;
export declare function color(x: Chromable, format?: ColorFormat): Color;
export declare function color(colorname: keyof typeof w3cx11, format?: "name"): Color;
export declare function color(channel0: number, channel1: number, channel2: number, format: ColorFormat): Color;
export declare function color(channel0: number, channel1: number, channel2: number, channel3: number, format: ColorFormat): Color;
export type Chromable = number | string | Color | number[];
export declare class Color {
    private readonly r;
    private readonly g;
    private readonly b;
    private readonly a;
    constructor(r: number, g: number, b: number, a?: number);
    mix(col2: Chromable, f: number, m?: InterpolationMode): Color;
    rgb(doRound?: boolean, clamp_?: boolean): RGB;
    rgba(doRound?: boolean, clamp_?: boolean): RGBA;
    hex(mode?: "rgb" | "rgba" | "argb"): string;
    hsl(): HSL;
    hsv(): HSV;
    hcg(): HCG;
    css(mode?: "rgb" | "hsl"): string;
    name(closest: true): string;
    name(closest?: boolean): string | undefined;
    cmyk(): CMYK;
    gl(): GL;
    luminance(): number;
    luminance(lum1: number): this;
    temperature(): number;
    set(modeAndChannel: string, value: number | ((channel: number) => number)): Color;
    clipped(): boolean;
    textColor(): Color;
    alpha(): number;
    alpha(alpha1: number): Color;
    darker(amount?: number): Color;
    brighter(amount?: number): Color;
    saturate(amount?: number): Color;
    desaturate(amount?: number): Color;
    premultiplied(): Color;
    hsi(): HSI;
    lab(): RGB;
    num(mode?: "rgb" | "rgba" | "argb"): number;
    lch(): LCH;
    xyz(): XYZ;
    equals(color: Color): boolean;
    hashCode(): number;
    toSource(): string;
}
export interface Color {
    toString(): string;
    kelvin(): number;
}
export declare const black: Color;
export declare const white: Color;
export declare const brewer: {
    OrRd: number[];
    PuBu: number[];
    BuPu: number[];
    Oranges: number[];
    BuGn: number[];
    YlOrBr: number[];
    YlGn: number[];
    Reds: number[];
    RdPu: number[];
    Greens: number[];
    YlGnBu: number[];
    Purples: number[];
    GnBu: number[];
    Greys: number[];
    YlOrRd: number[];
    PuRd: number[];
    Blues: number[];
    PuBuGn: number[];
    Viridis: number[];
    Spectral: number[];
    RdYlGn: number[];
    RdBu: number[];
    PiYG: number[];
    PRGn: number[];
    RdYlBu: number[];
    BrBG: number[];
    RdGy: number[];
    PuOr: number[];
    Set2: number[];
    Accent: number[];
    Set1: number[];
    Set3: number[];
    Dark2: number[];
    Paired: number[];
    Pastel2: number[];
    Pastel1: number[];
};
export declare const w3cx11: {
    aliceblue: number;
    antiquewhite: number;
    aqua: number;
    aquamarine: number;
    azure: number;
    beige: number;
    bisque: number;
    black: number;
    blanchedalmond: number;
    blue: number;
    blueviolet: number;
    brown: number;
    burlywood: number;
    cadetblue: number;
    chartreuse: number;
    chocolate: number;
    coral: number;
    cornflower: number;
    cornflowerblue: number;
    cornsilk: number;
    crimson: number;
    cyan: number;
    darkblue: number;
    darkcyan: number;
    darkgoldenrod: number;
    darkgray: number;
    darkgreen: number;
    darkgrey: number;
    darkkhaki: number;
    darkmagenta: number;
    darkolivegreen: number;
    darkorange: number;
    darkorchid: number;
    darkred: number;
    darksalmon: number;
    darkseagreen: number;
    darkslateblue: number;
    darkslategray: number;
    darkslategrey: number;
    darkturquoise: number;
    darkviolet: number;
    deeppink: number;
    deepskyblue: number;
    dimgray: number;
    dimgrey: number;
    dodgerblue: number;
    firebrick: number;
    floralwhite: number;
    forestgreen: number;
    fuchsia: number;
    gainsboro: number;
    ghostwhite: number;
    gold: number;
    goldenrod: number;
    gray: number;
    green: number;
    greenyellow: number;
    grey: number;
    honeydew: number;
    hotpink: number;
    indianred: number;
    indigo: number;
    ivory: number;
    khaki: number;
    laserlemon: number;
    lavender: number;
    lavenderblush: number;
    lawngreen: number;
    lemonchiffon: number;
    lightblue: number;
    lightcoral: number;
    lightcyan: number;
    lightgoldenrod: number;
    lightgoldenrodyellow: number;
    lightgray: number;
    lightgreen: number;
    lightgrey: number;
    lightpink: number;
    lightsalmon: number;
    lightseagreen: number;
    lightskyblue: number;
    lightslategray: number;
    lightslategrey: number;
    lightsteelblue: number;
    lightyellow: number;
    lime: number;
    limegreen: number;
    linen: number;
    magenta: number;
    maroon: number;
    maroon2: number;
    maroon3: number;
    mediumaquamarine: number;
    mediumblue: number;
    mediumorchid: number;
    mediumpurple: number;
    mediumseagreen: number;
    mediumslateblue: number;
    mediumspringgreen: number;
    mediumturquoise: number;
    mediumvioletred: number;
    midnightblue: number;
    mintcream: number;
    mistyrose: number;
    moccasin: number;
    navajowhite: number;
    navy: number;
    oldlace: number;
    olive: number;
    olivedrab: number;
    orange: number;
    orangered: number;
    orchid: number;
    palegoldenrod: number;
    palegreen: number;
    paleturquoise: number;
    palevioletred: number;
    papayawhip: number;
    peachpuff: number;
    peru: number;
    pink: number;
    plum: number;
    powderblue: number;
    purple: number;
    purple2: number;
    purple3: number;
    rebeccapurple: number;
    red: number;
    rosybrown: number;
    royalblue: number;
    saddlebrown: number;
    salmon: number;
    sandybrown: number;
    seagreen: number;
    seashell: number;
    sienna: number;
    silver: number;
    skyblue: number;
    slateblue: number;
    slategray: number;
    slategrey: number;
    snow: number;
    springgreen: number;
    steelblue: number;
    tan: number;
    teal: number;
    thistle: number;
    tomato: number;
    turquoise: number;
    violet: number;
    wheat: number;
    white: number;
    whitesmoke: number;
    yellow: number;
    yellowgreen: number;
};
export declare function cubehelix(start?: number, rotations?: number, hue?: number | [number, number], gamma?: number, lightness?: number | [number, number]): CubeHelix;
export interface CubeHelix {
    (f: number): Color;
}
export declare class CubeHelix {
    private _start;
    private _rotations;
    private _gamma;
    private _hue;
    private _lightness;
    start(): number;
    start(s: number): this;
    rotations(): number;
    rotations(r: number): this;
    gamma(): number;
    gamma(g: number): this;
    hue(): [number, number];
    hue(h: number | [number, number]): this;
    lightness(): [number, number];
    lightness(h: number | [number, number]): this;
    scale(): Scale<Color>;
    at(fract: number): Color;
}
export declare function random(randomSource?: () => number): Color;
export declare function mix(col1: Chromable, col2: Chromable, f?: number, m?: InterpolationMode): Color;
export declare function css(cssString: string): Color;
export declare function cmyk(cmyk: CMYK): Color;
export declare function cmyk(cyan1: number, magenta1: number, yellow1: number, key1: number): Color;
export declare function gl(gl: RGBA | RGB): Color;
export declare function gl(red1: number, green1: number, blue1: number, alpha1: number): Color;
export declare function hcg(hcg: HCG): Color;
export declare function hcg(h: number, c: number, g: number, alpha1?: number): Color;
export declare function lch(lch: LCH): Color;
export declare function lch(h: number, c: number, l: number, alpha1?: number): Color;
export declare function hsi(hsi: HSI): Color;
export declare function hsi(h: number, s: number, i: number, alpha1?: number): Color;
export declare function hsl(hsl: HSL): Color;
export declare function hsl(hueDegrees: number, saturation1: number, lightness1: number, alpha1?: number): Color;
export declare function hsv(hsv: LAB): Color;
export declare function hsv(h: number, s: number, v: number): Color;
export declare function kelvin(temperature: number): Color;
export declare function lab(lab: LAB): Color;
export declare function lab(lightness1: number, a1: number, b: number, alpha1?: number): Color;
export declare function num(num: number): Color;
export declare function rgb(rgb: RGBA | RGB): Color;
export declare function rgb(red255: number, green255: number, blue255: number, alpha1?: number): Color;
export declare function xyz(xyz: XYZ): Color;
export declare function xyz(x1: number, y1: number, z1: number, alpha1?: number): Color;
export declare function average(chromables: Chromable[], mode?: InterpolationMode): Color;
export declare function bezier(chromables: Chromable[]): {
    (t: number): Color;
    scale(): Scale;
};
export declare function bezier(...chromables: Chromable[]): {
    (t: number): Color;
    scale(): Scale;
};
export declare function blend(bottom: Chromable, top: Chromable, mode: BlendMode): Color;
export type BlendMode = keyof typeof blend_fs;
declare const blend_fs: {
    normal: (bottom: Chromable, top: Chromable) => Color;
    multiply: (bottom: Chromable, top: Chromable) => Color;
    screen: (bottom: Chromable, top: Chromable) => Color;
    overlay: (bottom: Chromable, top: Chromable) => Color;
    darken: (bottom: Chromable, top: Chromable) => Color;
    lighten: (bottom: Chromable, top: Chromable) => Color;
    dodge: (bottom: Chromable, top: Chromable) => Color;
    burn: (bottom: Chromable, top: Chromable) => Color;
};
export declare function scale(colors: Chromable[] | keyof typeof brewer | ((f: number) => Color)): Scale;
export declare function scale(...colors: Chromable[]): Scale;
export interface Scale<T = Color> {
    (val: number): T;
}
export declare class Scale<T = Color> {
    private _colors;
    private _classes;
    private _cache;
    private _correctLightness;
    private _gamma;
    private _mode;
    private _out;
    private _min;
    private _max;
    private _paddingLeft;
    private _paddingRight;
    private _pos;
    classes(): number[];
    classes(classes: number | number[]): this;
    domain(): number[];
    domain(start: number, end: number): this;
    domain(...domain: number[]): this;
    mode(): InterpolationMode;
    mode(mode: InterpolationMode): this;
    out<M extends ColorFormat | undefined>(outputFormat: M): Scale<M extends ColorFormat ? ReturnType<Color[M]> : Color>;
    correctLightness(enableCorrectLightness?: boolean): this;
    padding(): [number, number];
    padding(paddingLeft: number, paddingRight?: number): this;
    colors<M extends ColorFormat | "color" | undefined = "hex">(numColors?: number, format?: M): Array<M extends ColorFormat ? ReturnType<Color[M]> : M extends "color" ? Color : string>;
    cache(): boolean;
    cache(enableCache: boolean): this;
    gamma(): number;
    gamma(gamma: number): this;
    _at(t: number): string | number | Color | RGB | CMYK;
    _init(colorsOrFunction: Color[] | ((t: number) => Color)): void;
    private _getClass;
    private _color;
    private _tCorrectedLightness;
    private _resetCache;
}
export declare namespace scales {
    function cool(): Scale<Color>;
    function hot(): Scale<Color>;
}
export declare function contrast(a: Chromable, b: Chromable): number;
export declare function distance(a: Chromable, b: Chromable, mode?: ColorMode): number;
export declare function deltaE(reference: Chromable, sample: Chromable, L?: number, C?: number): number;
type DataInfo = {
    min: number;
    max: number;
    sum: number;
    values: number[];
    count: number;
    domain: [number, number];
    limits(mode: LimitsMode, num: number): number[];
};
export declare function analyze(data: number[]): DataInfo;
type LimitsMode = "c" | "e" | "q" | "l" | "k";
export declare function limits(data: number[] | DataInfo, mode?: LimitsMode, num?: number): number[];
export type ColorMode = "rgb" | "cmyk" | "lab" | "hsv" | "hsi" | "hcg" | "hsl" | "gl" | "lch" | "xyz";
export type InterpolationMode = "rgb" | "lab" | "hsv" | "hsi" | "hcg" | "hsl" | "lch" | "xyz" | "lrgb" | "num";
export type ColorFormat = ColorMode | "hex" | "num" | "name" | "kelvin" | "css";
type CMYK = [number, number, number, number];
type GL = [number, number, number, number];
type RGB = [number, number, number];
type RGBA = [number, number, number, number];
type LAB = [number, number, number];
type LCH = [number, number, number];
type HSL = [number, number, number];
type HSV = [number, number, number];
type HSI = [number, number, number];
type XYZ = [number, number, number];
type HCG = [number, number, number];
export {};
