import React, { type ReactNode } from 'react'; import { type StyleProp, type ViewStyle, type ViewProps } from 'react-native'; import type { GestureHandlerProps, CustomVideoTrack } from '../types'; import type { ReactVideoProps, AudioTrack } from 'react-native-video'; /** * Props for the VideoPlayer component. */ interface VideoPlayerProps extends ViewProps { /** * The source of the video to be played. * This can be a remote URL or a local file path. * Extends the source prop from react-native-video. */ source: ReactVideoProps['source']; /** * Children components to be rendered on top of the video player. * This can be used to add custom controls or overlays. */ children?: ReactNode; /** * Style for the container of the video player. */ containerStyle?: StyleProp; /** * Props to be passed to the underlying react-native-video component. * See https://github.com/react-native-video/react-native-video for more details. */ videoProps?: ReactVideoProps; /** * Props to be passed to the GestureHandler component. */ gestureProps?: GestureHandlerProps; /** * Props to style the video component itself. */ videoStyle?: ReactVideoProps['style']; /** * Custom audio tracks to use instead of auto-extracting from video source. * Only used when config.useCustomAudioTracks is true. */ customAudioTracks?: AudioTrack[]; /** * Custom video tracks to use instead of auto-extracting from video source. * Only used when config.useCustomVideoTracks is true. */ customVideoTracks?: CustomVideoTrack[]; } /** * The main VideoPlayer component with a compound component pattern. * This allows for a flexible and declarative API for building custom video player layouts. */ export declare const VideoPlayer: (({ source, children, containerStyle, videoProps, gestureProps, videoStyle, customAudioTracks, customVideoTracks, }: VideoPlayerProps) => import("react/jsx-runtime").JSX.Element) & { Controls: React.FC<{ children?: ReactNode; style?: any; }>; PlayButton: ({ size, color, style, renderPlayIcon, renderPauseIcon, }: import("./controls").PlayButtonProps) => React.ReactElement; ProgressBar: ({ height, thumbWidth, style, onSeekStart, onSeekEnd, onSeek, }: import("./controls").ProgressBarProps) => React.ReactElement; TimeDisplay: ({ type, fontSize, color, style }: import("./display").TimeDisplayProps) => React.ReactElement; VolumeControl: ({ orientation, width, height, thumbWidth, style, onVolumeChange, }: import("./controls").VolumeControlProps) => React.ReactElement; FullscreenButton: ({ size, color, style, renderEnterIcon, renderExitIcon, }: import("./controls").FullscreenButtonProps) => React.ReactElement; MuteButton: ({ size, color, style, renderMuteIcon, renderUnmuteIcon, }: import("./controls").MuteButtonProps) => React.ReactElement; LoadingSpinner: ({ size, color, style }: import("./display").LoadingSpinnerProps) => React.ReactElement | null; SettingsButton: ({ size, color, style, renderSettingIcon }: import("./controls").SettingsButtonProps) => React.ReactElement; SubtitleToggleButton: () => import("react/jsx-runtime").JSX.Element; }; export {}; //# sourceMappingURL=VideoPlayer.d.ts.map