import { FilterModel } from './types';
/**
 * Check if a single row matches a filter condition.
 *
 * @param row - The row data object
 * @param filter - The filter to apply
 * @param caseSensitive - Whether text comparisons are case sensitive
 * @returns True if the row matches the filter
 */
export declare function matchesFilter(row: Record<string, unknown>, filter: FilterModel, caseSensitive?: boolean): boolean;
/**
 * Filter rows based on multiple filter conditions (AND logic).
 * All filters must match for a row to be included.
 *
 * @param rows - The rows to filter
 * @param filters - Array of filters to apply
 * @param caseSensitive - Whether text comparisons are case sensitive
 * @returns Filtered rows
 */
export declare function filterRows<T extends Record<string, unknown>>(rows: T[], filters: FilterModel[], caseSensitive?: boolean): T[];
/**
 * Compute a cache key for a set of filters.
 * Used for memoization of filter results.
 *
 * @param filters - Array of filters
 * @returns Stable string key for the filter set
 */
export declare function computeFilterCacheKey(filters: FilterModel[]): string;
/**
 * Extract unique values from a field across all rows.
 * Useful for populating "set" filter dropdowns.
 *
 * @param rows - The rows to extract values from
 * @param field - The field name
 * @returns Sorted array of unique non-null values
 */
export declare function getUniqueValues<T extends Record<string, unknown>>(rows: T[], field: string): unknown[];
//# sourceMappingURL=filter-model.d.ts.map