import type {RefObject} from 'react'; import type {ViewStyle, StyleProp, Animated} from 'react-native'; import type Reanimated from 'react-native-reanimated'; import type {StyleProps} from 'react-native-reanimated'; import type {VideoRef, ReactVideoProps} from 'react-native-video'; export type WithRequiredProperty = Type & { [Property in Key]-?: Type[Property]; }; export type VideoAnimations = { AnimatedView: typeof Reanimated.View | typeof Animated.View; hideControlAnimation: () => void; showControlAnimation: () => void; bottomControl: StyleProps; // type AnimatedViewStyle = Animated.AnimatedProps['style']; topControl: StyleProps; controlsOpacity: StyleProps; }; export interface VideoPlayerProps extends ReactVideoProps { animations?: VideoAnimations; useAnimations?: (controlAnimationTiming: number) => VideoAnimations; /** * If true, clicking the fullscreen button will toggle the