import type { TYPES } from '@visactor/vtable';
export interface FilterOptions {
    id?: string;
    filterIcon?: TYPES.ColumnIconOption;
    filteringIcon?: TYPES.ColumnIconOption;
    enableFilter?: (field: number | string, column: TYPES.ColumnDefine) => boolean;
    defaultEnabled?: boolean;
    filterModes?: FilterMode[];
}
export type FilterMode = 'byValue' | 'byCondition';
export interface FilterState {
    filters: Map<string | number, FilterConfig>;
}
export interface FilterConfig {
    enable: boolean;
    field: string | number;
    type: 'byValue' | 'byCondition';
    values?: any[];
    operator?: FilterOperator;
    condition?: any;
}
export declare enum FilterActionType {
    ADD_FILTER = 0,
    REMOVE_FILTER = 1,
    UPDATE_FILTER = 2,
    ENABLE_FILTER = 3,
    DISABLE_FILTER = 4,
    CLEAR_ALL_FILTERS = 5,
    APPLY_FILTERS = 6
}
export interface FilterAction {
    type: FilterActionType;
    payload: any;
}
export interface ValueFilterOptionDom {
    id: string;
    originalValue: any;
    itemContainer: HTMLDivElement;
    checkbox: HTMLInputElement;
    countSpan: HTMLSpanElement;
}
export type FilterOperator = 'equals' | 'notEquals' | 'greaterThan' | 'lessThan' | 'greaterThanOrEqual' | 'lessThanOrEqual' | 'between' | 'notBetween' | 'contains' | 'notContains' | 'startsWith' | 'notStartsWith' | 'endsWith' | 'notEndsWith' | 'isChecked' | 'isUnchecked';
export interface OperatorOption {
    value: FilterOperator;
    label: string;
    category: FilterOperatorCategory;
}
export declare enum FilterOperatorCategory {
    ALL = "all",
    TEXT = "text",
    NUMBER = "number",
    COLOR = "color",
    CHECKBOX = "checkbox",
    RADIO = "radio"
}
