import React from "react";
import useEmblaCarousel from "embla-carousel-react";
import { type NormalizedSlidesToShow, type ResponsiveSlidesToShow } from "./carousel.shared";
export type { ResponsiveSlidesToShow } from "./carousel.shared";
export type CarouselPlugin = Parameters<typeof useEmblaCarousel>[1] extends Array<infer Plugin> ? Plugin : never;
export type CarouselNodeClientProps = {
    children?: React.ReactNode;
    className?: string;
    /**
     * When false, do not render the outer `.carousel-root` wrapper.
     *
     * This is used by the SDK islands enhancer, where the SSR wrapper element
     * (with data-rb-island markers + CSS vars) must remain the single root.
     *
     * Default: true (normal standalone usage).
     */
    renderRoot?: boolean;
    /** Number of slides to show - can be a number or responsive object */
    slidesToShow?: number | string | ResponsiveSlidesToShow;
    /** Transition type */
    transition?: "slide" | "fade";
    /** Show navigation arrows */
    showControls?: boolean | string;
    /** Show dot indicators */
    showDots?: boolean | string;
    /** Arrow visibility mode */
    arrowVisibility?: "always" | "hover" | "never";
    /** Enable autoplay */
    autoplay?: boolean | string;
    /** Autoplay delay in ms */
    autoplayDelay?: number | string;
    /** Enable infinite loop */
    loop?: boolean | string;
    /** Reserved for future custom arrow icon */
    arrowIcon?: string;
};
export type NormalizedCarouselProps = {
    slidesToShow: NormalizedSlidesToShow;
    transition: "slide" | "fade";
    showControls: boolean;
    showDots: boolean;
    arrowVisibility: "always" | "hover" | "never";
    autoplay: boolean;
    autoplayDelay: number;
    loop: boolean;
};
export declare function normalizeCarouselProps(input: Pick<CarouselNodeClientProps, "slidesToShow" | "transition" | "showControls" | "showDots" | "arrowVisibility" | "autoplay" | "autoplayDelay" | "loop">): NormalizedCarouselProps;
/**
 * Client carousel component with full Embla features.
 * Used by the island enhancer to hydrate SSR carousel markup.
 */
export declare const CarouselNodeClient: React.FC<CarouselNodeClientProps>;
export default CarouselNodeClient;
