/**
 * @hidden
 */
export class FilterController {
    /**
     * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext service.
     * @param {angular.IScope} $scope Angular scope.
     * @param {angular.ITimeoutService} $timeout Angular timeout service.
     * @param {import('ngeo/query/MapQuerent').MapQuerent} ngeoMapQuerent The ngeo map querent service.
     * @param {import('ngeo/filter/RuleHelper').RuleHelper} ngeoRuleHelper Ngeo rule helper service.
     * @ngdoc controller
     * @ngname NgeoFilterController
     */
    constructor(gettextCatalog: angular.gettext.gettextCatalog, $scope: angular.IScope, $timeout: angular.ITimeoutService, ngeoMapQuerent: import("ngeo/query/MapQuerent").MapQuerent, ngeoRuleHelper: import("ngeo/filter/RuleHelper").RuleHelper);
    /**
     * @type {boolean}
     */
    aRuleIsActive: boolean;
    /**
     * @type {import('ngeo/rule/Rule').default[]}
     */
    customRules: import("ngeo/rule/Rule").default[];
    /**
     * @type {?import('ngeo/datasource/OGC').default}
     */
    datasource: import("ngeo/datasource/OGC").default | null;
    /**
     * @type {import('ngeo/rule/Rule').default[]}
     */
    directedRules: import("ngeo/rule/Rule").default[];
    /**
     * @type {?import('ngeo/map/FeatureOverlay').FeatureOverlay}
     */
    featureOverlay: import("ngeo/map/FeatureOverlay").FeatureOverlay | null;
    /**
     * @type {?import('ol/Map').default}
     */
    map: import("ol/Map").default | null;
    /**
     * @type {string}
     */
    toolGroup: string;
    /**
     * @type {boolean}
     */
    filterIsApplied: boolean;
    /**
     * @type {angular.gettext.gettextCatalog}
     * @private
     */
    private gettextCatalog_;
    /**
     * @type {angular.IScope}
     * @private
     */
    private scope_;
    /**
     * @type {angular.ITimeoutService}
     * @private
     */
    private timeout_;
    /**
     * @type {import('ngeo/query/MapQuerent').MapQuerent}
     * @private
     */
    private ngeoMapQuerent_;
    /**
     * @type {import('ngeo/filter/RuleHelper').RuleHelper}
     * @private
     */
    private ngeoRuleHelper_;
    /**
     * @type {FilterCondition[]}
     */
    conditions: FilterCondition[];
    /**
     * List of geometry attributes.
     *
     * @type {import('ngeo/format/Attribute').Attribute[]}
     */
    geometryAttributes: import("ngeo/format/Attribute").Attribute[];
    /**
     * List of other attribute names.
     *
     * @type {import('ngeo/format/Attribute').Attribute[]}
     */
    otherAttributes: import("ngeo/format/Attribute").Attribute[];
    /**
     * @type {Object<string, Function>}
     * @private
     */
    private ruleUnlisteners_;
    /**
     * Called on initialization of the controller.
     *
     * Loop through the attributes of the data source and separated them in 2
     * lists: geometry and the others. Then, apply the filters to the data source.
     */
    $onInit(): void;
    /**
     * Called on destruction of the controller.
     *
     * Reset the `filterRules` of the data source back to `null`.
     * Clear the feature overlay.
     */
    $onDestroy(): void;
    /**
     * @returns {boolean} True if at least one rule is currently defined with a literal.
     */
    hasARuleActive(): boolean;
    /**
     * Loop in all directed and custom rules. Apply the rules that have a proper
     * value inside the data source, in the `filterRules` property.
     */
    apply(): void;
    /**
     * Loop in all directed and custom rules. Issue a request to obtain the data
     * and show the result.
     */
    getData(): void;
    /**
     * Loop in all directed and custom rules and collect those with a value.
     *
     * @returns {import('ngeo/rule/Rule').default[]} Rules with value.
     * @private
     */
    private getRulesWithValue_;
    /**
     * Create and add a new custom rule using an attribute. The rule is activated
     * after being created.
     *
     * @param {import('ngeo/format/Attribute').Attribute} attribute Attribute to use to create the custom
     * rule.
     */
    createAndAddCustomRule(attribute: import("ngeo/format/Attribute").Attribute): void;
    /**
     * @param {FilterCondition} condition Condition to set.
     */
    setCondition(condition: FilterCondition): void;
    /**
     * Remove a custom rule. Deactivate it first, then give time to the
     * `ngeo-rule` directive to manage the deactivation of the rule.
     *
     * @param {import('ngeo/rule/Rule').default} rule Custom rule to remove.
     */
    removeCustomRule(rule: import("ngeo/rule/Rule").default): void;
    /**
     * @param {import('ngeo/rule/Rule').default} rule Rule.
     */
    registerRule_(rule: import("ngeo/rule/Rule").default): void;
    /**
     * @param {import('ngeo/rule/Rule').default} rule Rule.
     */
    unregisterRule_(rule: import("ngeo/rule/Rule").default): void;
    /**
     * Called when the active property of a rule changes. Set the `aRuleIsActive`
     * property accordingly.
     *
     * @private
     */
    private handleRuleActiveChange_;
    /**
     * Called when the `aRuleIsActive` property changes. Make sure that
     * no rule is still active if the property is `false`.
     *
     * @private
     */
    private handleARuleIsActiveChange_;
}
export namespace FilterController {
    let $inject: string[];
}
export default myModule;
export type FilterCondition = {
    text: string;
    value: string;
};
import angular from 'angular';
/**
 * @typedef {Object} FilterCondition
 * @property {string} text
 * @property {string} value
 */
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
