import React from 'react' export interface FrameProps { accessibility?: boolean autoSize?: boolean | 'width' | 'height' springConfig?: { [key: string]: number } tag?: string } export interface Formatters { getAltText?: (props: CommonProps) => string getNextLabel?: (props: CommonProps) => string getPrevLabel?: (props: CommonProps) => string getNextTitle?: (props: CommonProps) => string getPrevTitle?: (props: CommonProps) => string getCloseLabel?: (props: CommonProps) => string getFullscreenLabel?: (props: CommonProps) => string } export interface TrackProps { align?: number animations?: Array<{ props: string; stops: Array<[number, number]> }> axis?: 'x' | 'y' contain?: boolean currentView?: any flickTimeout?: number infinite?: boolean instant?: boolean onRest?: () => void onScroll?: () => void onSwipeEnd?: () => void onSwipeMove?: () => void onSwipeStart?: () => void onViewChange?: (view: number) => void springConfig?: { [key: string]: number } swipe?: boolean | 'mouse' | 'touch' swipeThreshold?: number tag?: any viewsToMove?: number viewsToShow?: number | 'auto' } export interface ViewType { caption?: React.ReactNode alt?: string source: | string | { download?: string fullscreen?: string regular: string thumbnail?: string } } export interface CarouselModalProps { allowFullscreen?: boolean isFullscreen?: boolean onClose?(event: React.SyntheticEvent): void toggleFullscreen?: () => void } export interface ModalProps { allowFullscreen?: boolean children?: React.ReactNode closeOnBackdropClick?: boolean closeOnEsc?: boolean onClose?(event: React.SyntheticEvent): void styles?: { blanket?(base: React.CSSProperties, state: any): React.CSSProperties dialog?(base: React.CSSProperties, state: any): React.CSSProperties positioner?(base: React.CSSProperties, state: any): React.CSSProperties } } export interface CommonProps { carouselProps?: CarouselProps currentIndex?: number currentView?: ViewType frameProps?: FrameProps getStyles?(base: React.CSSProperties, state: any): React.CSSProperties innerProps?: { [key: string]: any } isFullscreen?: boolean isModal?: boolean modalProps?: CarouselModalProps interactionIsIdle?: boolean trackProps?: TrackProps views?: Array } export type Components = { Container?: React.ComponentType Footer?: React.ComponentType FooterCaption?: React.ComponentType FooterCount?: React.ComponentType Header?: React.ComponentType HeaderClose?: React.ComponentType HeaderFullscreen?: React.ComponentType Navigation?: React.ComponentType NavigationPrev?: React.ComponentType NavigationNext?: React.ComponentType View?: React.ComponentType } export interface CarouselState { isFullscreen?: boolean isModal?: boolean interactionIsIdle?: boolean } export interface CarouselStyles { container?(base: React.CSSProperties, state: CarouselState): React.CSSProperties footer?(base: React.CSSProperties, state: CarouselState): React.CSSProperties footerCaption?(base: React.CSSProperties, state: CarouselState): React.CSSProperties footerCount?(base: React.CSSProperties, state: CarouselState): React.CSSProperties header?(base: React.CSSProperties, state: CarouselState): React.CSSProperties headerClose?(base: React.CSSProperties, state: CarouselState): React.CSSProperties headerFullscreen?(base: React.CSSProperties, state: CarouselState): React.CSSProperties navigation?(base: React.CSSProperties, state: CarouselState): React.CSSProperties navigationPrev?(base: React.CSSProperties, state: CarouselState): React.CSSProperties navigationNext?(base: React.CSSProperties, state: CarouselState): React.CSSProperties view?(base: React.CSSProperties, state: CarouselState): React.CSSProperties } export interface CarouselProps { components?: Components currentIndex?: number frameProps?: FrameProps formatters?: Formatters hideControlsWhenIdle?: number | false modalProps?: CarouselModalProps styles?: CarouselStyles trackProps?: TrackProps views: Array } declare const Carousel: React.ComponentType declare const Modal: React.ComponentType declare const ModalGateway: React.ComponentType<{}> export default Carousel export { Modal, ModalGateway }