/// <reference types="react" />
export declare type ListItemVariant = 'default' | 'multi-line' | 'compact';
export declare type ListItemState = 'default' | 'unavailable' | 'disabled';
export declare type PrefixType = 'thumbnail' | 'avatar' | 'action' | 'illustration' | 'icon';
export declare type CompactPrefixType = Extract<PrefixType, 'icon' | 'action'>;
declare type PrefixImage = {
    type: Extract<PrefixType, 'thumbnail' | 'avatar'>;
    img?: string;
};
declare type PrefixIllustration = {
    type: Extract<PrefixType, 'illustration'>;
    element: React.ReactNode;
};
declare type PrefixAction = {
    type: Extract<PrefixType, 'action'>;
    element: React.ReactNode;
    htmlFor?: string;
};
declare type PrefixIcon = {
    type: Extract<PrefixType, 'icon'>;
    element: React.ReactNode;
};
export declare type Prefix = PrefixImage | PrefixIllustration | PrefixAction | PrefixIcon;
export declare type CompactPrefix = PrefixAction | PrefixIcon;
export declare type SuffixType = 'metaText' | Extract<PrefixType, 'icon' | 'action'>;
declare type SuffixMetaText = {
    type: Extract<SuffixType, 'metaText'>;
    text: string;
};
declare type SuffixIcon = PrefixIcon;
declare type SuffixAction = PrefixAction;
export declare type Suffix = SuffixMetaText | SuffixAction | SuffixIcon;
declare type BaseListItemProps = {
    variant?: ListItemVariant;
    primaryText: string;
    prefix?: Prefix;
    suffix?: Suffix;
    divider?: boolean;
    onClick?: () => void;
    state?: ListItemState;
    dividerStartsFromText?: boolean;
    disabled?: boolean;
};
declare type DefaultListItemProps = BaseListItemProps & {
    variant: Extract<ListItemVariant, 'default'>;
};
declare type MultiLineListItemProps = BaseListItemProps & {
    variant: Extract<ListItemVariant, 'multi-line'>;
    secondaryText: React.ReactNode | string;
};
export declare type CompactListItemProps = BaseListItemProps & {
    variant: Extract<ListItemVariant, 'compact'>;
    prefix?: CompactPrefix;
};
export declare type ListItemPrefixProps = {
    prefix: Prefix;
    variant: ListItemVariant;
};
export declare type ListItemSuffixProps = {
    suffix: Suffix;
    variant: ListItemVariant;
};
export declare type ListItemContentProps = {
    primaryText: string;
    secondaryText?: React.ReactNode | string;
    variant: ListItemVariant;
    prefix?: Prefix;
    suffix?: Suffix;
};
export declare type ListItemProps = DefaultListItemProps | MultiLineListItemProps | CompactListItemProps;
export {};
