import { EventEmitter } from '../../stencil-public-runtime';
import type { Flavour } from '../../types/flavour';
import type { CssMode } from '../../types/cssmode';
import { type MapProviderDetail } from '../../utils/events';
export declare class VMap {
el: HTMLElement;
/**
* Zu verwendender Karten-Provider.
* Unterstützte Werte: "ol" | "leaflet" | "cesium" | "deck".
* @default "ol"
* @example
*
*/
flavour: Flavour;
/**
* Mittelpunkt der Karte im **WGS84**-Koordinatensystem.
* Erwartet [lon, lat] (Längengrad, Breitengrad).
* @default [0, 0]
* @example
*
*/
center: string;
/**
* Anfangs-Zoomstufe. Skala abhängig vom Provider (typisch 0–20).
* @default 3
*/
zoom: number;
/** Falls true, injiziert v-map automatisch die Import-Map. */
useDefaultImportMap: boolean;
/**
* Aktiviert ein „CSS-Only“-Rendering (z. B. für einfache Tests/Layouts).
* Bei `true` werden keine Provider initialisiert.
* @default false
*/
cssMode: CssMode;
/**
* Wird ausgelöst, sobald der Karten-Provider initialisiert wurde und Layers entgegennimmt.
* `detail` enthält `{ provider, flavour }`.
* @event mapProviderReady
*/
mapProviderReady: EventEmitter;
private mapProvider;
private mapState;
private mapContainer;
private unsubscribeResize;
private unsubscribePointerMove;
private unsubscribeViewChange;
private _isSettingView;
private _lastProgrammaticZoom;
private _lastProgrammaticCenter;
onFlavourChanged(newValue: string, oldValue: string): Promise;
/**
* When the `zoom` prop changes from outside (e.g. a slider in the
* consuming app), update the underlying provider's view *without*
* resetting the user's current center. We query the live center
* from the provider via getView() because the user may have panned
* the map since init - the original `this.center` prop is the seed
* value, not the current state.
*/
onZoomChanged(newValue: number, oldValue: number): Promise;
/**
* Same idea for `center`: keep the user's current zoom intact when
* the parent updates only the center.
*/
onCenterChanged(newValue: string, oldValue: string): Promise;
private parseCenter;
private reset;
private createMap;
componentWillLoad(): Promise;
componentWillRender(): Promise;
componentDidRender(): Promise;
disconnectedCallback(): void;
/**
* Gibt zurück, ob der Karten-Provider initialisiert wurde und verwendet werden kann.
* @returns Promise mit `true`, sobald der Provider bereit ist, sonst `false`.
*/
isMapProviderReady(): Promise;
/**
* Setzt Kartenzentrum und Zoom (optional animiert).
* @param center [lon, lat] in WGS84
* @param zoom Zoomstufe
* @param options Zusätzliche Optionen (z. B. { animate: true, duration: 300 })
* @example
* await mapEl.setView([7.1, 50.7], 10, { animate: true, duration: 400 });
*/
setView(coordinates: [number, number], zoom: number): Promise;
private ensureContainer;
render(): any;
}