import { ReactNode, MouseEvent, CSSProperties, ComponentType } from 'react'; type Key = string | number; interface ImageTag { value: ReactNode; title: string; key?: Key; } interface Image { key?: Key; src: string; width: number; height: number; nano?: string; alt?: string; tags?: ImageTag[]; isSelected?: boolean; caption?: ReactNode; customOverlay?: ReactNode; thumbnailCaption?: ReactNode; orientation?: number; } type ImageExtended = T & { scaledWidth: number; scaledHeight: number; viewportWidth: number; marginLeft: number; }; interface BuildLayoutOptions { containerWidth: number; maxRows?: number; rowHeight?: number; margin?: number; } type ImageExtendedRow = ImageExtended[]; type EventHandler = (index: number, item: T, event: MouseEvent) => void; type StyleFunctionContext = { item: T; }; type StyleFunction = (context: StyleFunctionContext) => CSSProperties; type StyleProp = CSSProperties | StyleFunction; interface ImageProps { item: T; index: number; margin: number; isSelectable: boolean; onClick: (index: number, event: MouseEvent) => void; onSelect: (index: number, event: MouseEvent) => void; tileViewportStyle: StyleProp; thumbnailStyle: StyleProp; tagStyle: StyleProp; height?: number; thumbnailImageComponent?: ComponentType; } interface ThumbnailImageComponentImageProps { key: string | number; src: string; alt: string; title: string | null; style: CSSProperties; } type ThumbnailImageProps = ImageProps & { imageProps: ThumbnailImageComponentImageProps; }; interface GalleryProps { images: T[]; id?: string; enableImageSelection?: boolean; onSelect?: EventHandler; rowHeight?: number; maxRows?: number; margin?: number; defaultContainerWidth?: number; onClick?: EventHandler; tileViewportStyle?: StyleProp; thumbnailStyle?: StyleProp; tagStyle?: StyleProp; thumbnailImageComponent?: ComponentType; } interface CheckButtonProps { isSelected: boolean; isVisible: boolean; onClick: (event: MouseEvent) => void; color?: string; selectedColor?: string; hoverColor?: string; } declare const Gallery: { ({ images, id, enableImageSelection, onSelect, rowHeight, maxRows, margin, defaultContainerWidth, onClick, tileViewportStyle, thumbnailStyle, tagStyle, thumbnailImageComponent, }: GalleryProps): JSX.Element; displayName: string; }; declare const CheckButton: ({ isSelected, isVisible, onClick, color, selectedColor, hoverColor, }: CheckButtonProps) => JSX.Element; declare const buildLayout: (images: T[], { containerWidth, maxRows, rowHeight, margin }: BuildLayoutOptions) => ImageExtendedRow[]; declare const buildLayoutFlat: (images: T[], options: BuildLayoutOptions) => ImageExtendedRow; export { BuildLayoutOptions, CheckButton, CheckButtonProps, EventHandler, Gallery, GalleryProps, Image, ImageExtended, ImageExtendedRow, ImageProps, ImageTag, StyleFunction, StyleFunctionContext, StyleProp, ThumbnailImageComponentImageProps, ThumbnailImageProps, buildLayout, buildLayoutFlat };