import { scrollTransition } from "./utils/scroll-transition"; import type { WithNormalizedProps } from "../../global"; type Direction = typeof LEFT | typeof RIGHT; declare const LEFT = -1; declare const RIGHT = 1; interface Item { htmlAttributes?: Marko.HTML.LI; key?: string; class?: Marko.HTMLAttributes["class"]; style?: Marko.HTMLAttributes["style"]; transform?: string; fullyVisible?: boolean; renderBody?: Marko.Body; } interface CarouselInput { item?: Marko.AttrTag; gap?: number | string; index?: number | string; "items-per-slide"?: number | string; autoplay?: number | string | boolean; "image-treatment"?: "none" | "matte"; "hidden-scrollbar"?: boolean; paused?: boolean; "no-peek"?: boolean; class?: Marko.HTMLAttributes["class"]; style?: Marko.HTMLAttributes["style"]; "a11y-previous-text"?: Marko.HTMLAttributes["aria-label"]; "a11y-next-text"?: Marko.HTMLAttributes["aria-label"]; "a11y-pause-text"?: Marko.HTMLAttributes["aria-label"]; "a11y-play-text"?: Marko.HTMLAttributes["aria-label"]; "aria-roledescription"?: string; "on-move"?: (event: { visibleIndexes: number[]; }) => void; "on-scroll"?: (event: { index: number; }) => void; "on-slide"?: (event: { slide: number; originalEvent: Event; }) => void; "on-next"?: (event: { originalEvent: Event; }) => void; "on-previous"?: (event: { originalEvent: Event; }) => void; "on-play"?: (event: { originalEvent: Event; }) => void; "on-pause"?: (event: { originalEvent: Event; }) => void; } export interface Input extends WithNormalizedProps { } interface State { htmlAttributes: Record; classes: Marko.HTMLAttributes["class"]; style: Marko.HTMLAttributes["style"]; config: { preserveItems?: boolean; nativeScrolling?: boolean; offsetOverride?: number; scrollTransitioning?: boolean; }; items: (Item & { left?: number; right?: number; })[]; index: number; slideWidth: number; gap: number; itemsPerSlide: number; autoplayInterval: number; paused: boolean; interacting: boolean; bothControlsDisabled: boolean; peek: number; a11yPreviousText: string; a11yNextText: string; a11yPauseText: string; a11yPlayText: string; } declare class Carousel extends Marko.Component { autoplayTimeout: ReturnType; interactionEndTimeout: ReturnType; renderFrame: number; focusFrame: number; cancelScrollTransition?: ReturnType; skipScrolling: boolean; isMoving: boolean; listEl: HTMLElement; nextEl: HTMLElement; containerEl: HTMLElement; cleanupAsync(): void; emitUpdate(): void; handleScroll(scrollLeft: number): void; getOffset(state: State): number; getMaxOffset({ items, slideWidth }: State): number; getSlide({ index, itemsPerSlide }: State, i?: number): number | undefined; normalizeIndex({ items, itemsPerSlide }: State, index: number): number; isAnimating(state: State): boolean; getNextIndex(state: State, delta: Direction): number; getTemplateData(state: State): State & { items: (Item & { left?: number; right?: number; })[]; slide: number | undefined; offset: number | undefined; disableTransition: boolean; totalSlides: number | undefined; prevControlDisabled: boolean; nextControlDisabled: boolean; bothControlsDisabled: boolean; }; move(delta: Direction): number; handleMove(direction: Direction, originalEvent: MouseEvent): void; handleStartInteraction(): void; handleEndInteraction(): void; togglePlay(originalEvent: MouseEvent): void; onInput(input: Input): void; onRender(): void; onMount(): void; onUpdate(): void; onDestroy(): void; onRenderLegacy(): void; } export default Carousel;