import type SmartMappingSliderViewModel from "../SmartMappingSliderViewModel.js";
import type { SmartMappingSupportedStop, GradientStopInfo, ColorBreak } from "../types.js";
import type { SmartMappingSliderViewModelProperties } from "../SmartMappingSliderViewModel.js";

export interface ClassedColorSliderViewModelProperties extends SmartMappingSliderViewModelProperties, Partial<Pick<ClassedColorSliderViewModel, "breaks">> {}

/**
 * Provides the logic for the [ClassedColorSlider](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-smartMapping-ClassedColorSlider.html) widget.
 *
 * @since 4.12
 * @see [ClassedColorSlider](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-smartMapping-ClassedColorSlider.html)
 */
export default class ClassedColorSliderViewModel extends SmartMappingSliderViewModel<SmartMappingSupportedStop, ColorBreak> {
  constructor(properties?: ClassedColorSliderViewModelProperties);
  /**
   * An array of class breaks with associated colors. The colors mapped to each break can
   * be used to update the renderer of a layer. A minimum of two breaks must be provided to the slider.
   *
   * @example
   * slider.breaks = [{
   *   min: 0,
   *   max: 20,
   *   color: [ 0, 0, 30 ]
   * }, {
   *   min: 20,
   *   max: 40,
   *   color: [ 0, 0, 100 ]
   * }, {
   *   min: 40,
   *   max: 60,
   *   color: [ 0, 0, 180 ]
   * }, {
   *   min: 60,
   *   max: 80,
   *   color: [ 0, 0, 255 ]
   * }];
   */
  accessor breaks: ColorBreak[];
  /** Generates the color ramp rendered on the slider. */
  getStopInfo(): GradientStopInfo[];
}