import * as i0 from '@angular/core';
import { OnInit, AfterViewInit, EnvironmentProviders } from '@angular/core';
import { IResultList, IEvent, EventService } from '@c8y/client';
import { PositionManagedObject, MapComponent, MapConfig } from '@c8y/ngx-components/map';
import { ForOfFilterPipe, GeoService, TimeInterval, ContextRouteService, EventRealtimeService, DateRangePickerConfig, LoadMoreComponent } from '@c8y/ngx-components';
import { Observable } from 'rxjs';
import { CanActivate, ActivatedRouteSnapshot, ActivatedRoute } from '@angular/router';

declare class TrackingService {
    private eventService;
    private geo;
    private static readonly BASE_FILTER;
    events$: Observable<IResultList<IEvent>>;
    polyline$: Observable<L.LatLngExpression[]>;
    pipe: ForOfFilterPipe;
    trackVisible: boolean;
    hasEvents: boolean;
    private _polylineEventsSubject$;
    private deviceId$;
    private timeInterval$;
    private reload$;
    constructor(eventService: EventService, geo: GeoService);
    setDeviceId(deviceId: string | number): void;
    setInterval(interval: TimeInterval): void;
    clearTrack(): void;
    reload(): void;
    latestPositionUpdate(mo: PositionManagedObject): Promise<Date>;
    toggleTrack(): void;
    isLocationUpdateEvent(event: IEvent): boolean;
    private isMatchingEvent;
    private compareEvents;
    static ɵfac: i0.ɵɵFactoryDeclaration<TrackingService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TrackingService>;
}

declare class TrackingMarkerPopupComponent implements OnInit {
    trackingService: TrackingService;
    context: PositionManagedObject | IEvent;
    /**
     * Displays link to device tracking tab.
     */
    showTrackingLink: boolean;
    isDevice: boolean;
    date: Date;
    constructor(trackingService: TrackingService);
    ngOnInit(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TrackingMarkerPopupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TrackingMarkerPopupComponent, "c8y-tracking-marker-popup", never, { "context": { "alias": "context"; "required": false; }; "showTrackingLink": { "alias": "showTrackingLink"; "required": false; }; }, {}, never, never, true, never>;
}

declare class TrackingTabFactory implements CanActivate {
    private contextRouteService;
    private geoService;
    constructor(contextRouteService: ContextRouteService, geoService: GeoService);
    canActivate(snapshot: ActivatedRouteSnapshot): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<TrackingTabFactory, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TrackingTabFactory>;
}

declare class TrackingComponent implements OnInit, AfterViewInit {
    service: TrackingService;
    realtime: EventRealtimeService;
    private contextRouteService;
    private activatedRoute;
    map: MapComponent;
    dateRangePickerConfig: DateRangePickerConfig;
    config: MapConfig;
    maxDate: Date;
    activeMarkers: {
        [key: string]: boolean;
    };
    realtimeDisabled: boolean;
    device: PositionManagedObject;
    loadMoreComponent: LoadMoreComponent;
    constructor(service: TrackingService, realtime: EventRealtimeService, contextRouteService: ContextRouteService, activatedRoute: ActivatedRoute);
    ngOnInit(): Promise<void>;
    ngAfterViewInit(): Promise<void>;
    toggleMarker(event: IEvent): void;
    togglePositionRealtime(active: boolean): void;
    toggleRealtime(interval: TimeInterval): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TrackingComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TrackingComponent, "c8y-tracking", never, {}, {}, never, never, true, never>;
}

declare const trackingFeatureProvider: EnvironmentProviders;

export { TrackingComponent, TrackingMarkerPopupComponent, TrackingService, TrackingTabFactory, trackingFeatureProvider };
//# sourceMappingURL=index.d.ts.map
