import * as _angular_core from '@angular/core';
import { OutputEmitterRef, OnChanges, OnDestroy, ElementRef, SimpleChanges, OnInit, TemplateRef } from '@angular/core';
import * as maplibre_gl from 'maplibre-gl';
import { MapLibreEvent, MapMouseEvent, MapTouchEvent, MapWheelEvent, MapLibreZoomEvent, MapContextEvent, Map, MapDataEvent, MapStyleDataEvent, MapSourceDataEvent, MapLayerMouseEvent, MapLayerTouchEvent, GeolocateControl, FlyToOptions, AnimationOptions, CameraOptions, MapOptions, TerrainSpecification, ProjectionSpecification, LayerSpecification, PopupOptions, MarkerOptions, LngLatLike, Marker, StyleSpecification, LngLatBoundsLike, PointLike, QueryRenderedFeaturesOptions, Popup, IControl, ControlPosition, SourceSpecification, Source, BackgroundLayerSpecification, FillLayerSpecification, FillExtrusionLayerSpecification, LineLayerSpecification, SymbolLayerSpecification, RasterLayerSpecification, CircleLayerSpecification, FilterSpecification, FitBoundsOptions, VectorSourceSpecification, RasterDEMSourceSpecification, RasterSourceSpecification, ImageSourceSpecification, CanvasSourceSpecification, Offset, Unit, MapGeoJSONFeature } from 'maplibre-gl';
import * as rxjs from 'rxjs';
import * as geojson from 'geojson';

interface EventData {
    [key: string]: any;
}
interface MapEvent {
    mapResize: OutputEmitterRef<MapLibreEvent & EventData>;
    mapRemove: OutputEmitterRef<MapLibreEvent & EventData>;
    mapMouseDown: OutputEmitterRef<MapMouseEvent & EventData>;
    mapMouseUp: OutputEmitterRef<MapMouseEvent & EventData>;
    mapMouseMove: OutputEmitterRef<MapMouseEvent & EventData>;
    mapClick: OutputEmitterRef<MapMouseEvent & EventData>;
    mapDblClick: OutputEmitterRef<MapMouseEvent & EventData>;
    mapMouseOver: OutputEmitterRef<MapMouseEvent & EventData>;
    mapMouseOut: OutputEmitterRef<MapMouseEvent & EventData>;
    mapContextMenu: OutputEmitterRef<MapMouseEvent & EventData>;
    mapTouchStart: OutputEmitterRef<MapTouchEvent & EventData>;
    mapTouchEnd: OutputEmitterRef<MapTouchEvent & EventData>;
    mapTouchMove: OutputEmitterRef<MapTouchEvent & EventData>;
    mapTouchCancel: OutputEmitterRef<MapTouchEvent & EventData>;
    mapWheel: OutputEmitterRef<MapWheelEvent & EventData>;
    moveStart: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    move: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    moveEnd: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    mapDragStart: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    mapDrag: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    mapDragEnd: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    zoomStart: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    zoomEvt: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    zoomEnd: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    rotateStart: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    rotate: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    rotateEnd: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    pitchStart: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    pitchEvt: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    pitchEnd: OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    boxZoomStart: OutputEmitterRef<MapLibreZoomEvent & EventData>;
    boxZoomEnd: OutputEmitterRef<MapLibreZoomEvent & EventData>;
    boxZoomCancel: OutputEmitterRef<MapLibreZoomEvent & EventData>;
    webGlContextLost: OutputEmitterRef<MapContextEvent & EventData>;
    webGlContextRestored: OutputEmitterRef<MapContextEvent & EventData>;
    mapLoad: OutputEmitterRef<Map>;
    render: OutputEmitterRef<MapLibreEvent & EventData>;
    mapError: OutputEmitterRef<ErrorEvent & EventData>;
    data: OutputEmitterRef<MapDataEvent & EventData>;
    styleData: OutputEmitterRef<MapStyleDataEvent & EventData>;
    sourceData: OutputEmitterRef<MapSourceDataEvent & EventData>;
    dataLoading: OutputEmitterRef<MapDataEvent & EventData>;
    styleDataLoading: OutputEmitterRef<MapStyleDataEvent & EventData>;
    sourceDataLoading: OutputEmitterRef<MapSourceDataEvent & EventData>;
    styleImageMissing: OutputEmitterRef<{
        id: string;
    } & EventData>;
    idle: OutputEmitterRef<MapLibreEvent & EventData>;
}
interface LayerEvents {
    layerClick: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerDblClick: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerMouseDown: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerMouseUp: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerMouseEnter: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerMouseLeave: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerMouseMove: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerMouseOver: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerMouseOut: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerContextMenu: OutputEmitterRef<MapLayerMouseEvent & EventData>;
    layerTouchStart: OutputEmitterRef<MapLayerTouchEvent & EventData>;
    layerTouchEnd: OutputEmitterRef<MapLayerTouchEvent & EventData>;
    layerTouchCancel: OutputEmitterRef<MapLayerTouchEvent & EventData>;
}
/**
 * in typescript 4.1 DOM interface Position and Coordinates renamed to GeolocationPosition GeolocationCoordinates
 * to avoid deprecation angular version < 11.0.0 we declared own Coordinates, Position interface
 */
interface NgxMapLibreGeolocationCoordinates {
    readonly accuracy: number;
    readonly altitude: number | null;
    readonly altitudeAccuracy: number | null;
    readonly heading: number | null;
    readonly latitude: number;
    readonly longitude: number;
    readonly speed: number | null;
}
interface Position {
    coords: NgxMapLibreGeolocationCoordinates;
    target: GeolocateControl;
    timestamp: number;
    type: string;
}
type MapImageData = HTMLImageElement | ArrayBufferView | {
    width: number;
    height: number;
    data: Uint8Array | Uint8ClampedArray;
} | ImageData | ImageBitmap;
interface MapImageOptions {
    pixelRatio: number;
    sdf: boolean;
}

interface SetupMap {
    mapOptions: Omit<MapOptions, 'bearing' | 'pitch' | 'zoom'> & {
        bearing?: [number];
        pitch?: [number];
        zoom?: [number];
        terrain?: TerrainSpecification;
        projection?: ProjectionSpecification;
    };
    mapEvents: MapEvent;
}
interface SetupLayer {
    layerOptions: LayerSpecification;
    layerEvents: LayerEvents;
}
interface SetupPopup {
    popupOptions: PopupOptions;
    popupEvents: {
        popupOpen: OutputEmitterRef<void>;
        popupClose: OutputEmitterRef<void>;
    };
}
/**
 * @private
 */
interface SetupMarkerOptions extends MarkerOptions {
    element: HTMLElement;
    feature?: GeoJSON.Feature<GeoJSON.Point>;
    lngLat?: LngLatLike;
}
interface SetupMarker {
    markersOptions: SetupMarkerOptions;
    markersEvents: {
        markerDragStart: OutputEmitterRef<Marker>;
        markerDrag: OutputEmitterRef<Marker>;
        markerDragEnd: OutputEmitterRef<Marker>;
    };
}
type MovingOptions = FlyToOptions | (AnimationOptions & CameraOptions) | CameraOptions;
/**
 * @private
 */
declare class MapService {
    private readonly zone;
    mapInstance: Map;
    mapEvents: MapEvent;
    private readonly subscriptionsPerInstance;
    private readonly mapCreated;
    private readonly mapLoaded;
    private readonly markersToRemove;
    private readonly popupsToRemove;
    private readonly imageIdsToRemove;
    readonly mapCreated$: rxjs.Observable<void>;
    readonly mapLoaded$: rxjs.Observable<void>;
    setup(options: SetupMap): void;
    destroyMap(): void;
    updateMinZoom(minZoom: number): void;
    updateMaxZoom(maxZoom: number): void;
    updateMinPitch(minPitch: number): void;
    updateMaxPitch(maxPitch: number): void;
    updateRenderWorldCopies(status: boolean): void;
    updateScrollZoom(status: boolean): void;
    updateDragRotate(status: boolean): void;
    updateTouchPitch(status: boolean): void;
    updateTouchZoomRotate(status: boolean): void;
    updateDoubleClickZoom(status: boolean): void;
    updateKeyboard(status: boolean): void;
    updateDragPan(status: boolean): void;
    updateBoxZoom(status: boolean): void;
    updateStyle(style: StyleSpecification): void;
    updateMaxBounds(maxBounds: LngLatBoundsLike): void;
    setProjection(options: ProjectionSpecification): void;
    setTerrain(options: TerrainSpecification): void;
    getTerrain(): TerrainSpecification | null;
    setCenterElevation(elevation: number): void;
    changeCanvasCursor(cursor: string): void;
    queryRenderedFeatures(pointOrBox?: PointLike | [PointLike, PointLike] | QueryRenderedFeaturesOptions, parameters?: QueryRenderedFeaturesOptions): GeoJSON.Feature<GeoJSON.GeometryObject>[];
    panTo(center: LngLatLike, options?: AnimationOptions): void;
    move(movingMethod: 'jumpTo' | 'easeTo' | 'flyTo', movingOptions?: MovingOptions, zoom?: number, center?: LngLatLike, bearing?: number, pitch?: number, roll?: number): void;
    addLayer(layer: SetupLayer, bindEvents: boolean, before?: string): void;
    removeLayer(layerId: string): void;
    addMarker(marker: SetupMarker): Marker;
    removeMarker(marker: Marker): void;
    createPopup(popup: SetupPopup, element: Node): Popup;
    addPopupToMap(popup: Popup, lngLat: LngLatLike): void;
    addPopupToMarker(marker: Marker, popup: Popup): void;
    removePopupFromMap(popup: Popup): void;
    removePopupFromMarker(marker: Marker): void;
    addControl(control: IControl, position?: ControlPosition): void;
    removeControl(control: IControl): void;
    loadAndAddImage(imageId: string, url: string, options?: MapImageOptions): Promise<void>;
    addImage(imageId: string, data: MapImageData, options?: MapImageOptions): void;
    removeImage(imageId: string): void;
    addSource(sourceId: string, source: SourceSpecification): void;
    getSource<T extends Source>(sourceId: string): T;
    removeSource(sourceId: string): void;
    setAllLayerPaintProperty(layerId: string, paint: BackgroundLayerSpecification['paint'] | FillLayerSpecification['paint'] | FillExtrusionLayerSpecification['paint'] | LineLayerSpecification['paint'] | SymbolLayerSpecification['paint'] | RasterLayerSpecification['paint'] | CircleLayerSpecification['paint']): void;
    setAllLayerLayoutProperty(layerId: string, layout: BackgroundLayerSpecification['layout'] | FillLayerSpecification['layout'] | FillExtrusionLayerSpecification['layout'] | LineLayerSpecification['layout'] | SymbolLayerSpecification['layout'] | RasterLayerSpecification['layout'] | CircleLayerSpecification['layout']): void;
    setLayerFilter(layerId: string, filter: FilterSpecification | null | undefined): void;
    setLayerBefore(layerId: string, beforeId: string): void;
    setLayerZoomRange(layerId: string, minZoom?: number, maxZoom?: number): void;
    fitBounds(bounds: LngLatBoundsLike, options?: FitBoundsOptions): void;
    fitScreenCoordinates(points: [PointLike, PointLike], bearing: number, options?: AnimationOptions & CameraOptions): void;
    clearMapElements(): void;
    private createMap;
    private removeMarkers;
    private removePopups;
    private removeImages;
    private findLayersBySourceId;
    private hookEvents;
    private createSubscriptionForLayer;
    private createSubscriptionForPopup;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<MapService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<MapService>;
}

