import { Animated } from 'react-native'; export interface UseButtonAnimationOptions { /** * Consumer override in ms, applied to both press and hover. `0` snaps to the * end state without animating — a 0ms timing would still cost a frame. */ transitionDuration?: number; } export interface ButtonAnimation { /** Style for the wrapper that carries the press scale. */ wrapperStyle: { transform: [{ scale: Animated.Value; }]; }; /** Horizontal offset driving the gradient variant's hover drift. */ gradientDrift: Animated.AnimatedInterpolation; /** Whether a press is currently held — used to decide if a pulse is needed. */ isPressing: boolean; pressIn: () => void; pressOut: () => void; hover: (toValue: number) => void; /** * One-shot down-up bounce for activations that produce no pressIn * (keyboard, programmatic). No-op when transitions are disabled. */ pulse: () => void; } /** * Press, hover and pulse animations for Button. Honors the reduced-motion * setting through `useReducedMotion().getDuration`, so every duration below is * a request rather than a guarantee. */ export declare function useButtonAnimation({ transitionDuration, }?: UseButtonAnimationOptions): ButtonAnimation;