import { EventEmitter, IterableDiffers, SimpleChange, SimpleChanges } from '@angular/core';
import { IManagedObject } from '@c8y/client';
import type { MapDefaultConfig, MapTileLayer } from '@c8y/options';
import { ColorService, CountdownIntervalComponent, DatePipe, GeoService, ManagedObjectRealtimeService, WidgetGlobalAutoRefreshService, DynamicComponent, DynamicComponentAlertAggregator } from '@c8y/ngx-components';
import { TranslateService } from '@ngx-translate/core';
import type * as L from 'leaflet';
import { BehaviorSubject, Observable } from 'rxjs';
import { MapComponent } from './map.component';
import { ClusterMapConfig, PositionManagedObject } from './map.model';
import { MapService } from './map.service';
import * as i0 from "@angular/core";
export declare class ClusterMapComponent extends MapComponent implements DynamicComponent {
    protected moRealtimeService: ManagedObjectRealtimeService;
    protected mapService: MapService;
    protected layers$: Observable<MapTileLayer[]>;
    protected defaultConfig$: Observable<MapDefaultConfig>;
    protected translateService: TranslateService;
    protected widgetGlobalAutoRefreshService: WidgetGlobalAutoRefreshService;
    private iterable;
    private colorService;
    isLoading$: BehaviorSubject<boolean>;
    countdownIntervalComp: CountdownIntervalComponent;
    config: ClusterMapConfig;
    rootNode: IManagedObject;
    assets: PositionManagedObject;
    showClusterColor: boolean;
    mapChange: EventEmitter<L.LeafletEvent>;
    alerts: DynamicComponentAlertAggregator;
    errorNotifier: BehaviorSubject<any>;
    private reloadTrigger$;
    private clusters;
    private readonly EVENT_THROTTLE_TIME;
    constructor(moRealtimeService: ManagedObjectRealtimeService, mapService: MapService, layers$: Observable<MapTileLayer[]>, defaultConfig$: Observable<MapDefaultConfig>, translateService: TranslateService, widgetGlobalAutoRefreshService: WidgetGlobalAutoRefreshService, iterable: IterableDiffers, colorService: ColorService, geo: GeoService, datePipe: DatePipe);
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    changeConfig(change: SimpleChange): void;
    ngAfterViewInit(): Promise<void>;
    reset(): Promise<void>;
    reload(): void;
    cancelReload(): void;
    listenToClusterAndIntervalChanges(): void;
    listenToClusterMapChanges(): void;
    refreshMarkers(): void;
    private changeRootNode;
    private getClusterRects;
    private getRect;
    private clearClusters;
    private updateCluster;
    private createOrUpdateCluster;
    private getMapChangeObservable;
    private isLeafletEventInterface;
    private handleGlobalRefreshLoading;
    static ɵfac: i0.ɵɵFactoryDeclaration<ClusterMapComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ClusterMapComponent, "c8y-cluster-map", never, { "config": { "alias": "config"; "required": false; }; "rootNode": { "alias": "rootNode"; "required": false; }; "assets": { "alias": "asset"; "required": false; }; "showClusterColor": { "alias": "showClusterColor"; "required": false; }; }, { "mapChange": "mapChange"; }, never, ["*"], false, never>;
}
//# sourceMappingURL=cluster-map.component.d.ts.map