import { Accessibility, ListItemBehaviorProps } from '@fluentui/accessibility';
import * as PropTypes from 'prop-types';
import * as React from 'react';
import { ShorthandValue, ComponentEventHandler, FluentComponentStaticProps } from '../../types';
import { UIComponentProps, ContentComponentProps } from '../../utils';
import { ListItemContentProps } from './ListItemContent';
import { ListItemContentMediaProps } from './ListItemContentMedia';
import { ListItemEndMediaProps } from './ListItemEndMedia';
import { ListItemHeaderProps } from './ListItemHeader';
import { ListItemHeaderMediaProps } from './ListItemHeaderMedia';
import { ListItemMediaProps } from './ListItemMedia';
export interface ListItemSlotClassNames {
    headerWrapper: string;
    contentWrapper: string;
    main: string;
}
export interface ListItemProps extends UIComponentProps, ContentComponentProps<ShorthandValue<ListItemContentProps>> {
    /** Accessibility behavior if overridden by the user. */
    accessibility?: Accessibility<ListItemBehaviorProps>;
    contentMedia?: ShorthandValue<ListItemContentMediaProps>;
    /** Toggle debug mode. */
    debug?: boolean;
    header?: ShorthandValue<ListItemHeaderProps>;
    headerMedia?: ShorthandValue<ListItemHeaderMediaProps>;
    endMedia?: ShorthandValue<ListItemEndMediaProps>;
    /** A list item can appear more important and draw the user's attention. */
    important?: boolean;
    media?: ShorthandValue<ListItemMediaProps>;
    index?: number;
    /** A list item can indicate that it can be selected. */
    selectable?: boolean;
    /** A list item can indicate that it can be navigable. */
    navigable?: boolean;
    /** Indicates if the current list item is selected. */
    selected?: boolean;
    truncateContent?: boolean;
    truncateHeader?: boolean;
    /**
     * Called on click.
     *
     * @param event - React's original SyntheticEvent.
     * @param data - All props.
     */
    onClick?: ComponentEventHandler<ListItemProps>;
}
export declare type ListItemStylesProps = Pick<ListItemProps, 'debug' | 'important' | 'navigable' | 'selectable' | 'selected'>;
export declare const listItemClassName = "ui-list__item";
export declare const listItemSlotClassNames: ListItemSlotClassNames;
/**
 * A ListItem contains a single piece of content within a List.
 */
export declare const ListItem: (<TExtendedElementType extends React.ElementType<any> = "li">(props: React.RefAttributes<HTMLLIElement> & Omit<import("@fluentui/react-bindings").PropsOfElement<TExtendedElementType>, "as" | keyof ListItemProps> & {
    as?: TExtendedElementType;
} & ListItemProps & {
    index: number;
}) => JSX.Element) & {
    propTypes?: React.WeakValidationMap<ListItemProps & {
        index: number;
    }> & {
        as: React.Requireable<string | ((props: any, context?: any) => any) | (new (props: any, context?: any) => any)>;
    };
    contextTypes?: PropTypes.ValidationMap<any>;
    defaultProps?: Partial<ListItemProps & {
        index: number;
    } & {
        as: "li";
    }>;
    displayName?: string;
    readonly __PRIVATE_PROPS?: React.RefAttributes<HTMLLIElement> & Omit<Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "key" | keyof React.LiHTMLAttributes<HTMLLIElement>> & {
        ref?: React.Ref<HTMLLIElement>;
    }, "as" | keyof ListItemProps> & {
        as?: "li";
    } & ListItemProps & {
        index: number;
    };
} & FluentComponentStaticProps<ListItemProps>;
