export interface ScaleRangeLayerProperties extends Partial<Pick<ScaleRangeLayer, "maxScale" | "minScale">> {}

/** Mixin for layers that support scale ranges (minScale and maxScale) */
export abstract class ScaleRangeLayer {
  constructor(...args: any[]);
  /**
   * The maximum scale (most zoomed in) at which the layer is visible in the view.
   * If the map is zoomed in beyond this scale, the layer will not be visible.
   * A value of `0` means the layer does not have a maximum scale.
   * The maxScale value should always be smaller than the [minScale](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ScaleRangeLayer/#minScale) value,
   * and greater than or equal to the service specification.
   *
   * @default 0
   * @example
   * // The layer will not be visible when the view is zoomed in beyond a scale of 1:1,000
   * layer.maxScale = 1000;
   * @example
   * // The layer's visibility is not restricted to a maximum scale.
   * layer.maxScale = 0;
   */
  accessor maxScale: number;
  /**
   * The minimum scale (most zoomed out) at which the layer is visible in the view.
   * If the map is zoomed out beyond this scale, the layer will not be visible.
   * A value of `0` means the layer does not have a minimum scale.
   * The minScale value should always be larger than the [maxScale](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ScaleRangeLayer/#maxScale) value,
   * and lesser than or equal to the service specification.
   *
   * @default 0
   * @example
   * // The layer will not be visible when the view is zoomed out beyond a scale of 1:3,000,000
   * layer.minScale = 3000000;
   * @example
   * // The layer's visibility is not restricted to a minimum scale.
   * layer.minScale = 0;
   */
  accessor minScale: number;
}