import * as React from 'react'; /** * Filter match mode types supported by DataTable. */ export declare const FilterMatchMode: { readonly Contains: "contains"; readonly NotContains: "notContains"; readonly StartsWith: "startsWith"; readonly EndsWith: "endsWith"; readonly Equals: "equals"; readonly NotEquals: "notEquals"; readonly In: "in"; readonly Between: "between"; readonly Lt: "lt"; readonly Lte: "lte"; readonly Gt: "gt"; readonly Gte: "gte"; readonly DateIs: "dateIs"; readonly DateIsNot: "dateIsNot"; readonly DateBefore: "dateBefore"; readonly DateAfter: "dateAfter"; readonly Custom: "custom"; }; export type FilterMatchMode = (typeof FilterMatchMode)[keyof typeof FilterMatchMode]; /** * Filter operator types. */ export declare const FilterOperator: { readonly And: "and"; readonly Or: "or"; }; export type FilterOperator = (typeof FilterOperator)[keyof typeof FilterOperator]; /** * Defines filter metadata for a single column constraint. */ export interface FilterConstraint { value: unknown; matchMode: FilterMatchMode; } /** * Defines filter metadata for a column (single or multiple constraints). */ export interface ColumnFilterMeta { value?: unknown; matchMode?: FilterMatchMode; constraints?: FilterConstraint[]; operator?: 'and' | 'or'; } /** * Defines the complete filter metadata map. */ export type DataTableFilterMeta = Record; /** * Event fired when filters change. */ export interface UseDataTableFilterEvent { originalEvent: React.SyntheticEvent; filters: DataTableFilterMeta; } export interface UseDataTableFilterOptions { data?: Record[]; lazy?: boolean; filters?: DataTableFilterMeta; defaultFilters?: DataTableFilterMeta; globalFilter?: string | null; globalFilterFields?: string[]; filterDelay?: number; onFilter?: (event: UseDataTableFilterEvent) => void; } export declare function useDataTableFilter(options: UseDataTableFilterOptions): { filteredData: Record[]; state: { filters: DataTableFilterMeta; globalFilter: string | null; }; exposes: { setFieldFilter: (event: React.SyntheticEvent, field: string, meta: ColumnFilterMeta) => void; clearFieldFilter: (event: React.SyntheticEvent, field: string) => void; clearAllFilters: (event: React.SyntheticEvent) => void; addConstraint: (event: React.SyntheticEvent, field: string, defaultMatchMode?: FilterMatchMode) => void; removeConstraint: (event: React.SyntheticEvent, field: string, index: number) => void; setOperator: (event: React.SyntheticEvent, field: string, operator: "and" | "or") => void; setConstraintValue: (event: React.SyntheticEvent, field: string, index: number, value: unknown, matchMode?: FilterMatchMode) => void; setConstraintMatchMode: (event: React.SyntheticEvent, field: string, index: number, matchMode: FilterMatchMode) => void; hasFilterValue: (field: string) => boolean; isFiltered: () => boolean; getFieldFilterMeta: (field: string) => ColumnFilterMeta; getFilterRootProps: (field: string, display?: "row" | "menu") => { 'data-active'?: string | undefined; 'data-scope': string; 'data-part': string; 'data-display': "menu" | "row"; }; }; };