import { InjectionToken } from '@angular/core';
import { IEvent, IManagedObject } from '@c8y/client';
import type { MapDefaultConfig, MapTileLayer } from '@c8y/options';
import type * as L from 'leaflet';
import { Observable } from 'rxjs';
import { GlobalAutoRefreshWidgetConfig } from '@c8y/ngx-components';
export declare function getC8yMarker(marker: L.Marker, asset?: PositionManagedObject, event?: IEvent): C8yMarker;
export declare const MAP_TILE_LAYER: InjectionToken<Observable<MapTileLayer[]>>;
type RequireOnlyOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
    [K in Keys]-?: Required<Pick<T, K>> & Partial<Record<Exclude<Keys, K>, undefined>>;
}[Keys];
interface C8yMarkerAttr {
    asset: PositionManagedObject;
    event: IEvent;
}
export type C8yMarkerAttributes = keyof C8yMarkerAttr;
export type C8yMarker = L.Marker & RequireOnlyOne<C8yMarkerAttr, 'asset' | 'event'>;
export declare enum ClusterSize {
    NONE = 0,
    FOUR = 1,
    SIXTEEN = 2
}
export declare enum MapTenantOptionKeys {
    CONFIG = "map-config",
    LAYERS = "map-layers"
}
export interface PositionManagedObject extends IManagedObject {
    c8y_Position: {
        lat: number;
        lng: number;
        alt?: number;
    };
    c8y_ActiveAlarmsStatus?: {
        minor: number;
        major: number;
        warning: number;
        critical: number;
    };
    icon?: {
        name: string;
    };
}
export type ClusterMapConfig = MapConfig & {
    center: [number, number];
    refreshInterval?: number | null;
};
export type MapConfig = MapDefaultConfig & {
    follow?: boolean;
    realtime?: boolean;
    icon?: string;
    color?: string;
    disableZoom?: boolean;
    disablePan?: boolean;
    bounds?: L.LatLngBounds;
    fitBoundsOptions?: L.FitBoundsOptions;
} & GlobalAutoRefreshWidgetConfig;
export declare const MAP_DEFAULT_CONFIG: InjectionToken<Observable<MapDefaultConfig>>;
export declare const defaultLayer: MapTileLayer;
export declare const defaultMapConfig: MapDefaultConfig;
export type MapStatusButtonsConfig = Record<'realtime', {
    show: boolean;
    disabled?: boolean;
}>;
export {};
//# sourceMappingURL=map.model.d.ts.map