import type Layer from "../../layers/Layer.js";
import type CatalogFootprintLayerView from "../layers/CatalogFootprintLayerView.js";
import type CSVLayerView from "../layers/CSVLayerView.js";
import type DimensionLayerView from "../layers/DimensionLayerView.js";
import type FeatureLayerView from "../layers/FeatureLayerView.js";
import type GeoJSONLayerView from "../layers/GeoJSONLayerView.js";
import type GraphicsLayerView from "../layers/GraphicsLayerView.js";
import type ImageryLayerView from "../layers/ImageryLayerView.js";
import type LineOfSightLayerView from "../layers/LineOfSightLayerView.js";
import type MediaLayerView from "../layers/MediaLayerView.js";
import type OGCFeatureLayerView from "../layers/OGCFeatureLayerView.js";
import type OrientedImageryLayerView from "../layers/OrientedImageryLayerView.js";
import type SceneLayerView from "../layers/SceneLayerView.js";
import type StreamLayerView from "../layers/StreamLayerView.js";
import type VectorTileLayerView from "../layers/VectorTileLayerView.js";
import type ViewshedLayerView from "../layers/ViewshedLayerView.js";
import type WFSLayerView from "../layers/WFSLayerView.js";
import type { PointCloudLayerView } from "../layers/PointCloudLayerView.js";

/** @since 5.0 */
export interface LayerView3DMap {
  /** @since 5.1 */
  "annotation-feature": never;
  /** @since 5.0 */
  "base-dynamic": never;
  /** @since 5.0 */
  "base-elevation": never;
  /** @since 5.0 */
  "base-tile": never;
  /** @since 5.0 */
  "bing-maps": never;
  /** @since 5.0 */
  "building-scene": never;
  /** @since 5.0 */
  "catalog-dynamic-group": never;
  /** @since 5.0 */
  "catalog-footprint": CatalogFootprintLayerView;
  /** @since 5.0 */
  catalog: never;
  /** @since 5.0 */
  csv: CSVLayerView;
  /** @since 5.0 */
  dimension: DimensionLayerView;
  /** @since 5.0 */
  elevation: never;
  /** @since 5.0 */
  feature: FeatureLayerView;
  /** @since 5.0 */
  "gaussian-splat": never;
  /** @since 5.0 */
  geojson: GeoJSONLayerView;
  /** @since 5.0 */
  graphics: GraphicsLayerView;
  /** @since 5.0 */
  group: never;
  /** @since 5.0 */
  "imagery-tile": never;
  /** @since 5.0 */
  imagery: ImageryLayerView;
  /** @since 5.0 */
  "integrated-mesh-3dtiles": never;
  /** @since 5.0 */
  "integrated-mesh": never;
  /** @since 5.0 */
  "line-of-sight": LineOfSightLayerView;
  /** @since 5.0 */
  "map-image": never;
  /** @since 5.0 */
  media: MediaLayerView;
  /** @since 5.0 */
  "ogc-feature": OGCFeatureLayerView;
  /** @since 5.0 */
  "open-street-map": never;
  /** @since 5.0 */
  "oriented-imagery": OrientedImageryLayerView;
  /** @since 5.0 */
  "point-cloud": PointCloudLayerView;
  /** @since 5.0 */
  route: never;
  /** @since 5.0 */
  scene: SceneLayerView;
  /** @since 5.0 */
  stream: StreamLayerView;
  /** @since 5.0 */
  tile: never;
  /** @since 5.0 */
  "vector-tile": VectorTileLayerView;
  /** @since 5.0 */
  viewshed: ViewshedLayerView;
  /** @since 5.0 */
  voxel: never;
  /** @since 5.0 */
  wcs: never;
  /** @since 5.0 */
  "web-tile": never;
  /** @since 5.0 */
  wfs: WFSLayerView;
  /** @since 5.0 */
  wms: never;
  /** @since 5.0 */
  wmts: never;
  /** @since 5.1 */
  "dimension-feature": never;
  /** @since 5.0 */
  "geo-rss": never;
  /** @since 5.0 */
  kml: never;
  /** @since 5.0 */
  "knowledge-graph-sublayer": never;
  /** @since 5.0 */
  "knowledge-graph": never;
  /** @since 5.0 */
  "link-chart": never;
  /** @since 5.0 */
  "map-notes": never;
  /** @since 5.0 */
  parquet: never;
  /** @since 5.0 */
  "subtype-group": never;
  /** @since 5.0 */
  unknown: never;
  /** @since 5.0 */
  unsupported: never;
  /** @since 5.0 */
  video: never;
}

/** @since 5.0 */
export type LayerView3DFor<TLayer extends Layer> = LayerView3DMap[TLayer["type"]];