import { FilterConfig, FilterLogic, FilterOperator, FilterValue, Column } from '../Table.types';
export interface UseTableFilterOptions<T = any> {
    filterConfig?: FilterConfig[];
    onFilterChange?: (filterConfig: FilterConfig[]) => void;
    /** Logic for combining filters */
    filterLogic?: FilterLogic;
    /** Callback when filter logic changes */
    onFilterLogicChange?: (logic: FilterLogic) => void;
    /** Data for built-in filtering */
    data?: T[];
    /** Columns for built-in filtering */
    columns?: Column<T>[];
    /** Enable built-in automatic filtering */
    enableBuiltInFilter?: boolean;
}
export interface UseTableFilterReturn<T = any> {
    handleAddFilter: (columnId: string, value: FilterValue, operator?: FilterOperator) => void;
    handleRemoveFilter: (columnId: string) => void;
    handleUpdateFilter: (columnId: string, value: FilterValue, operator?: FilterOperator) => void;
    handleUpdateFilterById: (filterId: string, updates: Partial<FilterConfig>) => void;
    handleClearFilters: () => void;
    /** Current filter logic ('and' | 'or') */
    filterLogic: FilterLogic;
    /** Toggle between AND and OR logic */
    handleToggleLogic: () => void;
    /** Set filter logic directly */
    handleSetLogic: (logic: FilterLogic) => void;
    /** Generate a unique ID for a new filter */
    generateFilterId: () => string;
    /** Filtered data (only populated when enableBuiltInFilter is true) */
    filteredData: T[];
}
export declare function useTableFilter<T = any>({ filterConfig, onFilterChange, filterLogic: controlledLogic, onFilterLogicChange, data, columns, enableBuiltInFilter, }: UseTableFilterOptions<T>): UseTableFilterReturn<T>;
