import { default as React } from 'react';

export interface ListItemData {
    id: string;
    title: string;
    description?: string;
    disabled?: boolean;
    icon?: React.ReactNode;
    avatar?: React.ReactNode;
    badge?: React.ReactNode;
    action?: React.ReactNode;
    [key: string]: unknown;
}
export interface ListProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
    items?: ListItemData[];
    value?: string | string[] | null;
    onChange?: (value: string | string[] | null) => void;
    variant?: 'default' | 'bordered' | 'card' | 'minimal' | 'elevated';
    size?: 'sm' | 'md' | 'lg';
    status?: 'default' | 'success' | 'warning' | 'error' | 'info';
    disabled?: boolean;
    loading?: boolean;
    selectable?: boolean;
    multiple?: boolean;
    maxSelection?: number;
    label?: string;
    helperText?: string;
    required?: boolean;
    emptyMessage?: string;
    loadingMessage?: string;
    onItemClick?: (item: ListItemData) => void;
    onItemSelect?: (item: ListItemData) => void;
    renderItem?: (item: ListItemData, isSelected: boolean) => React.ReactNode;
    children?: React.ReactNode;
    className?: string;
    style?: React.CSSProperties;
}
interface ListContextValue {
    items: ListItemData[];
    value: string | string[] | null;
    onChange: (value: string | string[] | null) => void;
    variant?: 'default' | 'bordered' | 'card' | 'minimal' | 'elevated';
    size?: 'sm' | 'md' | 'lg';
    status?: 'default' | 'success' | 'warning' | 'error' | 'info';
    disabled?: boolean;
    loading?: boolean;
    selectable?: boolean;
    multiple?: boolean;
    maxSelection?: number;
    onItemClick?: (item: ListItemData) => void;
    onItemSelect?: (item: ListItemData) => void;
    renderItem?: (item: ListItemData, isSelected: boolean) => React.ReactNode;
    emptyMessage?: string;
    loadingMessage?: string;
}
export declare const useList: () => ListContextValue;
declare const List: React.ForwardRefExoticComponent<ListProps & React.RefAttributes<HTMLDivElement>>;
export interface ListContainerProps extends React.HTMLAttributes<HTMLDivElement> {
    children?: React.ReactNode;
}
declare const ListContainer: React.ForwardRefExoticComponent<ListContainerProps & React.RefAttributes<HTMLDivElement>>;
export interface ListItemProps extends React.HTMLAttributes<HTMLDivElement> {
    item: ListItemData;
}
declare const ListItem: React.ForwardRefExoticComponent<ListItemProps & React.RefAttributes<HTMLDivElement>>;
export interface ListHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
    children?: React.ReactNode;
}
declare const ListHeader: React.ForwardRefExoticComponent<ListHeaderProps & React.RefAttributes<HTMLDivElement>>;
export interface ListFooterProps extends React.HTMLAttributes<HTMLDivElement> {
    children?: React.ReactNode;
}
declare const ListFooter: React.ForwardRefExoticComponent<ListFooterProps & React.RefAttributes<HTMLDivElement>>;
export { List, ListContainer, ListItem, ListHeader, ListFooter };
