import { default as useEmblaCarousel, UseEmblaCarouselType } from 'embla-carousel-react';
import { Button } from './button';
import * as React from "react";
type CarouselApi = UseEmblaCarouselType[1];
type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
type CarouselOptions = UseCarouselParameters[0];
type CarouselPlugin = UseCarouselParameters[1];
type CarouselProps = React.ComponentProps<"div"> & {
    /** Embla carousel options (loop, align, slidesToScroll, etc.) */
    opts?: CarouselOptions;
    /** Embla carousel plugins */
    plugins?: CarouselPlugin;
    /** Carousel scroll direction. @default "horizontal" */
    orientation?: "horizontal" | "vertical";
    /** Callback to receive the carousel API instance for programmatic control */
    setApi?: (api: CarouselApi) => void;
};
type CarouselContextProps = {
    carouselRef: ReturnType<typeof useEmblaCarousel>[0];
    api: ReturnType<typeof useEmblaCarousel>[1];
    scrollPrev: () => void;
    scrollNext: () => void;
    canScrollPrev: boolean;
    canScrollNext: boolean;
} & CarouselProps;
/**
 * Hook to access carousel context. Must be used within a Carousel component.
 */
declare function useCarousel(): CarouselContextProps;
/**
 * Carousel root component. Provides context and manages scroll state.
 * Supports both horizontal and vertical orientations with keyboard navigation.
 */
declare function Carousel({ orientation, opts, setApi, plugins, className, children, ...props }: CarouselProps): import("react/jsx-runtime").JSX.Element;
type CarouselContentProps = React.ComponentProps<"div">;
/**
 * Container for carousel items. Handles overflow and flex layout.
 */
declare function CarouselContent({ className, ...props }: CarouselContentProps): import("react/jsx-runtime").JSX.Element;
type CarouselItemProps = React.ComponentProps<"div">;
/**
 * Individual carousel slide. Use `basis-*` classes to control items per view.
 */
declare function CarouselItem({ className, ...props }: CarouselItemProps): import("react/jsx-runtime").JSX.Element;
type CarouselPreviousProps = React.ComponentProps<typeof Button>;
/**
 * Button to navigate to previous slide. Automatically disabled when at start (unless loop is enabled).
 */
declare function CarouselPrevious({ className, variant, size, ...props }: CarouselPreviousProps): import("react/jsx-runtime").JSX.Element;
type CarouselNextProps = React.ComponentProps<typeof Button>;
/**
 * Button to navigate to next slide. Automatically disabled when at end (unless loop is enabled).
 */
declare function CarouselNext({ className, variant, size, ...props }: CarouselNextProps): import("react/jsx-runtime").JSX.Element;
export { type CarouselApi, type CarouselProps, type CarouselContentProps, type CarouselItemProps, type CarouselPreviousProps, type CarouselNextProps, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, useCarousel, };
//# sourceMappingURL=carousel.d.ts.map