import { Quantity } from './base/Quantity'; import { Stringable } from '../Stringable'; declare type Rgba = 'rgba'; declare type Rgb = 'rgb'; declare type Hex = 'hex'; declare type RgbValue = [number, number, number]; declare type RgbaValue = [number, number, number, number]; declare type HexValue = `#${string}`; declare type ColorValue = RgbValue | RgbaValue | HexValue; declare type ColorSign = Rgb | Rgba | Hex; declare abstract class Color extends Quantity> implements Stringable { abstract toString(): string; abstract valueRgba(): RgbaValue; negate(): ColorRgba; lighten(amount: number): ColorRgba; darken(amount: number): ColorRgba; saturate(amount: number): ColorRgba; desaturate(amount: number): ColorRgba; grayscale(): ColorRgba; isDark(): boolean; isLight(): boolean; fade(amount: number): ColorRgba; opaquer(amount: number): ColorRgba; } declare class ColorRgb extends Color { static new(...value: RgbValue): ColorRgb; toString(): string; valueRgba(): RgbaValue; clone(): ColorRgb; } declare class ColorRgba extends Color { static new(...value: RgbaValue): ColorRgba; toString(): string; valueRgba(): RgbaValue; clone(): ColorRgba; } declare class ColorHex extends Color { static new(value: HexValue): ColorHex; toString(): string; valueRgba(): RgbaValue; clone(): ColorHex; } export { Color, ColorHex, ColorRgb, ColorRgba }; export type { HexValue, RgbValue, RgbaValue };