import type { MapSVGMap } from "../Map/Map" import type { MapObject, MapObjectType } from "../MapObject/MapObject" import type { ScreenPoint, SVGPoint } from "../Location/Location" import type { ViewBox } from "../Map/ViewBox" import type { WorldCopies } from "../Marker/WorldCopies" export interface ClusterServices { MapObject: typeof MapObject MapObjectType: typeof MapObjectType ScreenPoint: typeof ScreenPoint SVGPoint: typeof SVGPoint ViewBox: typeof ViewBox WorldCopies: typeof WorldCopies MapEventType: { ZOOM: string; RESIZE: string } } /** Optional implementation; core retains persisted options and public method names. */ export interface ClusteringModule { deleteClusters: ( this: MapSVGMap, services: ClusterServices, ...args: Parameters ) => ReturnType addClustersFromWorker: ( this: MapSVGMap, services: ClusterServices, ...args: Parameters ) => ReturnType startClusterizer: ( this: MapSVGMap, services: ClusterServices, ...args: Parameters ) => ReturnType clusterizeMarkers: ( this: MapSVGMap, services: ClusterServices, ...args: Parameters ) => ReturnType clusterizeOnZoom: ( this: MapSVGMap, services: ClusterServices, ...args: Parameters ) => ReturnType markersClusterAdd: ( this: MapSVGMap, services: ClusterServices, ...args: Parameters ) => ReturnType markerClusterClickHandler: ( this: MapSVGMap, services: ClusterServices, ...args: Parameters ) => ReturnType bindEvents: (this: MapSVGMap) => void hit: (target: HTMLElement) => import("./MarkerCluster").MarkerCluster | undefined setColors: (this: MapSVGMap) => void dispose: (this: MapSVGMap) => void sync: (this: MapSVGMap, services: ClusterServices) => void }