/**
 * @param {import('gmf/themes').GmfTheme[]} themes Array of "theme" objects.
 * @param {string} name The layer name.
 * @returns {?import('gmf/themes').GmfGroup} The group.
 * @hidden
 */
export function findGroupByLayerNodeName(themes: import("gmf/themes").GmfTheme[], name: string): import("gmf/themes").GmfGroup | null;
/**
 * Find a layer group object by its name. Return null if not found.
 *
 * @param {import('gmf/themes').GmfTheme[]} themes Array of "theme" objects.
 * @param {string} name The group name.
 * @returns {?import('gmf/themes').GmfGroup} The group.
 * @hidden
 */
export function findGroupByName(themes: import("gmf/themes").GmfTheme[], name: string): import("gmf/themes").GmfGroup | null;
/**
 * Find an object by its name. Return null if not found.
 *
 * @param {(import('gmf/themes').GmfTheme|import("gmf/themes").GmfGroup|import("gmf/themes").GmfLayer)[]} objects
 *    Array of objects with a 'name' attribute.
 * @param {string} objectName The object name.
 * @returns {?(import('gmf/themes').GmfTheme|import("gmf/themes").GmfGroup|import("gmf/themes").GmfLayer)}
 *    The object or null.
 * @hidden
 */
export function findObjectByName(objects: (import("gmf/themes").GmfTheme | import("gmf/themes").GmfGroup | import("gmf/themes").GmfLayer)[], objectName: string): (import("gmf/themes").GmfTheme | import("gmf/themes").GmfGroup | import("gmf/themes").GmfLayer) | null;
/**
 * Find a theme object by its name. Return null if not found.
 *
 * @param {import('gmf/themes').GmfTheme[]} themes Array of "theme" objects.
 * @param {string} themeName The theme name.
 * @returns {?import('gmf/themes').GmfTheme} The theme object or null.
 * @hidden
 */
export function findThemeByName(themes: import("gmf/themes").GmfTheme[], themeName: string): import("gmf/themes").GmfTheme | null;
/**
 * Fill the given "nodes" array with all leaf nodes in the given node.
 *
 * @param {import('gmf/themes').GmfTheme|import('gmf/themes').GmfGroup|import('gmf/themes').GmfLayer} node Layertree node.
 * @param {import('gmf/themes').GmfLayer[]} nodes An array.
 * @hidden
 */
export function getFlatNodes(node: import("gmf/themes").GmfTheme | import("gmf/themes").GmfGroup | import("gmf/themes").GmfLayer, nodes: import("gmf/themes").GmfLayer[]): void;
/**
 * Get the snapping configuration object from a Layertree controller
 *
 * @param {import('gmf/themes').GmfLayer} node Layer node from the theme.
 * @returns {?import('gmf/themes').GmfSnappingConfig} Snapping configuration, if found.
 * @hidden
 */
export function getSnappingConfig(node: import("gmf/themes").GmfLayer): import("gmf/themes").GmfSnappingConfig | null;
/**
 * Get the maximal resolution defined for this layer. Looks in the
 *     layer itself before to look into its metadata.
 *
 * @param {import('gmf/themes').GmfLayerWMS|import('gmf/themes').GmfLayerWMTS|import('gmf/themes').GmfLayerVectorTiles} gmfLayer the GeoMapFish Layer.
 * @returns {number|undefined} the max resolution or undefined if any.
 * @hidden
 */
export function getNodeMaxResolution(gmfLayer: import("gmf/themes").GmfLayerWMS | import("gmf/themes").GmfLayerWMTS | import("gmf/themes").GmfLayerVectorTiles): number | undefined;
/**
 * Get the minimal resolution defined for this layer. Looks in the
 *     layer itself before to look into its metadata.
 *
 * @param {import('gmf/themes').GmfLayerWMS|import('gmf/themes').GmfLayerWMTS|import('gmf/themes').GmfLayerVectorTiles} gmfLayer the GeoMapFish Layer.
 * @returns {number|undefined} the min resolution or undefined if any.
 * @hidden
 */
export function getNodeMinResolution(gmfLayer: import("gmf/themes").GmfLayerWMS | import("gmf/themes").GmfLayerWMTS | import("gmf/themes").GmfLayerVectorTiles): number | undefined;
/**
 * The Themes service. This service interacts
 * with c2cgeoportal's "themes" web service and exposes functions that return
 * objects in the tree returned by the "themes" web service.
 *
 * @hidden
 */
