import { ElementRef, EventEmitter, SimpleChange, SimpleChanges } from '@angular/core';
import { IEvent } from '@c8y/client';
import { DatePipe, GeoService, ManagedObjectRealtimeService, WidgetGlobalAutoRefreshService } from '@c8y/ngx-components';
import type { MapDefaultConfig, MapTileLayer } from '@c8y/options';
import { TranslateService } from '@ngx-translate/core';
import type * as L from 'leaflet';
import { BehaviorSubject, Observable, Subject, Subscription } from 'rxjs';
import { MapPopupDirective } from './map-popup.directive';
import { C8yMarker, C8yMarkerAttributes, MapConfig, PositionManagedObject } from './map.model';
import { MapService } from './map.service';
import * as i0 from "@angular/core";
export declare class MapComponent {
    protected moRealtimeService: ManagedObjectRealtimeService;
    protected mapService: MapService;
    protected layers$: Observable<MapTileLayer[]>;
    protected defaultConfig$: Observable<MapDefaultConfig>;
    protected translateService: TranslateService;
    protected geo: GeoService;
    protected datePipe: DatePipe;
    protected widgetGlobalAutoRefreshService: WidgetGlobalAutoRefreshService;
    /**
     * The leaflet map object.
     */
    map: L.Map;
    /**
     * The markers placed on the map.
     */
    markers: Array<C8yMarker | L.Marker>;
    /**
     * The leaflet representation used.
     */
    leaflet: typeof L;
    /**
     * Tells if the map was already initialized.
     */
    isInit: boolean;
    mapElement: ElementRef;
    popup: MapPopupDirective;
    config: MapConfig;
    assets: PositionManagedObject | PositionManagedObject[];
    polyline$: Observable<L.LatLngExpression[] | L.LatLngExpression[][]>;
    polylineOptions: L.PolylineOptions;
    onRealtimeUpdate: EventEmitter<PositionManagedObject>;
    onMove: Observable<L.LeafletEvent>;
    onMoveEnd: Observable<L.LeafletEvent>;
    onZoomStart: Observable<L.LeafletEvent>;
    onZoomEnd: Observable<L.LeafletEvent>;
    onMap: BehaviorSubject<L.Map>;
    onInit: EventEmitter<typeof L>;
    protected realtimeSubscription: Subscription;
    protected unsubscribeTrigger$: Subject<void>;
    protected destroy$: Subject<void>;
    private markerTitle;
    constructor(moRealtimeService: ManagedObjectRealtimeService, mapService: MapService, layers$: Observable<MapTileLayer[]>, defaultConfig$: Observable<MapDefaultConfig>, translateService: TranslateService, geo: GeoService, datePipe: DatePipe, widgetGlobalAutoRefreshService: WidgetGlobalAutoRefreshService);
    startRealtime(): void;
    moveToPositionOfMo(positions: PositionManagedObject | PositionManagedObject[]): void;
    stopRealtime(): void;
    findMarker(moOrId: string | IEvent | PositionManagedObject): L.Marker<any> | C8yMarker;
    addMarkerToMap(marker: C8yMarker | L.Marker): void;
    getAssetMarker(asset: PositionManagedObject): C8yMarker;
    getTrackingMarker(event: IEvent): C8yMarker;
    getAssetIcon(asset: PositionManagedObject): L.DivIcon;
    getTrackingIcon(): L.DivIcon;
    removeMarker(marker: C8yMarker | L.Marker): void;
    clearMarkers(fragment?: C8yMarkerAttributes): void;
    refreshMarkers(): void;
    center(): void;
    refresh(): void;
    protected ngAfterViewInit(): Promise<void>;
    protected ngOnChanges(changes: SimpleChanges): void;
    protected ngOnDestroy(): void;
    protected unsubscribeAllListeners(): void;
    protected initOutputs(): void;
    protected initMap(layers: MapTileLayer[], defaultConfig: MapConfig): void;
    protected handleMobile(): void;
    protected addLayers(layers: MapTileLayer[]): void;
    protected changeConfig(change: SimpleChange): void;
    protected hasChanged(change: SimpleChange, prop: keyof MapConfig): boolean;
    protected toggleControls(): void;
    private handleTouch;
    private zoomToBound;
    private fitBounds;
    private bindPopup;
    static ɵfac: i0.ɵɵFactoryDeclaration<MapComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MapComponent, "c8y-map", never, { "config": { "alias": "config"; "required": false; }; "assets": { "alias": "assets"; "required": false; }; "polyline$": { "alias": "polyline$"; "required": false; }; "polylineOptions": { "alias": "polylineOptions"; "required": false; }; }, { "onRealtimeUpdate": "onRealtimeUpdate"; "onMove": "onMove"; "onMoveEnd": "onMoveEnd"; "onZoomStart": "onZoomStart"; "onZoomEnd": "onZoomEnd"; "onMap": "onMap"; "onInit": "onInit"; }, ["popup"], ["*"], false, never>;
}
//# sourceMappingURL=map.component.d.ts.map