export declare enum FilterType {
    VALUE_LIST = "valueList",
    CONDITION = "condition"
}
export declare enum FilterOperator {
    EQUALS = "equals",
    NOT_EQUALS = "notEquals",
    GREATER_THAN = "greaterThan",
    GREATER_THAN_OR_EQUAL = "greaterThanOrEqual",
    LESS_THAN = "lessThan",
    LESS_THAN_OR_EQUAL = "lessThanOrEqual",
    CONTAINS = "contains",
    NOT_CONTAINS = "notContains",
    STARTS_WITH = "startsWith",
    ENDS_WITH = "endsWith",
    BETWEEN = "between"
}
export interface IValueListFilter {
    type: FilterType.VALUE_LIST;
    values: any[];
    exclude?: boolean;
}
export interface IConditionFilter {
    type: FilterType.CONDITION;
    operator: FilterOperator;
    value: any;
    value2?: any;
}
export type Filter = IValueListFilter | IConditionFilter;
export interface IColumnFilter {
    columnKey: string;
    filter: Filter;
}
export interface IFilterStateConfig {
    enable: boolean;
    field: string | number;
    type: 'byValue' | 'byCondition';
    values?: any[];
    operator?: string;
    condition?: any;
}
export interface IFilterState {
    filters: Record<string | number, IFilterStateConfig>;
}
export interface IFilterManager {
    setFilter: (columnKey: string, filter: Filter) => void;
    getFilter: (columnKey: string) => Filter | null;
    removeFilter: (columnKey: string) => void;
    applyFilters: () => void;
    resetFilters: () => void;
    getFilteredData: () => any[][];
    getAllFilters: () => IColumnFilter[];
    getFilterState: () => {
        [columnKey: string]: boolean;
    };
    onFilterChange: (callback: (filters: IColumnFilter[]) => void) => void;
    offFilterChange: (callback: (filters: IColumnFilter[]) => void) => void;
}
