import type LayerView from "./LayerView.js";
import type { ViewshedLayerViewMixin, ViewshedLayerViewMixinProperties } from "./ViewshedLayerViewMixin.js";
import type { LayerViewProperties } from "./LayerView.js";

export interface ViewshedLayerViewProperties extends LayerViewProperties, ViewshedLayerViewMixinProperties {}

/**
 * Represents the [LayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LayerView.html) of a [ViewshedLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ViewshedLayer.html)
 * after it has been added to a [Map](https://developers.arcgis.com/javascript/latest/api-reference/esri-Map.html) in a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).
 *
 * The viewshed layer view controls whether the viewsheds in its associated
 * [ViewshedLayer#source](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ViewshedLayer.html#source) can be created or edited interactively.
 *
 * It allows to create new viewsheds interactively using the [place()](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-ViewshedLayerView.html#place) method,
 * or to make existing viewsheds selectable and editable by enabling the [interactive](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-ViewshedLayerView.html#interactive) property.
 * To select a viewshed, hover and click on its field-of-view manipulators.
 *
 * The view for the layer can be retrieved using [SceneView#whenLayerView()](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html#whenLayerView).
 *
 * ```js
 * // create new layer and add it to the map
 * const viewshedLayer = new ViewshedLayer();
 * view.map.add(viewshedLayer);
 *
 * // retrieve layer view for the layer
 * const viewshedLayerView = await view.whenLayerView(viewshedLayer);
 * ```
 *
 * @since 4.31
 * @see [ViewshedLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-ViewshedLayer.html)
 * @see [Viewshed](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-Viewshed.html)
 * @see [ViewshedAnalysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-ViewshedAnalysis.html)
 * @see [ViewshedAnalysisView3D](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-3d-analysis-ViewshedAnalysisView3D.html)
 * @see [Sample - ViewshedLayer in slides](https://developers.arcgis.com/javascript/latest/sample-code/layers-viewshed/)
 */
export default abstract class ViewshedLayerView extends ViewshedLayerViewSuperclass {}
declare const ViewshedLayerViewSuperclass: typeof LayerView & typeof ViewshedLayerViewMixin