import * as React from 'react';
import { UseTreeViewSelectionSignature } from '../../internals/plugins/useTreeViewSelection';
import { UseTreeViewExpansionSignature } from '../../internals/plugins/useTreeViewExpansion';
import { UseTreeViewItemsSignature } from '../../internals/plugins/useTreeViewItems';
import { UseTreeViewFocusSignature } from '../../internals/plugins/useTreeViewFocus';
import { UseTreeViewLabelSignature } from '../../internals/plugins/useTreeViewLabel';
import type { UseTreeItem2Status } from '../../useTreeItem2';
import { TreeViewPublicAPI } from '../../internals/models';
export interface UseTreeItem2Interactions {
    handleExpansion: (event: React.MouseEvent) => void;
    handleSelection: (event: React.MouseEvent) => void;
    handleCheckboxSelection: (event: React.ChangeEvent<HTMLInputElement>) => void;
    toggleItemEditing: () => void;
    handleSaveItemLabel: (event: React.SyntheticEvent, label: string) => void;
    handleCancelItemLabelEditing: (event: React.SyntheticEvent) => void;
}
/**
 * Plugins that need to be present in the Tree View in order for `useTreeItem2Utils` to work correctly.
 */
type UseTreeItem2UtilsMinimalPlugins = readonly [
    UseTreeViewSelectionSignature,
    UseTreeViewExpansionSignature,
    UseTreeViewItemsSignature,
    UseTreeViewFocusSignature
];
/**
 * Plugins that `useTreeItem2Utils` can use if they are present, but are not required.
 */
export type UseTreeItem2UtilsOptionalPlugins = readonly [UseTreeViewLabelSignature];
interface UseTreeItem2UtilsReturnValue<TSignatures extends UseTreeItem2UtilsMinimalPlugins, TOptionalSignatures extends UseTreeItem2UtilsOptionalPlugins> {
    interactions: UseTreeItem2Interactions;
    status: UseTreeItem2Status;
    /**
     * The object the allows Tree View manipulation.
     */
    publicAPI: TreeViewPublicAPI<TSignatures, TOptionalSignatures>;
}
export declare const useTreeItem2Utils: <TSignatures extends UseTreeItem2UtilsMinimalPlugins = UseTreeItem2UtilsMinimalPlugins, TOptionalSignatures extends UseTreeItem2UtilsOptionalPlugins = UseTreeItem2UtilsOptionalPlugins>({ itemId, children, }: {
    itemId: string;
    children: React.ReactNode;
}) => UseTreeItem2UtilsReturnValue<TSignatures, TOptionalSignatures>;
export {};
