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/api-reference/esri-views-layers-LayerView.html) of an [ImageryTileLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ImageryTileLayer.html)
 * after it has been added to a [Map](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html) in either a [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html) or
 * [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).
 *
 * @since 4.32
 * @see [ImageryTileLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ImageryTileLayer.html)
 * @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/api-reference/esri-views-View.html#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;
}