
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/api-reference/esri-layers-mixins-ScaleRangeLayer.html#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/api-reference/esri-layers-mixins-ScaleRangeLayer.html#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;
}

export interface RecommendedScales {
  /** @default 1250 */
  building: 1250;
  /** @default 2500 */
  buildings: 2500;
  /** @default 160000 */
  cities: 160000;
  /** @default 80000 */
  city: 80000;
  /** @default 50000000 */
  continent: 50000000;
  /** @default 1500000 */
  counties: 1500000;
  /** @default 25000000 */
  countriesBig: 25000000;
  /** @default 12000000 */
  countriesSmall: 12000000;
  /** @default 750000 */
  county: 750000;
  /** @default 320000 */
  metropolitanArea: 320000;
  /** @default 20000 */
  neighborhood: 20000;
  /** @default 100 */
  room: 100;
  /** @default 400 */
  rooms: 400;
  /** @default 800 */
  smallBuilding: 800;
  /** @default 3000000 */
  stateProvince: 3000000;
  /** @default 6000000 */
  statesProvinces: 6000000;
  /** @default 5000 */
  street: 5000;
  /** @default 10000 */
  streets: 10000;
  /** @default 40000 */
  town: 40000;
  world: 147914382;
}