import { codegenNativeComponent, type CodegenTypes, type ViewProps, type HostComponent, type ColorValue, } from 'react-native'; type Float = CodegenTypes.Float; type Int32 = CodegenTypes.Int32; type NativeTransitionConfig = Readonly<{ type: string; duration: Int32; easingBezier: ReadonlyArray; damping: Float; stiffness: Float; mass: Float; loop: string; delay: Int32; }>; type NativeTransitions = Readonly<{ defaultConfig: NativeTransitionConfig; transform?: NativeTransitionConfig; opacity?: NativeTransitionConfig; borderRadius?: NativeTransitionConfig; backgroundColor?: NativeTransitionConfig; border?: NativeTransitionConfig; shadow?: NativeTransitionConfig; }>; export interface NativeProps extends ViewProps { // Bitmask of which properties are animated (0 = none, let style handle all) animatedProperties?: CodegenTypes.WithDefault; // Animate target values animateOpacity?: CodegenTypes.WithDefault; animateTranslateX?: CodegenTypes.WithDefault; animateTranslateY?: CodegenTypes.WithDefault; animateScaleX?: CodegenTypes.WithDefault; animateScaleY?: CodegenTypes.WithDefault; animateRotate?: CodegenTypes.WithDefault; animateRotateX?: CodegenTypes.WithDefault; animateRotateY?: CodegenTypes.WithDefault; animateBorderRadius?: CodegenTypes.WithDefault; animateBackgroundColor?: ColorValue; animateBorderWidth?: CodegenTypes.WithDefault; animateBorderColor?: ColorValue; animateShadowOpacity?: CodegenTypes.WithDefault; animateShadowRadius?: CodegenTypes.WithDefault; animateShadowColor?: ColorValue; animateShadowOffsetX?: CodegenTypes.WithDefault; animateShadowOffsetY?: CodegenTypes.WithDefault; animateElevation?: CodegenTypes.WithDefault; // Initial values for enter animations initialAnimateOpacity?: CodegenTypes.WithDefault; initialAnimateTranslateX?: CodegenTypes.WithDefault; initialAnimateTranslateY?: CodegenTypes.WithDefault; initialAnimateScaleX?: CodegenTypes.WithDefault; initialAnimateScaleY?: CodegenTypes.WithDefault; initialAnimateRotate?: CodegenTypes.WithDefault; initialAnimateRotateX?: CodegenTypes.WithDefault; initialAnimateRotateY?: CodegenTypes.WithDefault; initialAnimateBorderRadius?: CodegenTypes.WithDefault< CodegenTypes.Float, 0.0 >; initialAnimateBackgroundColor?: ColorValue; initialAnimateBorderWidth?: CodegenTypes.WithDefault; initialAnimateBorderColor?: ColorValue; initialAnimateShadowOpacity?: CodegenTypes.WithDefault< CodegenTypes.Float, 0.0 >; initialAnimateShadowRadius?: CodegenTypes.WithDefault< CodegenTypes.Float, 0.0 >; initialAnimateShadowColor?: ColorValue; initialAnimateShadowOffsetX?: CodegenTypes.WithDefault< CodegenTypes.Float, 0.0 >; initialAnimateShadowOffsetY?: CodegenTypes.WithDefault< CodegenTypes.Float, 0.0 >; initialAnimateElevation?: CodegenTypes.WithDefault; // Unified transition config — one struct with per-property configs transitions?: NativeTransitions; // Transform origin (0–1 fractions, default center) transformOriginX?: CodegenTypes.WithDefault; transformOriginY?: CodegenTypes.WithDefault; // 3D perspective distance (default 1280, matches RN default) transformPerspective?: CodegenTypes.WithDefault; // Events onTransitionEnd?: CodegenTypes.DirectEventHandler< Readonly<{ finished: boolean }> >; // Android hardware layer optimization (no-op on iOS) useHardwareLayer?: CodegenTypes.WithDefault; } export default codegenNativeComponent( 'EaseView', ) as HostComponent;