import { HTMLAttributes, ReactNode, ForwardRefExoticComponent, RefAttributes } from 'react';
export type CarouselOrientation = 'horizontal' | 'vertical';
export interface CarouselOptions {
    /**
     * Alignment of carousel items
     * @default 'start'
     */
    align?: 'start' | 'center' | 'end';
    /**
     * Enable infinite looping
     * @default false
     */
    loop?: boolean;
    /**
     * Number of slides to scroll at a time
     * @default 1
     */
    slidesToScroll?: number;
    /**
     * Enable drag interaction
     * @default true
     */
    draggable?: boolean;
    /**
     * Drag threshold for slide change (0-1)
     * @default 0.1
     */
    dragThreshold?: number;
}
export interface CarouselContextValue {
    currentIndex: number;
    totalSlides: number;
    scrollTo: (index: number) => void;
    scrollPrev: () => void;
    scrollNext: () => void;
    canScrollPrev: boolean;
    canScrollNext: boolean;
    orientation: CarouselOrientation;
    opts: CarouselOptions;
}
export interface CarouselProps extends HTMLAttributes<HTMLDivElement> {
    /**
     * Carousel orientation
     * @default 'horizontal'
     */
    orientation?: CarouselOrientation;
    /**
     * Carousel configuration options
     */
    opts?: CarouselOptions;
    /**
     * Whether to show default navigation controls
     * @default false
     */
    showControls?: boolean;
    /**
     * Initial slide index
     * @default 0
     */
    defaultIndex?: number;
    /**
     * Callback when slide changes
     */
    onSlideChange?: (index: number) => void;
    /**
     * Custom class name for the carousel container
     */
    className?: string;
    /**
     * Children components (CarouselBody, CarouselPrevious, CarouselNext)
     */
    children?: ReactNode;
}
export interface CarouselBodyProps extends HTMLAttributes<HTMLDivElement> {
    /**
     * Custom class name for the body container
     */
    className?: string;
    /**
     * Children components (CarouselItem)
     */
    children?: ReactNode;
}
export interface CarouselItemProps extends HTMLAttributes<HTMLDivElement> {
    /**
     * Custom class name for the item
     */
    className?: string;
    /**
     * Children content to display in the slide
     */
    children?: ReactNode;
}
export interface CarouselControlProps extends HTMLAttributes<HTMLButtonElement> {
    /**
     * Custom class name for the button
     */
    className?: string;
    /**
     * Custom icon to override default arrow
     */
    icon?: ReactNode;
    /**
     * Accessible label for the button
     */
    'aria-label'?: string;
}
export interface CarouselComponent extends ForwardRefExoticComponent<CarouselProps & RefAttributes<HTMLDivElement>> {
    Body: ForwardRefExoticComponent<CarouselBodyProps & RefAttributes<HTMLDivElement>>;
    Item: ForwardRefExoticComponent<CarouselItemProps & RefAttributes<HTMLDivElement>>;
    Previous: ForwardRefExoticComponent<CarouselControlProps & RefAttributes<HTMLButtonElement>>;
    Next: ForwardRefExoticComponent<CarouselControlProps & RefAttributes<HTMLButtonElement>>;
}
