import { EventEmitter, type VNode } from '../../stencil-public-runtime';
import '../../utils/closest.polifill';
import { FilterCaptions, LogicFunction, MultiFilterItem, ShowData } from './filter.types';
import type { ColumnProp } from "../../types/index";
import { FilterType } from './filter.indexed';
/**
 * Filter panel for editing filters
 */
/**
 * @internal
 */
export declare class FilterPanel {
    private dialog?;
    private filterCaptionsInternal;
    element: HTMLElement;
    isFilterIdSet: boolean;
    filterId: number;
    currentFilterId: number;
    currentFilterType: FilterType;
    changes: ShowData | undefined;
    filterItems: MultiFilterItem;
    draggedFilterId: number | undefined;
    dragOverFilterId: number | undefined;
    filterNames: Record<string, string>;
    filterEntities: Record<string, LogicFunction>;
    filterCaptions: Partial<FilterCaptions> | undefined;
    /**
     * Disables dynamic filtering. A way to apply filters on Save only
     */
    disableDynamicFiltering: boolean;
    /**
     * If true, closes the filter panel when clicking outside
     */
    closeOnOutsideClick: boolean;
    filterChange: EventEmitter<MultiFilterItem>;
    resetChange: EventEmitter<ColumnProp>;
    onMouseDown(e: MouseEvent): void;
    show(newEntity?: ShowData): Promise<void>;
    getChanges(): Promise<ShowData | undefined>;
    componentWillRender(): void;
    getFilterItemsList(): any;
    componentDidRender(): void;
    private syncDialog;
    private autoCorrect;
    private onFilterTypeChange;
    private debouncedApplyFilter;
    private onAddNewFilter;
    private addNewFilterToProp;
    private onSave;
    private onCancel;
    private onReset;
    private onRemoveFilter;
    private onFilterDragStart;
    private onFilterDragOver;
    private onFilterDragLeave;
    private onFilterDrop;
    private onFilterDragEnd;
    private onFilterReorderKeyDown;
    private toggleFilterAndOr;
    private assertChanges;
    renderSelectOptions(type: FilterType, isDefaultTypeRemoved?: boolean): VNode[] | undefined;
    renderExtra(prop: ColumnProp, index: number): any;
    render(): any;
}
