import { EventEmitter } from "../../stencil-public-runtime";
import { MapGeoJSONFeature, StyleSpecification } from "maplibre-gl";
export interface styleEvent {
  id: string;
  style: Style;
}
export declare class Style {
  private handlers;
  el: HTMLGlStyleElement;
  /**
   * Emitted when a feature is clicked. Only features in layers listed in
   * `clickableLayers` trigger this event when clicked.
   */
  glFeatureClick: EventEmitter<{
    features: MapGeoJSONFeature[];
  }>;
  /**
   * Emitted when a style component is initialized.
   */
  glStyleElementAdded: EventEmitter<styleEvent>;
  /**
   * Emitted when the style JSON changes.
   */
  glStyleElementModified: EventEmitter<styleEvent>;
  /**
   * Emitted when a style component unloads.
   */
  glStyleElementRemoved: EventEmitter<styleEvent>;
  /**
   * This style represents a basemap and should be included in
   * `gl-basemap-switcher`.
   */
  readonly basemap: boolean;
  /**
   * Array of layers that should be clickable.
   */
  readonly clickableLayers: string | string[];
  /**
   * Include this style in the combined style for the parent `gl-map`.
   */
  readonly enabled: boolean;
  /**
   * Human readable name. It is used by `gl-basemap-switcher`.
   */
  readonly name: string;
  /**
   * URL of the thumbnail image. It is used by `gl-basemap-switcher`.
   */
  readonly thumbnail: string;
  /**
   * Access token for sources GeoJSON sources. If set, it is used to replace
   * the `${TOKEN}` placeholder in the style's `data` property.
   */
  readonly token: string;
  /**
   * URL of the style JSON.
   */
  readonly url: string;
  /**
   * Style JSON object. If `url` is set, it is loaded from that URL.
   */
  json: StyleSpecification;
  /**
   * ID of the style in which to insert this style's layers
   * Note: The style you are inserting into must precede this style in the DOM.
   */
  readonly insertIntoStyle?: string;
  /**
   * Name of the specific layer under which to insert this style's layers.
   */
  readonly insertBeneathLayer?: string;
  componentWillLoad(): void;
  componentDidLoad(): void;
  componentDidUpdate(): void;
  disconnectedCallback(): void;
  private eventDetail;
  private getMap;
  private fetchJSON;
  updateClickable(newLayers: string[] | string, oldLayers?: string[] | string): void;
  private handleClick;
  private handleMouseenter;
  private handleMouseleave;
}
