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

export interface ColorClassBreakInfoProperties extends JSONSupportMixinProperties, Partial<Pick<ColorClassBreakInfo, "label" | "maxValue" | "minValue">> {
  /**
   * The color used to colorize the points where
   *           values are between the `minValue` and `maxValue` of the break.
   */
  color?: ColorLike;
}

export default abstract class ColorClassBreakInfo extends JSONSupport {
  /**
   * The color used to colorize the points where
   *           values are between the `minValue` and `maxValue` of the break.
   */
  get color(): EsriColor;
  set color(value: ColorLike);
  /** The label used to describe point in the break. */
  accessor label: string | null | undefined;
  /**
   * The maximum value of the break.
   *
   * @default 0
   */
  accessor maxValue: number;
  /**
   * The minimum value of the break.
   *
   * @default 0
   */
  accessor minValue: number;
}