import React from 'react'; import { LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent, StyleProp, ViewStyle } from 'react-native'; import { WithThemeStyles } from '../style'; import CarouselStyles, { CarouselStyle } from './style/index'; export interface CarouselPropsType extends WithThemeStyles { selectedIndex?: number; dots?: boolean; vertical?: boolean; autoplay?: boolean; autoplayInterval?: number; infinite?: boolean; initialSlideWidth?: number; } export interface CarouselProps extends CarouselPropsType { bounces?: boolean; onScrollBeginDrag?: (event: NativeSyntheticEvent, state: CarouselState, carousel: Carousel) => void; onMomentumScrollEnd?: (event: NativeSyntheticEvent, state: CarouselState, carousel: Carousel) => void; style?: StyleProp; dotStyle?: StyleProp; dotActiveStyle?: StyleProp; pagination?: (props: PaginationProps) => React.ReactNode; afterChange?: (index: number) => void; } export interface CarouselOffset { x: number; y: number; } export interface CarouselState { width: number; height: number; selectedIndex: number; isScrolling: boolean; autoplayEnd: boolean; loopJump: boolean; offset: CarouselOffset; } export interface PaginationProps { vertical?: boolean; current: number; count: number; styles: ReturnType; dotStyle?: StyleProp; dotActiveStyle?: StyleProp; } declare class Carousel extends React.Component { static defaultProps: CarouselProps; private scrollviewRef; private autoplayTimer; private androidScrollEndTimer; private scrollEndTimter; constructor(props: CarouselProps); getChildrenCount: (children: React.ReactNode) => number; componentDidMount(): void; componentWillUnmount(): void; loopJump: () => void; autoplay: () => void; onScrollBegin: (e: NativeSyntheticEvent) => void; onScrollEnd: (e: NativeSyntheticEvent) => void; onScrollEndDrag: (e: NativeSyntheticEvent) => void; paging: (offsetY: number) => void; updateIndex: (offset: CarouselOffset) => void; scrollNextPage: () => void; renderContent: (pages: React.ReactNode) => JSX.Element; renderDots: (index: number) => JSX.Element | null; onLayout: (e: LayoutChangeEvent) => void; onChildLayout: (e: LayoutChangeEvent) => void; render(): JSX.Element; } export default Carousel;