/** @packageDocumentation
 * @module Tree
 */
import "../../common/DisposePolyfill.js";
import { AbstractTreeNodeLoaderWithProvider, PagedTreeNodeLoader, RenderedItemsRange, TreeModel, TreeModelSource } from "@itwin/components-react";
import { PresentationTreeDataProviderProps } from "../DataProvider.js";
import { IPresentationTreeDataProvider } from "../IPresentationTreeDataProvider.js";
/**
 * Properties for [[usePresentationTreeNodeLoader]] hook.
 * @public
 * @deprecated in 4.x. This hook is not compatible with React 18 `StrictMode`. Use [[usePresentationTreeState]] instead.
 */
export interface PresentationTreeNodeLoaderProps extends PresentationTreeDataProviderProps {
    /**
     * Number of nodes in a single page. The created loader always requests at least
     * a page nodes, so it should be optimized for usability vs performance (using
     * smaller pages gives better responsiveness, but makes overall performance
     * slightly worse).
     *
     * Note: The prop is already defined in `PresentationTreeDataProviderProps` but specified here again to make it required.
     */
    pagingSize: number;
    /**
     * Initialize tree data with the provided tree model.
     */
    seedTreeModel?: TreeModel;
}
/**
 * Return type for [[usePresentationTreeNodeLoader]] hook.
 * @public
 * @deprecated in 4.x. This hook is not compatible with React 18 `StrictMode`. Use [[usePresentationTreeState]] instead.
 */
export interface PresentationTreeNodeLoaderResult {
    /** Tree node loader to be used with a tree component */
    nodeLoader: PagedTreeNodeLoader<IPresentationTreeDataProvider>;
    /**
     * Callback for when rendered tree node item range changes. This property should be passed to
     * [ControlledTree]($components-react).
     */
    onItemsRendered: (items: RenderedItemsRange) => void;
}
/**
 * Custom hooks which creates PagedTreeNodeLoader with PresentationTreeDataProvider using
 * supplied imodel and ruleset.
 * @public
 * @deprecated in 4.x. This hook is not compatible with React 18 `StrictMode`. Use [[usePresentationTreeState]] instead.
 */
export declare function usePresentationTreeNodeLoader(props: PresentationTreeNodeLoaderProps): PresentationTreeNodeLoaderResult;
/**
 * Parameters for [[useControlledPresentationTreeFiltering]] hook
 * @public
 * @deprecated in 5.7. All tree-related APIs have been deprecated in favor of the new generation hierarchy
 * building APIs (see https://github.com/iTwin/presentation/blob/33e79ee8d77f30580a9bab81a72884bda008db25/README.md#the-packages).
 */
export interface ControlledPresentationTreeFilteringProps {
    nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;
    filter?: string;
    activeMatchIndex?: number;
}
/**
 * A custom hook that creates filtered model source and node loader for supplied filter.
 * If filter string is not provided or filtering is still in progress it returns supplied
 * model source and node loader.
 *
 * @public
 * @deprecated in 5.7. All tree-related APIs have been deprecated in favor of the new generation hierarchy
 * building APIs (see https://github.com/iTwin/presentation/blob/33e79ee8d77f30580a9bab81a72884bda008db25/README.md#the-packages).
 */
export declare function useControlledPresentationTreeFiltering(props: ControlledPresentationTreeFilteringProps): {
    nodeHighlightingProps: import("@itwin/components-react").HighlightableTreeProps | undefined;
    filteredNodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;
    filteredModelSource: TreeModelSource;
    isFiltering: boolean;
    matchesCount: number | undefined;
};
//# sourceMappingURL=TreeHooks.d.ts.map