export type LayerType = 'osm' | 'wms' | 'wms-tiled' | 'geojson' | 'xyz' | 'terrain' | 'wfs' | 'wcs' | 'google' | 'geotiff' | 'tile3d' | 'scatterplot' | 'wkt' | 'custom'; export interface LayerGroup { groupTitle: string; basemapid: string; visible?: boolean | string; layers: NormalizedLayer[]; } export interface NormalizedStyle { /** internal identifier to keep track between updates */ key: string; format: string; src?: string; content?: string; layerTargets?: string; autoApply?: boolean; id?: string; } export interface MapConfig { flavour: string; id: string; zoom: number; center: string; style: string; styles: NormalizedStyle[]; layerGroups: LayerGroup[]; } export interface BuilderConfig { map: MapConfig; } export interface NormalizedLayer { id: string; type: LayerType; visible?: boolean | string; opacity?: number | string; zIndex?: number | string; url?: string; layers?: string; tiled?: string; data?: unknown; style?: Record; [key: string]: unknown; } export type LayerPatch = { id: string; changes: Partial>; }; export type LayersDiff = { added: NormalizedLayer[]; removed: NormalizedLayer[]; updated: LayerPatch[]; moved: Array<{ id: string; from: number; to: number; }>; unchangedIds: string[]; }; /** Compare fields relevant for rendering; returns patch (only changed fields) */ export declare function diffRelevantFields(a: NormalizedLayer, b: NormalizedLayer): LayerPatch['changes']; /** Computes added/removed/updated/moved/unchanged */ export declare function diffLayers(oldLayers: NormalizedLayer[], newLayers: NormalizedLayer[]): LayersDiff;