import type LayerView from "./LayerView.js";
import type { LineOfSightLayerViewMixin, LineOfSightLayerViewMixinProperties } from "./LineOfSightLayerViewMixin.js";
import type { LayerViewProperties } from "./LayerView.js";

export interface LineOfSightLayerViewProperties extends LayerViewProperties, LineOfSightLayerViewMixinProperties {}

/**
 * Represents the [LayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LayerView.html) of a [LineOfSightLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-LineOfSightLayer.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 line of sight layer view controls whether the [LineOfSightLayer#analysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-LineOfSightLayer.html#analysis) in its associated
 * [LineOfSightLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-LineOfSightLayer.html) can be created or edited interactively.
 *
 * It allows to create an observer and/or targets interactively using the [place()](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LineOfSightLayerView.html#place) method, query the [results](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LineOfSightLayerView.html#results),
 * or make an existing analysis editable by enabling the [interactive](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LineOfSightLayerView.html#interactive) property.
 *
 * 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 lineOfSightLayer = new LineOfSightLayer();
 * view.map.add(lineOfSightLayer);
 *
 * // retrieve layer view for the layer
 * const lineOfSightLayerView = await view.whenLayerView(lineOfSightLayer);
 * ```
 *
 * @see [LineOfSightLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-LineOfSightLayer.html)
 * @see [LineOfSightAnalysis](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-LineOfSightAnalysis.html)
 * @see [LineOfSightAnalysisTarget](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-LineOfSightAnalysisTarget.html)
 * @see [LineOfSightAnalysisObserver](https://developers.arcgis.com/javascript/latest/api-reference/esri-analysis-LineOfSightAnalysisObserver.html)
 * @see [LineOfSightAnalysisView3D](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-3d-analysis-LineOfSightAnalysisView3D.html)
 * @see [Line Of Sight component](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-line-of-sight/)
 */
export default abstract class LineOfSightLayerView extends LineOfSightLayerViewSuperclass {}
declare const LineOfSightLayerViewSuperclass: typeof LayerView & typeof LineOfSightLayerViewMixin