/**
 * @param {angular.IScope} $scope Angular scope.
 * @param {angular.ITimeoutService} $timeout Angular timeout service.
 * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext catalog.
 * @param {import('gmf/editing/EditFeature').EditingEditFeature} gmfEditFeature Gmf edit feature service.
 * @param {import('gmf/objectediting/Query').ObjectEditingQuery} gmfObjectEditingQuery Gmf ObjectEditing
 *     query service.
 * @param {import('gmf/layertree/TreeManager').LayertreeTreeManager} gmfTreeManager The gmf TreeManager
 *    service.
 * @param {import('ngeo/misc/FeatureHelper').FeatureHelper} ngeoFeatureHelper Ngeo feature helper service.
 * @param {import('ngeo/map/LayerHelper').LayerHelper} ngeoLayerHelper Ngeo Layer Helper.
 * @param {import('ngeo/misc/ToolActivateMgr').ToolActivateMgr} ngeoToolActivateMgr Ngeo ToolActivate
 *    manager service.
 * @class
 * @hidden
 * @ngdoc controller
 * @ngname GmfObjecteditingController
 */
export function Controller($scope: angular.IScope, $timeout: angular.ITimeoutService, gettextCatalog: angular.gettext.gettextCatalog, gmfEditFeature: import("gmf/editing/EditFeature").EditingEditFeature, gmfObjectEditingQuery: import("gmf/objectediting/Query").ObjectEditingQuery, gmfTreeManager: import("gmf/layertree/TreeManager").LayertreeTreeManager, ngeoFeatureHelper: import("ngeo/misc/FeatureHelper").FeatureHelper, ngeoLayerHelper: import("ngeo/map/LayerHelper").LayerHelper, ngeoToolActivateMgr: import("ngeo/misc/ToolActivateMgr").ToolActivateMgr): void;
export class Controller {
    /**
     * @param {angular.IScope} $scope Angular scope.
     * @param {angular.ITimeoutService} $timeout Angular timeout service.
     * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext catalog.
     * @param {import('gmf/editing/EditFeature').EditingEditFeature} gmfEditFeature Gmf edit feature service.
     * @param {import('gmf/objectediting/Query').ObjectEditingQuery} gmfObjectEditingQuery Gmf ObjectEditing
     *     query service.
     * @param {import('gmf/layertree/TreeManager').LayertreeTreeManager} gmfTreeManager The gmf TreeManager
     *    service.
     * @param {import('ngeo/misc/FeatureHelper').FeatureHelper} ngeoFeatureHelper Ngeo feature helper service.
     * @param {import('ngeo/map/LayerHelper').LayerHelper} ngeoLayerHelper Ngeo Layer Helper.
     * @param {import('ngeo/misc/ToolActivateMgr').ToolActivateMgr} ngeoToolActivateMgr Ngeo ToolActivate
     *    manager service.
     * @class
     * @hidden
     * @ngdoc controller
     * @ngname GmfObjecteditingController
     */
    constructor($scope: angular.IScope, $timeout: angular.ITimeoutService, gettextCatalog: angular.gettext.gettextCatalog, gmfEditFeature: import("gmf/editing/EditFeature").EditingEditFeature, gmfObjectEditingQuery: import("gmf/objectediting/Query").ObjectEditingQuery, gmfTreeManager: import("gmf/layertree/TreeManager").LayertreeTreeManager, ngeoFeatureHelper: import("ngeo/misc/FeatureHelper").FeatureHelper, ngeoLayerHelper: import("ngeo/map/LayerHelper").LayerHelper, ngeoToolActivateMgr: import("ngeo/misc/ToolActivateMgr").ToolActivateMgr);
    /**
     * @type {boolean}
     */
    active: boolean;
    /**
     * @type {?import('ol/Feature').default<import('ol/geom/Geometry').default>}
     */
    feature: import("ol/Feature").default<import("ol/geom/Geometry").default> | null;
    /**
     * @type {?string}
     */
    geomType: string | null;
    /**
     * @type {?number}
     */
    layerNodeId: number | null;
    /**
     * @type {?import('ol/Map').default}
     */
    map: import("ol/Map").default | null;
    /**
     * @type {?import('ol/Collection').default<import('ol/Feature').default<import('ol/geom/Geometry').default>>}
     */
    sketchFeatures: import("ol/Collection").default<import("ol/Feature").default<import("ol/geom/Geometry").default>> | null;
    /**
     * @type {angular.IScope}
     */
    scope_: angular.IScope;
    /**
     * @type {angular.ITimeoutService}
     */
    timeout_: angular.ITimeoutService;
    /**
     * @type {angular.gettext.gettextCatalog}
     */
    gettextCatalog_: angular.gettext.gettextCatalog;
    /**
     * @type {import('gmf/editing/EditFeature').EditingEditFeature}
     */
    gmfEditFeature_: import("gmf/editing/EditFeature").EditingEditFeature;
    /**
     * @type {import('gmf/objectediting/Query').ObjectEditingQuery}
     */
    gmfObjectEditingQuery_: import("gmf/objectediting/Query").ObjectEditingQuery;
    /**
     * @type {import('gmf/objectediting/toolsComponent').ObjectEditingQueryableLayerInfo[]}
     */
    queryableLayersInfo: import("gmf/objectediting/toolsComponent").ObjectEditingQueryableLayerInfo[];
    /**
     * @type {?import('gmf/objectediting/toolsComponent').ObjectEditingQueryableLayerInfo}
     */
    selectedQueryableLayerInfo: import("gmf/objectediting/toolsComponent").ObjectEditingQueryableLayerInfo | null;
    /**
     * Whether to show or hide the queryable list of layers. It is shown only
     * when a tool requires it, which is managed in the `gmf-objecteditingtools`
     * component.
     *
     * @type {boolean}
     */
    queryableLayerListShown: boolean;
    /**
     * @type {boolean}
     */
    copyFromActive: boolean;
    /**
     * @type {boolean}
     */
    deleteFromActive: boolean;
    /**
     * @type {boolean}
     */
    featureHasGeom: boolean;
    /**
     * @type {import('ngeo/map/LayerHelper').LayerHelper}
     */
    ngeoLayerHelper_: import("ngeo/map/LayerHelper").LayerHelper;
    /**
     * @type {import('gmf/layertree/TreeManager').LayertreeTreeManager}
     */
    gmfTreeManager_: import("gmf/layertree/TreeManager").LayertreeTreeManager;
    /**
     * @type {import('ngeo/misc/FeatureHelper').FeatureHelper}
     */
    ngeoFeatureHelper_: import("ngeo/misc/FeatureHelper").FeatureHelper;
    /**
     * @type {import('ngeo/misc/ToolActivateMgr').ToolActivateMgr}
     */
    ngeoToolActivateMgr_: import("ngeo/misc/ToolActivateMgr").ToolActivateMgr;
    /**
     * @type {boolean}
     */
    skipGeometryChange_: boolean;
    /**
     * @type {string}
     */
    process: string;
    /**
     * @type {?import('ol/layer/Image').default<import('ol/source/Image').default>|import('ol/layer/WebGLTile').default<import('ol/source/Tile').default>}
     */
    editableWMSLayer_: (import("ol/layer/Image").default<import("ol/source/Image").default> | import("ol/layer/WebGLTile").default<import("ol/source/Tile").default>) | null;
    /**
     * @type {jsts.io.OL3Parser}
     */
    jstsOL3Parser_: jsts.io.OL3Parser;
    /**
     * The state of the feature determines whether the next 'save' request
     * should be an 'insert' or 'update' one.
     *
     * @type {?string}
     */
    state_: string | null;
    /**
     * @type {?import('ol/geom/Geometry').default[]}
     */
    geometryChanges_: import("ol/geom/Geometry").default[] | null;
    /**
     * @type {StylesObject}
     */
    defaultStyles_: StylesObject;
    /**
     * @type {StylesObject}
     */
    defaultStylesWoVertice_: StylesObject;
    /**
     * @type {StylesObject}
     */
    dirtyStyles_: StylesObject;
    /**
     * @type {StylesObject}
     */
    dirtyStylesWoVertice_: StylesObject;
    /**
     * Flag that is toggled while a request is pending.
     *
     * @type {boolean}
     */
    pending: boolean;
    /**
     * @type {boolean}
     */
    dirty: boolean;
    /**
     * @type {import('ol/events').EventsKey[]}
     */
    listenerKeys_: import("ol/events").EventsKey[];
    /**
     * @type {import('ol/Collection').default<import('ol/Feature').default<import('ol/geom/Geometry').default>>}
     */
    features_: import("ol/Collection").default<import("ol/Feature").default<import("ol/geom/Geometry").default>>;
    /**
     * @type {import('ol/Collection').default<olInteractionModify>}
     */
    interactions_: import("ol/Collection").default<olInteractionModify>;
    /**
     * @type {import('ol/interaction/Modify').default}
     */
    modify_: import("ol/interaction/Modify").default;
    /**
     * @type {import('ngeo/misc/ToolActivate').default}
     */
    modifyToolActivate_: import("ngeo/misc/ToolActivate").default;
    /**
     * @type {boolean}
     */
    toolsActive: boolean;
    /**
     * @type {import('ngeo/misc/ToolActivate').default}
     */
    toolsToolActivate_: import("ngeo/misc/ToolActivate").default;
    /**
     * Init the controller
     */
    $onInit(): void;
    /**
     * Delete the feature after asking for a confirmation.
     */
    delete(): void;
    /**
     * Save the current modifications.
     */
    save(): void;
    /**
     * Undo the latest modifications.
     */
    undo(): void;
    /**
     * @returns {boolean} Whether the state is INSERT or not.
     */
    isStateInsert(): boolean;
    /**
     * Called after a delete request.
     *
     * @param {angular.IHttpResponse<ArrayBuffer|Document|Node|Object|string>} resp Ajax response.
     */
    handleDeleteFeature_(resp: angular.IHttpResponse<ArrayBuffer | Document | Node | Object | string>): void;
    /**
     * Called after an 'insert' or 'update' request.
     *
     * @param {angular.IHttpResponse<ArrayBuffer|Document|Node|Object|string>} resp Ajax response.
     */
    handleEditFeature_(resp: angular.IHttpResponse<ArrayBuffer | Document | Node | Object | string>): void;
    /**
     * Initialize interactions by setting them inactive and decorating them
     */
    initializeInteractions_(): void;
    /**
     * Register interactions by adding them to the map
     */
    registerInteractions_(): void;
    /**
     * Unregister interactions, i.e. remove them from the map
     */
    unregisterInteractions_(): void;
    /**
     * Activate or deactivate this component.
     *
     * @param {boolean} active Whether to activate this component or not.
     */
    toggle_(active: boolean): void;
    /**
     * Undo all current changes.
     */
    undoAllChanges_(): void;
    /**
     * Reset the array of geometry changes.  If there are more than one changes,
     * reset them entirely. Then, if there's no changes, clone the current geometry
     * as the first entry. One entry means that there's no changes.
     */
    resetGeometryChanges_(): void;
    /**
     * Called after the modification interaction has completed modifying the
     * existing geometry. The new geometry is pushed in the changes array.
     * If the geometry type is `MultiPolygon`, we check if any of the inner
     * geometries intersects with one an other first. Those that does are merged
     * before being pushed to the changes.
     *
     * @param {Event|import('ol/events/Event').default} evt Event.
     */
    handleModifyInteractionModifyEnd_(evt: Event | import("ol/events/Event").default): void;
    /**
     * @param {StylesObject} styles Hash of style.
     * @param {import('ol/color').Color} color Color.
     * @param {boolean} [opt_incVertice=true] Whether to include vertice or not.
     */
    initializeStyles_(styles: StylesObject, color: import("ol/color").Color, opt_incVertice?: boolean): void;
    /**
     * Set the style of the feature depending on:
     *  - the geometry type
     *  - the dirty state of the component
     *  - whether the modify control is active or not
     */
    setFeatureStyle_(): void;
    /**
     * Registers a newly added Layertree controller 'leaf', i.e. groups are
     * excluded.
     *
     * If the Layertree controller node id is equal to the `layerNodeId` configured
     * with this component, then find the WMS layer associated with it for
     * for refresh purpose.
     *
     * @param {import('ngeo/layertree/Controller').LayertreeController} treeCtrl Layertree controller
     *    to register
     */
    registerTreeCtrl_(treeCtrl: import("ngeo/layertree/Controller").LayertreeController): void;
    /**
     * Unregisters all currently registered Layertree controllers.
     *
     * Unset the WMS layer associated with the `layerNodeId` configured with
     * this component.
     */
    unregisterAllTreeCtrl_(): void;
    /**
     * Refresh the WMS layer, if set.
     */
    refreshWMSLayer_(): void;
    /**
     * Called before the window unloads. Show a confirmation message if there are
     * unsaved modifications.
     *
     * @param {Event} e Event.
     * @returns {string|undefined} Message
     */
    handleWindowBeforeUnload_(e: Event): string | undefined;
    /**
     * Called when a feature is added to the collection of sketch features.
     * Depending on the current behavior, use the added sketch feature to process
     * the existing geometry.
     *
     * @param {Event|import('ol/events/Event').default} evt Event.
     */
    handleSketchFeaturesAdd_(evt: Event | import("ol/events/Event").default): void;
    /**
     * Called when the geometry property of the feature changes, i.e. not when the
     * geometry itself changes but when a new geometry is set to the feature.
     *
     * This happens either when resetting the geometry to null, in which case
     * there's nothing to do here. Otherwise, it happens after the combinaison
     * of a sketch geometry with the existing feature geometry. This new geom
     * is pushed in the `geometryChanges_` array.
     */
    handleFeatureGeometryChange_(): void;
    /**
     * @param {import('gmf/objectediting/toolsComponent').ObjectEditingQueryableLayerInfo[]} layersInfo
     *    List of queryable layers information, which contains the node and ogcServer.
     */
    handleGetQueryableLayersInfo_(layersInfo: import("gmf/objectediting/toolsComponent").ObjectEditingQueryableLayerInfo[]): void;
    handleDestroy_(): void;
}
export namespace Controller {
    let $inject: string[];
}
/**
 * @hidden
 */
export const NAMESPACE: "oe";
export default myModule;
export type StylesObject = {
    [x: string]: import("ol/style/Style").default | import("ol/style/Style").default[];
};
import angular from 'angular';
import olInteractionModify from 'ol/interaction/Modify';
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
