import { type Dispatch, type JSX, type SetStateAction } from "react";
import type { Column, FilterIn, FilterInFilterItem, Grid } from "../../+types";
import type { PathRoot } from "@1771technologies/lytenyte-shared";
import type { TreeVirtualItem } from "../../tree-view/virtualized/make-virtual-tree";
export interface UseTreeFilterReturn<T> {
    readonly rootProps: {
        readonly fetchItems: () => void;
        readonly loading: boolean;
        readonly error: any;
        readonly pivotMode: boolean;
        readonly grid: Grid<T>;
        readonly expansions: Record<string, boolean>;
        readonly onExpansionChange: Dispatch<SetStateAction<Record<string, boolean>>>;
        readonly treeRef: (el: HTMLElement | null) => void;
        readonly getAllIds: () => Set<string>;
        readonly getIdsBetweenNodes: (left: HTMLElement, right: HTMLElement) => string[];
        readonly onFocusChange: (el: HTMLElement | null) => void;
        readonly root: PathRoot<FilterInFilterItem>;
        readonly columnId: string;
        readonly items: FilterInFilterItem[];
        readonly applyChangesImmediately: boolean;
        readonly filterIn: FilterIn;
        readonly filterInChange: Dispatch<SetStateAction<FilterIn>>;
    };
    readonly tree: TreeVirtualItem<FilterInFilterItem>[];
    readonly spacer: JSX.Element;
    readonly apply: () => void;
    readonly reset: () => void;
}
export interface UseFilterTreeArgs<T> {
    grid: Grid<T>;
    column: Column<T>;
    treeItemHeight?: number;
    pivotMode?: boolean;
    applyChangesImmediately?: boolean;
    query?: string;
}
export declare function useFilterTree<T>({ grid, column, treeItemHeight, pivotMode, applyChangesImmediately, query, }: UseFilterTreeArgs<T>): UseTreeFilterReturn<T>;
