import type EsriColor from "../../../Color.js";
import type { JSONSupport, JSONSupportMixinProperties } from "../../../core/JSONSupport.js";
import type { ColorLike } from "../../../Color.js";

export interface ColorUniqueValueInfoProperties extends JSONSupportMixinProperties, Partial<Pick<ColorUniqueValueInfo, "label" | "values">> {
  /** The color used to represent points whose value matches `values`. */
  color?: ColorLike;
}

export default abstract class ColorUniqueValueInfo extends JSONSupport {
  /** The color used to represent points whose value matches `values`. */
  get color(): EsriColor;
  set color(value: ColorLike);
  /** Label used to describe points matched to the unique value. */
  accessor label: string | null | undefined;
  /**
   * A unique combination of values that will be
   *              represented with the given `color`.
   */
  accessor values: string[];
}