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

export interface ClassedSizeSliderViewModelProperties extends SmartMappingSliderViewModelProperties, Partial<Pick<ClassedSizeSliderViewModel, "breaks">> {}

/**
 * Provides the logic for the [ClassedSizeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/smartMapping/ClassedSizeSlider/) widget.
 *
 * @since 4.12
 * @see [ClassedSizeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/smartMapping/ClassedSizeSlider/)
 */
export default class ClassedSizeSliderViewModel extends SmartMappingSliderViewModel<SmartMappingSupportedStop, SizeBreak> {
  constructor(properties?: ClassedSizeSliderViewModelProperties);
  /**
   * An array of class breaks with associated sizes. The size 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,
   *   size: 6
   * }, {
   *   min: 20,
   *   max: 40,
   *   size: 12
   * }, {
   *   min: 40,
   *   max: 60,
   *   size: 24
   * }, {
   *   min: 60,
   *   max: 80,
   *   size: 48
   * }];
   */
  accessor breaks: SizeBreak[];
}