import type { Ref } from 'vue';
import type { TableLocale } from '../../../locale';
import type { ColumnsType, FilterValue, GetPopupContainer, TransformColumns } from '../../interface';
import type { FilterState } from './type';
export declare function getFilterData<RecordType>(data: RecordType[], filterStates: FilterState<RecordType>[]): RecordType[];
interface FilterConfig<RecordType> {
    prefixCls: Ref<string>;
    dropdownPrefixCls: Ref<string>;
    mergedColumns: Ref<ColumnsType<RecordType>>;
    locale: Ref<TableLocale>;
    onFilterChange: (filters: Record<string, FilterValue | null>, filterStates: FilterState<RecordType>[]) => void;
    getPopupContainer?: Ref<GetPopupContainer>;
}
declare function useFilter<RecordType>({ prefixCls, dropdownPrefixCls, mergedColumns, locale, onFilterChange, getPopupContainer, }: FilterConfig<RecordType>): [
    TransformColumns<RecordType>,
    Ref<FilterState<RecordType>[]>,
    Ref<Record<string, FilterValue | null>>
];
export default useFilter;
