import { ContextValue, SlotProps } from 'react-aria-components/slots';
import { StylesPropWithHeight, UnsafeStyles } from './style-utils';
import { ReactElement, ReactNode } from 'react';
import { DOMProps, DOMRefValue, GlobalDOMAttributes, LoadingState } from '@react-types/shared';
import { GridListItemProps, GridListProps } from 'react-aria-components/GridList';
import { Key } from '@react-types/shared';
import { ListState } from 'react-stately/useListState';
export interface ListViewProps<T> extends Omit<GridListProps<T>, 'className' | 'style' | 'children' | 'selectionBehavior' | 'dragAndDropHooks' | 'layout' | 'render' | 'keyboardNavigationBehavior' | 'orientation' | keyof GlobalDOMAttributes>, DOMProps, UnsafeStyles, ListViewStylesProps, SlotProps {
    /** Spectrum-defined styles, returned by the `style()` macro. */
    styles?: StylesPropWithHeight;
    /** The current loading state of the ListView. */
    loadingState?: LoadingState;
    /** Handler that is called when more items should be loaded, e.g. while scrolling near the bottom. */
    onLoadMore?: () => void;
    /** The children of the ListView. */
    children: ReactNode | ((item: T) => ReactNode);
    /** Provides the ActionBar to display when items are selected in the ListView. */
    renderActionBar?: (selectedKeys: 'all' | Set<Key>) => ReactElement;
    /** Hides the default link out icons on items that open links in a new tab. */
    hideLinkOutIcon?: boolean;
}
interface ListViewStylesProps {
    /** Whether the ListView should be displayed with a quiet style. */
    isQuiet?: boolean;
    /**
     * How selection should be displayed.
     * @default 'checkbox'
     */
    selectionStyle?: 'highlight' | 'checkbox';
    /**
     * Sets the overflow behavior for item contents.
     * @default 'truncate'
     */
    overflowMode?: 'wrap' | 'truncate';
}
export interface ListViewItemProps extends Omit<GridListItemProps, 'children' | 'className' | 'style' | 'render' | 'onClick' | keyof GlobalDOMAttributes> {
    /**
     * The contents of the item.
     */
    children: ReactNode;
    /** Whether the item has child items (renders a chevron indicator). */
    hasChildItems?: boolean;
}
export declare const ListViewContext: import("react").Context<ContextValue<Partial<ListViewProps<any>>, DOMRefValue<HTMLDivElement>>>;
/**
 * A ListView displays a list of interactive items, and allows a user to navigate, select, or perform an action.
 */
export declare const ListView: <T extends object>(props: ListViewProps<T> & import("react").RefAttributes<DOMRefValue<HTMLDivElement>>) => ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
export declare let label: (props: {
    overflowMode: "wrap" | undefined;
    size: "L" | "S" | "XL" | "XS" | undefined;
} | {
    [x: string]: any;
}) => import("../style/types").StyleString<"alignSelf" | "color" | "font" | "gridArea" | "truncate" | "whiteSpace">;
export declare let description: (props: {
    isDisabled: boolean | undefined;
    isFocusVisible: boolean | undefined;
    isHovered: boolean | undefined;
    isPressed: boolean | undefined;
    overflowMode: "wrap" | undefined;
} | {
    [x: string]: any;
}) => import("../style/types").StyleString<"alignSelf" | "color" | "font" | "gridArea" | "transition" | "truncate" | "whiteSpace">;
export declare let iconCenterWrapper: import("../style/types").StyleString<"alignItems" | "alignSelf" | "display" | "gridArea" | "gridRowEnd">;
export declare let icon: import("../style/types").StyleString<"--iconPrimary" | "display" | "marginEnd" | "size">;
export declare function isPrevSelected(id: Key | undefined, state: ListState<unknown>): boolean;
export declare function isFirstItem(id: Key | undefined, state: ListState<unknown>): boolean;
export declare function ListViewItem(props: ListViewItemProps): ReactNode;
export {};
