/** @packageDocumentation
 * @module Tree
 */
import "../../common/DisposePolyfill.js";
import { AbstractTreeNodeLoaderWithProvider, TreeEditingParams, TreeEventHandler, TreeModelChanges, TreeNodeItem, TreeSelectionModificationEventArgs, TreeSelectionReplacementEventArgs } from "@itwin/components-react";
import { Keys, KeySet, NodeKey } from "@itwin/presentation-common";
import { SelectionChangeType } from "@itwin/presentation-frontend";
import { IPresentationTreeDataProvider } from "../IPresentationTreeDataProvider.js";
/**
 * Data structure that describes parameters for UnifiedSelectionTreeEventHandler
 * @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 UnifiedSelectionTreeEventHandlerParams {
    /** Node loader used to load children when node is expanded. */
    nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;
    /**
     * Unique name for SelectionHandler to avoid handling events raised by itself. The
     * name is created if not provided.
     */
    name?: string;
    /** Specifies whether children should be disposed when parent node is collapsed or not. */
    collapsedChildrenDisposalEnabled?: boolean;
    /** Parameters used for node editing. */
    editingParams?: TreeEditingParams;
}
/**
 * Tree event handler that handles unified selection.
 * Extends wrapped tree event handler's functionality by adding, removing or replacing nodes in
 * unified selection. It also reacts to unified selection changes and selects/deselects tree nodes
 * according changes.
 *
 * **Note:** conditions used to determine if node is selected and nodes that should be added to
 * unified selection can be controlled by overriding 'shouldSelectNode' and 'createKeysForSelection' methods.
 *
 * @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 class UnifiedSelectionTreeEventHandler extends TreeEventHandler {
    #private;
    constructor(params: UnifiedSelectionTreeEventHandlerParams);
    /** Disposes this event handler */
    [Symbol.dispose](): void;
    /** @deprecated in 5.7. Use `[Symbol.dispose]` instead. */
    dispose(): void;
    onSelectionModified({ modifications }: TreeSelectionModificationEventArgs): import("@itwin/components-react").Subscription | undefined;
    onSelectionReplaced({ replacements }: TreeSelectionReplacementEventArgs): import("@itwin/components-react").Subscription | undefined;
    selectNodes(modelChange?: TreeModelChanges): void;
    /** @deprecated in 4.0. Use [[isPresentationTreeNodeItem]] and [[PresentationTreeNodeItem.key]] to get [NodeKey]($presentation-common). */
    protected getNodeKey(node: TreeNodeItem): NodeKey;
    /**
     * Determines if node should be selected.
     * Default implementation returns true if node key is in selection
     * or node is ECInstance node and instance key is in selection.
     */
    protected shouldSelectNode(node: TreeNodeItem, selection: Readonly<KeySet>): boolean;
    /**
     * Returns node keys that should be added, removed or used to replace unified selection.
     * Default implementation returns keys of supplied nodes.
     */
    protected createKeysForSelection(nodes: TreeNodeItem[], _selectionType: SelectionChangeType): Keys;
    protected getKeys(nodes: TreeNodeItem[]): Keys;
    private addToSelection;
    private removeFromSelection;
    private replaceSelection;
    private onSelectionChanged;
    private updateAllNodes;
    private updateAffectedNodes;
    private updateNodeSelectionState;
}
/**
 * A custom hook which creates and disposes [[UnifiedSelectionTreeEventHandler]]
 * @public
 * @deprecated in 4.x. This hook is not compatible with React 18 `StrictMode`. Use [[usePresentationTreeState]] and
 * [[UsePresentationTreeProps.eventHandlerFactory]] instead or manually create and dispose [[UnifiedSelectionTreeEventHandler]].
 */
export declare function useUnifiedSelectionTreeEventHandler(props: UnifiedSelectionTreeEventHandlerParams): UnifiedSelectionTreeEventHandler;
//# sourceMappingURL=UseUnifiedSelection.d.ts.map