import React from 'react';
import { type CardProps } from './Card';
import { type BadgeProps } from '../../primitives/Badge';
import type { IconName } from '../../tokens/icons';
export interface ImageCardProps extends Omit<CardProps, 'children'> {
    /**
     * Image source URL or object with src and alt
     */
    image: string | {
        src: string;
        alt: string;
    };
    /**
     * Image positioning
     * @default 'center'
     */
    imagePosition?: 'center' | 'top' | 'bottom';
    /**
     * Card title (optional - only renders if provided)
     */
    title?: string;
    /**
     * Card subtitle (optional - only renders if provided)
     */
    subtitle?: string;
    /**
     * Action button icon (optional - only renders if provided)
     */
    actionIcon?: IconName;
    /**
     * Accessibility label for action button
     * REQUIRED when actionIcon is provided for proper accessibility
     */
    actionLabel?: string;
    /**
     * Action button click handler
     */
    onAction?: (event: React.MouseEvent<HTMLButtonElement>) => void;
    /**
     * Size variant for the card.
     * @default 'default'
     */
    size?: 'default' | 'compact';
    /**
     * Custom minimum height for the card. Accepts number (px) or CSS length.
     */
    minHeight?: number | string;
    /**
     * Custom aspect ratio for the card (e.g. '16 / 9').
     */
    aspectRatio?: string;
    /**
     * Loading state - shows skeleton UI
     * @default false
     */
    loading?: boolean;
    /**
     * 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;
    /**
     * Badge content (text or number)
     */
    badge?: string | number;
    /**
     * Badge position
     * @default 'top-right'
     */
    badgePosition?: 'top-left' | 'top-right';
    /**
     * Badge variant (inherits from Badge component)
     * @default 'default'
     */
    badgeVariant?: BadgeProps['variant'];
    /**
     * Number of lines for title (1-3)
     * @default 1
     */
    titleLines?: 1 | 2 | 3;
    /**
     * Number of lines for subtitle (1-3)
     * @default 1
     */
    subtitleLines?: 1 | 2 | 3;
    /**
     * Callback when image loads successfully
     */
    onImageLoad?: (event: React.SyntheticEvent<HTMLImageElement>) => void;
    /**
     * Callback when image fails to load
     */
    onImageError?: (event: React.SyntheticEvent<HTMLImageElement>) => void;
    /**
     * Enable native lazy loading
     * @default true
     */
    lazy?: boolean;
}
/**
 * ImageCard component - Card with background image overlay.
 *
 * Features:
 * - Full background image with configurable positioning
 * - Optional text overlay (title, subtitle) with multi-line support
 * - Optional action button
 * - Optional badge support (top-left or top-right)
 * - Gradient overlay for text readability
 * - Loading and error states
 * - Native lazy loading support
 * - Image load/error callbacks
 * - Inherits all Card props (elevation, interactive, etc.)
 *
 * @example
 * ```tsx
 * // Full featured
 * <ImageCard
 *   image="https://example.com/pizza.jpg"
 *   title="Margherita Pizza"
 *   subtitle="Classic Italian"
 *   actionIcon="plus-circle-add"
 *   onAction={() => console.log('Added')}
 *   actionLabel="Add to cart"
 *   badge="New"
 *   badgeVariant="success"
 *   interactive
 * />
 *
 * // With loading state
 * <ImageCard
 *   image="https://example.com/pizza.jpg"
 *   title="Margherita Pizza"
 *   loading={isLoading}
 * />
 *
 * // With error state
 * <ImageCard
 *   image="https://example.com/pizza.jpg"
 *   error={hasError}
 *   errorTitle="Failed to load"
 *   errorMessage="Unable to load this image"
 *   onErrorRetry={handleRetry}
 * />
 * ```
 */
export declare const ImageCard: React.ForwardRefExoticComponent<ImageCardProps & React.RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=ImageCard.d.ts.map