import type LayerView from "./LayerView.js";
import type { ResourceHandle } from "../../core/Handles.js";
import type { PixelHighlightTarget } from "../types.js";
import type { LayerViewHighlightOptions } from "./types.js";
import type { LayerViewProperties } from "./LayerView.js";

/** @since 5.0 */
export interface ImageryTileLayerViewProperties extends LayerViewProperties {}

/**
 * Represents the [LayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/LayerView/) of an [ImageryTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryTileLayer/)
 * after it has been added to a [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) in either a [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/), [Map component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-map/),
 * [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/) or [Scene component](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-scene/).
 *
 * @since 4.32
 * @see [ImageryTileLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryTileLayer/)
 * @see [Sample - Hosted Land Cover ImageryTileLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-hosted-imagerytilelayer-landcover/)
 */
export default abstract class ImageryTileLayerView extends LayerView {
  /**
   * Returns the map scale that corresponds to the source level of raster data.
   *
   * @returns Returns a promise that resolves to a number representing the map scale that corresponds to the source level of raster data.
   * @since 4.32
   */
  getSourceScale(): Promise<number>;
  /**
   * Highlights the given pixels in an ImageryTileLayerView.
   *
   * @param target - The pixels to highlight.
   * @param options - An object with the following properties.
   * @returns Returns a highlight handler with a `remove()` method that
   * can be called to remove the highlight.
   * @since 5.0
   * @see [View.highlights](https://developers.arcgis.com/javascript/latest/references/core/views/View/#highlights)
   * @example
   * // Highlight extreme temperature values
   *
   *
   * view.whenLayerView(layer).then((layerView) => {
   *   let handle = layerView.highlight({pixelRanges: [[-50,-40],[40,50]], bandId: 0})
   * });
   */
  highlight(target: PixelHighlightTarget, options?: LayerViewHighlightOptions): ResourceHandle;
}