import GirafeSingleton from '../../base/GirafeSingleton.js';
import BaseLayer from '../../models/layers/baselayer.js';
import GroupLayer from '../../models/layers/grouplayer.js';
import Layer from '../../models/layers/layer.js';
import ThemeLayer from '../../models/layers/themelayer.js';
export type LayerTreeChanges = {
    insertedLayers: BaseLayer[];
    activatedLayers: BaseLayer[];
};
export default class ThemesHelper extends GirafeSingleton {
    initializeSingleton(): void;
    private get state();
    findBaseLayerById(layerId: number): BaseLayer;
    private findBaseLayerRecursiveById;
    findThemeByName(themename: string): ThemeLayer | null;
    findGroupByName(groupname: string): GroupLayer | null;
    findLayerByName(layername: string): Layer | null;
    private findBaseLayerByName;
    private findLayerRecursive;
    private onSelectedThemeChanged;
    private onThemeChanged;
    getMinimalClonedThemeForLayer(layer: BaseLayer): ThemeLayer;
    private removeOthers;
    private getHierarchyFromLayer;
    addThemesFromUrl(): boolean;
    addGroupsFromUrl(): boolean;
    addLayersFromUrl(): boolean;
    addLayerFromName(layername: string): boolean;
    private addLayerBaseFromName;
    private extractLayerOptions;
    private extractLayerOptionOpacity;
    private extractLayerOptionFilter;
    private extractLayerOptionTime;
    /**
     * Calculates the initial order (=position) for a new theme in the tree.
     * Themes are added at the top of the tree, but underneath any pinned themes. Defaults to 0.
     * This prevents themes of visibly "jumping" around in the tree after being added due to reordering.
     */
    getInitialOrderForNewTheme(): number;
    mergeThemeInLayerTree(theme: ThemeLayer, activate?: boolean, forceTop?: boolean): LayerTreeChanges;
    /**
     * This function merges the newLayer at its right place in the LayerTree
     * @param newLayer The layer to insert somewhere in the hierarchy
     * @param existingList
     * @param parent
     * @returns
     */
    private mergeLayerWithExistingLayerTree;
    private highlightLayerInLayerTree;
    private addLayerToLayerTree;
    removeLayersFromLayerTree(layersToRemove: BaseLayer[]): void;
    private removeLayersFromExistingLayerTree;
    /**
     * Removes all layers from the layer tree except themes that are pinned.
     */
    emptyLayerTree(): void;
}
