import { type HTMLAttributes, type ReactElement, type ReactNode, type Ref } from "react";
import { type PropsWithRef } from "../types.js";
import { type OverridableTreeGroupProps } from "./TreeGroup.js";
import { type DefaultTreeItemNode } from "./types.js";
/**
 * @remarks \@since 6.0.0  Added the `groupProps` prop.
 */
export interface TreeItemProps extends Omit<DefaultTreeItemNode, "parentId">, HTMLAttributes<HTMLLIElement> {
    /**
     * @defaultValue `"tree-item-" + useId()`
     */
    id?: string;
    /**
     * This is used to set the `--rmd-tree-depth` CSS variable which allows the
     * padding to increase for each nested tree.
     */
    depth: number;
    /**
     * Any additional props that should be passed to the surrounding `<li>`
     * element. The top-level props are passed to the `<span>` or `<a>` element
     * instead.
     */
    liProps?: PropsWithRef<HTMLAttributes<HTMLLIElement>, HTMLLIElement>;
    /**
     * Any additional props to pass to the `TreeGroup` component.
     */
    groupProps?: PropsWithRef<OverridableTreeGroupProps, HTMLUListElement>;
    /**
     * This should normally be the text/content to display within the tree item
     * and should **not** include nested trees.
     */
    children?: ReactNode;
    /**
     * The nested tree items to render within a `TreeGroup`.
     */
    childItems?: ReactNode;
    /** @defaultValue `false` */
    disableTransition?: boolean;
    /**
     * This ref is applied to the `<span>` or `<a>` element and can be used to
     * implement drag and drop behavior.
     */
    contentRef?: Ref<HTMLElement>;
    /**
     * Set this to `true` if the {@link childItems} should not be rendered while
     * collapsed.
     *
     * @defaultValue `false`
     */
    temporaryChildItems?: boolean;
}
/**
 * **Client Component**
 *
 * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/treeview/}
 * @remarks
 * \@since 6.0.0 The wrapping `<li>` element will always be `role="none"` and
 * the `<span>` or `<a>` will gain the `role="treeitem"` instead. This makes it
 * easier to pass event handlers because of the nested behavior of tree items.
 * \@since 6.0.0 No longer provides the `aria-level`, `aria-setsize` and
 * `aria-posinset` attributes and allows the browser to compute them instead.
 */
export declare function TreeItem(props: TreeItemProps): ReactElement;
