/// <reference types="mapbox__mapbox-gl-draw" />
import { EventEmitter } from "../../stencil-public-runtime";
import { MapGeoJSONFeature } from "maplibre-gl";
import MapboxDraw from "@mapbox/mapbox-gl-draw";
export declare class Map {
  el: HTMLGlMapElement;
  /**
   * Emitted when a new feature is created in a drawing session.
   */
  glDrawCreate: EventEmitter;
  /**
   * Emitted when a feature is deleted in a drawing session.
   */
  glDrawDelete: EventEmitter;
  /**
   * Emitted when a draw session starts.
   */
  glDrawEnter: EventEmitter;
  /**
   * Emitted when a draw session ends.
   */
  glDrawExit: EventEmitter;
  /**
   * Emitted after the map style has been updated.
   */
  glStyleUpdated: EventEmitter;
  /**
   * Emitted after one or more features has been clicked
   */
  glClickedFeaturesGathered: EventEmitter;
  /**
   * Webmapgl uses the mapbox-gl-draw plugin for drawing features.
   * This property is a reference to the `MapboxDraw` instance when a draw session is active.
   */
  draw: MapboxDraw;
  /**
   * Options object used to initialize `MapboxDraw`.
   */
  readonly drawOptions?: MapboxDraw.MapboxDrawOptions;
  /**
   * There is an active draw session. It is usually set by `gl-draw-controller`.
   */
  readonly drawing: boolean;
  /**
   * Default glyphs URL. It can be overridden by child `gl-style` components.
   */
  readonly glyphs: string;
  /**
   * Store the map location and zoom level in the URL hash. If the value is
   * a string, that value will be used as the key in the URL hash.
   */
  readonly hash: string | boolean;
  /**
   * Initial center latitude of the map.
   */
  readonly latitude: number;
  /**
   * Initial center longitude of the map.
   */
  readonly longitude: number;
  /**
   * Initial zoom level of the map.
   */
  readonly zoom: number;
  /**
   * Minimum zoom level.
   */
  readonly minzoom: number;
  /**
   * Maximum zoom level.
   */
  readonly maxzoom: number;
  /**
   * Default sprite URL. It can be overridden by child `gl-style` components.
   */
  readonly sprite: string;
  /**
   * Reference to the `maplibregl.Map` object. It can be used to customize
   * map properties and behaviors beyond those exposed by `gl-map`.
   */
  map: maplibregl.Map;
  /**
   * How many, and what, feature to return should the user click on the map
   */
  readonly clickMode: "all" | "top-layer" | "top-feature";
  /**
   * Milliseconds to wait before opening the popup. This delay allows for
   * handling multiple feature click events in a single popup. Multiple events
   * can be fired in quick succession when the user clicks on multiple
   * overlapping features.
   */
  readonly clickEventDelay: number;
  private _features;
  private _clickEventTimeout;
  private _resizeMapTimeout;
  private _style;
  private _updateStyleTimeout;
  componentWillLoad(): void;
  componentDidUpdate(): void;
  private updateStyle;
  handleFeatureClick(e: CustomEvent<{
    features: MapGeoJSONFeature[];
  }>): void;
  handleStyleAdded(): Promise<void>;
  handleStyleModified(): Promise<void>;
  handleStyleRemoved(): Promise<void>;
  updateDrawing(): Promise<void>;
  /**
   * Informs Mapbox GL that the map canvas has been resized. It uses a
   * timeout and can be called repeatedly (e.g., in an event handler) without
   * a performance penalty. For a synchronous resize, use `.map.resize()`.
   */
  resizeMap(): Promise<void>;
  private getStyleLayers;
  private getStyleSources;
  private loadStyle;
  private prefix;
  private filterTopLayer;
  private filterTopFeature;
  private filterFeatureClicks;
}
