import type React from 'react'; import type { EasingFunction, EasingFunctionFactory, ReduceMotion, } from 'react-native-reanimated'; import type { GestureType } from 'react-native-gesture-handler'; import type { HitSlop } from 'react-native-gesture-handler/lib/typescript/handlers/gestureHandlerCommon'; import type { CommonTransformState, LongPressCallbacks, PinchGestureCallbacks, SizeVector, TapGestureCallbacks, Vector, } from '../../commons/types'; export type BlocksGesture = | GestureType | React.RefObject | React.RefObject | undefined>; export type TimingConfig = Partial<{ duration: number; easing: EasingFunction | EasingFunctionFactory; reduceMotion: ReduceMotion; }>; export type ResizeConfig = { size: SizeVector; aspectRatio: number; scale: number; }; export type SnapbackZoomState = { size: SizeVector; position: Vector; resize?: SizeVector; } & CommonTransformState; export type SnapBackZoomProps = React.PropsWithChildren< Partial<{ resizeConfig: ResizeConfig; gesturesEnabled: boolean; longPressDuration: number; hitSlop: HitSlop; timingConfig: TimingConfig; scrollRef: BlocksGesture; onGestureEnd: () => void; onUpdate: (e: SnapbackZoomState) => void; }> > & PinchGestureCallbacks & TapGestureCallbacks & LongPressCallbacks;