/**
 * `mgl-map` - The main map component
 * @see [Map](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/)
 *
 * @category Map Component
 *
 * @example
 * ```typescript
 * ...
 * @Component({
 *   template: `
 *   <mgl-map
 *     [style]="'https://demotiles.maplibre.org/style.json'"
 *     [zoom]="[9]"
 *     [center]="[-74.50, 40]"
 *     (mapLoad)="map = $event"
 *   ></mgl-map>
 *   `,
 * ...
 * })
 * export class DisplayMapComponent {
 *   map: Map; // MapLibre GL Map object (MapLibre is ran outside angular zone, keep that in mind when binding events from this object)
 * ...
 * }
 * ```
 */
declare class MapComponent implements OnChanges, OnDestroy, MapEvent {
    private readonly mapService;
    private readonly elementRef;
    /** Init input */
    readonly collectResourceTiming: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly crossSourceCollisions: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly customMapboxApiUrl: _angular_core.InputSignal<string | undefined>;
    /** Init input */
    readonly fadeDuration: _angular_core.InputSignal<number | undefined>;
    /** Init input */
    readonly hash: _angular_core.InputSignal<string | boolean | undefined>;
    /** Init input */
    readonly refreshExpiredTiles: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly canvasContextAttributes: _angular_core.InputSignal<maplibre_gl.WebGLContextAttributesWithType | undefined>;
    /** Init input */
    readonly bearingSnap: _angular_core.InputSignal<number | undefined>;
    /** Init input */
    readonly interactive: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly pitchWithRotate: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly clickTolerance: _angular_core.InputSignal<number | undefined>;
    /** Init input */
    readonly attributionControl: _angular_core.InputSignal<false | maplibre_gl.AttributionControlOptions | undefined>;
    /** Init input */
    readonly logoPosition: _angular_core.InputSignal<maplibre_gl.ControlPosition | undefined>;
    /** Init input */
    readonly maxTileCacheSize: _angular_core.InputSignal<number | null | undefined>;
    /** Init input */
    readonly localIdeographFontFamily: _angular_core.InputSignal<string | false | undefined>;
    /** Init input */
    readonly trackResize: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly transformRequest: _angular_core.InputSignal<maplibre_gl.RequestTransformFunction | null | undefined>;
    /** Init input */
    readonly bounds: _angular_core.InputSignal<LngLatBoundsLike | undefined>;
    /** Init input */
    readonly locale: _angular_core.InputSignal<any>;
    /** Init input */
    readonly cooperativeGestures: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly cancelPendingTileRequestsWhileZooming: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly centerClampedToGround: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly maplibreLogo: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly maxCanvasSize: _angular_core.InputSignal<[number, number] | undefined>;
    /** Init input */
    readonly maxTileCacheZoomLevels: _angular_core.InputSignal<number | undefined>;
    /** Init input */
    readonly pixelRatio: _angular_core.InputSignal<number | undefined>;
    /** Init input */
    readonly rollEnabled: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly transformCameraUpdate: _angular_core.InputSignal<maplibre_gl.CameraUpdateTransformFunction | null | undefined>;
    /** Init input */
    readonly validateStyle: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly minZoom: _angular_core.InputSignal<number | null | undefined>;
    /** Dynamic input */
    readonly maxZoom: _angular_core.InputSignal<number | null | undefined>;
    /** Dynamic input */
    readonly minPitch: _angular_core.InputSignal<number | null | undefined>;
    /** Dynamic input */
    readonly maxPitch: _angular_core.InputSignal<number | null | undefined>;
    /** Dynamic input */
    readonly scrollZoom: _angular_core.InputSignal<boolean | maplibre_gl.AroundCenterOptions | undefined>;
    /** Dynamic input */
    readonly dragRotate: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly touchPitch: _angular_core.InputSignal<boolean | maplibre_gl.AroundCenterOptions | undefined>;
    /** Dynamic input */
    readonly touchZoomRotate: _angular_core.InputSignal<boolean | maplibre_gl.AroundCenterOptions | undefined>;
    /** Dynamic input */
    readonly doubleClickZoom: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly keyboard: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly dragPan: _angular_core.InputSignal<boolean | maplibre_gl.DragPanOptions | undefined>;
    /** Dynamic input */
    readonly boxZoom: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly style: _angular_core.InputSignal<string | maplibre_gl.StyleSpecification | undefined>;
    /** Dynamic input */
    readonly center: _angular_core.InputSignal<maplibre_gl.LngLatLike | undefined>;
    /** Dynamic input */
    readonly maxBounds: _angular_core.InputSignal<LngLatBoundsLike | undefined>;
    /** Dynamic input */
    readonly zoom: _angular_core.InputSignal<[number] | undefined>;
    /** Dynamic input */
    readonly bearing: _angular_core.InputSignal<[number] | undefined>;
    /** Dynamic input */
    readonly pitch: _angular_core.InputSignal<[number] | undefined>;
    /** Dynamic input */
    readonly roll: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly fitBoundsOptions: _angular_core.InputSignal<maplibre_gl.FitBoundsOptions | undefined>;
    /** Dynamic input */
    readonly renderWorldCopies: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly elevation: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input that is not part of the `MapOptions` object */
    readonly terrain: _angular_core.InputSignal<TerrainSpecification | undefined>;
    /** Dynamic input that is not part of the `MapOptions` object  */
    readonly projection: _angular_core.InputSignal<ProjectionSpecification | undefined>;
    /** Added by ngx-mapbox-gl */
    readonly movingMethod: _angular_core.InputSignal<"jumpTo" | "easeTo" | "flyTo">;
    readonly movingOptions: _angular_core.InputSignal<MovingOptions | undefined>;
    readonly fitBounds: _angular_core.InputSignal<LngLatBoundsLike | undefined>;
    readonly fitScreenCoordinates: _angular_core.InputSignal<[PointLike, PointLike] | undefined>;
    readonly centerWithPanTo: _angular_core.InputSignal<boolean | undefined>;
    readonly panToOptions: _angular_core.InputSignal<AnimationOptions | undefined>;
    readonly cursorStyle: _angular_core.InputSignal<string | undefined>;
    readonly mapResize: _angular_core.OutputEmitterRef<MapLibreEvent & EventData>;
    readonly mapRemove: _angular_core.OutputEmitterRef<MapLibreEvent & EventData>;
    readonly mapMouseDown: _angular_core.OutputEmitterRef<MapMouseEvent & EventData>;
    readonly mapMouseUp: _angular_core.OutputEmitterRef<MapMouseEvent & EventData>;
    readonly mapMouseMove: _angular_core.OutputEmitterRef<MapMouseEvent & EventData>;
    readonly mapClick: _angular_core.OutputEmitterRef<MapMouseEvent & EventData>;
    readonly mapDblClick: _angular_core.OutputEmitterRef<MapMouseEvent & EventData>;
    readonly mapMouseOver: _angular_core.OutputEmitterRef<MapMouseEvent & EventData>;
    readonly mapMouseOut: _angular_core.OutputEmitterRef<MapMouseEvent & EventData>;
    readonly mapContextMenu: _angular_core.OutputEmitterRef<MapMouseEvent & EventData>;
    readonly mapTouchStart: _angular_core.OutputEmitterRef<MapTouchEvent & EventData>;
    readonly mapTouchEnd: _angular_core.OutputEmitterRef<MapTouchEvent & EventData>;
    readonly mapTouchMove: _angular_core.OutputEmitterRef<MapTouchEvent & EventData>;
    readonly mapTouchCancel: _angular_core.OutputEmitterRef<MapTouchEvent & EventData>;
    readonly mapWheel: _angular_core.OutputEmitterRef<MapWheelEvent & EventData>;
    readonly moveStart: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    readonly move: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    readonly moveEnd: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    readonly mapDragStart: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly mapDrag: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly mapDragEnd: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly zoomStart: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    readonly zoomEvt: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    readonly zoomEnd: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | WheelEvent | undefined> & EventData>;
    readonly rotateStart: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly rotate: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly rotateEnd: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly pitchStart: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly pitchEvt: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly pitchEnd: _angular_core.OutputEmitterRef<MapLibreEvent<MouseEvent | TouchEvent | undefined> & EventData>;
    readonly boxZoomStart: _angular_core.OutputEmitterRef<MapLibreZoomEvent & EventData>;
    readonly boxZoomEnd: _angular_core.OutputEmitterRef<MapLibreZoomEvent & EventData>;
    readonly boxZoomCancel: _angular_core.OutputEmitterRef<MapLibreZoomEvent & EventData>;
    readonly webGlContextLost: _angular_core.OutputEmitterRef<MapContextEvent & EventData>;
    readonly webGlContextRestored: _angular_core.OutputEmitterRef<MapContextEvent & EventData>;
    readonly mapLoad: _angular_core.OutputEmitterRef<Map>;
    readonly idle: _angular_core.OutputEmitterRef<MapLibreEvent & EventData>;
    readonly render: _angular_core.OutputEmitterRef<MapLibreEvent & EventData>;
    readonly mapError: _angular_core.OutputEmitterRef<ErrorEvent & EventData>;
    readonly data: _angular_core.OutputEmitterRef<MapDataEvent & EventData>;
    readonly styleData: _angular_core.OutputEmitterRef<MapLibreEvent<unknown> & {
        dataType: "style";
    } & EventData>;
    readonly sourceData: _angular_core.OutputEmitterRef<MapLibreEvent<unknown> & {
        dataType: "source";
        isSourceLoaded: boolean;
        source: maplibre_gl.SourceSpecification;
        sourceId: string;
        sourceDataType: maplibre_gl.MapSourceDataType;
        sourceDataChanged?: boolean;
        tile: any;
    } & EventData>;
    readonly dataLoading: _angular_core.OutputEmitterRef<MapDataEvent & EventData>;
    readonly styleDataLoading: _angular_core.OutputEmitterRef<MapLibreEvent<unknown> & {
        dataType: "style";
    } & EventData>;
    readonly sourceDataLoading: _angular_core.OutputEmitterRef<MapLibreEvent<unknown> & {
        dataType: "source";
        isSourceLoaded: boolean;
        source: maplibre_gl.SourceSpecification;
        sourceId: string;
        sourceDataType: maplibre_gl.MapSourceDataType;
        sourceDataChanged?: boolean;
        tile: any;
    } & EventData>;
    readonly styleImageMissing: _angular_core.OutputEmitterRef<{
        id: string;
    } & EventData>;
    get mapInstance(): Map;
    readonly mapContainer: _angular_core.Signal<ElementRef<HTMLDivElement>>;
    constructor();
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<MapComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<MapComponent, "mgl-map", never, { "collectResourceTiming": { "alias": "collectResourceTiming"; "required": false; "isSignal": true; }; "crossSourceCollisions": { "alias": "crossSourceCollisions"; "required": false; "isSignal": true; }; "customMapboxApiUrl": { "alias": "customMapboxApiUrl"; "required": false; "isSignal": true; }; "fadeDuration": { "alias": "fadeDuration"; "required": false; "isSignal": true; }; "hash": { "alias": "hash"; "required": false; "isSignal": true; }; "refreshExpiredTiles": { "alias": "refreshExpiredTiles"; "required": false; "isSignal": true; }; "canvasContextAttributes": { "alias": "canvasContextAttributes"; "required": false; "isSignal": true; }; "bearingSnap": { "alias": "bearingSnap"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "pitchWithRotate": { "alias": "pitchWithRotate"; "required": false; "isSignal": true; }; "clickTolerance": { "alias": "clickTolerance"; "required": false; "isSignal": true; }; "attributionControl": { "alias": "attributionControl"; "required": false; "isSignal": true; }; "logoPosition": { "alias": "logoPosition"; "required": false; "isSignal": true; }; "maxTileCacheSize": { "alias": "maxTileCacheSize"; "required": false; "isSignal": true; }; "localIdeographFontFamily": { "alias": "localIdeographFontFamily"; "required": false; "isSignal": true; }; "trackResize": { "alias": "trackResize"; "required": false; "isSignal": true; }; "transformRequest": { "alias": "transformRequest"; "required": false; "isSignal": true; }; "bounds": { "alias": "bounds"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "cooperativeGestures": { "alias": "cooperativeGestures"; "required": false; "isSignal": true; }; "cancelPendingTileRequestsWhileZooming": { "alias": "cancelPendingTileRequestsWhileZooming"; "required": false; "isSignal": true; }; "centerClampedToGround": { "alias": "centerClampedToGround"; "required": false; "isSignal": true; }; "maplibreLogo": { "alias": "maplibreLogo"; "required": false; "isSignal": true; }; "maxCanvasSize": { "alias": "maxCanvasSize"; "required": false; "isSignal": true; }; "maxTileCacheZoomLevels": { "alias": "maxTileCacheZoomLevels"; "required": false; "isSignal": true; }; "pixelRatio": { "alias": "pixelRatio"; "required": false; "isSignal": true; }; "rollEnabled": { "alias": "rollEnabled"; "required": false; "isSignal": true; }; "transformCameraUpdate": { "alias": "transformCameraUpdate"; "required": false; "isSignal": true; }; "validateStyle": { "alias": "validateStyle"; "required": false; "isSignal": true; }; "minZoom": { "alias": "minZoom"; "required": false; "isSignal": true; }; "maxZoom": { "alias": "maxZoom"; "required": false; "isSignal": true; }; "minPitch": { "alias": "minPitch"; "required": false; "isSignal": true; }; "maxPitch": { "alias": "maxPitch"; "required": false; "isSignal": true; }; "scrollZoom": { "alias": "scrollZoom"; "required": false; "isSignal": true; }; "dragRotate": { "alias": "dragRotate"; "required": false; "isSignal": true; }; "touchPitch": { "alias": "touchPitch"; "required": false; "isSignal": true; }; "touchZoomRotate": { "alias": "touchZoomRotate"; "required": false; "isSignal": true; }; "doubleClickZoom": { "alias": "doubleClickZoom"; "required": false; "isSignal": true; }; "keyboard": { "alias": "keyboard"; "required": false; "isSignal": true; }; "dragPan": { "alias": "dragPan"; "required": false; "isSignal": true; }; "boxZoom": { "alias": "boxZoom"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": true; "isSignal": true; }; "center": { "alias": "center"; "required": false; "isSignal": true; }; "maxBounds": { "alias": "maxBounds"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "bearing": { "alias": "bearing"; "required": false; "isSignal": true; }; "pitch": { "alias": "pitch"; "required": false; "isSignal": true; }; "roll": { "alias": "roll"; "required": false; "isSignal": true; }; "fitBoundsOptions": { "alias": "fitBoundsOptions"; "required": false; "isSignal": true; }; "renderWorldCopies": { "alias": "renderWorldCopies"; "required": false; "isSignal": true; }; "elevation": { "alias": "elevation"; "required": false; "isSignal": true; }; "terrain": { "alias": "terrain"; "required": false; "isSignal": true; }; "projection": { "alias": "projection"; "required": false; "isSignal": true; }; "movingMethod": { "alias": "movingMethod"; "required": false; "isSignal": true; }; "movingOptions": { "alias": "movingOptions"; "required": false; "isSignal": true; }; "fitBounds": { "alias": "fitBounds"; "required": false; "isSignal": true; }; "fitScreenCoordinates": { "alias": "fitScreenCoordinates"; "required": false; "isSignal": true; }; "centerWithPanTo": { "alias": "centerWithPanTo"; "required": false; "isSignal": true; }; "panToOptions": { "alias": "panToOptions"; "required": false; "isSignal": true; }; "cursorStyle": { "alias": "cursorStyle"; "required": false; "isSignal": true; }; }, { "mapResize": "mapResize"; "mapRemove": "mapRemove"; "mapMouseDown": "mapMouseDown"; "mapMouseUp": "mapMouseUp"; "mapMouseMove": "mapMouseMove"; "mapClick": "mapClick"; "mapDblClick": "mapDblClick"; "mapMouseOver": "mapMouseOver"; "mapMouseOut": "mapMouseOut"; "mapContextMenu": "mapContextMenu"; "mapTouchStart": "mapTouchStart"; "mapTouchEnd": "mapTouchEnd"; "mapTouchMove": "mapTouchMove"; "mapTouchCancel": "mapTouchCancel"; "mapWheel": "mapWheel"; "moveStart": "moveStart"; "move": "move"; "moveEnd": "moveEnd"; "mapDragStart": "mapDragStart"; "mapDrag": "mapDrag"; "mapDragEnd": "mapDragEnd"; "zoomStart": "zoomStart"; "zoomEvt": "zoomEvt"; "zoomEnd": "zoomEnd"; "rotateStart": "rotateStart"; "rotate": "rotate"; "rotateEnd": "rotateEnd"; "pitchStart": "pitchStart"; "pitchEvt": "pitchEvt"; "pitchEnd": "pitchEnd"; "boxZoomStart": "boxZoomStart"; "boxZoomEnd": "boxZoomEnd"; "boxZoomCancel": "boxZoomCancel"; "webGlContextLost": "webGlContextLost"; "webGlContextRestored": "webGlContextRestored"; "mapLoad": "mapLoad"; "idle": "idle"; "render": "render"; "mapError": "mapError"; "data": "data"; "styleData": "styleData"; "sourceData": "sourceData"; "dataLoading": "dataLoading"; "styleDataLoading": "styleDataLoading"; "sourceDataLoading": "sourceDataLoading"; "styleImageMissing": "styleImageMissing"; }, never, never, true, never>;
}

/**
 * `mgl-layer` - a layer component
 * @see [layers](https://maplibre.org/maplibre-style-spec/layers/)
 *
 * @category Layer Component
 *
 * @example
 * ```html
 * ...
 * <mgl-map ...>
 *   <mgl-layer
 *     id="state-borders"
 *     type="line"
 *     [source]="states"
 *     [paint]="{
 *       'line-color': '#627BC1',
 *       'line-width': 2
 *     }"
 *   ></mgl-layer>
 * </mgl-map>
 * ```
 */
declare class LayerComponent implements OnInit, OnDestroy, OnChanges, LayerEvents {
    /** Init injection */
    private readonly destroyRef;
    private readonly mapService;
    /** Init input */
    readonly id: _angular_core.InputSignal<string>;
    readonly type: _angular_core.InputSignal<"symbol" | "fill" | "line" | "circle" | "heatmap" | "fill-extrusion" | "raster" | "hillshade" | "color-relief" | "background">;
    readonly source: _angular_core.InputSignal<string | undefined>;
    readonly metadata: _angular_core.InputSignal<unknown>;
    readonly sourceLayer: _angular_core.InputSignal<string | undefined>;
    /**
     * A flag to enable removeSource clean up functionality
     *
     * Init input
     */
    readonly removeSource: _angular_core.InputSignal<boolean | undefined>;
    readonly filter: _angular_core.InputSignal<FilterSpecification | undefined>;
    readonly layout: _angular_core.InputSignal<{
        visibility?: "visible" | "none";
    } | {
        "fill-sort-key"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        visibility?: "visible" | "none";
    } | {
        visibility?: "visible" | "none";
    } | {
        "line-cap"?: maplibre_gl.PropertyValueSpecification<"butt" | "round" | "square">;
        "line-join"?: maplibre_gl.DataDrivenPropertyValueSpecification<"bevel" | "round" | "miter">;
        "line-miter-limit"?: maplibre_gl.PropertyValueSpecification<number>;
        "line-round-limit"?: maplibre_gl.PropertyValueSpecification<number>;
        "line-sort-key"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        visibility?: "visible" | "none";
    } | {
        "symbol-placement"?: maplibre_gl.PropertyValueSpecification<"point" | "line" | "line-center">;
        "symbol-spacing"?: maplibre_gl.PropertyValueSpecification<number>;
        "symbol-avoid-edges"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "symbol-sort-key"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "symbol-z-order"?: maplibre_gl.PropertyValueSpecification<"auto" | "viewport-y" | "source">;
        "icon-allow-overlap"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "icon-overlap"?: maplibre_gl.PropertyValueSpecification<"never" | "always" | "cooperative">;
        "icon-ignore-placement"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "icon-optional"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "icon-rotation-alignment"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport" | "auto">;
        "icon-size"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "icon-text-fit"?: maplibre_gl.PropertyValueSpecification<"none" | "width" | "height" | "both">;
        "icon-text-fit-padding"?: maplibre_gl.PropertyValueSpecification<[number, number, number, number]>;
        "icon-image"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ResolvedImageSpecification>;
        "icon-rotate"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "icon-padding"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.PaddingSpecification>;
        "icon-keep-upright"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "icon-offset"?: maplibre_gl.DataDrivenPropertyValueSpecification<[number, number]>;
        "icon-anchor"?: maplibre_gl.DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">;
        "icon-pitch-alignment"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport" | "auto">;
        "text-pitch-alignment"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport" | "auto">;
        "text-rotation-alignment"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport" | "viewport-glyph" | "auto">;
        "text-field"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.FormattedSpecification>;
        "text-font"?: maplibre_gl.DataDrivenPropertyValueSpecification<Array<string>>;
        "text-size"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "text-max-width"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "text-line-height"?: maplibre_gl.PropertyValueSpecification<number>;
        "text-letter-spacing"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "text-justify"?: maplibre_gl.DataDrivenPropertyValueSpecification<"auto" | "left" | "center" | "right">;
        "text-radial-offset"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "text-variable-anchor"?: maplibre_gl.PropertyValueSpecification<Array<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">>;
        "text-variable-anchor-offset"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.VariableAnchorOffsetCollectionSpecification>;
        "text-anchor"?: maplibre_gl.DataDrivenPropertyValueSpecification<"center" | "left" | "right" | "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right">;
        "text-max-angle"?: maplibre_gl.PropertyValueSpecification<number>;
        "text-writing-mode"?: maplibre_gl.PropertyValueSpecification<Array<"horizontal" | "vertical">>;
        "text-rotate"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "text-padding"?: maplibre_gl.PropertyValueSpecification<number>;
        "text-keep-upright"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "text-transform"?: maplibre_gl.DataDrivenPropertyValueSpecification<"none" | "uppercase" | "lowercase">;
        "text-offset"?: maplibre_gl.DataDrivenPropertyValueSpecification<[number, number]>;
        "text-allow-overlap"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "text-overlap"?: maplibre_gl.PropertyValueSpecification<"never" | "always" | "cooperative">;
        "text-ignore-placement"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "text-optional"?: maplibre_gl.PropertyValueSpecification<boolean>;
        visibility?: "visible" | "none";
    } | {
        visibility?: "visible" | "none";
    } | {
        "circle-sort-key"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        visibility?: "visible" | "none";
    } | {
        visibility?: "visible" | "none";
    } | {
        visibility?: "visible" | "none";
    } | {
        visibility?: "visible" | "none";
    } | undefined>;
    readonly paint: _angular_core.InputSignal<{
        "background-color"?: maplibre_gl.PropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "background-pattern"?: maplibre_gl.PropertyValueSpecification<maplibre_gl.ResolvedImageSpecification>;
        "background-opacity"?: maplibre_gl.PropertyValueSpecification<number>;
    } | {
        "fill-antialias"?: maplibre_gl.PropertyValueSpecification<boolean>;
        "fill-opacity"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "fill-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "fill-outline-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "fill-translate"?: maplibre_gl.PropertyValueSpecification<[number, number]>;
        "fill-translate-anchor"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
        "fill-pattern"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ResolvedImageSpecification>;
    } | {
        "fill-extrusion-opacity"?: maplibre_gl.PropertyValueSpecification<number>;
        "fill-extrusion-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "fill-extrusion-translate"?: maplibre_gl.PropertyValueSpecification<[number, number]>;
        "fill-extrusion-translate-anchor"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
        "fill-extrusion-pattern"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ResolvedImageSpecification>;
        "fill-extrusion-height"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "fill-extrusion-base"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "fill-extrusion-vertical-gradient"?: maplibre_gl.PropertyValueSpecification<boolean>;
    } | {
        "line-opacity"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "line-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "line-translate"?: maplibre_gl.PropertyValueSpecification<[number, number]>;
        "line-translate-anchor"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
        "line-width"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "line-gap-width"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "line-offset"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "line-blur"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "line-dasharray"?: maplibre_gl.PropertyValueSpecification<Array<number>>;
        "line-pattern"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ResolvedImageSpecification>;
        "line-gradient"?: maplibre_gl.ExpressionSpecification;
    } | {
        "icon-opacity"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "icon-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "icon-halo-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "icon-halo-width"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "icon-halo-blur"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "icon-translate"?: maplibre_gl.PropertyValueSpecification<[number, number]>;
        "icon-translate-anchor"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
        "text-opacity"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "text-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "text-halo-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "text-halo-width"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "text-halo-blur"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "text-translate"?: maplibre_gl.PropertyValueSpecification<[number, number]>;
        "text-translate-anchor"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
    } | {
        "raster-opacity"?: maplibre_gl.PropertyValueSpecification<number>;
        "raster-hue-rotate"?: maplibre_gl.PropertyValueSpecification<number>;
        "raster-brightness-min"?: maplibre_gl.PropertyValueSpecification<number>;
        "raster-brightness-max"?: maplibre_gl.PropertyValueSpecification<number>;
        "raster-saturation"?: maplibre_gl.PropertyValueSpecification<number>;
        "raster-contrast"?: maplibre_gl.PropertyValueSpecification<number>;
        "raster-resampling"?: maplibre_gl.PropertyValueSpecification<"linear" | "nearest">;
        "raster-fade-duration"?: maplibre_gl.PropertyValueSpecification<number>;
    } | {
        "circle-radius"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "circle-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "circle-blur"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "circle-opacity"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "circle-translate"?: maplibre_gl.PropertyValueSpecification<[number, number]>;
        "circle-translate-anchor"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
        "circle-pitch-scale"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
        "circle-pitch-alignment"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
        "circle-stroke-width"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "circle-stroke-color"?: maplibre_gl.DataDrivenPropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "circle-stroke-opacity"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
    } | {
        "heatmap-radius"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "heatmap-weight"?: maplibre_gl.DataDrivenPropertyValueSpecification<number>;
        "heatmap-intensity"?: maplibre_gl.PropertyValueSpecification<number>;
        "heatmap-color"?: maplibre_gl.ExpressionSpecification;
        "heatmap-opacity"?: maplibre_gl.PropertyValueSpecification<number>;
    } | {
        "hillshade-illumination-direction"?: maplibre_gl.PropertyValueSpecification<maplibre_gl.NumberArraySpecification>;
        "hillshade-illumination-altitude"?: maplibre_gl.PropertyValueSpecification<maplibre_gl.NumberArraySpecification>;
        "hillshade-illumination-anchor"?: maplibre_gl.PropertyValueSpecification<"map" | "viewport">;
        "hillshade-exaggeration"?: maplibre_gl.PropertyValueSpecification<number>;
        "hillshade-shadow-color"?: maplibre_gl.PropertyValueSpecification<maplibre_gl.ColorArraySpecification>;
        "hillshade-highlight-color"?: maplibre_gl.PropertyValueSpecification<maplibre_gl.ColorArraySpecification>;
        "hillshade-accent-color"?: maplibre_gl.PropertyValueSpecification<maplibre_gl.ColorSpecification>;
        "hillshade-method"?: maplibre_gl.PropertyValueSpecification<"standard" | "basic" | "combined" | "igor" | "multidirectional">;
    } | {
        "color-relief-opacity"?: maplibre_gl.PropertyValueSpecification<number>;
        "color-relief-color"?: maplibre_gl.ExpressionSpecification;
    } | undefined>;
    readonly before: _angular_core.InputSignal<string | undefined>;
    readonly minzoom: _angular_core.InputSignal<number | undefined>;
    readonly maxzoom: _angular_core.InputSignal<number | undefined>;
    readonly layerClick: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerDblClick: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerMouseDown: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerMouseUp: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerMouseEnter: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerMouseLeave: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerMouseMove: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerMouseOver: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerMouseOut: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerContextMenu: _angular_core.OutputEmitterRef<maplibre_gl.MapMouseEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerTouchStart: _angular_core.OutputEmitterRef<maplibre_gl.MapTouchEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerTouchEnd: _angular_core.OutputEmitterRef<maplibre_gl.MapTouchEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    readonly layerTouchCancel: _angular_core.OutputEmitterRef<maplibre_gl.MapTouchEvent & {
        features?: maplibre_gl.MapGeoJSONFeature[];
    } & EventData>;
    private readonly layerAdded;
    private readonly sourceIdAdded;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    private init;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<LayerComponent, "mgl-layer", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": true; "isSignal": true; }; "source": { "alias": "source"; "required": false; "isSignal": true; }; "metadata": { "alias": "metadata"; "required": false; "isSignal": true; }; "sourceLayer": { "alias": "sourceLayer"; "required": false; "isSignal": true; }; "removeSource": { "alias": "removeSource"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "paint": { "alias": "paint"; "required": false; "isSignal": true; }; "before": { "alias": "before"; "required": false; "isSignal": true; }; "minzoom": { "alias": "minzoom"; "required": false; "isSignal": true; }; "maxzoom": { "alias": "maxzoom"; "required": false; "isSignal": true; }; }, { "layerClick": "layerClick"; "layerDblClick": "layerDblClick"; "layerMouseDown": "layerMouseDown"; "layerMouseUp": "layerMouseUp"; "layerMouseEnter": "layerMouseEnter"; "layerMouseLeave": "layerMouseLeave"; "layerMouseMove": "layerMouseMove"; "layerMouseOver": "layerMouseOver"; "layerMouseOut": "layerMouseOut"; "layerContextMenu": "layerContextMenu"; "layerTouchStart": "layerTouchStart"; "layerTouchEnd": "layerTouchEnd"; "layerTouchCancel": "layerTouchCancel"; }, never, never, true, never>;
}

/**
 * `mglDraggable` - a directive for Feature or Marker
 *
 * @category Directives
 *
 * @see [Draggable Marker](https://maplibre.org/ng-maplibre-gl/demo/ngx-drag-a-point)
 */
declare class DraggableDirective implements OnInit, OnDestroy {
    /** Init injection */
    private readonly mapService;
    private readonly ngZone;
    private readonly featureComponent;
    readonly layer: _angular_core.InputSignal<LayerComponent | null>;
    featureDragStart: _angular_core.OutputEmitterRef<MapMouseEvent>;
    featureDragEnd: _angular_core.OutputEmitterRef<MapMouseEvent>;
    featureDrag: _angular_core.OutputEmitterRef<MapMouseEvent>;
    private sub;
    ngOnInit(): void;
    ngOnDestroy(): void;
    private handleDraggable;
    private filterFeature;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<DraggableDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DraggableDirective, "[mglDraggable]", never, { "layer": { "alias": "mglDraggable"; "required": false; "isSignal": true; }; }, { "featureDragStart": "featureDragStart"; "featureDragEnd": "featureDragEnd"; "featureDrag": "featureDrag"; }, never, never, true, never>;
}

/**
 * `mgl-image` - an image component
 * @see [addImage](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/#addimage)
 *
 * @category Components
 *
 * @example
 * ```html
 * ...
 * <mgl-map
 *   ...
 * >
 *    <mgl-image
 *      id="image"
 *      url="https://..."
 *      (imageLoaded)="imageLoaded = true"
 *    >
 *    ...
 *    <mgl-image
 *      id="image2"
 *      [data]="{
 *        width: 64,
 *        height: 64,
 *        data: imageData
 *      }"
 *    >
 * </mgl-map>
 * ...
 * imageData: Uint8Array;
 * ```
 */
declare class ImageComponent implements OnInit, OnChanges, OnDestroy {
    /** Init injection */
    private readonly mapService;
    private readonly destroyRef;
    private readonly zone;
    /** Init input */
    readonly id: _angular_core.InputSignal<string>;
    /** Dynamic input */
    readonly data: _angular_core.InputSignal<MapImageData | undefined>;
    /** Dynamic input */
    readonly options: _angular_core.InputSignal<MapImageOptions | undefined>;
    /** Dynamic input */
    readonly url: _angular_core.InputSignal<string | undefined>;
    readonly imageError: _angular_core.OutputEmitterRef<{
        status: number;
    }>;
    readonly imageLoaded: _angular_core.OutputEmitterRef<void>;
    private isAdded;
    private isAdding;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    removeImage(): void;
    private addImage;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ImageComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImageComponent, "mgl-image", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "url": { "alias": "url"; "required": false; "isSignal": true; }; }, { "imageError": "imageError"; "imageLoaded": "imageLoaded"; }, never, never, true, never>;
}

/**
 * @internal
 * A composition object for the source components
 */
declare class SourceDirective implements OnInit, OnDestroy {
    /** Init injection */
    private readonly mapService;
    private readonly destroyRef;
    /**  Init input */
    readonly id: _angular_core.InputSignal<string>;
    /**
     * @internal
     * Used to store the current source id and make sure removeSource is only called once.
     */
    readonly sourceId: _angular_core.WritableSignal<string | null>;
    private readonly loadSourceSubject;
    readonly loadSource$: rxjs.Observable<void>;
    ngOnInit(): void;
    ngOnDestroy(): void;
    refresh(): void;
    removeSource(): void;
    addSource(source: SourceSpecification): void;
    getSource<T extends Source>(): T | undefined;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SourceDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SourceDirective, never, never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * `mgl-vector-source` - a vector source component
 * @see [vector](https://maplibre.org/maplibre-style-spec/sources/#vector)
 *
 * @category Source Components
 */
declare class VectorSourceComponent implements OnChanges {
    /** Init injections */
    private readonly sourceDirective;
    /** Dynamic inputs */
    readonly url: _angular_core.InputSignal<string | undefined>;
    readonly tiles: _angular_core.InputSignal<string[] | undefined>;
    readonly bounds: _angular_core.InputSignal<[number, number, number, number] | undefined>;
    readonly scheme: _angular_core.InputSignal<"xyz" | "tms" | undefined>;
    readonly minzoom: _angular_core.InputSignal<number | undefined>;
    readonly maxzoom: _angular_core.InputSignal<number | undefined>;
    readonly attribution: _angular_core.InputSignal<string | undefined>;
    readonly promoteId: _angular_core.InputSignal<maplibre_gl.PromoteIdSpecification | undefined>;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    getVectorSourceSpecification(): VectorSourceSpecification;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<VectorSourceComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<VectorSourceComponent, "mgl-vector-source", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "tiles": { "alias": "tiles"; "required": false; "isSignal": true; }; "bounds": { "alias": "bounds"; "required": false; "isSignal": true; }; "scheme": { "alias": "scheme"; "required": false; "isSignal": true; }; "minzoom": { "alias": "minzoom"; "required": false; "isSignal": true; }; "maxzoom": { "alias": "maxzoom"; "required": false; "isSignal": true; }; "attribution": { "alias": "attribution"; "required": false; "isSignal": true; }; "promoteId": { "alias": "promoteId"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof SourceDirective; inputs: { "id": "id"; }; outputs: {}; }]>;
}

/**
 * `mgl-geojson-source` - a geojson source component
 * @see [geojson](https://maplibre.org/maplibre-gl-js/docs/API/classes/maplibregl.GeoJSONSource/)
 *
 * @category Source Components
 *
 * @example
 * ```html
 * ...
 * <mgl-map ...>
 *   <mgl-geojson-source id="symbols-source">
 *     <mgl-feature
 *       *ngFor="let geometry of geometries"
 *       [geometry]="geometry"
 *     ></mgl-feature>
 *   </mgl-geojson-source>
 *   ...
 *   <mgl-geojson-source
 *     id="earthquakes"
 *     [data]="earthquakes"
 *     [cluster]="true"
 *     [clusterMaxZoom]="14"
 *     [clusterRadius]="50"
 *   ></mgl-geojson-source>
 * </mgl-map>
 *
 * ```
 */
declare class GeoJSONSourceComponent implements OnChanges {
    /** Init injections */
    private readonly sourceDirective;
    /** Init injection */
    private readonly ngZone;
    /** Dynamic input */
    readonly data: _angular_core.InputSignal<string | geojson.GeoJSON<geojson.Geometry, geojson.GeoJsonProperties>>;
    /** Dynamic input */
    readonly maxzoom: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly attribution: _angular_core.InputSignal<string | undefined>;
    /** Dynamic input */
    readonly buffer: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly tolerance: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly cluster: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly clusterRadius: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly clusterMaxZoom: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly clusterMinPoints: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly clusterProperties: _angular_core.InputSignal<unknown>;
    /** Dynamic input */
    readonly lineMetrics: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly generateId: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly promoteId: _angular_core.InputSignal<maplibre_gl.PromoteIdSpecification | undefined>;
    /** Dynamic input */
    readonly filter: _angular_core.InputSignal<unknown>;
    private readonly updateFeatureDataSubject;
    private readonly featureIdCounter;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * For clustered sources, fetches the zoom at which the given cluster expands.
     * @param clusterId The value of the cluster's cluster_id property.
     */
    getClusterExpansionZoom(clusterId: number): Promise<number>;
    /**
     * For clustered sources, fetches the children of the given cluster on the next zoom level (as an array of GeoJSON features).
     * @param clusterId The value of the cluster's cluster_id property.
     */
    getClusterChildren(clusterId: number): Promise<geojson.Feature<geojson.Geometry, geojson.GeoJsonProperties>[]>;
    /**
     * For clustered sources, fetches the original points that belong to the cluster (as an array of GeoJSON features).
     * @param clusterId The value of the cluster's cluster_id property.
     * @param limit The maximum number of features to return.
     * @param offset The number of features to skip (e.g. for pagination).
     */
    getClusterLeaves(clusterId: number, limit: number, offset: number): Promise<geojson.Feature<geojson.Geometry, geojson.GeoJsonProperties>[]>;
    _addFeature(feature: GeoJSON.Feature<GeoJSON.GeometryObject>): void;
    _removeFeature(feature: GeoJSON.Feature<GeoJSON.GeometryObject>): void;
    updateFeatureData(): void;
    _getNewFeatureId(): number;
    private getGeoJSONSourceSpecification;
    private updateFeature;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<GeoJSONSourceComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<GeoJSONSourceComponent, "mgl-geojson-source", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "maxzoom": { "alias": "maxzoom"; "required": false; "isSignal": true; }; "attribution": { "alias": "attribution"; "required": false; "isSignal": true; }; "buffer": { "alias": "buffer"; "required": false; "isSignal": true; }; "tolerance": { "alias": "tolerance"; "required": false; "isSignal": true; }; "cluster": { "alias": "cluster"; "required": false; "isSignal": true; }; "clusterRadius": { "alias": "clusterRadius"; "required": false; "isSignal": true; }; "clusterMaxZoom": { "alias": "clusterMaxZoom"; "required": false; "isSignal": true; }; "clusterMinPoints": { "alias": "clusterMinPoints"; "required": false; "isSignal": true; }; "clusterProperties": { "alias": "clusterProperties"; "required": false; "isSignal": true; }; "lineMetrics": { "alias": "lineMetrics"; "required": false; "isSignal": true; }; "generateId": { "alias": "generateId"; "required": false; "isSignal": true; }; "promoteId": { "alias": "promoteId"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof SourceDirective; inputs: { "id": "id"; }; outputs: {}; }]>;
}

/**
 * `mgl-raster-dem-source` - a raster DEM source
 * @see [raster DEM](https://maplibre.org/maplibre-style-spec/sources/#raster-dem)
 *
 * @category Source Components
 */
declare class RasterDemSourceComponent implements OnChanges {
    /** Init injections */
    private readonly sourceDirective;
    /** Dynamic input */
    readonly url: _angular_core.InputSignal<string | undefined>;
    /** Dynamic input */
    readonly tiles: _angular_core.InputSignal<string[] | undefined>;
    /** Dynamic input */
    readonly bounds: _angular_core.InputSignal<[number, number, number, number] | undefined>;
    /** Dynamic input */
    readonly minzoom: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly maxzoom: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly tileSize: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly attribution: _angular_core.InputSignal<string | undefined>;
    /** Dynamic input */
    readonly encoding: _angular_core.InputSignal<"terrarium" | "mapbox" | "custom" | undefined>;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    getRasterDEMSourceSpecification(): RasterDEMSourceSpecification;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<RasterDemSourceComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<RasterDemSourceComponent, "mgl-raster-dem-source", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "tiles": { "alias": "tiles"; "required": false; "isSignal": true; }; "bounds": { "alias": "bounds"; "required": false; "isSignal": true; }; "minzoom": { "alias": "minzoom"; "required": false; "isSignal": true; }; "maxzoom": { "alias": "maxzoom"; "required": false; "isSignal": true; }; "tileSize": { "alias": "tileSize"; "required": false; "isSignal": true; }; "attribution": { "alias": "attribution"; "required": false; "isSignal": true; }; "encoding": { "alias": "encoding"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof SourceDirective; inputs: { "id": "id"; }; outputs: {}; }]>;
}

/**
 * `mgl-raster-source` - a raster source component
 * @see [raster](https://maplibre.org/maplibre-style-spec/sources/#raster)
 *
 * @category Source Components
 */
declare class RasterSourceComponent implements OnChanges {
    /** Init injections */
    private readonly sourceDirective;
    /** Dynamic input */
    readonly url: _angular_core.InputSignal<string | undefined>;
    /** Dynamic input */
    readonly tiles: _angular_core.InputSignal<string[] | undefined>;
    /** Dynamic input */
    readonly bounds: _angular_core.InputSignal<[number, number, number, number] | undefined>;
    /** Dynamic input */
    readonly scheme: _angular_core.InputSignal<"xyz" | "tms" | undefined>;
    /** Dynamic input */
    readonly minzoom: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly maxzoom: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly tileSize: _angular_core.InputSignal<number | undefined>;
    /** Dynamic input */
    readonly attribution: _angular_core.InputSignal<string | undefined>;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    getRasterSourceSpecification(): RasterSourceSpecification;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<RasterSourceComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<RasterSourceComponent, "mgl-raster-source", never, { "url": { "alias": "url"; "required": false; "isSignal": true; }; "tiles": { "alias": "tiles"; "required": false; "isSignal": true; }; "bounds": { "alias": "bounds"; "required": false; "isSignal": true; }; "scheme": { "alias": "scheme"; "required": false; "isSignal": true; }; "minzoom": { "alias": "minzoom"; "required": false; "isSignal": true; }; "maxzoom": { "alias": "maxzoom"; "required": false; "isSignal": true; }; "tileSize": { "alias": "tileSize"; "required": false; "isSignal": true; }; "attribution": { "alias": "attribution"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof SourceDirective; inputs: { "id": "id"; }; outputs: {}; }]>;
}

/**
 * `mgl-image-source` - an image source component
 * @see [image](https://maplibre.org/maplibre-style-spec/sources/#image)
 *
 * @category Source Components
 */
declare class ImageSourceComponent implements OnInit, OnDestroy, OnChanges {
    /** Init injection */
    private readonly destroyRef;
    private readonly mapService;
    /** Init inputs */
    readonly id: _angular_core.InputSignal<string>;
    /** Dynamic inputs */
    readonly url: _angular_core.InputSignal<string>;
    readonly coordinates: _angular_core.InputSignal<[[number, number], [number, number], [number, number], [number, number]]>;
    readonly type: ImageSourceSpecification['type'];
    private readonly sourceId;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    private addSource;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ImageSourceComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImageSourceComponent, "mgl-image-source", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "url": { "alias": "url"; "required": true; "isSignal": true; }; "coordinates": { "alias": "coordinates"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * `mgl-video-source` - a video source
 * @see [video](https://maplibre.org/maplibre-style-spec/sources/#video)
 *
 * @category Source Components
 */
declare class VideoSourceComponent implements OnChanges {
    private readonly sourceDirective;
    /** Dynamic input */
    readonly urls: _angular_core.InputSignal<string[]>;
    /** Dynamic input */
    readonly coordinates: _angular_core.InputSignal<[[number, number], [number, number], [number, number], [number, number]]>;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    addSource(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<VideoSourceComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<VideoSourceComponent, "mgl-video-source", never, { "urls": { "alias": "urls"; "required": true; "isSignal": true; }; "coordinates": { "alias": "coordinates"; "required": true; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof SourceDirective; inputs: { "id": "id"; }; outputs: {}; }]>;
}

/**
 * `mgl-canvas-source` - a canvas source component
 * @see [canvas](https://maplibre.org/maplibre-style-spec/sources/#canvas)
 *
 * @category Source Components
 */
declare class CanvasSourceComponent implements OnChanges {
    /** Init injections */
    private readonly sourceDirective;
    /** Dynamic input */
    readonly coordinates: _angular_core.InputSignal<[[number, number], [number, number], [number, number], [number, number]]>;
    /** Dynamic input */
    readonly canvas: _angular_core.InputSignal<string | HTMLCanvasElement | undefined>;
    /** Dynamic input */
    readonly animate: _angular_core.InputSignal<boolean | undefined>;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    getCanvasSourceSpecification(): CanvasSourceSpecification;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<CanvasSourceComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<CanvasSourceComponent, "mgl-canvas-source", never, { "coordinates": { "alias": "coordinates"; "required": true; "isSignal": true; }; "canvas": { "alias": "canvas"; "required": true; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof SourceDirective; inputs: { "id": "id"; }; outputs: {}; }]>;
}

/**
 * `mgl-feature` - a feature component
 * [ngx] inside {@link GeoJSONSourceComponent} only
 *
 * @category Source Components
 */
declare class FeatureComponent implements OnInit, OnDestroy {
    /** Init injection */
    private readonly geoJSONSourceComponent;
    /** Init input */
    readonly id: _angular_core.ModelSignal<number | undefined>;
    /** Init input */
    readonly geometry: _angular_core.InputSignal<geojson.Geometry>;
    /** Init input */
    readonly properties: _angular_core.InputSignal<geojson.GeoJsonProperties | undefined>;
    private feature;
    ngOnInit(): void;
    ngOnDestroy(): void;
    updateCoordinates(coordinates: number[]): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<FeatureComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<FeatureComponent, "mgl-feature", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "geometry": { "alias": "geometry"; "required": true; "isSignal": true; }; "properties": { "alias": "properties"; "required": false; "isSignal": true; }; }, { "id": "idChange"; }, never, never, true, never>;
}

/**
 * `mgl-marker` - a marker component
 * @see [Marker](https://maplibre.org/maplibre-gl-js/docs/API/classes/Marker/)
 *
 * @category Components
 *
 * @example
 * ```html
 * ...
 * <mgl-map ...>
 *   <mgl-marker [lngLat]="[-66.324462890625, -16.024695711685304]">
 *     <div (click)="alert('Foo')" class="marker">Hello</div>
 *   </mgl-marker>
 * </mgl-map>
 * ```
 *
 * Note: Only use this if you **really** need to use HTML/Angular component to render your symbol. These markers are slow compared to a `Layer` of symbol because they're not rendered using WebGL.
 */
declare class MarkerComponent implements OnChanges, OnInit, OnDestroy {
    /** Init injection */
    private readonly mapService;
    private readonly destroyRef;
    /** Init inputs */
    readonly offset: _angular_core.InputSignal<maplibre_gl.PointLike | undefined>;
    readonly anchor: _angular_core.InputSignal<maplibre_gl.PositionAnchor | undefined>;
    readonly clickTolerance: _angular_core.InputSignal<number | undefined>;
    readonly color: _angular_core.InputSignal<string | undefined>;
    readonly scale: _angular_core.InputSignal<number | undefined>;
    readonly opacity: _angular_core.InputSignal<string | undefined>;
    readonly opacityWhenCovered: _angular_core.InputSignal<string | undefined>;
    readonly subpixelPositioning: _angular_core.InputSignal<boolean | undefined>;
    /** Dynamic input */
    readonly feature: _angular_core.InputSignal<geojson.Feature<geojson.Point, geojson.GeoJsonProperties> | undefined>;
    readonly lngLat: _angular_core.InputSignal<LngLatLike | undefined>;
    readonly draggable: _angular_core.InputSignal<boolean | undefined>;
    readonly popupShown: _angular_core.InputSignal<boolean | undefined>;
    readonly className: _angular_core.InputSignal<string | undefined>;
    readonly pitchAlignment: _angular_core.InputSignal<maplibre_gl.Alignment | undefined>;
    readonly rotationAlignment: _angular_core.InputSignal<maplibre_gl.Alignment | undefined>;
    readonly rotation: _angular_core.InputSignal<number | undefined>;
    readonly markerDragStart: _angular_core.OutputEmitterRef<Marker>;
    readonly markerDragEnd: _angular_core.OutputEmitterRef<Marker>;
    readonly markerDrag: _angular_core.OutputEmitterRef<Marker>;
    readonly content: _angular_core.Signal<ElementRef<HTMLDivElement>>;
    readonly markerInstance: _angular_core.WritableSignal<Marker | null>;
    constructor();
    ngOnDestroy(): void;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    removeMarker(): void;
    togglePopup(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<MarkerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<MarkerComponent, "mgl-marker", never, { "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "clickTolerance": { "alias": "clickTolerance"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "scale": { "alias": "scale"; "required": false; "isSignal": true; }; "opacity": { "alias": "opacity"; "required": false; "isSignal": true; }; "opacityWhenCovered": { "alias": "opacityWhenCovered"; "required": false; "isSignal": true; }; "subpixelPositioning": { "alias": "subpixelPositioning"; "required": false; "isSignal": true; }; "feature": { "alias": "feature"; "required": false; "isSignal": true; }; "lngLat": { "alias": "lngLat"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "popupShown": { "alias": "popupShown"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "pitchAlignment": { "alias": "pitchAlignment"; "required": false; "isSignal": true; }; "rotationAlignment": { "alias": "rotationAlignment"; "required": false; "isSignal": true; }; "rotation": { "alias": "rotation"; "required": false; "isSignal": true; }; }, { "markerDragStart": "markerDragStart"; "markerDragEnd": "markerDragEnd"; "markerDrag": "markerDrag"; }, never, ["*"], true, never>;
}

/**
 * `mgl-popup` - a popup component
 * @see [Popup](https://maplibre.org/maplibre-gl-js/docs/API/classes/Popup/)
 *
 * @category Components
 *
 * @example
 * ```html
 * ...
 * <mgl-map ...>
 *   <mgl-popup [lngLat]="[-96, 37.8]" [closeOnClick]="false">
 *     <h1>Hello world !</h1>
 *   </mgl-popup>
 *   ...
 *   <mgl-marker #myMarker ...> ... </mgl-marker>
 *   <mgl-popup [marker]="myMarker"> Hello from marker ! </mgl-popup>
 * </mgl-map>
 * ```
 */
declare class PopupComponent implements OnChanges, OnInit, OnDestroy {
    /** Init injection */
    private readonly destroyRef;
    private readonly mapService;
    /** Init input */
    readonly closeButton: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly closeOnClick: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly closeOnMove: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly focusAfterOpen: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly anchor: _angular_core.InputSignal<maplibre_gl.PositionAnchor | undefined>;
    /** Init input */
    readonly className: _angular_core.InputSignal<string | undefined>;
    /** Init input */
    readonly maxWidth: _angular_core.InputSignal<string | undefined>;
    /** Init input */
    readonly subpixelPositioning: _angular_core.InputSignal<boolean | undefined>;
    /**
     * Dynamic input [ngx]
     * Mutually exclusive with `lngLat`
     */
    readonly feature: _angular_core.InputSignal<geojson.Feature<geojson.Point, geojson.GeoJsonProperties> | undefined>;
    /** Dynamic input */
    readonly lngLat: _angular_core.InputSignal<LngLatLike | undefined>;
    /**
     * Dynamic input [ngx]
     * The targeted marker
     */
    readonly marker: _angular_core.InputSignal<MarkerComponent | undefined>;
    /** Dynamic input */
    readonly offset: _angular_core.InputSignal<Offset | undefined>;
    readonly popupClose: _angular_core.OutputEmitterRef<void>;
    readonly popupOpen: _angular_core.OutputEmitterRef<void>;
    /** @hidden */
    readonly content: _angular_core.Signal<ElementRef<HTMLDivElement>>;
    private popupInstance;
    constructor();
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    private createPopup;
    private addPopup;
    removePopupFromMarker(): void;
    getLngLat(lngLat: LngLatLike | undefined, feature: GeoJSON.Feature<GeoJSON.Point> | undefined): LngLatLike;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopupComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopupComponent, "mgl-popup", never, { "closeButton": { "alias": "closeButton"; "required": false; "isSignal": true; }; "closeOnClick": { "alias": "closeOnClick"; "required": false; "isSignal": true; }; "closeOnMove": { "alias": "closeOnMove"; "required": false; "isSignal": true; }; "focusAfterOpen": { "alias": "focusAfterOpen"; "required": false; "isSignal": true; }; "anchor": { "alias": "anchor"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "subpixelPositioning": { "alias": "subpixelPositioning"; "required": false; "isSignal": true; }; "feature": { "alias": "feature"; "required": false; "isSignal": true; }; "lngLat": { "alias": "lngLat"; "required": false; "isSignal": true; }; "marker": { "alias": "marker"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; }, { "popupClose": "popupClose"; "popupOpen": "popupOpen"; }, never, ["*"], true, never>;
}

declare class CustomControl implements IControl {
    private container;
    constructor(container: HTMLElement);
    /** @inheritdoc */
    onAdd(): HTMLElement;
    /** @inheritdoc */
    onRemove(): HTMLElement;
    /** @inheritdoc */
    getDefaultPosition(): ControlPosition;
}
/**
 * `mgl-control` - a custom control component
 * @see [Controls](https://maplibre.org/maplibre-gl-js/docs/API/interfaces/IControl/)
 *
 * @category Components
 *
 * @example
 * ```html
 * ...
 * <mgl-map ...>
 *   <mgl-control> Hello </mgl-control>
 *   ...
 *   <mgl-control mglNavigation></mgl-control>
 *   ...
 *   <mgl-control mglScale unit="imperial" position="top-right"></mgl-control>
 *   ...
 *   <mgl-control
 *     mglTerrain
 *     source="rasterDemSource"
 *     exaggeration="3.1"
 *   ></mgl-control>
 * </mgl-map>
 * ```
 */
declare class ControlComponent<T extends IControl> implements OnDestroy {
    /** Init injection */
    private readonly mapService;
    /** Init input */
    readonly position: _angular_core.InputSignal<ControlPosition | undefined>;
    /** @hidden */
    readonly content: _angular_core.Signal<ElementRef<HTMLDivElement>>;
    control: T | CustomControl;
    constructor();
    ngOnDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ControlComponent<any>, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ControlComponent<any>, "mgl-control", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
}

/**
 * `mglFullscreen` - a fullscreen control directive
 *
 * @category Directives
 */
declare class FullscreenControlDirective {
    private readonly mapService;
    private readonly controlComponent;
    readonly container: _angular_core.InputSignal<HTMLElement | undefined>;
    constructor();
    onFullscreen(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenControlDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FullscreenControlDirective, "[mglFullscreen]", never, { "container": { "alias": "container"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * `mglNavigation` - a navigation control directive
 *
 * @category Directives
 *
 * @see [Navigation](https://maplibre.org/ngx-maplibre-gl/demo/navigation)
 * @see [NavigationControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/NavigationControl)
 */
declare class NavigationControlDirective {
    private readonly mapService;
    private readonly controlComponent;
    readonly showCompass: _angular_core.InputSignal<boolean | undefined>;
    readonly showZoom: _angular_core.InputSignal<boolean | undefined>;
    readonly visualizePitch: _angular_core.InputSignal<boolean | undefined>;
    readonly visualizeRoll: _angular_core.InputSignal<boolean | undefined>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationControlDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NavigationControlDirective, "[mglNavigation]", never, { "showCompass": { "alias": "showCompass"; "required": false; "isSignal": true; }; "showZoom": { "alias": "showZoom"; "required": false; "isSignal": true; }; "visualizePitch": { "alias": "visualizePitch"; "required": false; "isSignal": true; }; "visualizeRoll": { "alias": "visualizeRoll"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * `mglGeolocate` - a geolocate control directive
 *
 * @category Directives
 *
 * @see [Locate user](https://maplibre.org/ngx-maplibre-gl/demo/locate-user)
 * @see [GeolocateControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/GeolocateControl)
 */
declare class GeolocateControlDirective {
    private readonly mapService;
    private readonly controlComponent;
    readonly positionOptions: _angular_core.InputSignal<PositionOptions | undefined>;
    readonly fitBoundsOptions: _angular_core.InputSignal<FitBoundsOptions | undefined>;
    readonly trackUserLocation: _angular_core.InputSignal<boolean | undefined>;
    readonly showUserLocation: _angular_core.InputSignal<boolean | undefined>;
    readonly geolocate: _angular_core.OutputEmitterRef<Position>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<GeolocateControlDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GeolocateControlDirective, "[mglGeolocate]", never, { "positionOptions": { "alias": "positionOptions"; "required": false; "isSignal": true; }; "fitBoundsOptions": { "alias": "fitBoundsOptions"; "required": false; "isSignal": true; }; "trackUserLocation": { "alias": "trackUserLocation"; "required": false; "isSignal": true; }; "showUserLocation": { "alias": "showUserLocation"; "required": false; "isSignal": true; }; }, { "geolocate": "geolocate"; }, never, never, true, never>;
}

/**
 * `mglAttribution` - an attribution control directive
 *
 * @category Directives
 *
 * @see [Add custom attribution](https://maplibre.org/ngx-maplibre-gl/demo/custom-attribution)
 * @see [AttributionControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/AttributionControl)
 */
declare class AttributionControlDirective {
    private readonly mapService;
    private readonly controlComponent;
    /** Init input */
    readonly compact: _angular_core.InputSignal<boolean | undefined>;
    /** Init input */
    readonly customAttribution: _angular_core.InputSignal<string | string[] | undefined>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AttributionControlDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AttributionControlDirective, "[mglAttribution]", never, { "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "customAttribution": { "alias": "customAttribution"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * `mglScale` - a scale control directive
 *
 * @category Directives
 *
 * @see [Scale](https://maplibre.org/ngx-maplibre-gl/demo/ngx-scale-control)
 * @see [ScaleControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/ScaleControl)
 */
declare class ScaleControlDirective implements OnChanges {
    private readonly mapService;
    private readonly controlComponent;
    readonly maxWidth: _angular_core.InputSignal<number | undefined>;
    readonly unit: _angular_core.InputSignal<Unit | undefined>;
    constructor();
    ngOnChanges(changes: SimpleChanges): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScaleControlDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ScaleControlDirective, "[mglScale]", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * a template directive for point for {@link MarkersForClustersComponent}
 *
 * @category Directives
 */
declare class PointDirective {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PointDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PointDirective, "ng-template[mglPoint]", never, {}, {}, never, never, true, never>;
}
/**
 * a template directive for clustered point for {@link MarkersForClustersComponent}
 *
 * @category Directives
 */
declare class ClusterPointDirective {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClusterPointDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClusterPointDirective, "ng-template[mglClusterPoint]", never, {}, {}, never, never, true, never>;
}
/**
 * [ngx] `mgl-markers-for-clusters` - an HTML marker component for clustered points.
 * Requires a geojson source that is clustered.
 *
 * @category Components
 *
 * @example
 * ```html
 * ...
 * <mgl-map ...>
 *   <mgl-markers-for-cluster [source]="myGeoJsonclusteredSource">
 *     <ng-template mglPoint let-feature> Marker! </ng-template>
 *     <ng-template mglClusterPoint let-feature>
 *       ClusterId: {{feature.properties?.cluster_id}}, Points:
 *       {{feature.properties?.point_count}}
 *     </ng-template>
 *   </mgl-markers-for-cluster>
 * </mgl-map>
 * ```
 *
 * Note: Only use this if you **really** need to use HTML/Angular component to render your symbols. This is **slower** than rendering symbols in WebGL.
 */
declare class MarkersForClustersComponent {
    private readonly destroyRef;
    private readonly mapService;
    private readonly ngZone;
    /** Init input */
    readonly source: _angular_core.InputSignal<string>;
    /** @hidden */
    readonly pointTpl: _angular_core.Signal<TemplateRef<PointDirective> | undefined>;
    /** @hidden */
    readonly clusterPointTpl: _angular_core.Signal<TemplateRef<ClusterPointDirective> | undefined>;
    /** @hidden */
    readonly clusterPoints: _angular_core.WritableSignal<MapGeoJSONFeature[]>;
    /** @hidden */
    readonly layerId: string;
    constructor();
    private updateCluster;
    getClusterParams(pointTpl: TemplateRef<PointDirective> | undefined): QueryRenderedFeaturesOptions;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<MarkersForClustersComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<MarkersForClustersComponent, "mgl-markers-for-clusters", never, { "source": { "alias": "source"; "required": true; "isSignal": true; }; }, {}, ["pointTpl", "clusterPointTpl"], never, true, never>;
}

/**
 * `mglTerrain` - a terrain control directive
 *
 * @category Directives
 *
 * @see [Terrain](https://maplibre.org/ngx-maplibre-gl/demo/terrain-control)
 * @see [TerrainControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/TerrainControl)
 */
declare class TerrainControlDirective {
    private readonly mapService;
    private readonly controlComponent;
    readonly source: _angular_core.InputSignal<string>;
    readonly exaggeration: _angular_core.InputSignal<number | undefined>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<TerrainControlDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TerrainControlDirective, "[mglTerrain]", never, { "source": { "alias": "source"; "required": true; "isSignal": true; }; "exaggeration": { "alias": "exaggeration"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class NgxMapLibreGLModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxMapLibreGLModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<NgxMapLibreGLModule, never, [typeof MapComponent, typeof LayerComponent, typeof DraggableDirective, typeof ImageComponent, typeof VectorSourceComponent, typeof GeoJSONSourceComponent, typeof RasterDemSourceComponent, typeof RasterSourceComponent, typeof ImageSourceComponent, typeof VideoSourceComponent, typeof CanvasSourceComponent, typeof FeatureComponent, typeof MarkerComponent, typeof PopupComponent, typeof ControlComponent, typeof FullscreenControlDirective, typeof NavigationControlDirective, typeof GeolocateControlDirective, typeof AttributionControlDirective, typeof ScaleControlDirective, typeof PointDirective, typeof ClusterPointDirective, typeof MarkersForClustersComponent, typeof TerrainControlDirective, typeof SourceDirective], [typeof MapComponent, typeof LayerComponent, typeof DraggableDirective, typeof ImageComponent, typeof VectorSourceComponent, typeof GeoJSONSourceComponent, typeof RasterDemSourceComponent, typeof RasterSourceComponent, typeof ImageSourceComponent, typeof VideoSourceComponent, typeof CanvasSourceComponent, typeof FeatureComponent, typeof MarkerComponent, typeof PopupComponent, typeof ControlComponent, typeof FullscreenControlDirective, typeof NavigationControlDirective, typeof GeolocateControlDirective, typeof AttributionControlDirective, typeof ScaleControlDirective, typeof PointDirective, typeof ClusterPointDirective, typeof MarkersForClustersComponent, typeof TerrainControlDirective, typeof SourceDirective]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<NgxMapLibreGLModule>;
}

/**
 * `mglGlobe` - a globe control directive
 *
 * @category Directives
 *
 * @see [Globe](https://maplibre.org/ngx-maplibre-gl/demo/globe)
 * @see [GlobeControl](https://maplibre.org/maplibre-gl-js/docs/API/classes/GlobeControl)
 */
declare class GlobeControlDirective {
    private readonly mapService;
    private readonly controlComponent;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<GlobeControlDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<GlobeControlDirective, "[mglGlobe]", never, {}, {}, never, never, true, never>;
}

export { AttributionControlDirective, CanvasSourceComponent, ClusterPointDirective, ControlComponent, CustomControl, DraggableDirective, FeatureComponent, FullscreenControlDirective, GeoJSONSourceComponent, GeolocateControlDirective, GlobeControlDirective, ImageComponent, ImageSourceComponent, LayerComponent, MapComponent, MapService, MarkerComponent, MarkersForClustersComponent, NavigationControlDirective, NgxMapLibreGLModule, PointDirective, PopupComponent, RasterDemSourceComponent, RasterSourceComponent, ScaleControlDirective, SourceDirective, TerrainControlDirective, VectorSourceComponent, VideoSourceComponent };
export type { EventData, LayerEvents, MapEvent, MapImageData, MapImageOptions, MovingOptions, NgxMapLibreGeolocationCoordinates, Position, SetupLayer, SetupMap, SetupMarker, SetupMarkerOptions, SetupPopup };
