/**
 * @param {JQuery} $element Element.
 * @param {angular.IScope} $scope Angular scope.
 * @param {import('ngeo/query/MapQuerent').QueryResult} ngeoQueryResult ngeo query result.
 * @param {import('ngeo/query/MapQuerent').MapQuerent} ngeoMapQuerent ngeo map querent service.
 * @param {import('gmf/options').gmfCsvFilename} gmfCsvFilename The CSV file name.
 * @param {import('gmf/options').gmfDisplayQueryWindowOptions} gmfDisplayQueryWindowOptions The options.
 * @class
 * @hidden
 * @ngdoc controller
 * @ngname GmfDisplayquerywindowController
 */
export function QueryWindowController($element: JQuery, $scope: angular.IScope, ngeoQueryResult: import("ngeo/query/MapQuerent").QueryResult, ngeoMapQuerent: import("ngeo/query/MapQuerent").MapQuerent, gmfCsvFilename: import("gmf/options").gmfCsvFilename, gmfDisplayQueryWindowOptions: import("gmf/options").gmfDisplayQueryWindowOptions): void;
export class QueryWindowController {
    /**
     * @param {JQuery} $element Element.
     * @param {angular.IScope} $scope Angular scope.
     * @param {import('ngeo/query/MapQuerent').QueryResult} ngeoQueryResult ngeo query result.
     * @param {import('ngeo/query/MapQuerent').MapQuerent} ngeoMapQuerent ngeo map querent service.
     * @param {import('gmf/options').gmfCsvFilename} gmfCsvFilename The CSV file name.
     * @param {import('gmf/options').gmfDisplayQueryWindowOptions} gmfDisplayQueryWindowOptions The options.
     * @class
     * @hidden
     * @ngdoc controller
     * @ngname GmfDisplayquerywindowController
     */
    constructor($element: JQuery, $scope: angular.IScope, ngeoQueryResult: import("ngeo/query/MapQuerent").QueryResult, ngeoMapQuerent: import("ngeo/query/MapQuerent").MapQuerent, gmfCsvFilename: import("gmf/options").gmfCsvFilename, gmfDisplayQueryWindowOptions: import("gmf/options").gmfDisplayQueryWindowOptions);
    /**
     * @type {import('gmf/options').gmfDisplayQueryWindowOptions}
     */
    options: import("gmf/options").gmfDisplayQueryWindowOptions;
    /**
     * @type {Element|string}
     */
    draggableContainment: Element | string;
    /**
     * @type {boolean}
     */
    desktop: boolean;
    /**
     * Is the window currently collapsed?
     * When used for Desktop, it is shown non-collapsed.
     *
     * @type {boolean}
     */
    collapsed: boolean;
    /**
     * @type {import('ngeo/query/MapQuerent').QueryResult}
     */
    ngeoQueryResult: import("ngeo/query/MapQuerent").QueryResult;
    /**
     * @type {import('ngeo/query/MapQuerent').MapQuerent}
     */
    ngeoMapQuerent_: import("ngeo/query/MapQuerent").MapQuerent;
    /**
     * @type {import('ngeo/download/Csv').DownloadCsvService}
     */
    ngeoCsvDownload_: import("ngeo/download/Csv").DownloadCsvService;
    /**
     * Filename
     *
     * @type {import('gmf/options').gmfCsvFilename}
     */
    filename_: import("gmf/options").gmfCsvFilename;
    /**
     * @type {?import('ngeo/statemanager/WfsPermalink').QueryResultSource}
     */
    selectedSource: import("ngeo/statemanager/WfsPermalink").QueryResultSource | null;
    /**
     * @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<import('ol/Feature').default<import('ol/geom/Geometry').default>>}
     */
    highlightFeatures_: import("ol/Collection").default<import("ol/Feature").default<import("ol/geom/Geometry").default>>;
    /**
     * @type {?import('ngeo/statemanager/WfsPermalink').QueryResultSource}
     */
    source: import("ngeo/statemanager/WfsPermalink").QueryResultSource | null;
    /**
     * @type {?import('ol/Feature').default<import('ol/geom/Geometry').default>}
     */
    feature: import("ol/Feature").default<import("ol/geom/Geometry").default> | null;
    /**
     * @type {number}
     */
    currentResult: number;
    /**
     * @type {boolean}
     */
    isNext: boolean;
    /**
     * @type {number}
     */
    animate: number;
    /**
     * @type {boolean}
     */
    open: boolean;
    /**
     * @constant {JQuery}
     */
    element_: JQuery<HTMLElement>;
    /**
     * @type {boolean}
     */
    isLoading: boolean;
    /**
     * Initialize the controller.
     */
    $onInit(): void;
    /**
     * Remove current displayed results then get new results from the
     * ngeoQueryResult service. Display all results on the map and display,
     * highlight the first feature.
     */
    show(): void;
    updateFeatures_(): void;
    /**
     * Select a source and a feature depending of the given position.
     *
     * @param {number} position The index of the feature. If the position is bigger
     * than the length of the first source, get it in the next source. Etc.
     * @param {boolean} setHighlight True to set the highlight automatically.
     * @returns {boolean} True if result has changed. False else.
     */
    setCurrentResult_(position: number, setHighlight: boolean): boolean;
    /**
     * Select the logical previous source and feature then highlight this feature on
     * the map.
     */
    previous(): void;
    /**
     * Select the logical next source and feature then highlight this feature on
     * the map.
     */
    next(): void;
    /**
     * Remove features without properties from the query result.
     *
     * @param {import('ngeo/query/MapQuerent').QueryResult} queryResult ngeo query result.
     */
    updateQueryResult_(queryResult: import("ngeo/query/MapQuerent").QueryResult): void;
    /**
     * Get the total count of features in the result of the query. If a source
     * has been select, only the number of features of that source are returned.
     *
     * @returns {number} Total number of features.
     */
    getResultLength(): number;
    /**
     * @returns {boolean} If the first result is active.
     */
    isFirst(): boolean;
    /**
     * @returns {boolean} If the last result is active.
     */
    isLast(): boolean;
    /**
     * Delete the unwanted ol3 properties from the current feature then return the
     * properties.
     *
     * @returns {Object<string, string|number|boolean>?} Filtered properties of the current feature or null.
     */
    getFeatureValues(): {
        [x: string]: string | number | boolean;
    } | null;
    /**
     * Special function that's used to set the "animation" value after to set the
     * "isNext" value. The aim is to wait on Angular to add a class (corresponding
     * to "isNext") on the DOM before to set the "animation" value and do the
     * animation.
     *
     * @param {boolean} isNext used to indicate if the user wants to see the next
     * or the previous result.
     */
    animate_(isNext: boolean): void;
    /**
     * Collect all features in the queryResult object.
     */
    collectFeatures_(): void;
    /**
     * Highlight the current displayed feature.
     *
     * @param {import('ol/Feature').default<import('ol/geom/Geometry').default>} [opt_lastFeature] last highlighted feature. Require if
     * it exists because it must be added to the 'non-selected' features collection.
     */
    highlightCurrentFeature_(opt_lastFeature?: import("ol/Feature").default<import("ol/geom/Geometry").default>): void;
    /**
     * Remove the current selected feature and source and remove all features
     * from the map.
     */
    close(): void;
    /**
     * Remove the current selected feature and source and remove all features
     * from the map.
     */
    clear(): void;
    /**
     * @param {import('ngeo/statemanager/WfsPermalink').QueryResultSource} source The source to select.
     */
    setSelectedSource(source: import("ngeo/statemanager/WfsPermalink").QueryResultSource): void;
    /**
     * Download a CSV with features of the given source.
     *
     * @param {import('ngeo/statemanager/WfsPermalink').QueryResultSource} source The source to export as csv.
     */
    downloadCSV(source: import("ngeo/statemanager/WfsPermalink").QueryResultSource): void;
    /**
     * @param {import('ngeo/statemanager/WfsPermalink').QueryResultSource} source The source to export as csv.
     * @returns {Object<string, string|number|boolean>[]} data.
     */
    getCSVData_(source: import("ngeo/statemanager/WfsPermalink").QueryResultSource): {
        [x: string]: string | number | boolean;
    }[];
    /**
     * @param {Object<string, string|number|boolean>[]} data where keys with at least one defined value will be used as csv column header.
     * @returns {import('ngeo/download/Csv').GridColumnDef[]} columns definitions for the CSV.
     */
    getCSVHeaderDefinition_(data: {
        [x: string]: string | number | boolean;
    }[]): import("ngeo/download/Csv").GridColumnDef[];
}
export namespace QueryWindowController {
    let $inject: string[];
}
export default myModule;
import angular from 'angular';
/**
 * @type {angular.IModule}
 * @hidden
 */
declare const myModule: angular.IModule;
