import { filter } from '../../core/filter/filter';
import type { Expression, FilterOptions } from '../../types';
export declare function useFilter<T>(data: T[], expression: Expression<T> | null, options?: FilterOptions): {
    filtered: T[];
    isFiltering: boolean;
};
export declare function useFilteredState<T>(data: T[], initialExpression?: Expression<T>, options?: FilterOptions): {
    filtered: T[];
    expression: Expression<T> | null;
    setExpression: (expr: Expression<T> | null) => void;
    reset: () => void;
};
export declare function useDebouncedFilter<T>(data: T[], expression: Expression<T>, options?: {
    delay?: number;
    filterOptions?: FilterOptions;
}): {
    filtered: T[];
    isPending: boolean;
};
export declare function usePaginatedFilter<T>(data: T[], expression: Expression<T> | null, options?: {
    pageSize?: number;
    initialPage?: number;
    filterOptions?: FilterOptions;
}): {
    paginatedResults: T[];
    currentPage: number;
    totalPages: number;
    pageSize: number;
    setPage: (page: number) => void;
    setPageSize: (size: number) => void;
    nextPage: () => void;
    prevPage: () => void;
};
export { filter };
