/**
 * @hidden
 */
export class RuleController {
    /**
     * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext service.
     * @param {angular.IScope} $scope Angular scope.
     * @param {angular.ITimeoutService} $timeout Angular timeout service.
     * @param {import('ngeo/misc/FeatureHelper').FeatureHelper} ngeoFeatureHelper Ngeo feature helper
     *    service.
     * @param {import('ngeo/filter/RuleHelper').RuleHelper} ngeoRuleHelper Ngeo rule helper service.
     * @param {import('ngeo/misc/ToolActivateMgr').ToolActivateMgr} ngeoToolActivateMgr Ngeo ToolActivate
     *     manager service.
     * @ngdoc controller
     * @ngname NgeoRuleController
     */
    constructor(gettextCatalog: angular.gettext.gettextCatalog, $scope: angular.IScope, $timeout: angular.ITimeoutService, ngeoFeatureHelper: import("ngeo/misc/FeatureHelper").FeatureHelper, ngeoRuleHelper: import("ngeo/filter/RuleHelper").RuleHelper, ngeoToolActivateMgr: import("ngeo/misc/ToolActivateMgr").ToolActivateMgr);
    /**
     * @type {?import('ngeo/map/FeatureOverlay').FeatureOverlay}
     */
    featureOverlay: import("ngeo/map/FeatureOverlay").FeatureOverlay | null;
    /**
     * @type {?import('ol/Map').default}
     */
    map: import("ol/Map").default | null;
    /**
     * The original rule.
     *
     * @type {?import('ngeo/rule/Rule').default}
     */
    rule: import("ngeo/rule/Rule").default | null;
    /**
     * @type {string}
     */
    toolGroup: string;
    /**
     * @type {angular.gettext.gettextCatalog}
     * @private
     */
    private gettextCatalog_;
    /**
     * @type {angular.IScope}
     * @private
     */
    private scope_;
    /**
     * @type {angular.ITimeoutService}
     * @private
     */
    private timeout_;
    /**
     * @type {import('ngeo/misc/FeatureHelper').FeatureHelper}
     * @private
     */
    private ngeoFeatureHelper_;
    /**
     * @type {import('ngeo/filter/RuleHelper').RuleHelper}
     * @private
     */
    private ngeoRuleHelper_;
    /**
     * @type {import('ngeo/misc/ToolActivateMgr').ToolActivateMgr}
     * @private
     */
    private ngeoToolActivateMgr_;
    /**
     * The cloned rule. Changes in the UI are applied to the clone 'on-the-fly'.
     * Changes in the clone are applied back in the original rule when the
     * apply button is clicked.
     *
     * @type {?import('ngeo/rule/Rule').default}
     */
    clone: import("ngeo/rule/Rule").default | null;
    /**
     * @type {Object<string, string>}
     */
    operators: {
        [x: string]: string;
    };
    /**
     * @type {Object<string, string>}
     */
    operatorsShortFormat: {
        [x: string]: string;
    };
    /**
     * Time property used when the rule is of type 'date|datetime' and uses
     * a range of date.
     */
    timeRangeMode: {
        widget: string;
        maxValue: any;
        minValue: any;
        maxDefValue: string;
        minDefValue: string;
        mode: string;
        interval: number[];
    };
    /**
     * Time property used when the rule is of type 'date|datetime' and uses
     * a single date.
     */
    timeValueMode: {
        widget: string;
        maxValue: any;
        minValue: any;
        maxDefValue: string;
        minDefValue: string;
        mode: string;
        interval: number[];
    };
    /**
     * @type {?import('ngeo/misc/ToolActivate').default}
     * @private
     */
    private toolActivate_;
    /**
     * @type {Function[]}
     * @private
     */
    private unlisteners_;
    /**
     * @type {boolean}
     */
    drawActive: boolean;
    /**
     * @type {import('ngeo/misc/ToolActivate').default}
     */
    drawToolActivate: import("ngeo/misc/ToolActivate").default;
    /**
     * @type {import('ol/Collection').default<Feature<import('ol/geom/Geometry').default>>}
     */
    drawnFeatures: import("ol/Collection").default<Feature<import("ol/geom/Geometry").default>>;
    /**
     * @type {?import('ngeo/Menu').default}
     * @private
     */
    private menu_;
    /**
     * @type {import('ol/Collection').default<Feature<import('ol/geom/Geometry').default>>}
     */
    selectedFeatures: import("ol/Collection").default<Feature<import("ol/geom/Geometry").default>>;
    /**
     * @type {import('ol/Collection').default<import('ol/interaction/Interaction').default>}
     * @private
     */
    private interactions_;
    /**
     * @type {import('ngeo/interaction/Modify').default}
     * @private
     */
    private modify_;
    /**
     * @type {import('ngeo/interaction/Rotate').default}
     * @private
     */
    private rotate_;
    /**
     * @type {import('ngeo/interaction/Translate').default}
     * @private
     */
    private translate_;
    /**
     * @type {import('ol/events').EventsKey[]}
     * @private
     */
    private listenerKeys_;
    /**
     * @type {import('ngeo/misc/ToolActivate').default}
     */
    modifyToolActivate: import("ngeo/misc/ToolActivate").default;
    /**
     * @type {import('ngeo/misc/ToolActivate').default}
     */
    rotateToolActivate: import("ngeo/misc/ToolActivate").default;
    /**
     * @type {import('ngeo/misc/ToolActivate').default}
     */
    translateToolActivate: import("ngeo/misc/ToolActivate").default;
    /**
     * The geometry type used by the clone feature.
     *
     * @type {?string}
     */
    geomType: string | null;
    /**
     * Called on initialization of the controller.
     *
     * Clone the rule to be able to work with the clone directly.
     */
    $onInit(): void;
    /**
     * Called on destruction of the controller.
     */
    $onDestroy(): void;
    /**
     */
    toggle(): void;
    /**
     * Apply the changes that were made in the original rule.
     */
    apply(): void;
    /**
     * Revert the changes that were made in the clone rule.
     */
    cancel(): void;
    /**
     * Reset both original and clone rules.
     */
    reset(): void;
    /**
     * Called when a choice is clicked, when using a `ngeo.rule.Select` rule type.
     * Add/remove the choice to/from the `literal` of the rule.
     *
     * @param {string} choice Choice that has been clicked.
     */
    toggleChoiceSelection(choice: string): void;
    /**
     * @param {Object<string, number>} date Date
     */
    onDateSelected(date: {
        [x: string]: number;
    }): void;
    /**
     * @param {Object<string, number>} date Date
     */
    onDateRangeSelected(date: {
        [x: string]: number;
    }): void;
    /**
     * @param {number} [opt_timeDelta] Time delta to go back in the past.
     * @returns {string} ISO string of the date
     * @private
     */
    private createDate_;
    /**
     * @returns {string} ISO string of the date
     * @private
     */
    private createWeekAgoDate_;
    /**
     * @param {number} time Time.
     * @returns {string} Date
     */
    timeToDate(time: number): string;
    /**
     * Called when the active property of a rule changes. Only used when this
     * component is bound to a geometry rule.
     *
     * Manage the activation/deactivation of the interactions.
     *
     * @param {boolean} active Whether the rule is active or not.
     * @param {boolean} oldActive Whether the rule was active or not.
     * @private
     */
    private handleActiveChange_;
    /**
     * Initialize interactions by setting them inactive and decorating them
     *
     * @private
     */
    private initializeInteractions_;
    /**
     * Register interactions by adding them to the map
     *
     * @private
     */
    private registerInteractions_;
    /**
     * Register interactions by removing them to the map
     *
     * @private
     */
    private unregisterInteractions_;
    /**
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleFeaturesAdd_;
    /**
     * Return the type of geometry used by the rule feature. Used in the template.
     *
     * @returns {?string} Geometry type.
     */
    getRuleGeometryType(): string | null;
    /**
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleMapContextMenu_;
    /**
     * Remove contextual menu, if any.
     *
     * @private
     */
    private removeMenu_;
    /**
     * @param {Event|import('ol/events/Event').default|MenuEvent} evt Event.
     * @private
     */
    private handleMenuActionClick_;
    /**
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleRotateEnd_;
    /**
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleTranslateEnd_;
}
export namespace RuleController {
    let $inject: string[];
}
export default myModule;
export type MenuEventTarget = {
    action: string;
};
export type MenuEvent = import("ngeo/CustomEvent").default<MenuEventTarget>;
import Feature from 'ol/Feature';
import angular from 'angular';
/**
 * @typedef {Object} MenuEventTarget
 * @property {string} action
 */
/**
 * @typedef {import('ngeo/CustomEvent').default<MenuEventTarget>} MenuEvent
 */
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
