import { CarouselOptions } from './carousel.types'; /** * Headless carousel controller. The scroll/snap engine (drag physics, momentum, * snapping, loop wrapping, resize handling and axis) is delegated to * [Embla Carousel](https://www.embla-carousel.com/); this controller stays * responsible for the headless contract: ARIA wiring, auto-generated dot * indicators, prev/next controls, keyboard navigation, optional autoplay and * typed `carousel:change` events. It reflects the active index on * `data-active` (slides/dots) and `data-active-index` (root) — it applies no * visual styling itself. * * Markup: * ```html *
*
*
*
One
*
Two
*
*
* * *
*
* ``` */ export declare class Carousel { private readonly root; private readonly slides; private readonly prevBtn; private readonly nextBtn; private readonly dotsContainer; private dots; private readonly embla; private readonly autoplayEnabled; private readonly autoplayInterval; private readonly pauseOnHover; private current; private timer; private cleanups; constructor(root: HTMLElement, options?: CarouselOptions); private init; private buildDots; private bindPause; private onKeydown; private startTimer; private stopTimer; /** Pull the selected index from Embla, update DOM state and emit change. */ private syncFromEngine; private render; private toggleControl; /** Go to a specific slide (clamped by the engine). */ goTo(index: number): void; /** Advance one slide (wraps when `loop` is enabled). */ next(): void; /** Go back one slide (wraps when `loop` is enabled). */ prev(): void; /** Start autoplay. */ play(): void; /** Stop autoplay. */ pause(): void; get index(): number; get length(): number; /** Subscribe to a DOM event on the root element. Returns an unsubscribe fn. */ on(event: string, handler: (event: E) => void): () => void; destroy(): void; }