import * as ol from 'ol'; import * as ol_geom from 'ol/geom'; import * as _angular_core from '@angular/core'; import { Layer, Extent, Feature, Style, OlFeature } from '@angular-helpers/openlayers/core'; import FeatureFormat from 'ol/format/Feature'; import OLFeature from 'ol/Feature'; import { FlatStyleLike } from 'ol/style/flat'; import { Style as Style$1 } from 'ol/layer/WebGLTile'; import BaseLayer from 'ol/layer/Base'; interface LayerConfig extends Layer { type: 'vector' | 'tile' | 'image' | 'heatmap'; extent?: Extent; minResolution?: number; maxResolution?: number; } interface ClusterConfig { /** Enable clustering (default: false) */ enabled: boolean; /** Distance in pixels within which features will be clustered (default: 40) */ distance?: number; /** Minimum distance between clusters (default: 20) */ minDistance?: number; /** Show count badge on cluster (default: true) */ showCount?: boolean; /** Style for individual features when clustering */ featureStyle?: Style; /** Automatically spiderfy overlapping points on click (default: false) */ spiderfyOnSelect?: boolean; /** Callback when a spider leg feature is clicked */ onSpiderfyClick?: (feature: Feature) => void; } interface AutoFitOptions { padding?: number[]; duration?: number; } interface VectorSourceConfig { features?: Feature[]; url?: string; format?: 'geojson' | 'topojson' | 'kml' | FeatureFormat; coordinateProjection?: string; autoFit?: boolean | AutoFitOptions; onError?: (error: Error) => void; onFeaturesLoaded?: (features: Feature[]) => void; throttleTime?: number; } interface VectorLayerConfig extends LayerConfig, VectorSourceConfig { type: 'vector'; style?: Style | ((feature: Feature) => Style); cluster?: ClusterConfig; } interface HeatmapLayerConfig extends LayerConfig { type: 'heatmap'; features?: Feature[]; weight?: string | ((feature: Feature) => number); blur?: number; radius?: number; } interface TileLayerConfig extends LayerConfig { type: 'tile'; source: SourceConfig; } interface ImageLayerConfig extends LayerConfig { type: 'image'; source: ImageSourceConfig; } interface SourceConfig { type: 'osm' | 'xyz' | 'wms' | 'wmts'; url?: string; attributions?: string | string[]; params?: Record; } interface ImageSourceConfig { type: 'wms' | 'static'; url: string; params?: Record; imageExtent?: Extent; } type AnyLayerConfig = VectorLayerConfig | TileLayerConfig | ImageLayerConfig | HeatmapLayerConfig; declare class OlClusterComponent { distance: _angular_core.InputSignal; minDistance: _angular_core.InputSignal; showCount: _angular_core.InputSignal; featureStyle: _angular_core.InputSignal