import { NTable } from '../interface';
import { Ref } from 'vue';
export interface IFilterOptions<RecordType> {
    mergedColumns: Ref<NTable.NColumn.TColumns<RecordType>>;
    tableLocale: Ref<NTable.ILocale>;
    getPopupContainer?: Ref<NTable.NCustomize.TGetPopupContainer>;
    onFilterChange: (filters: Record<string, NTable.TFilterValue | null>, filterStates: NTable.IFilterState<RecordType>[]) => void;
}
export interface IUseFilter<RecordType> {
    transformColumns: NTable.NColumn.TTransformColumns<RecordType>;
    mergedFilterStates: Ref<NTable.IFilterState<RecordType>[]>;
    filters: Ref<Record<string, NTable.TFilterValue | null>>;
}
export declare function useFilter<RecordType>({ mergedColumns, tableLocale, getPopupContainer, onFilterChange }: IFilterOptions<RecordType>): IUseFilter<RecordType>;
export declare function flattenKeys(filters?: NTable.NColumn.IFilterItem[]): NTable.TFilterValue;
export declare function getFilterData<RecordType>(data: RecordType[], filterStates: NTable.IFilterState<RecordType>[]): RecordType[];
