import GirafeSingleton from '../../base/GirafeSingleton';
import Basemap from '../../models/basemap';
import { GMFBackgroundLayer, GMFServerOgc, GMFTheme, GMFTreeItem } from '../../models/gmf';
import ConfigManager from '../configuration/configmanager';
import StateManager from '../state/statemanager';
import BaseLayer from '../../models/layers/baselayer';
import LayerManager from '../layers/layermanager';
import ShareManager from '../share/sharemanager';
import ServerOgc from '../../models/serverogc';
import ThemeLayer from '../../models/layers/themelayer';
import CustomThemesManager from './customthemesmanager';
declare class ThemesManager extends GirafeSingleton {
    configManager: ConfigManager;
    stateManager: StateManager;
    layerManager: LayerManager;
    shareManager: ShareManager;
    customThemesManager: CustomThemesManager;
    isInitializingForUserInfo: WeakMap<object, boolean>;
    anonymousUserInfo: {
        u: string;
    };
    get state(): import("../main").State;
    constructor(type: string);
    initialize(): Promise<void>;
    /**
     * Load themes from backend and configures background layers if needed
     */
    loadThemes(): Promise<void>;
    setDefaultTheme(): void;
    prepareOgcServers(ogcServerJson: Record<string, GMFServerOgc>): {
        [key: string]: ServerOgc;
    };
    /**
     * Preload all WFS DescribeFeatureType
     * In order to limit the network overload, the servers calls are done sequetially
     * and each call will wait the previous one to be done
     */
    preloadWfsServer(ogcServers: {
        [key: string]: ServerOgc;
    }): Promise<void>;
    prepareBasemaps(basemapJson: GMFBackgroundLayer[]): {
        [key: number]: Basemap;
    };
    prepareThemes(themesJson: GMFTheme[]): {
        [key: number]: ThemeLayer;
    };
    /**
     * Will create layer and child layers if elem passed is a group of layers
     * @param elem either a layer or a group of layers
     * @param parentServer in case children are not mixed layers, the parentServer will apply for all children
     * @param order the order in the layer list
     * @returns the created girafe layer
     */
    prepareThemeLayer(elem: GMFTreeItem, parentServer: string | null, order: {
        value: number;
    }): BaseLayer | null;
}
export default ThemesManager;
