export type MediaType = 'image' | 'video' | 'external';
export type GalleryLayout = 'grid' | 'masonry' | 'carousel';
export type AnimationType = 'fade' | 'slide' | 'zoom' | 'none';
export type ThumbnailPosition = 'bottom' | 'top' | 'left' | 'right';
export interface ImageMetadata {
    camera?: string;
    lens?: string;
    aperture?: string;
    shutterSpeed?: string;
    iso?: string;
    focalLength?: string;
    dateTaken?: string;
    fileSize?: string;
    dimensions?: string;
}
export interface GalleryItem {
    id: string;
    src: string;
    thumbnail: string;
    alt: string;
    title: string;
    description: string;
    metadata?: ImageMetadata;
    type: MediaType;
    isFavorite: boolean;
}
export interface GalleryConfigProps {
    layout: GalleryLayout;
    animation: AnimationType;
    thumbnailsPosition: ThumbnailPosition;
    enableZoom: boolean;
    onConfigChange: (config: Partial<GalleryConfigProps>) => void;
}
export interface GalleryProps {
    images: GalleryItem[];
    layout?: GalleryLayout;
    animation?: AnimationType;
    thumbnailsPosition?: ThumbnailPosition;
    enableZoom?: boolean;
    darkMode?: boolean;
    onImageClick?: (image: GalleryItem) => void;
    onFavoriteToggle?: (image: GalleryItem) => void;
    onImageRemove?: (image: GalleryItem) => void;
    onImageUpload?: (files: File[]) => void;
}
