import type Graphic from "../../Graphic.js";
import type Collection from "../../core/Collection.js";
import type KMLLayer from "../../layers/KMLLayer.js";
import type KMLMapImage from "../../layers/support/KMLMapImage.js";
import type LayerView from "./LayerView.js";

/**
 * Represents the [LayerView](https://developers.arcgis.com/javascript/latest/references/core/views/layers/LayerView/) of a [KMLLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/KMLLayer/)
 * after it has been added to a [Map](https://developers.arcgis.com/javascript/latest/references/core/Map/) in a [MapView](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/).
 *
 * @since 4.6
 * @see [KMLLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/KMLLayer/)
 * @see [KMLSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/KMLSublayer/)
 * @see [Sample - KMLLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-kml/)
 */
export default abstract class KMLLayerView extends LayerView {
  /** A collection of all the [MapImages](https://developers.arcgis.com/javascript/latest/references/core/layers/support/KMLMapImage/) from visible sublayers. */
  abstract readonly allVisibleMapImages: Collection<KMLMapImage>;
  /** A collection of graphics representing all the points from visible sublayers. */
  abstract readonly allVisiblePoints: Collection<Graphic>;
  /** A collection of graphics representing all the polygons from visible sublayers. */
  abstract readonly allVisiblePolygons: Collection<Graphic>;
  /** A collection of graphics representing all the polylines from visible sublayers. */
  abstract readonly allVisiblePolylines: Collection<Graphic>;
  /** The layer being viewed. */
  get layer(): KMLLayer;
}