import { type Ref } from 'vue';
import type { IColumnDefinition, IFilterCondition } from '../types';
import { type INormalizedColumn } from '../filter-strategies';
interface IColumnFilterState {
    value: string | number | boolean | undefined;
    condition: IFilterCondition;
}
interface IUseFilteringOptions {
    rows: Ref<Array<Record<string, unknown>>>;
    columns: Ref<IColumnDefinition[]>;
    isServerMode: Ref<boolean>;
    columnFilter: Ref<boolean>;
    sortable: Ref<boolean>;
    sortColumn: Ref<string>;
    sortDirection: Ref<string>;
    search: Ref<string>;
    totalRows: Ref<number>;
}
export declare function useFiltering(options: IUseFilteringOptions): {
    currentSearch: Ref<string, string>;
    isOpenFilter: Ref<string | null, string | null>;
    normalizedColumns: import("vue").ComputedRef<INormalizedColumn[]>;
    filteredRows: import("vue").ComputedRef<Record<string, unknown>[]>;
    filterRowCount: import("vue").ComputedRef<number>;
    columnFilterState: import("vue").Reactive<Map<string, IColumnFilterState>>;
    setFilterValue: (field: string, value: string | number | boolean | undefined) => void;
    setFilterCondition: (field: string, condition: IFilterCondition) => void;
    toggleFilterMenu: (field: string | null) => void;
    getColumnsWithFilterState: () => IColumnDefinition[];
    resetFilters: () => void;
};
export {};
