import React from 'react';
import { type CardProps } from './Card';
import type { IconName } from '../../tokens/icons';
export interface ListCardImage {
    src: string;
    alt: string;
    /**
     * Enable native lazy loading
     * @default true
     */
    lazy?: boolean;
}
export interface ListCardItem {
    /**
     * Small circular image for the list item (44x44).
     */
    image?: string | ListCardImage;
    /**
     * Item title using body-regular typography.
     */
    title: string;
    /**
     * Item subtitle using subheading-regular typography with secondary color.
     */
    subtitle?: string;
    /**
     * Item description using body-small-regular typography.
     */
    description?: string;
    /**
     * Callback when the item action button is clicked.
     */
    onItemAction?: (event: React.MouseEvent<HTMLButtonElement>) => void;
    /**
     * Accessibility label for item action button
     * REQUIRED when onItemAction is provided for proper accessibility
     */
    actionLabel?: string;
    /**
     * Callback when item image loads successfully
     */
    onImageLoad?: (event: React.SyntheticEvent<HTMLImageElement>) => void;
    /**
     * Callback when item image fails to load
     */
    onImageError?: (event: React.SyntheticEvent<HTMLImageElement>) => void;
}
export interface ListCardProps extends Omit<CardProps, 'children'> {
    /**
     * Top image displayed at 210px height.
     */
    topImage?: string | ListCardImage;
    /**
     * Header title using body-emph typography.
     */
    headerTitle?: string;
    /**
     * Callback when the header action button is clicked.
     */
    onHeaderAction?: (event: React.MouseEvent<HTMLButtonElement>) => void;
    /**
     * Array of list items to display.
     */
    items?: ListCardItem[];
    /**
     * Button text. If provided, action button will be displayed.
     */
    buttonText?: string;
    /**
     * Callback when the action button is clicked.
     */
    onButtonClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
    /**
     * Whether the action button is disabled.
     */
    buttonDisabled?: boolean;
    /**
     * Loading state - shows skeleton UI
     * @default false
     */
    loading?: boolean;
    /**
     * Number of skeleton items to show during loading
     * @default 3
     */
    loadingItemCount?: number;
    /**
     * Error state - shows error message
     * @default false
     */
    error?: boolean;
    /**
     * Custom error title
     * @default 'Failed to load'
     */
    errorTitle?: string;
    /**
     * Custom error message
     */
    errorMessage?: string;
    /**
     * Error retry handler - shows retry button when provided
     */
    onErrorRetry?: () => void;
    /**
     * Empty state title
     * @default 'No items'
     */
    emptyTitle?: string;
    /**
     * Empty state message
     */
    emptyMessage?: string;
    /**
     * Empty state icon
     */
    emptyIcon?: IconName;
    /**
     * Top image lazy loading
     * @default true
     */
    topImageLazy?: boolean;
    /**
     * Item images lazy loading
     * @default true
     */
    itemImagesLazy?: boolean;
    /**
     * Callback when top image loads successfully
     */
    onTopImageLoad?: (event: React.SyntheticEvent<HTMLImageElement>) => void;
    /**
     * Callback when top image fails to load
     */
    onTopImageError?: (event: React.SyntheticEvent<HTMLImageElement>) => void;
    /**
     * Accessibility label for header action button
     * REQUIRED when onHeaderAction is provided for proper accessibility
     */
    headerActionLabel?: string;
}
export declare const ListCard: React.ForwardRefExoticComponent<ListCardProps & React.RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=ListCard.d.ts.map