import { ReactNode } from 'react';
import { BoxProps } from '@mantine/core';
export interface ArchbaseCarouselProps extends Omit<BoxProps, 'children'> {
    /** Slides do carousel */
    children: ReactNode[];
    /** Slide inicial (0-indexed) */
    initialSlide?: number;
    /** Slides visíveis por vez */
    slidesToShow?: number;
    /** Slides para avançar por clique */
    slidesToScroll?: number;
    /** Gap entre slides em pixels */
    gap?: number;
    /** Mostrar controles de navegação */
    showControls?: boolean;
    /** Posição dos controles */
    controlsPosition?: 'sides' | 'bottom' | 'bottom-right';
    /** Tamanho dos controles */
    controlSize?: number;
    /** Mostrar indicadores (dots) */
    showIndicators?: boolean;
    /** Posição dos indicadores */
    indicatorsPosition?: 'bottom' | 'top';
    /** Loop infinito */
    loop?: boolean;
    /** Autoplay */
    autoplay?: boolean;
    /** Intervalo do autoplay em ms */
    autoplayInterval?: number;
    /** Pausar autoplay no hover */
    pauseOnHover?: boolean;
    /** Mostrar botão de play/pause */
    showPlayPause?: boolean;
    /** Animação de transição */
    transitionDuration?: number;
    /** Função de easing */
    transitionTimingFunction?: string;
    /** Callback ao mudar slide */
    onSlideChange?: (index: number) => void;
    /** Altura do carousel */
    height?: number | string;
    /** Controle externo do slide atual */
    activeSlide?: number;
    /** Arrastar para navegar */
    draggable?: boolean;
    /** Alinhamento dos slides */
    align?: 'start' | 'center' | 'end';
    /** Orientação */
    orientation?: 'horizontal' | 'vertical';
}
export declare function ArchbaseCarousel({ children, initialSlide, slidesToShow, slidesToScroll, gap, showControls, controlsPosition, controlSize, showIndicators, indicatorsPosition, loop, autoplay, autoplayInterval, pauseOnHover, showPlayPause, transitionDuration, transitionTimingFunction, onSlideChange, height, activeSlide: controlledSlide, draggable, align, orientation, ...boxProps }: ArchbaseCarouselProps): import("react/jsx-runtime").JSX.Element;
export interface ArchbaseCarouselSlideProps extends BoxProps {
    children: ReactNode;
}
export declare function ArchbaseCarouselSlide({ children, ...props }: ArchbaseCarouselSlideProps): import("react/jsx-runtime").JSX.Element;
export interface ImageSlide {
    src: string;
    alt?: string;
    title?: string;
    description?: string;
}
export interface ArchbaseImageCarouselProps extends Omit<ArchbaseCarouselProps, 'children'> {
    /** Array de imagens */
    images: ImageSlide[];
    /** Object fit das imagens */
    objectFit?: 'cover' | 'contain' | 'fill' | 'none';
    /** Mostrar overlay com título/descrição */
    showOverlay?: boolean;
    /** Posição do overlay */
    overlayPosition?: 'bottom' | 'top' | 'center';
    /** Callback ao clicar em uma imagem */
    onImageClick?: (image: ImageSlide, index: number) => void;
}
export declare function ArchbaseImageCarousel({ images, objectFit, showOverlay, overlayPosition, onImageClick, ...carouselProps }: ArchbaseImageCarouselProps): import("react/jsx-runtime").JSX.Element;
export interface ArchbaseCardCarouselProps extends Omit<ArchbaseCarouselProps, 'children'> {
    /** Renderizador de card */
    renderCard: (index: number) => ReactNode;
    /** Total de cards */
    totalCards: number;
}
export declare function ArchbaseCardCarousel({ renderCard, totalCards, slidesToShow, gap, ...carouselProps }: ArchbaseCardCarouselProps): import("react/jsx-runtime").JSX.Element;
export interface UseArchbaseCarouselOptions {
    totalSlides: number;
    slidesToShow?: number;
    slidesToScroll?: number;
    loop?: boolean;
    initialSlide?: number;
}
export declare function useArchbaseCarousel({ totalSlides, slidesToShow, slidesToScroll, loop, initialSlide, }: UseArchbaseCarouselOptions): {
    activeSlide: number;
    setActiveSlide: (index: number) => void;
    goToPrev: () => void;
    goToNext: () => void;
    goToFirst: () => void;
    goToLast: () => void;
    canGoPrev: boolean;
    canGoNext: boolean;
    maxSlide: number;
};
export default ArchbaseCarousel;
