import { ReactNode } from "react";
import "./index.css";
export declare type Photo = {
    key: string | number;
    src: string;
    width: number;
    height: number;
    alt: string;
    loading?: "lazy" | "eager";
};
export declare type ColumnsProvider = (containerWidth: number) => number;
export declare type Spacing = number | {
    horizontal: number;
    vertical: number;
};
export declare type SpacingProvider = (containerWidth: number) => Spacing;
export interface GalleryProps {
    /** photo list */
    photos: Photo[];
    /** provider column number or column function */
    columns?: number | ColumnsProvider;
    /** vertical or horizontal space provider */
    spacing?: Spacing | SpacingProvider;
    /** For SSR env */
    initialContainerWidth?: number;
    /** customize photo renderer */
    renderPhoto?: (photo: Photo, index: number) => ReactNode;
    /** optional: footer height */
    footerHeight?: number;
    /** optional: customize footer renderer */
    renderFooter?: (photo: Photo, index: number) => ReactNode;
}
declare const Gallery: ({ photos, columns, spacing, initialContainerWidth, footerHeight, renderPhoto, renderFooter, }: GalleryProps) => JSX.Element;
export default Gallery;
