import * as React from 'react';
import type { UseTreeItemStatus } from "../../useTreeItem/index.mjs";
import { TreeViewPublicAPI, TreeViewAnyStore } from "../../internals/models/index.mjs";
import { TreeViewLabelEditingPlugin } from "../../internals/plugins/labelEditing/index.mjs";
export interface UseTreeItemInteractions {
  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;
}
interface UseTreeItemUtilsReturnValue<TStore extends TreeViewAnyStore> {
  interactions: UseTreeItemInteractions;
  status: UseTreeItemStatus;
  /**
   * The object the allows Tree View manipulation.
   */
  publicAPI: TreeViewPublicAPI<TStore>;
}
type TreeViewStoreWithLabelEditing = TreeViewAnyStore & {
  labelEditing?: TreeViewLabelEditingPlugin;
};
export declare const itemHasChildren: (reactChildren: React.ReactNode) => boolean;
export declare const useTreeItemUtils: <TStore extends TreeViewStoreWithLabelEditing = TreeViewStoreWithLabelEditing>({
  itemId,
  children
}: {
  itemId: string;
  children?: React.ReactNode;
}) => UseTreeItemUtilsReturnValue<TStore>;
export {};