import React from 'react';
import type { EmblaCarouselType } from 'embla-carousel';
export interface CarouselProps {
    /**
     * Slide content - typically Card components.
     * Optional when using loading, error, or empty states.
     */
    children?: React.ReactNode;
    /**
     * Alignment of slides within the viewport.
     * @default 'center'
     */
    align?: 'start' | 'center' | 'end';
    /**
     * Enable infinite looping.
     * @default false
     */
    loop?: boolean;
    /**
     * Show navigation buttons (prev/next arrows).
     * @default true
     */
    showNavigation?: boolean;
    /**
     * Show edge gradient overlays.
     * @default true
     */
    showEdgeGradients?: boolean;
    /**
     * Gap between slides using CSS custom property.
     * @default 'var(--ai-spacing-8)'
     */
    gap?: string;
    /**
     * Callback when slide changes.
     */
    onSlideChange?: (index: number) => void;
    /**
     * Additional class name for the container.
     */
    className?: string;
    /**
     * Additional inline styles for the container.
     */
    style?: React.CSSProperties;
    /**
     * Remove the leading offset so the first slide is flush with the viewport start.
     * @default false
     */
    flushStart?: boolean;
    /**
     * Custom left inset inside the carousel container.
     * Useful for re-introducing padding when using `flushStart`.
     * @default '0'
     */
    startInset?: string;
    /**
     * Custom viewport padding (top and bottom).
     * @default 'var(--ai-spacing-10)'
     */
    viewportPadding?: string;
    /**
     * Optional callback that receives the Embla API instance once ready.
     */
    onApi?: (api: EmblaCarouselType | null) => void;
    /**
     * Enable drag-free scrolling (free-scrolling without snapping to slides).
     * @default true
     */
    dragFree?: boolean;
    /**
     * Loading state - renders children with loading prop or skeleton slides
     * @default false
     *
     * @remarks
     * When true:
     * - If children are provided, they will be rendered (pass Cards with loading prop for best UX)
     * - If no children, renders skeleton slides based on loadingSlides count
     */
    loading?: boolean;
    /**
     * Number of skeleton slides to show when loading and no children provided
     * @default 6
     */
    loadingSlides?: number;
    /**
     * Error state - shows error message
     * @default false
     */
    error?: boolean;
    /**
     * Custom error title
     * @default 'Failed to load items'
     */
    errorTitle?: string;
    /**
     * Custom error message
     */
    errorMessage?: string;
    /**
     * Error retry handler - shows retry button when provided
     */
    onErrorRetry?: () => void;
    /**
     * Empty state title when no children provided
     * @default 'No items'
     */
    emptyTitle?: string;
    /**
     * Empty state message
     */
    emptyMessage?: string;
    /**
     * Custom empty state content
     */
    emptyState?: React.ReactNode;
}
export declare const Carousel: React.FC<CarouselProps>;
//# sourceMappingURL=Carousel.d.ts.map