import GirafeHTMLElement from '../../base/GirafeHTMLElement.js';
import LayerWms from '../../models/layers/layerwms.js';
import ColumnAliasHelper from '../../tools/utils/aliases.js';
import IGirafePanel from '../../tools/state/igirafepanel.js';
import LayerFilterElement from './layerfilterelement.js';
import FilterConditionElement from './filterconditionelement.js';
declare class AdvancedFilterComponent extends GirafeHTMLElement implements IGirafePanel {
    protected templateUrl: string | null;
    protected styleUrls: string[] | null;
    template: () => import("uhtml").Hole;
    isPanelVisible: boolean;
    panelTitle: string;
    panelTogglePath: string;
    loading: boolean;
    private readonly debouncedUpdateFilterItems;
    layers: LayerWms[];
    layerFilterElements: LayerFilterElement[];
    columnAliasHelper: ColumnAliasHelper;
    layerIsRefreshing: Map<number, boolean>;
    private csvDownloader;
    constructor();
    render(): void;
    registerEvents(): void;
    private updateFilterableLayerList;
    /**
     * Updates the list of filter elements based on the current state of the layers in the layer tree.
     */
    private updateFilterItemsByLayerState;
    /**
     * Determines whether the given layer is selectable based on its visibility and absence in other filter elements.
     */
    isLayerSelectable(filterElement: LayerFilterElement, layer: LayerWms): boolean;
    /**
     * Combine layer name and name of the parent group for easier identification.
     */
    getLayerDisplayName(layer: LayerWms): string;
    onFilterAdded(): void;
    private addEmptyFilterElement;
    /**
     * Uses the already existing filter object in the layer to create a filter element in the UI.
     */
    private addFilterElementFromLayer;
    onFilterRemoved(filterElement: LayerFilterElement): void;
    /**
     * Removes a filter element from the UI and optionally from the layer.
     * Note that the filter should only be removed from the layer if this was triggered by a user action in this component.
     */
    private removeFilterElement;
    private onFilterChangedInLayerTree;
    onLayerChanged(filterElement: LayerFilterElement, e: Event): Promise<void>;
    onConditionRemoved(filterElement: LayerFilterElement, condition: FilterConditionElement): void;
    onConditionAdded(filterElement: LayerFilterElement): void;
    onLogicalOperatorChanged(condition: FilterConditionElement, e: Event): void;
    onAttributeChanged(filterElement: LayerFilterElement, condition: FilterConditionElement, e: Event): void;
    onOperatorChanged(condition: FilterConditionElement, e: Event): void;
    onValueChanged(condition: FilterConditionElement, e: Event): void;
    onValue2Changed(condition: FilterConditionElement, e: Event): void;
    onChoiceChanged(condition: FilterConditionElement, _e: Event): void;
    onConditionApplied(filterElement: LayerFilterElement, condition: FilterConditionElement): void;
    onFilterInverted(filterElement: LayerFilterElement): void;
    private applyFilter;
    onDownloadLayerData(filterElements?: LayerFilterElement[]): Promise<void>;
    hasNonAppliedFilters(): boolean;
    togglePanel(visible: boolean): void;
    protected connectedCallback(): void;
}
export default AdvancedFilterComponent;
