import type Collection from "../../core/Collection.js";
import type CatalogLayer from "../../layers/CatalogLayer.js";
import type CatalogDynamicGroupLayerView from "./CatalogDynamicGroupLayerView.js";
import type CatalogFootprintLayerView from "./CatalogFootprintLayerView.js";
import type LayerView from "./LayerView.js";

export type CatalogLayerViewMixinProperties = any;

/**
 * Represents the [LayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LayerView.html) of a [CatalogLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.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).
 *
 * The CatalogLayerView is responsible for rendering a [CatalogLayer's](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html)
 * in the [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html). The [methods](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html#queryExtent) in the CatalogLayerView provide developers
 * with the ability to query and highlight graphics in the view.
 *
 * @since 4.30
 * @see [CatalogLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html)
 */
export default abstract class CatalogLayerView extends LayerView {
  /** The [CatalogDynamicGroupLayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-CatalogDynamicGroupLayerView.html) of the [CatalogLayer's dynamicGroupLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html#dynamicGroupLayer). */
  get dynamicGroupLayerView(): CatalogDynamicGroupLayerView | null | undefined;
  /** The [CatalogFootprintLayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-CatalogFootprintLayerView.html) of the [CatalogLayer's footprintLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CatalogLayer.html#footprintLayer). */
  get footprintLayerView(): CatalogFootprintLayerView | null | undefined;
  /** The layer being viewed. */
  get layer(): CatalogLayer;
  /** A collection containing [dynamicGroupLayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-CatalogLayerView.html#dynamicGroupLayerView) and [footprintLayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-CatalogLayerView.html#footprintLayerView). */
  get layerViews(): Collection<LayerView>;
}