import type OlFeature from 'ol/Feature.js';
import GirafeDraggableElement from '../../base/GirafeDraggableElement.js';
import type { GridDataById } from '../../tools/featuretogriddatabyid.js';
/**
 * Represents a Feature displayed in the SelectionWindowComponent.
 */
interface WindowFeature {
    id: string;
    feature: OlFeature;
    notOlProperties: Record<string, unknown>;
}
interface Layer {
    id: string;
    label: string;
}
/**
 * Represents a draggable and resizable selection window component.
 * Display itself when it should be visible and have selected features.
 * To be visible, it has to be the defined selectionComponent.
 */
declare class SelectionWindowComponent extends GirafeDraggableElement {
    protected templateUrl: string | null;
    protected styleUrls: string[] | null;
    template: () => import("uhtml").Hole;
    private readonly eventsCallbacks;
    private isVisibleComponentSetup;
    private readonly debounceOnFeaturesSelected;
    private resizeWindow;
    private featureToGridData;
    private windowFeatures;
    private windowLayers;
    visible: boolean;
    focusedIndex: number;
    maxIndex: number;
    iconCenter: any;
    private csvManager;
    displayedProperties: [string, unknown][];
    showDropdown: boolean;
    private columnAliasHelper;
    showDirectionsProviderDropdown: boolean;
    constructor();
    /**
     * We want the Results of a Selection/Query to be shown either in the Window. So we ignore the Fullscree Mode
     */
    protected get isFullscreenComponent(): boolean;
    protected connectedCallback(): void;
    /**
     * Render the component regarding its visibility.
     */
    render(): void;
    /**
     * @returns The WindowFeature at the currently focused index.
     */
    getWindowFeature(): WindowFeature;
    /**
     * Recenter the map view based on the current feature.
     */
    recenter(): void;
    /**
     * Toggles the visibility of the layers dropdown.
     */
    openDropdown(): void;
    /**
     * Gets the list of layers to export.
     * @returns The list of layers to export.
     */
    getLayersList(): Layer[];
    /**
     * Generates a CSV file with the properties of the currently focused feature.
     * @param layer The layer to export.
     */
    generateCSV(layer: string): void;
    /**
     * Ignores undefined values in the data.
     */
    ignoreUndefinedValues(data: Record<string, unknown>): void;
    /**
     * Closes the window and deselect the selected features.
     */
    protected closeWindow(): void;
    onFocusWindowFeatureChecked(event: Event): void;
    /**
     * Sets the focus on a specific feature.
     */
    onFocusWindowFeature(index: number): void;
    /**
     * Renders the component by calling the necessary methods.
     * @private
     */
    private renderComponent;
    /**
     * Sets up the components state and side-kicks.
     * This must be called once at the first (visible) rendering.
     * @private
     */
    private setupVisibleComponent;
    /**
     * Render a placeholder, not visible component on hide.
     * Removes event registration.
     * @private
     */
    private renderEmptyComponent;
    /**
     * Event about visibility that must be always listened by this component, even hidden.
     * @private
     */
    private registerVisibilityEvents;
    /**
     * Listen events that must be listened if the component is visible.
     * @private
     */
    private registerEvents;
    /**
     * Sets the selected features in the window and updates the window state to display the first feature.
     * @private
     */
    private onFeaturesSelected;
    /**
     * Selects a window feature by its first valid index.
     * Out of bound index loops back to the first valid index.
     * @returns The selected window feature.
     * @private
     */
    private selectedWindowFeature;
    /**
     * Toggles the panel visibility. If visible, tries to display a grid with selected feature.
     * Can only be visible if the component is the wanted selection component.
     * @private
     */
    private togglePanel;
    /**
     * Creates an array of WindowFeature objects based on the provided GridDataById object.
     * Using gridDataById orders by feature id the WindowFeatures.
     * @returns An array of WindowFeature objects.
     * @static
     */
    static createWindowFeatures(gridDataById: GridDataById): WindowFeature[];
}
export default SelectionWindowComponent;
