import type { SharedValue } from 'react-native-reanimated'; export type TransitionState = 'ENTERING' | 'ENTERED' | 'EXITING' | 'EXITED'; export interface TransitionOptions { /** Whether the component is transitioning in (visible). */ in: boolean; /** Duration in ms or per-direction object. Defaults to 300. */ timeout?: number | { enter: number; exit: number; }; /** If true, don't mount children until `in` becomes true for the first time. */ mountOnEnter?: boolean; /** If true, unmount children after they have fully exited. */ unmountOnExit?: boolean; } export interface TransitionResult { /** Current transition state. */ state: TransitionState; /** * Animated progress value: 0 = fully exited, 1 = fully entered. * Use this inside `useAnimatedStyle()` in each consumer to derive transforms. */ progress: SharedValue; /** Whether the children should currently be in the React tree. */ shouldMount: boolean; } /** * Shared transition state-machine hook consumed by Fade, Grow, Slide, Zoom, Collapse. * * Manages: * - ENTERING / ENTERED / EXITING / EXITED state machine * - Reanimated `progress` SharedValue (0 → 1) driven by `withTiming` worklets * - `reduceMotion` short-circuit (instant jump when the OS setting is active) * - `mountOnEnter` / `unmountOnExit` lifecycle flags * * Each consumer derives its own `useAnimatedStyle()` from `progress.value`. */ export declare function useTransition(options: TransitionOptions): TransitionResult; //# sourceMappingURL=useTransition.d.ts.map