import { EventCallback } from "@openremote/core";
import { LitElement, PropertyValues } from "lit";
import { IControl, LngLat, LngLatLike } from "maplibre-gl";
import "./markers/or-map-marker";
import "./markers/or-map-marker-asset";
import { OrMapMarker, OrMapMarkerChangedEvent } from "./markers/or-map-marker";
import * as Util from "./util";
import { ValueInputProviderGenerator } from "@openremote/or-mwc-components/or-mwc-input";
import { AttributeEvent, GeoJsonConfig } from "@openremote/model";
import { AssetMap } from "./asset-map";
import type { AssetWithLocation, ClusterConfig, ControlPosition, MapEventDetail, MapGeocoderEventDetail } from "./types";
export { Util, LngLatLike, LngLat };
export * from "./markers/or-map-marker";
export * from "./markers/or-map-marker-asset";
export * from "./markers/or-cluster-marker";
export { IControl } from "maplibre-gl";
export * from "./or-map-asset-card";
export * from "./or-map-legend";
export type * from "./types";
export declare class OrMapLoadedEvent extends CustomEvent<void> {
    static readonly NAME = "or-map-loaded";
    constructor();
}
export declare class OrMapClickedEvent extends CustomEvent<MapEventDetail> {
    static readonly NAME = "or-map-clicked";
    constructor(lngLat: LngLat, doubleClick?: boolean);
}
export declare class OrMapLongPressEvent extends CustomEvent<MapEventDetail> {
    static readonly NAME = "or-map-long-press";
    constructor(lngLat: LngLat);
}
export declare class OrMapGeocoderChangeEvent extends CustomEvent<MapGeocoderEventDetail> {
    static readonly NAME = "or-map-geocoder-change";
    constructor(geocode: any);
}
export declare class OrMapMarkersChangedEvent extends CustomEvent<AssetWithLocation[]> {
    static readonly NAME = "or-map-markers-changed";
    constructor(assets: AssetWithLocation[]);
}
declare global {
    export interface HTMLElementEventMap {
        [OrMapClickedEvent.NAME]: OrMapClickedEvent;
        [OrMapLoadedEvent.NAME]: OrMapLoadedEvent;
        [OrMapLongPressEvent.NAME]: OrMapLongPressEvent;
        [OrMapGeocoderChangeEvent.NAME]: OrMapGeocoderChangeEvent;
        [OrMapMarkersChangedEvent.NAME]: OrMapMarkersChangedEvent;
    }
}
export declare const geoJsonPointInputTemplateProvider: ValueInputProviderGenerator;
export declare class OrMap extends LitElement {
    static styles: import("lit").CSSResult;
    cluster?: ClusterConfig;
    center?: LngLatLike;
    zoom?: number;
    showGeoCodingControl: boolean;
    showBoundaryBoxControl: boolean;
    useZoomControl: boolean;
    geoJson?: GeoJsonConfig;
    showGeoJson: boolean;
    boundary: string[];
    controls?: (IControl | [IControl, ControlPosition?])[];
    protected _initCallback?: EventCallback;
    protected _map?: AssetMap;
    protected _loaded: boolean;
    protected _resizeObserver?: ResizeObserver;
    protected _mapContainer?: HTMLElement;
    protected _slotElement?: HTMLSlotElement;
    constructor();
    addAsset(asset: AssetWithLocation): void;
    addAssets(assets: AssetWithLocation[]): void;
    updateAttribute(event: AttributeEvent): void;
    removeAssets(ids: string[]): void;
    removeAllAssets(): void;
    protected firstUpdated(_changedProperties: PropertyValues): void;
    disconnectedCallback(): void;
    protected render(): import("lit").TemplateResult<1>;
    protected updated(changedProperties: PropertyValues): void;
    refresh(): void;
    loadMap(): void;
    resize(): void;
    flyTo(coordinates?: LngLatLike, zoom?: number): void;
    _removeMarker(marker: OrMapMarker): void;
    protected _onMarkerChangedEvent(evt: OrMapMarkerChangedEvent): void;
}
//# sourceMappingURL=index.d.ts.map