import { GlobalDOMAttributes, Key, LoadingState } from '@react-types/shared';
import { StylesPropWithHeight, UnsafeStyles } from './style-utils';
import { TreeItemProps as RACTreeItemProps, TreeProps as RACTreeProps, TreeItemContentProps, TreeLoadMoreItemProps } from 'react-aria-components/Tree';
import React, { JSXElementConstructor, ReactElement, ReactNode } from 'react';
interface S2TreeProps {
    /** Handler that is called when a user performs an action on a row. */
    onAction?: (key: Key) => void;
    /** Provides the ActionBar to display when items are selected in the TreeView. */
    renderActionBar?: (selectedKeys: 'all' | Set<Key>) => ReactElement;
}
interface TreeViewStyleProps {
    /**
     * How selection should be displayed. For guidance on when to use which option, refer to the [Spectrum](https://spectrum.adobe.com/page/tree-view/#Checkbox-or-highlight-selection-style) page.
     * @default 'checkbox'
     */
    selectionStyle?: 'highlight' | 'checkbox';
}
export interface TreeViewProps<T> extends Omit<RACTreeProps<T>, 'style' | 'className' | 'render' | 'onRowAction' | 'selectionBehavior' | 'onScroll' | 'onCellAction' | 'dragAndDropHooks' | keyof GlobalDOMAttributes>, UnsafeStyles, S2TreeProps, TreeViewStyleProps {
    /** Spectrum-defined styles, returned by the `style()` macro. */
    styles?: StylesPropWithHeight;
}
export interface TreeViewItemProps extends Omit<RACTreeItemProps, 'className' | 'style' | 'render' | 'onClick' | keyof GlobalDOMAttributes> {
    /** Whether this item has children, even if not loaded yet. */
    hasChildItems?: boolean;
}
export interface TreeViewLoadMoreItemProps extends Pick<TreeLoadMoreItemProps, 'onLoadMore'> {
    /** The current loading state of the TreeView or TreeView row. */
    loadingState?: LoadingState;
}
/**
 * A tree view provides users with a way to navigate nested hierarchical information.
 */
export declare const TreeView: <T extends object>(props: TreeViewProps<T> & React.RefAttributes<import("@react-types/shared").DOMRefValue<HTMLDivElement>>) => ReactElement<unknown, string | JSXElementConstructor<any>> | null;
export declare const TreeViewItem: (props: TreeViewItemProps) => ReactNode;
export interface TreeViewItemContentProps extends Omit<TreeItemContentProps, 'children'> {
    /** Rendered contents of the tree item or child items. */
    children: ReactNode;
}
export declare const TreeViewItemContent: (props: TreeViewItemContentProps) => ReactNode;
export declare const TreeViewLoadMoreItem: (props: TreeViewLoadMoreItemProps) => ReactNode;
export {};
