import type { Column, FilterDateOperator, FilterNumberOperator, FilterStringOperator, Grid } from "../+types";
export interface UseFilterSelectParams<T> {
    readonly grid: Grid<T>;
    readonly column: Column<T>;
    readonly maxCount?: number;
}
export type FilterSelectFlatFunc = {
    kind: "function";
    func: any;
};
export type FilterSelectFlatNumber = {
    kind: "number";
    operator?: FilterNumberOperator;
    value?: string | number | null;
    nextExtender?: null | "AND" | "OR";
};
export type FilterSelectFlatString = {
    kind: "string";
    operator?: FilterStringOperator;
    value?: string | number | null;
    nextExtender?: null | "AND" | "OR";
};
export type FilterSelectFlatDate = {
    kind: "date";
    operator?: FilterDateOperator;
    value?: string | number | null;
    nextExtender?: null | "AND" | "OR";
};
export type FilterSelectFlat = FilterSelectFlatFunc | FilterSelectFlatNumber | FilterSelectFlatString | FilterSelectFlatDate;
export declare const useFilterSelect: <T>({ grid, column, maxCount }: UseFilterSelectParams<T>) => {
    reset: () => void;
    apply: () => void;
    clear: () => void;
    defaultFilter: FilterSelectFlat;
    filters: FilterSelectFlat[];
    setFilters: (v: FilterSelectFlat[] | ((v: FilterSelectFlat[]) => FilterSelectFlat[])) => void;
    maxCount: number;
};
