import { registerMatcher, unregisterMatcher, type BuiltInMatchMode, type FilterMatcher, type FilterRule } from '@primereact/hooks/use-filter'; export { registerMatcher, unregisterMatcher }; export type TreeFilterMode = 'lenient' | 'strict'; export interface TreeNodeLike { key?: string | number; data?: Record; children?: TreeNodeLike[]; } export interface UseTreeFilterOptions { nodes: TNode[]; rules?: FilterRule[]; defaultRules?: FilterRule[]; /** * Shorthand for the single-field case. When set, the hook synthesizes a single * `{ field, value, matchMode }` rule. Ignored when `rules` / `defaultRules` is provided. */ field?: string | string[]; /** Controlled value for the shorthand `field`. Omit to let the hook own the state. */ value?: unknown; /** Initial value when the hook owns the state. */ defaultValue?: unknown; /** Fires when the shorthand `value` changes. */ onValueChange?: (value: unknown) => void; /** Match mode for the shorthand `field`. Defaults to `'contains'`. */ matchMode?: TMode; matchers?: Partial> & Record; filterMode?: TreeFilterMode; filterLocale?: string; filterDelay?: number; /** When true, `filteredNodes` is returned as-is; the consumer fetches filtered data itself. */ lazy?: boolean; /** Fires after rules settle (honours `filterDelay`). The consumer is expected to fetch filtered tree data. */ onLazyLoad?: (event: LazyTreeFilterEvent) => void; onRulesChange?: (rules: FilterRule[]) => void; } export interface LazyTreeFilterEvent { rules: FilterRule[]; filterMode: TreeFilterMode; filterLocale?: string; } export interface UseTreeFilterReturn { rules: FilterRule[]; filteredNodes: TNode[]; isFiltered: boolean; setRules: (rules: FilterRule[]) => void; value: unknown; setValue: (value: unknown) => void; clearAll: () => void; match: (node: TNode) => boolean; matchers: Readonly>; } export declare function useTreeFilter(options: UseTreeFilterOptions): UseTreeFilterReturn;