import { CSSProperties } from 'react'; import { BreakpointObject } from './carousel-utils'; /** * Edge-fade behaviour: * - `false` — no fade. * - `true` — fades the trailing edge with more than one slide per view, or both edges for a single slide. * - `'right'` — always fade only the trailing edge. * - `'both'` — always fade both edges, regardless of slide count. */ export type CarouselFade = boolean | 'right' | 'both'; export interface CarouselConfig { slidesPerView: BreakpointObject; gap: BreakpointObject; fade: CarouselFade; transitionMs: number; loop: boolean; centered: boolean; } export interface CarouselApi { viewportRef: React.RefObject; trackRef: React.RefObject; setSlideRef: (renderedIndex: number, element: HTMLDivElement | null) => void; setConfig: (config: CarouselConfig) => void; setSlidesCount: (count: number) => void; slidesCount: number; slideIndex: number; canPrev: boolean; canNext: boolean; renderedIndices: number[]; renderedActiveIndex: number; slideFlex: string; trackStyle: CSSProperties; contentClassName: (base: string, fadeModifier: string, fadeXModifier: string) => string; isSlideVisible: (renderedIndex: number) => boolean; announcement: string; regionLabel: string; slideLabel: (slide: number) => string; next: () => void; prev: () => void; goToIndex: (index: number, options?: { focusSlide?: boolean; }) => void; onTransitionEnd: (event: React.TransitionEvent) => void; onScroll: () => void; onWheel: (event: React.WheelEvent) => void; onKeyDown: (event: React.KeyboardEvent) => void; onPointerDown: (event: React.PointerEvent) => void; onPointerMove: (event: React.PointerEvent) => void; onPointerUp: () => void; } /** * The carousel engine. Holds the infinite-loop track state and exposes the * imperative API consumed by `Carousel.Content`, `Carousel.Navigation` and * `Carousel.Indicators`. Ported from the Angular `tedi-carousel-content`. */ export declare const useCarousel: () => CarouselApi;