import { HTMLAttributes, ReactNode } from 'react';
export interface CarouselIndicatorDotsProps extends HTMLAttributes<HTMLDivElement> {
    /** Total number of pages. */
    pages: number;
    /** Zero-based index of the current page. */
    currentPage: number;
    /** Called when the user clicks a dot. */
    onPageSelected?: (index: number) => void;
}
/**
 * Dot-style page indicator for `Carousel`.
 * Mirrors `AdwCarouselIndicatorDots`.
 */
export declare function CarouselIndicatorDots({ pages, currentPage, onPageSelected, className, ...props }: CarouselIndicatorDotsProps): import("react/jsx-runtime").JSX.Element;
export interface CarouselIndicatorLinesProps extends HTMLAttributes<HTMLDivElement> {
    /** Total number of pages. */
    pages: number;
    /** Zero-based index of the current page. */
    currentPage: number;
    /** Called when the user clicks a line. */
    onPageSelected?: (index: number) => void;
}
/**
 * Line-style page indicator for `Carousel`.
 * Mirrors `AdwCarouselIndicatorLines`.
 */
export declare function CarouselIndicatorLines({ pages, currentPage, onPageSelected, className, ...props }: CarouselIndicatorLinesProps): import("react/jsx-runtime").JSX.Element;
export interface CarouselProps extends HTMLAttributes<HTMLDivElement> {
    children?: ReactNode;
    /**
     * Scroll orientation.
     * @default "horizontal"
     */
    orientation?: "horizontal" | "vertical";
    /**
     * Gap between pages in px.
     * @default 0
     */
    spacing?: number;
    /**
     * Allow infinite looping (wraps around on the last/first page).
     * @default false
     */
    loop?: boolean;
    /** Called whenever the visible page changes. */
    onPageChanged?: (index: number) => void;
    /**
     * Controlled current page index.
     * When omitted the carousel manages page state internally.
     */
    page?: number;
}
/**
 * Swipeable content carousel.
 *
 * Mirrors `AdwCarousel`. Uses CSS scroll-snapping for smooth, native-feeling
 * page transitions. Supports keyboard navigation (arrow keys) and touch/mouse
 * drag via the browser's native scroll handling.
 *
 * Pair with `CarouselIndicatorDots` or `CarouselIndicatorLines` for pagination UI.
 *
 * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Carousel.html
 */
export declare function Carousel({ children, orientation, spacing, loop, onPageChanged, page: controlledPage, className, ...props }: CarouselProps): import("react/jsx-runtime").JSX.Element;
