import { ReactNode } from 'react';
import { LightboxExternalProps } from 'yet-another-react-lightbox';
export interface ArchbaseLightboxSlide {
    /** URL da imagem */
    src: string;
    /** Título da imagem */
    title?: string;
    /** Descrição da imagem */
    description?: string;
    /** Texto alternativo */
    alt?: string;
    /** Largura da imagem (para otimização) */
    width?: number;
    /** Altura da imagem (para otimização) */
    height?: number;
    /** URL para download (se diferente de src) */
    downloadUrl?: string;
    /** Nome do arquivo para download */
    downloadFilename?: string;
}
export interface ArchbaseLightboxProps extends Omit<LightboxExternalProps, 'slides' | 'open' | 'close'> {
    /** Array de slides/imagens */
    slides: ArchbaseLightboxSlide[];
    /** Índice inicial do slide */
    index?: number;
    /** Se o lightbox está aberto */
    open: boolean;
    /** Callback ao fechar */
    onClose: () => void;
    /** Habilita zoom */
    enableZoom?: boolean;
    /** Habilita thumbnails */
    enableThumbnails?: boolean;
    /** Habilita slideshow */
    enableSlideshow?: boolean;
    /** Habilita fullscreen */
    enableFullscreen?: boolean;
    /** Habilita download */
    enableDownload?: boolean;
    /** Mostra contador */
    showCounter?: boolean;
    /** Mostra captions (título/descrição) */
    showCaptions?: boolean;
    /** Intervalo do slideshow em ms */
    slideshowDelay?: number;
    /** Nível máximo de zoom */
    maxZoomPixelRatio?: number;
    /** Callback ao mudar de slide */
    onSlideChange?: (index: number) => void;
}
export interface UseArchbaseLightboxReturn {
    /** Se o lightbox está aberto */
    isOpen: boolean;
    /** Índice atual */
    currentIndex: number;
    /** Slides configurados */
    slides: ArchbaseLightboxSlide[];
    /** Abre o lightbox */
    open: (slides: ArchbaseLightboxSlide[], index?: number) => void;
    /** Fecha o lightbox */
    close: () => void;
    /** Vai para um slide específico */
    goTo: (index: number) => void;
    /** Props para passar ao componente */
    lightboxProps: {
        slides: ArchbaseLightboxSlide[];
        index: number;
        open: boolean;
        onClose: () => void;
        onSlideChange: (index: number) => void;
    };
}
export declare function useArchbaseLightbox(): UseArchbaseLightboxReturn;
interface LightboxContextType {
    open: (slides: ArchbaseLightboxSlide[], index?: number) => void;
    close: () => void;
}
export declare function useArchbaseLightboxContext(): LightboxContextType;
export interface ArchbaseLightboxProviderProps {
    children: ReactNode;
    /** Props padrão para o lightbox */
    defaultProps?: Partial<ArchbaseLightboxProps>;
}
export declare function ArchbaseLightboxProvider({ children, defaultProps }: ArchbaseLightboxProviderProps): import("react/jsx-runtime").JSX.Element;
export declare function ArchbaseLightbox({ slides, index, open, onClose, enableZoom, enableThumbnails, enableSlideshow, enableFullscreen, enableDownload, showCounter, showCaptions, slideshowDelay, maxZoomPixelRatio, onSlideChange, ...rest }: ArchbaseLightboxProps): import("react/jsx-runtime").JSX.Element;
export declare namespace ArchbaseLightbox {
    var displayName: string;
}
export default ArchbaseLightbox;
