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/references/core/views/layers/LayerView/) of a [CatalogLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CatalogLayer/)
 * 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/).
 *
 * The CatalogLayerView is responsible for rendering a [CatalogLayer's](https://developers.arcgis.com/javascript/latest/references/core/layers/CatalogLayer/)
 * in the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/). The [methods](https://developers.arcgis.com/javascript/latest/references/core/layers/CatalogLayer/#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/references/core/layers/CatalogLayer/)
 */
export default abstract class CatalogLayerView extends LayerView {
  /** The [CatalogDynamicGroupLayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/CatalogDynamicGroupLayerView/) of the [CatalogLayer's dynamicGroupLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CatalogLayer/#dynamicGroupLayer). */
  get dynamicGroupLayerView(): CatalogDynamicGroupLayerView | null | undefined;
  /** The [CatalogFootprintLayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/CatalogFootprintLayerView/) of the [CatalogLayer's footprintLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CatalogLayer/#footprintLayer). */
  get footprintLayerView(): CatalogFootprintLayerView | null | undefined;
  /** The layer being viewed. */
  get layer(): CatalogLayer;
  /** A collection containing [dynamicGroupLayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/CatalogLayerView/#dynamicGroupLayerView) and [footprintLayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/CatalogLayerView/#footprintLayerView). */
  get layerViews(): Collection<LayerView>;
}