export class ThemesService extends olEventsEventTarget {
    /**
     * @param {angular.IHttpService} $http Angular http service.
     * @param {angular.auto.IInjectorService} $injector Main injector.
     * @param {angular.IQService} $q Angular q service
     * @param {import('ngeo/map/LayerHelper').LayerHelper} ngeoLayerHelper Ngeo Layer Helper.
     * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext catalog.
     * @param {import('gmf/options').gmfThemesOptions} gmfThemesOptions Themes options.
     * @param {string} gmfTreeUrl The tree URL.
     * @param {string} gmfVectorTilesUrl The Vector Tiles URL.
     * @param {import('gmf/options').gmfVectorTilesOptions} gmfVectorTilesOptions the VectorTiles options.
     * @param {import('gmf/options').gmfWMSSourceOptions} gmfWMSSourceOptions the WMS source options.
     */
    constructor($http: angular.IHttpService, $injector: angular.auto.IInjectorService, $q: angular.IQService, ngeoLayerHelper: import("ngeo/map/LayerHelper").LayerHelper, gettextCatalog: angular.gettext.gettextCatalog, gmfThemesOptions: import("gmf/options").gmfThemesOptions, gmfTreeUrl: string, gmfVectorTilesUrl: string, gmfVectorTilesOptions: import("gmf/options").gmfVectorTilesOptions, gmfWMSSourceOptions: import("gmf/options").gmfWMSSourceOptions);
    /**
     * @type {boolean}
     * @private
     */
    private addBlankBackgroundLayer_;
    /**
     * @type {angular.IQService}
     * @private
     */
    private $q_;
    /**
     * @type {angular.IHttpService}
     * @private
     */
    private $http_;
    /**
     * @type {string}
     * @private
     */
    private treeUrl_;
    /**
     * @type {string}
     * @private
     */
    private gmfVectorTilesUrl_;
    /**
     * @type {import('gmf/options').gmfVectorTilesOptions}
     * @private
     */
    private gmfVectorTilesOptions_;
    /**
     * @type {import('gmf/options').gmfWMSSourceOptions}
     * @private
     */
    private gmfWMSSourceOptions_;
    /**
     * @type {?import('ngeo/statemanager/Location').StatemanagerLocation}
     * @private
     */
    private ngeoLocation_;
    /**
     * @type {import('ngeo/map/LayerHelper').LayerHelper}
     * @private
     */
    private layerHelper_;
    /**
     * @type {angular.gettext.gettextCatalog}
     * @private
     */
    private gettextCatalog;
    /**
     * @type {angular.IDeferred<never>}
     * @private
     */
    private deferred_;
    /**
     * @type {angular.IPromise<never>}
     * @private
     */
    private promise_;
    /**
     * @type {boolean}
     */
    loaded: boolean;
    /**
     * @type {?angular.IPromise<import('ol/layer/Base').default[]>}
     * @private
     */
    private bgLayerPromise_;
    /**
     * Get background layers.
     *
     * @returns {angular.IPromise<import('ol/layer/Base').default[]>} Promise.
     */
    getBgLayers(): angular.IPromise<import("ol/layer/Base").default[]>;
    /**
     * @param {import('gmf/themes').GmfGroup|import('gmf/themes').GmfLayer} item A group or a leaf.
     * @param {string[]} array Array of ids;
     */
    getLayerGroupIds_(item: import("gmf/themes").GmfGroup | import("gmf/themes").GmfLayer, array: string[]): void;
    /**
     * @param {import('gmf/themes').GmfGroup|import('gmf/themes').GmfLayer} item The item.
     * @param {import('ol/layer/Base').default} layer The layer.
     * @returns {import('ol/layer/Base').default} the provided layer.
     */
    setLayerProperties_(item: import("gmf/themes").GmfGroup | import("gmf/themes").GmfLayer, layer: import("ol/layer/Base").default): import("ol/layer/Base").default;
    /**
     * @param {import('gmf/themes').GmfOgcServers} ogcServers The ogc servers.
     * @param {import('gmf/themes').GmfLayer} gmfLayer The item.
     * @returns {angular.IPromise<import('ol/layer/Base').default>|import('ol/layer/Base').default}
     *    The created layer.
     */
    layerLayerCreationFn_(ogcServers: import("gmf/themes").GmfOgcServers, gmfLayer: import("gmf/themes").GmfLayer): angular.IPromise<import("ol/layer/Base").default> | import("ol/layer/Base").default;
    /**
     * @param {import('gmf/themes').GmfLayerWMTS} gmfLayerWMTS
     * @returns {angular.IPromise<import('ol/layer/Base').default>} the new layer.
     */
    layerLayerWMTSCreationFn_(gmfLayerWMTS: import("gmf/themes").GmfLayerWMTS): angular.IPromise<import("ol/layer/Base").default>;
    /**
     * @param {import('gmf/themes').GmfOgcServers} ogcServers The ogc servers.
     * @param {import('gmf/themes').GmfLayerWMS} gmfLayerWMS
     * @returns {angular.IPromise<import('ol/layer/Base').default>} the new layer.
     */
    layerLayerWMSCreationFn_(ogcServers: import("gmf/themes").GmfOgcServers, gmfLayerWMS: import("gmf/themes").GmfLayerWMS): angular.IPromise<import("ol/layer/Base").default>;
    /**
     * @param {import('gmf/themes').GmfLayerVectorTiles} gmfLayerVectorTiles
     * @returns {angular.IPromise<import('ol/layer/Base').default>} the new VectorTiles layer.
     */
    layerLayerVectorTilesCreationFn_(gmfLayerVectorTiles: import("gmf/themes").GmfLayerVectorTiles): angular.IPromise<import("ol/layer/Base").default>;
    /**
     * @param {import('gmf/themes').GmfOgcServers} ogcServers The ogc servers.
     * @param {import('gmf/themes').GmfGroup} item The item.
     * @returns {angular.IPromise<import('ol/layer/Base').default>} the created layer.
     */
    layerGroupCreationFn_(ogcServers: import("gmf/themes").GmfOgcServers, item: import("gmf/themes").GmfGroup): angular.IPromise<import("ol/layer/Base").default>;
    /**
     * @param {import('gmf/themes').GmfThemesResponse} data The "themes" web service
     *     response.
     * @returns {angular.IPromise<import('ol/layer/Base').default[]>} Promise.
     */
    bgLayerPromiseSuccessFn_(data: import("gmf/themes").GmfThemesResponse): angular.IPromise<import("ol/layer/Base").default[]>;
    /**
     * @returns {import('ol/layer/VectorLayer').default>}} a blank vector layer.
     */
    getBgBlankLayer_(): any;
    /**
     * Get a theme object by its name.
     *
     * @param {string} themeName Theme name.
     * @returns {angular.IPromise<?import('gmf/themes').GmfTheme>} Promise.
     */
    getThemeObject(themeName: string): angular.IPromise<import("gmf/themes").GmfTheme | null>;
    /**
     * Get an array of theme objects.
     *
     * @returns {angular.IPromise<import('gmf/themes').GmfTheme[]>} Promise.
     */
    getThemesObject(): angular.IPromise<import("gmf/themes").GmfTheme[]>;
    /**
     * Get an array of background layer objects.
     *
     * @returns {angular.IPromise<(import('gmf/themes').GmfLayer | import('gmf/themes').GmfGroup)[]>}
     *   Promise.
     */
    getBackgroundLayersObject(): angular.IPromise<(import("gmf/themes").GmfLayer | import("gmf/themes").GmfGroup)[]>;
    /**
     * Get the `ogcServers` object.
     *
     * @returns {angular.IPromise<import('gmf/themes').GmfOgcServers>} Promise.
     */
    getOgcServersObject(): angular.IPromise<import("gmf/themes").GmfOgcServers>;
    /**
     * Returns a promise to check if one of the layers in the themes is editable.
     *
     * @returns {angular.IPromise<boolean>} Promise.
     */
    hasEditableLayers(): angular.IPromise<boolean>;
    /**
     * Returns if one of the layers in the themes is editable.
     *
     * @param {import('gmf/themes').GmfThemesResponse} data The "themes" web service response.
     * @returns {boolean} Editable layers?
     */
    hasEditableLayers_(data: import("gmf/themes").GmfThemesResponse): boolean;
    /**
     * @param {import('gmf/themes').GmfGroup|import('gmf/themes').GmfLayer} node Theme node
     * @returns {boolean} Editable layers?
     */
    hasNodeEditableLayers_(node: import("gmf/themes").GmfGroup | import("gmf/themes").GmfLayer): boolean;
    /**
     * @param {string} [opt_roleId] The role id to send in the request.
     * Load themes from the "themes" service.
     */
    loadThemes(opt_roleId?: string): void;
}
export namespace ThemesService {
    let $inject: string[];
}
/**
 * *
 */
export type ThemeNodeType = string;
export namespace ThemeNodeType {
    let MIXED_GROUP: string;
    let NOT_MIXED_GROUP: string;
    let VECTOR_TILES: string;
    let WMTS: string;
    let WMS: string;
}
export default myModule;
import olEventsEventTarget from 'ol/events/Target';
import angular from 'angular';
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
