import { PropertyValues } from "lit";
import { Store } from "@reduxjs/toolkit";
import "@openremote/or-map";
import { MapAssetCardConfig, OrMap, OrMapAssetCardLoadAssetEvent, OrMapClickedEvent, OrMapMarkerClickedEvent, MapMarkerAssetConfig, OrMapMarkersChangedEvent, OrMapLegendEvent } from "@openremote/or-map";
import { Asset, AssetQuery, WellknownAttributes } from "@openremote/model";
import { AppStateKeyed, Page, PageProvider } from "@openremote/or-app";
import { ClusterConfig, AssetWithLocation } from "@openremote/or-map";
export interface MapState {
    assets: Asset[];
    currentAssetId: string;
}
export interface MapStateKeyed extends AppStateKeyed {
    map: MapState;
}
export declare const pageMapReducer: import("redux").Reducer<MapState>;
export interface PageMapConfig {
    legend?: {
        show: boolean;
    };
    clustering?: ClusterConfig;
    card?: MapAssetCardConfig;
    assetQuery?: AssetQuery;
    markers?: MapMarkerAssetConfig;
}
export declare function pageMapProvider(store: Store<MapStateKeyed>, config?: PageMapConfig): PageProvider<MapStateKeyed>;
export declare class PageMap extends Page<MapStateKeyed> {
    static get styles(): import("lit").CSSResult;
    config?: PageMapConfig;
    protected _map?: OrMap;
    protected _assets: Asset[];
    protected _currentAsset?: Asset;
    protected _assetsOnScreen: AssetWithLocation[];
    protected _assetSelector: (state: MapStateKeyed) => Asset[];
    protected _paramsSelector: (state: MapStateKeyed) => {
        [x: string]: string;
    };
    protected _realmSelector: (state: MapStateKeyed) => string;
    protected _assetSubscriptionId: string;
    protected _attributeSubscriptionId: string;
    protected _assetTypes: string[];
    protected _excludedTypes: string[];
    shouldUpdate(_changedProperties: PropertyValues): boolean;
    protected getAttributesOfInterest(): (string | WellknownAttributes)[];
    protected subscribeAssets: (realm: string) => Promise<void>;
    protected unsubscribeAssets: () => void;
    protected getRealmState: ((state: MapStateKeyed) => Promise<void>) & import("reselect").OutputSelectorFields<(args_0: string) => Promise<void>, {
        clearCache: () => void;
    }> & {
        clearCache: () => void;
    };
    protected _getMapAssets: ((state: MapStateKeyed) => Asset[]) & import("reselect").OutputSelectorFields<(args_0: Asset[]) => Asset[], {
        clearCache: () => void;
    }> & {
        clearCache: () => void;
    };
    protected _getCurrentAsset: ((state: MapStateKeyed) => Asset) & import("reselect").OutputSelectorFields<(args_0: Asset[], args_1: {
        [x: string]: string;
    }) => Asset, {
        clearCache: () => void;
    }> & {
        clearCache: () => void;
    };
    protected _setCenter(geocode: any): void;
    get name(): string;
    constructor(store: Store<MapStateKeyed>);
    protected render(): import("lit-html").TemplateResult<1>;
    connectedCallback(): void;
    disconnectedCallback(): void;
    stateChanged(state: MapStateKeyed): void;
    protected _onMapMarkerClick(e: OrMapMarkerClickedEvent): void;
    protected _onMapClick(e: OrMapClickedEvent): void;
    protected _onMapMarkersChanged(e: OrMapMarkersChangedEvent): void;
    protected _onLoadAssetEvent(loadAssetEvent: OrMapAssetCardLoadAssetEvent): void;
    protected _onMapLegendChanged(e: OrMapLegendEvent): void;
    protected _updateMarkers(): void;
}
//# sourceMappingURL=page-map.d.ts.map