import type { VNodeChild } from "vue"; export type XyCarouselDotPlacement = "bottom" | "end" | "start" | "top"; export type XyCarouselEffect = "fade" | "scrollx"; export interface XyCarouselProps { adaptiveHeight?: boolean; arrows?: boolean; autoplay?: boolean; autoplaySpeed?: number; current?: number; defaultCurrent?: number; dotPlacement?: XyCarouselDotPlacement; dots?: boolean; draggable?: boolean; effect?: XyCarouselEffect; infinite?: boolean; speed?: number; } export interface XyCarouselArrowSlotProps { current: number; disabled: boolean; total: number; } export interface XyCarouselPrevArrowSlotProps extends XyCarouselArrowSlotProps { prev: () => void; } export interface XyCarouselNextArrowSlotProps extends XyCarouselArrowSlotProps { next: () => void; } export interface XyCarouselSlots { default?: () => VNodeChild; nextArrow?: (props: XyCarouselNextArrowSlotProps) => VNodeChild; prevArrow?: (props: XyCarouselPrevArrowSlotProps) => VNodeChild; } export interface XyCarouselExpose { goTo: (index: number, dontAnimate?: boolean) => void; next: () => void; prev: () => void; }