import type { Map as MaplibreMap } from 'maplibre-gl'; /** * Find the first symbol (label) layer in the map's current style, or undefined. * Symbol layers are the basemap's place names, road labels, etc. Inserting a * data layer *before* this id keeps every label above the data. * * @see https://docs.mapbox.com/mapbox-gl-js/example/geojson-layer-in-stack/ */ export declare function findFirstSymbolLayerId(map: MaplibreMap): string | undefined; /** Options for {@link emphasizePlaceLabels}. */ export interface EmphasizeLabelsOptions { /** Text color for place labels. Default `#1a1a1a` (near-black). */ textColor?: string; /** Halo color. Default solid white. */ haloColor?: string; /** Halo width, in px. Default `1.6`. */ haloWidth?: number; } /** * Darken the basemap's populated-place labels (cities, towns, capitals, …) and * give them a strong white halo so they stay legible on top of colored data * overlays. * * The default protomaps style fades place labels with a zoom-driven * `text-opacity` (city labels only reach full strength around zoom 9), so this * also pins `text-opacity` to 1 — otherwise the near-black color reads as gray * at the low-to-mid zooms typical of a choropleth. * * Targets the `place` source-layer symbol layers of the default Reuters * protomaps style. On a style that doesn't have them it's a **no-op** (the * per-layer checks and `try/catch` make it degrade gracefully), so it's safe to * call regardless of `styleUrl`. */ export declare function emphasizePlaceLabels(map: MaplibreMap, opts?: EmphasizeLabelsOptions): void;