import React from 'react';
import type { ComponentPropsWithoutRef, SyntheticEvent } from 'react';
import { type BadgeProps } from '../../primitives/Badge';
import type { Album } from './types';
export interface AlbumCardProps extends Omit<ComponentPropsWithoutRef<'button'>, 'onSelect'> {
    /**
     * Album data to display
     */
    album: Album;
    /**
     * Callback when album card is clicked
     */
    onSelect?: (album: Album) => void;
    /**
     * Width of the card
     * @default '272px'
     */
    width?: 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;
    /**
     * Retry callback for error state
     */
    onErrorRetry?: () => void;
    /**
     * Empty state title
     * @default 'No album'
     */
    emptyTitle?: string;
    /**
     * Empty state message
     */
    emptyMessage?: string;
    /**
     * Enable lazy loading for cover image
     * @default true
     */
    imageLazy?: boolean;
    /**
     * Callback when cover image loads
     */
    onImageLoad?: (event: SyntheticEvent<HTMLImageElement>) => void;
    /**
     * Callback when cover image fails to load
     */
    onImageError?: (event: SyntheticEvent<HTMLImageElement>) => void;
    /**
     * Badge content (text or number)
     */
    badge?: string | number;
    /**
     * Badge position
     * @default 'top-right'
     */
    badgePosition?: 'top-left' | 'top-right';
    /**
     * Badge variant style
     */
    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;
    /**
     * Optional test ID for testing purposes
     */
    'data-testid'?: string;
}
/**
 * AlbumCard component - Display album cover with title and photo count below.
 *
 * Features:
 * - Shows album cover image with rounded corners and shadow
 * - Displays album title below the image
 * - Shows number of photos below the title
 * - Clickable to open album viewer
 * - Loading, error, and empty states
 * - Native lazy loading with callbacks
 * - Badge support for indicators
 * - Multi-line text support
 * - Matches OpenAI Albums design
 *
 * @example
 * ```tsx
 * <AlbumCard
 *   album={{
 *     id: '1',
 *     title: 'Summer Vacation',
 *     cover: 'https://example.com/cover.jpg',
 *     photos: [...]
 *   }}
 *   onSelect={(album) => console.log('Selected:', album)}
 *   loading={isLoading}
 *   badge="New"
 *   badgeVariant="success"
 * />
 * ```
 */
export declare const AlbumCard: React.ForwardRefExoticComponent<AlbumCardProps & React.RefAttributes<HTMLButtonElement>>;
//# sourceMappingURL=AlbumCard.d.ts.map