/**
 * @hidden
 */
export class SearchController {
    /**
     * @param {JQuery} $element Element.
     * @param {angular.IScope} $scope The component's scope.
     * @param {angular.ICompileService} $compile Angular compile service.
     * @param {angular.ITimeoutService} $timeout Angular timeout service.
     * @param {angular.auto.IInjectorService} $injector Angular injector service.
     * @param {angular.gettext.gettextCatalog} gettextCatalog Gettext catalog.
     * @param {import('ngeo/misc/AutoProjection').AutoProjectionService} ngeoAutoProjection The ngeo
     *    coordinates service.
     * @param {Function} ngeoSearchCreateGeoJSONBloodhound
     *    The ngeo create GeoJSON Bloodhound service.
     * @param {import('gmf/theme/Themes').ThemesService} gmfThemes gmf Themes service.
     * @param {import('gmf/layertree/TreeManager').LayertreeTreeManager} gmfTreeManager gmf Tree Manager
     *    service.
     * @param {import('gmf/search/FulltextSearch').FulltextSearchService} gmfSearchFulltextSearch
     *    gmf Full text search service.
     * @param {import('ngeo/statemanager/Location').StatemanagerLocation} ngeoLocation The location service.
     * @param {import('gmf/options').gmfSearchOptions} gmfSearchOptions The options.
     * @param {import('gmf/options').gmfSearchGroups} gmfSearchGroups The groups.
     * @param {string} fulltextsearchUrl The service URL.
     * @ngdoc controller
     * @ngname GmfSearchController
     */
    constructor($element: JQuery, $scope: angular.IScope, $compile: angular.ICompileService, $timeout: angular.ITimeoutService, $injector: angular.auto.IInjectorService, gettextCatalog: angular.gettext.gettextCatalog, ngeoAutoProjection: import("ngeo/misc/AutoProjection").AutoProjectionService, ngeoSearchCreateGeoJSONBloodhound: Function, gmfThemes: import("gmf/theme/Themes").ThemesService, gmfTreeManager: import("gmf/layertree/TreeManager").LayertreeTreeManager, gmfSearchFulltextSearch: import("gmf/search/FulltextSearch").FulltextSearchService, ngeoLocation: import("ngeo/statemanager/Location").StatemanagerLocation, gmfSearchOptions: import("gmf/options").gmfSearchOptions, gmfSearchGroups: import("gmf/options").gmfSearchGroups, fulltextsearchUrl: string);
    options: import("gmf/options.js").gmfSearchOptions;
    groups: import("ngeo/options").gmfSearchGroups;
    fulltextsearchUrl: string;
    /**
     * @type {JQuery}
     * @private
     */
    private element_;
    /**
     * @type {angular.IScope}
     * @private
     */
    private scope_;
    /**
     * @type {angular.ICompileService}
     * @private
     */
    private compile_;
    /**
     * @type {angular.ITimeoutService}
     * @private
     */
    private timeout_;
    /**
     * @type {angular.auto.IInjectorService}
     */
    injector_: angular.auto.IInjectorService;
    /**
     * @type {angular.gettext.gettextCatalog}
     * @private
     */
    private gettextCatalog_;
    /**
     * @type {import('gmf/theme/Themes').ThemesService}
     * @private
     */
    private gmfThemes_;
    /**
     * @type {import('gmf/layertree/TreeManager').LayertreeTreeManager}
     * @private
     */
    private gmfTreeManager_;
    /**
     * @type {import('gmf/search/FulltextSearch').FulltextSearchService}
     * @private
     */
    private fullTextSearch_;
    /**
     * @type {Function}
     * @private
     */
    private ngeoSearchCreateGeoJSONBloodhound_;
    /**
     * @type {import('ngeo/statemanager/Location').StatemanagerLocation|undefined}
     * @private
     */
    private ngeoLocation_;
    /**
     * @type {import('ngeo/misc/AutoProjection').AutoProjectionService}
     * @private
     */
    private ngeoAutoProjection_;
    /**
     * @type {?import('ol/Map').default}
     */
    map: import("ol/Map").default | null;
    /**
     * @type {?function(): void}
     */
    onInitCallback: (() => void) | null;
    /**
     * @type {function(unknown): void}
     */
    searchActionCallback: (arg0: unknown) => void;
    /**
     * Supported projections for coordinates search.
     *
     * @type {import('ol/proj/Projection').default[]}
     * @private
     */
    private coordinatesProjectionsInstances_;
    /**
     * @type {import('ngeo/map/FeatureOverlay').FeatureOverlay}
     * @private
     */
    private featureOverlay_;
    /**
     * @type {Twitter.Typeahead.Options}
     */
    typeaheadOptions: Twitter.Typeahead.Options;
    /**
     * @type {(Twitter.Typeahead.Dataset<olFeature<import('ol/geom/Geometry').default>>|Twitter.Typeahead.Dataset<CoordinateSuggestion>)[]}
     */
    datasets: (Twitter.Typeahead.Dataset<olFeature<import("ol/geom/Geometry").default>> | Twitter.Typeahead.Dataset<{
        label: string;
        position: number[];
        tt_source: string;
    }>)[];
    /**
     * @type {string}
     */
    inputValue: string;
    /**
     * @type {string}
     */
    color: string;
    /**
     * @type {boolean}
     */
    displayColorPicker: boolean;
    /**
     * @type {?import('ngeo/search/searchDirective').SearchDirectiveListeners<olFeature<import('ol/geom/Geometry').default>>}
     */
    listeners: import("ngeo/search/searchDirective").SearchDirectiveListeners<olFeature<import("ol/geom/Geometry").default>> | null;
    /**
     * @type {import('ngeo/search/searchDirective').SearchDirectiveListeners<olFeature<import('ol/geom/Geometry').default>>}
     */
    additionalListeners: import("ngeo/search/searchDirective").SearchDirectiveListeners<olFeature<import("ol/geom/Geometry").default>>;
    /**
     * @type {boolean}
     */
    clearButton: boolean;
    /**
     * @type {string}
     */
    optionsName: string;
    /**
     * Called on initialization of the controller.
     */
    $onInit(): void;
    placeholder: string;
    /**
     * Merges the custom listeners received via the component attributes and the
     * listeners that are needed for this controller to function (close and select).
     *
     * @param {import('ngeo/search/searchDirective').SearchDirectiveListeners<olFeature<import('ol/geom/Geometry').default>>} additionalListeners
     *    Custom provided listeners.
     * @param {import('ngeo/search/searchDirective').SearchDirectiveListeners<olFeature<import('ol/geom/Geometry').default>>} listeners Default listeners.
     * @returns {import('ngeo/search/searchDirective').SearchDirectiveListeners<olFeature<import('ol/geom/Geometry').default>>} Merged listeners.
     * @private
     */
    private mergeListeners_;
    /**
     * Initialize datasets for the search
     *
     * @private
     */
    private initDatasets_;
    /**
     * @param {import('gmf/options').SearchComponentDatasource} config The config of the dataset.
     * @param {(function(import("geojson").Feature): boolean)} [opt_filter] A filter function
     *     based on a GeoJSONFeaturesCollection's array.
     * @returns {Twitter.Typeahead.Dataset<olFeature<import('ol/geom/Geometry').default>>} A typeahead dataset.
     * @private
     */
    private createDataset_;
    /**
     * @param {string} action The action to keep.
     * @returns {(function(import("geojson").Feature): boolean)} A filter function based on a
     *     GeoJSONFeaturesCollection's array.
     * @private
     */
    private filterAction_;
    /**
     * @param {string} [opt_layerName] The layerName to keep. If null, keep all layers
     *     (In all cases, except actions layers).
     * @returns {function(import("geojson").Feature): boolean} A filter function based on a
     *     GeoJSONFeaturesCollection's array.
     * @private
     */
    private filterLayername_;
    /**
     * @param {import('gmf/options').SearchComponentDatasource} config The config of the dataset.
     * @param {(function(import("geojson").Feature): boolean)} [opt_filter] Afilter function
     *     based on a GeoJSONFeaturesCollection's array.
     * @returns {Bloodhound<olFeature<import('ol/geom/Geometry').default>[]>} The bloodhound engine.
     * @private
     */
    private createAndInitBloodhound_;
    /**
     * @returns {Bloodhound.RemoteOptions<GeoJSON.FeatureCollection>} Options.
     * @private
     */
    private getBloodhoudRemoteOptions_;
    /**
     * @typedef {Object} CoordinateSuggestion
     * @property {string} label
     * @property {number[]} position
     * @property {string} tt_source
     */
    /**
     * @param {import('ol/View').default} view View.
     * @returns {function(string, function(CoordinateSuggestion[]))} function defining parameters for the search
     *    suggestions.
     * @private
     */
    private createSearchCoordinates_;
    /**
     * Style for search results.
     *
     * @param {null|olFeature<import('ol/geom/Geometry').default>|import('ol/render/Feature').default} feature
     *    The searched feature.
     * @param {number} resolution The current resolution of the map.
     * @returns {import('ol/style/Style').default} A style for this kind of features.
     * @private
     */
    private getSearchStyle_;
    /**
     * Set a new color for the search feature style.
     *
     * @param {string} color The color to set.
     */
    setStyleColor(color: string): void;
    /**
     * @private
     */
    private setTTDropdownVisibility_;
    /**
     */
    onClearButton(): void;
    /**
     */
    clear(): void;
    /**
     */
    blur(): void;
    /**
     * @param {JQuery.Event} event Event.
     * @param {olFeature<import('ol/geom/Geometry').default>|CoordinateSuggestion} suggestion Suggestion.
     * @param {Twitter.Typeahead.Dataset<olFeature<import('ol/geom/Geometry').default>>} dataset Dataset.
     * @private
     */
    private select_;
    /**
     * @param {JQuery.Event} event Event.
     * @param {olFeature<import('ol/geom/Geometry').default>} feature Feature.
     * @param {Twitter.Typeahead.Dataset<olFeature<import('ol/geom/Geometry').default>>} dataset Dataset.
     * @private
     */
    private selectFromGMF_;
    /**
     * @private
     */
    private leaveSearch_;
    /**
     * @private
     */
    private close_;
    /**
     * @param {JQuery.Event} event Event.
     * @param {string} query Query.
     * @param {boolean} empty Empty.
     * @private
     */
    private datasetsempty_;
    /**
     * Performs a full-text search and centers the map on the first search result.
     *
     * @param {string} query Search query.
     * @param {number} resultIndex Return nth result instead.
     * @param {number} [opt_zoom] Optional zoom level.
     * @private
     */
    private fulltextsearch_;
    /**
     * @param {JQuery.Event} event Event.
     * @param {string} query Query.
     * @private
     */
    private handleChange_;
}
export namespace SearchController {
    let $inject: string[];
}
export default myModule;
import angular from 'angular';
import olFeature from 'ol/Feature';
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
