/**
 * @hidden
 */
export class QueryModeSelector {
    /**
     * Service that provides the query "mode", i.e. how queries on the
     * map should be made by the user.
     *
     * It also provides the query "action", i.e. what to do with the
     * query results.
     *
     * Both the "mode" and "action" can be temporarily set if a key is
     * pressed on the keyboard by the user. Therefore, this service
     * listens to the keyboard `keydown` and `keyup` events to
     * temporarily set them accordingly depending on the key that was
     * pressed.
     *
     * @param {angular.IScope} $rootScope The root scope.
     */
    constructor($rootScope: angular.IScope);
    /**
     * The key to press to temporarily set the action to "ADD"
     *
     * @type {string}
     * @private
     */
    private keyActionAdd_;
    /**
     * The key to press to temporarily set the action to "REMOVE"
     *
     * @type {string}
     * @private
     */
    private keyActionRemove_;
    /**
     * @type {string[]}
     * @private
     */
    private keysAction_;
    /**
     * The action currently active.
     *
     * @type {string}
     * @private
     */
    private action_;
    /**
     * A flag that determines whether a request is currently pending
     * in the query component.
     *
     * While this flag is set, the mode can't change due to keyboard
     * keys being pressed.
     *
     * @type {boolean}
     * @private
     */
    private pending_;
    /**
     * A flag than handles the change of mode while a request was
     * still pending.
     *
     * @type {boolean}
     * @private
     */
    private wasPending_;
    /**
     * If a key is pressed, it can temporarily change the currently
     * active action. When that happens, the currently active action
     * is stored here to be restored later, after the key has been
     * released.
     *
     * @type {?string}
     * @private
     */
    private previousAction_;
    /**
     * The mode currently active.
     *
     * @type {string}
     * @private
     */
    private mode_;
    /**
     * If a key is pressed, it can temporarily change the currently
     * active mode. When that happens, the currently active mode is
     * stored here to be restored later, after the key has been
     * released.
     *
     * @type {?string}
     * @private
     */
    private previousMode_;
    /**
     * The action key currently being pressed. Only those registered
     * in `this.keysAction_` can be active.
     *
     * @type {?string}
     * @private
     */
    private activeActionKey_;
    /**
     * @type {angular.IScope}
     * @private
     */
    private rootScope_;
    /**
     * @param {string} action The query action to set as active
     */
    set action(action: string);
    /**
     * @returns {string} The query action currently active
     */
    get action(): string;
    /**
     * @param {string} mode The query mode to set as active
     */
    set mode(mode: string);
    /**
     * @returns {string} The query mode currently active
     */
    get mode(): string;
    /**
     * @param {boolean} pending Whether a request is currently pending or not.
     */
    set pending(pending: boolean);
    /**
     * @returns {boolean} Whether a request is currently pending or not.
     */
    get pending(): boolean;
    /**
     * Handle key down events.
     * Watch out, some computer or OS (not browser) trigger a pressed key event only once, but
     * some others trigger it infinitely every x milliseconds.
     *
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleKeyDown_;
    /**
     * Handle key up events.
     * Watch out, some computer or OS (not browser) trigger a pressed key event only once, but
     * some others trigger it infinitely every x milliseconds.
     *
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleKeyUp_;
    /**
     * Check the focus on the page determined by the browser.
     * If the page is not anymore focus then reset the mode.
     *
     * @private
     */
    private checkPageFocus_;
    /**
     * Reset the mode to the default one.
     *
     * @returns {boolean} true if the scope should be updated.
     * @private
     */
    private reset_;
}
export namespace QueryModeSelector {
    let $inject: string[];
}
export default myModule;
import angular from 'angular';
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
