import type CatalogLayer from "../layers/CatalogLayer.js";
import type CSVLayer from "../layers/CSVLayer.js";
import type FeatureLayer from "../layers/FeatureLayer.js";
import type GeoJSONLayer from "../layers/GeoJSONLayer.js";
import type ImageryLayer from "../layers/ImageryLayer.js";
import type OGCFeatureLayer from "../layers/OGCFeatureLayer.js";
import type OrientedImageryLayer from "../layers/OrientedImageryLayer.js";
import type ParquetLayer from "../layers/ParquetLayer.js";
import type PointCloudLayer from "../layers/PointCloudLayer.js";
import type SceneLayer from "../layers/SceneLayer.js";
import type StreamLayer from "../layers/StreamLayer.js";
import type SubtypeGroupLayer from "../layers/SubtypeGroupLayer.js";
import type WFSLayer from "../layers/WFSLayer.js";
import type CatalogFootprintLayer from "../layers/catalog/CatalogFootprintLayer.js";
import type KnowledgeGraphSublayer from "../layers/knowledgeGraph/KnowledgeGraphSublayer.js";
import type SubtypeSublayer from "../layers/support/SubtypeSublayer.js";

/** @since 5.0 */
export type SupportedLayer = CatalogLayer | CatalogFootprintLayer | CSVLayer | FeatureLayer | GeoJSONLayer | ImageryLayer | KnowledgeGraphSublayer | OGCFeatureLayer | OrientedImageryLayer | ParquetLayer | PointCloudLayer | SceneLayer | StreamLayer | SubtypeGroupLayer | SubtypeSublayer | WFSLayer;

/** @since 5.0 */
export type BinningSupportedLayer = FeatureLayer | OGCFeatureLayer | OrientedImageryLayer | GeoJSONLayer | CSVLayer | ParquetLayer | WFSLayer | StreamLayer | KnowledgeGraphSublayer;

/** @since 5.0 */
export type ClusteringSupportedLayer = FeatureLayer | OGCFeatureLayer | GeoJSONLayer | CSVLayer | WFSLayer | OrientedImageryLayer | ParquetLayer | StreamLayer | KnowledgeGraphSublayer;

/** @since 5.0 */
export type PopupSupportedLayer = CSVLayer | FeatureLayer | OGCFeatureLayer | GeoJSONLayer | WFSLayer | OrientedImageryLayer | ParquetLayer | StreamLayer | SubtypeGroupLayer | SubtypeSublayer | KnowledgeGraphSublayer;

/** @since 5.0 */
export type SmartMappingTimeUnit = "years" | "months" | "days" | "hours" | "minutes" | "seconds";