import type Collection from "../../core/Collection.js";
import type LayerView from "./LayerView.js";
import type { CatalogDynamicGroupLayerView } from "./CatalogDynamicGroupLayerView.js";
import type { CatalogFootprintLayerView } from "./CatalogFootprintLayerView.js";

export interface CatalogLayerViewMixinProperties {}

/**
 * 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 abstract class CatalogLayerViewMixin {
  constructor(...args: any[]);
  /** The [CatalogDynamicGroupLayerViewMixin](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 [CatalogFootprintLayerViewMixin](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;
  /** A collection of [LayerView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-layers-LayerView.html) instances associated with this layer. */
  get layerViews(): Collection<LayerView>;
}

export abstract class CatalogLayerView extends CatalogLayerViewSuperclass {}
declare const CatalogLayerViewSuperclass: & typeof LayerView & typeof CatalogLayerViewMixin