import type { ReactNode, Ref, SyntheticEvent } from 'react';
import type { NoChildrenProp, BaseProps, TestIdProp } from '../../types';
import type { BackdropProps } from '../Backdrop/Backdrop';
export type MediaElement = HTMLImageElement | HTMLObjectElement | HTMLVideoElement | HTMLAudioElement;
export interface LightboxProps extends NoChildrenProp, BaseProps, TestIdProp {
    /** A list of compatible content to present in the lightbox. */
    items: LightboxItem[];
    /**
     * The index of the item to present on mount.
     * @default 0
     */
    defaultIndex?: number;
    /**
     * Allow cycling through the items in either direction.
     * @default false
     */
    cycle?: boolean;
    /** Called when an item's file is loaded. */
    onItemLoad?: (id: LightboxItem['id'], e: SyntheticEvent<MediaElement> | Event) => void;
    /** Called when an item's file encounters an error while loading. */
    onItemError?: (id: LightboxItem['id'], e: SyntheticEvent<MediaElement> | Event) => void;
    /** Called when the user navigates between items. */
    onNavigate?: (id: LightboxItem['id'], index: number) => void;
    /** Called when a download action is triggered for an item's file. */
    onItemDownload?: (id: LightboxItem['id']) => void;
    /** Called after the lightbox has transitioned out. */
    onAfterClose?: BackdropProps['onAfterTransitionOut'];
    /** A ref to the underlying root element of the lightbox. */
    ref?: BackdropProps['ref'];
}
export interface LightboxItem {
    /** A unique identifier for the item. */
    id: string;
    /** The item's name e.g. filename. */
    name: string;
    /** Text to describe the item. */
    description?: string;
    /** URL for the item's binary file. Pass null for when src is not yet available. */
    src: string | null;
    /** File extension. Use 'url' for link */
    format: string | undefined;
    /**
     * Prop for showing Error state
     * @default false
     */
    error?: boolean;
    /** Additional info about the item. */
    metadata?: ReactNode[];
    /** A ref to the item's underlying element. */
    ref?: Ref<MediaElement>;
}
//# sourceMappingURL=Lightbox.types.d.ts.map