import type { ComputedRef } from 'vue'; export type SwiperAnimation = 'slide'; export type SwiperDirection = 'horizontal' | 'vertical'; export type SwiperChangeSource = 'autoplay' | 'touch' | 'nav'; export interface SwiperIndicatorStyle { size?: number; gap?: number; activeColor?: string; inactiveColor?: string; borderRadius?: number; margin?: number; } export interface SwiperNavigation { showNavBtn?: boolean; showIndicators?: boolean; indicatorPosition?: 'bottom' | 'top' | 'left' | 'right'; indicatorStyle?: SwiperIndicatorStyle; } export interface SwiperProps { animation?: SwiperAnimation; autoplay?: boolean; current?: number; direction?: SwiperDirection; duration?: number; height?: number | string; interval?: number; loop?: boolean; navigation?: boolean | SwiperNavigation; nextMargin?: string | number; previousMargin?: string | number; onChange?: (current: number, context: { source: SwiperChangeSource; }) => void; onClick?: (index: number) => void; } export interface SwiperEmits { (e: 'update:current', current: number): void; (e: 'change', current: number, context: { source: SwiperChangeSource; }): void; (e: 'click', index: number): void; } export interface SwiperContext { activeIndex: ComputedRef; swiperRef: any; swiperItemCount: any; addSwiperItem: () => void; removeSwiperItem: () => void; handleItemClick: (index: number) => void; }