import React from 'react';
import type { ComponentPropsWithoutRef, ReactNode } from 'react';
export interface ListHeaderProps {
    /**
     * Primary heading for the list.
     */
    title: ReactNode;
    /**
     * Optional supporting text shown under the title.
     */
    subtitle?: ReactNode;
    /**
     * Optional visual shown to the left of the title.
     * Provide a string URL or a custom ReactNode.
     */
    thumbnail?: string | ReactNode;
    /**
     * Accessible alternative text for the thumbnail when a URL is provided.
     */
    thumbnailAlt?: string;
    /**
     * Optional action element rendered on the right (desktop) or below (mobile).
     */
    action?: ReactNode;
}
export interface ListProps<T = unknown> extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {
    /**
     * Optional header configuration (title, subtitle, thumbnail, actions).
     */
    header?: ListHeaderProps;
    /**
     * Array of data items to render.
     */
    items: T[];
    /**
     * Render function for list rows.
     */
    renderItem: (item: T, index: number) => ReactNode;
    /**
     * Message to show when the list is empty.
     * @default "No items found."
     */
    emptyMessage?: ReactNode;
    /**
     * Controls whether divider lines are rendered between rows.
     * @default true
     */
    showDividers?: boolean;
    /**
     * Loading state - renders items with loading context or skeleton items
     * @default false
     *
     * @remarks
     * When true:
     * - If items array has content, they will be rendered (pass items with loading prop for best UX)
     * - If no items, renders skeleton list items based on loadingItems count
     */
    loading?: boolean;
    /**
     * Number of skeleton items to show when loading and no items provided
     * @default 3
     */
    loadingItems?: number;
    /**
     * Error state - shows error message
     * @default false
     */
    error?: boolean;
    /**
     * Custom error title
     * @default 'Failed to load items'
     */
    errorTitle?: string;
    /**
     * Custom error message
     */
    errorMessage?: string;
    /**
     * Error retry handler - shows retry button when provided
     */
    onErrorRetry?: () => void;
    /**
     * Empty state title when no items provided
     * @default 'No items'
     */
    emptyTitle?: string;
    /**
     * Custom empty state content
     */
    emptyState?: React.ReactNode;
}
export declare const List: <T>(props: ListProps<T> & {
    ref?: React.ForwardedRef<HTMLDivElement>;
}) => React.ReactElement | null;
export type { ListItemProps, Feature } from './ListItem';
export { ListItem } from './ListItem';
//# sourceMappingURL=List.d.ts.map