/**
 * Service to create layer based on a ngeo.layertree.Controller with a
 * GMFThemesGroup or a GMFThemesLeaf as node object.
 * This layer is also used to synchronize a state of ngeo.layertree.Controller
 * and its corresponding layer in the map.
 *
 * @class
 * @param {angular.IScope} $rootScope Angular rootScope.
 * @param {import('ngeo/map/LayerHelper').LayerHelper} ngeoLayerHelper Ngeo Layer Helper.
 * @param {import('ngeo/misc/WMSTime').WMSTime} ngeoWMSTime wms time service.
 * @param {import('gmf/theme/Themes').ThemesService} gmfThemes The gmf Themes service.
 * @param {import('gmf/options').gmfWMSSourceOptions} gmfWMSSourceOptions the WMS source options.
 * @ngdoc service
 * @ngname gmfSyncLayertreeMap
 * @hidden
 */
export function SyncLayertreeMap($rootScope: angular.IScope, ngeoLayerHelper: import("ngeo/map/LayerHelper").LayerHelper, ngeoWMSTime: import("ngeo/misc/WMSTime").WMSTime, gmfThemes: import("gmf/theme/Themes").ThemesService, gmfWMSSourceOptions: import("gmf/options").gmfWMSSourceOptions): void;
export class SyncLayertreeMap {
    /**
     * Service to create layer based on a ngeo.layertree.Controller with a
     * GMFThemesGroup or a GMFThemesLeaf as node object.
     * This layer is also used to synchronize a state of ngeo.layertree.Controller
     * and its corresponding layer in the map.
     *
     * @class
     * @param {angular.IScope} $rootScope Angular rootScope.
     * @param {import('ngeo/map/LayerHelper').LayerHelper} ngeoLayerHelper Ngeo Layer Helper.
     * @param {import('ngeo/misc/WMSTime').WMSTime} ngeoWMSTime wms time service.
     * @param {import('gmf/theme/Themes').ThemesService} gmfThemes The gmf Themes service.
     * @param {import('gmf/options').gmfWMSSourceOptions} gmfWMSSourceOptions the WMS source options.
     * @ngdoc service
     * @ngname gmfSyncLayertreeMap
     * @hidden
     */
    constructor($rootScope: angular.IScope, ngeoLayerHelper: import("ngeo/map/LayerHelper").LayerHelper, ngeoWMSTime: import("ngeo/misc/WMSTime").WMSTime, gmfThemes: import("gmf/theme/Themes").ThemesService, gmfWMSSourceOptions: import("gmf/options").gmfWMSSourceOptions);
    /**
     * @type {import('ngeo/map/LayerHelper').LayerHelper}
     */
    layerHelper_: import("ngeo/map/LayerHelper").LayerHelper;
    /**
     * @type {import('ngeo/misc/WMSTime').WMSTime}
     */
    ngeoWMSTime_: import("ngeo/misc/WMSTime").WMSTime;
    /**
     * @type {import('gmf/options').gmfWMSSourceOptions}
     * @private
     */
    private gmfWMSSourceOptions_;
    /**
     * @type {?import('gmf/themes').GmfOgcServers}
     */
    ogcServersObject_: import("gmf/themes").GmfOgcServers | null;
    /**
     * Create, insert (or update) and return a layer from the GmfGroup or the
     * GmfLayer of the given treeCtrl.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     * @param {import('ol/Map').default} map A map that contains the group to insert the not first
     *     level group layer.
     * @param {import('ol/layer/Group').default} dataLayerGroup the layer group to insert the first
     *     level group layer.
     * @param {number} [opt_position] for first level Group, you can precise the
     *     position to add the group in the array of layers of the dataLayerGroup.
     * @returns {?import('ol/layer/Base').default|import('ol/layer/Group').default} a new layer.
     * @public
     */
    public createLayer(treeCtrl: import("ngeo/layertree/Controller").LayertreeController, map: import("ol/Map").default, dataLayerGroup: import("ol/layer/Group").default, opt_position?: number): (import("ol/layer/Base").default | import("ol/layer/Group").default) | null;
    /**
     * Synchronize the state of each layers corresponding to the given tree and
     * all its children.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     */
    sync_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController): void;
    /**
     * Set the active state of a layer based on its treeCtrl state.
     *
     * @param {import('ol/layer/WebGLTile').default<import('ol/source/Tile').default>|import('ol/layer/Image').default<import('ol/source/Image').default>} layer A layer.
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     */
    updateLayerState_(layer: import("ol/layer/WebGLTile").default<import("ol/source/Tile").default> | import("ol/layer/Image").default<import("ol/source/Image").default>, treeCtrl: import("ngeo/layertree/Controller").LayertreeController): void;
    /**
     * Create insert and return a layer group (for not mixed case) or a wmsLayer (for
     * mixed case). Take care about the insertion order in the map in case of first
     * level group.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     * @param {import('ol/Map').default} map A map that contains the group to insert the not first
     *     level group layer.
     * @param {import('ol/layer/Group').default} dataLayerGroup the layer group to insert the first
     *     level group layer.
     * @param {number} [opt_position] for first level Group, you can precise the
     *     position to add the group in the array of layers of the dataLayerGroup.
     * @returns {import('ol/layer/Image').default<import('ol/source/Image').default>|import('ol/layer/Group').default} a new layer.
     */
    createGroup_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController, map: import("ol/Map").default, dataLayerGroup: import("ol/layer/Group").default, opt_position?: number): import("ol/layer/Image").default<import("ol/source/Image").default> | import("ol/layer/Group").default;
    /**
     * Create, insert and return a layer group (for not mixed case) or a wmsLayer
     * for mixed case).
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     * @param {boolean} mixed True for a group layer, false for a WMS layer.
     * @returns {import('ol/layer/Image').default<import('ol/source/Image').default>|import('ol/layer/Group').default} a new layer.
     */
    createLayerFromGroup_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController, mixed: boolean): import("ol/layer/Image").default<import("ol/source/Image").default> | import("ol/layer/Group").default;
    /**
     * Create and insert a layer from a leaf in a mixed group.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     * @param {import('ol/Map').default} map A map that contains the group to insert the layer.
     * @returns {import('ol/layer/WebGLTile').default<import('ol/source/Tile').default>|import('ol/layer/Image').default<import('ol/source/Image').default>} a new layer.
     */
    createLeafInAMixedGroup_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController, map: import("ol/Map").default): import("ol/layer/WebGLTile").default<import("ol/source/Tile").default> | import("ol/layer/Image").default<import("ol/source/Image").default>;
    /**
     * Update a WMS layer with the given treeCtrl node information. Assumes that
     * the first parent with ogcServer information is linked to the layer to update
     * and that this treeCtrl node is a leafNode.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     * @param {import('ol/Map').default} map A map that contains the layer to update.
     */
    initGmfLayerInANotMixedGroup_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController, map: import("ol/Map").default): void;
    /**
     * Create and return a Tile layer.
     *
     * @param {import('gmf/themes').GmfLayerWMTS} gmfLayerWMTS A leaf node.
     * @returns {import('ol/layer/WebGLTile').default<import('ol/source/Tile').default>} a Tile WMTS layer. (Source and capabilities can come
     *     later).
     */
    createWMTSLayer_(gmfLayerWMTS: import("gmf/themes").GmfLayerWMTS): import("ol/layer/WebGLTile").default<import("ol/source/Tile").default>;
    /**
     * Update properties of a layer with the node of a given leafNode.
     *
     * @param {import('gmf/themes').GmfBaseNode} node a tree node.
     * @param {import('ol/layer/Base').default} layer A layer.
     */
    updateLayerReferences_(node: import("gmf/themes").GmfBaseNode, layer: import("ol/layer/Base").default): void;
    /**
     * Get the time parameter for a WMS Layer. If it's a group and it doesn't have
     * time, get the first time parameter available in any child.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     * @returns {string|undefined} A wms time param.
     */
    getTimeParam_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController): string | undefined;
    /**
     * Return true if a parent tree is mixed, based on its node.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     * @returns {boolean} True is any parent is mixed. False Otherwise.
     */
    isOneParentNotMixed_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController): boolean;
    /**
     * Return the first parent, from the root parent, that is not mixed.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
     * @returns {import('ngeo/layertree/Controller').LayertreeController} The first not mixed parent.
     */
    getFirstLevelGroupCtrl_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController): import("ngeo/layertree/Controller").LayertreeController;
}
export namespace SyncLayertreeMap {
    let $inject: string[];
}
/**
 * Return the layer used by the given treeCtrl.
 *
 * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl ngeo layertree controller.
 * @returns {import('ol/layer/Base').default} The layer.
 * @hidden
 */
export function getLayer(treeCtrl: import("ngeo/layertree/Controller").LayertreeController): import("ol/layer/Base").default;
export default myModule;
import angular from 'angular';
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
