import type { KeyboardLiftBehavior } from "../useChatKeyboard/types"; import type { AnimatedRef, SharedValue } from "react-native-reanimated"; import type Reanimated from "react-native-reanimated"; type UseExtraContentPaddingOptions = { scrollViewRef: AnimatedRef; extraContentPadding: SharedValue; /** Keyboard-only padding from useChatKeyboard — used to compute total padding for clamping. */ keyboardPadding: SharedValue; /** Minimum inset floor — used to absorb keyboard and extraContentPadding changes. */ blankSpace: SharedValue; /** Current vertical scroll offset. */ scroll: SharedValue; /** Visible viewport dimensions. */ layout: SharedValue<{ width: number; height: number; }>; /** Total content dimensions. */ size: SharedValue<{ width: number; height: number; }>; /** IOS only — when provided, sets contentOffset atomically with contentInset. */ contentOffsetY?: SharedValue; inverted: boolean; keyboardLiftBehavior: KeyboardLiftBehavior; freeze: boolean; }; /** * Hook that reacts to `extraContentPadding` changes and conditionally * adjusts the scroll position using `scrollTo` on both iOS and Android. * * Padding extension (scrollable range) is handled externally via a * `useDerivedValue` that sums keyboard padding + extra content padding. * This hook only handles the scroll correction. * * @param options - Configuration and shared values. * @example * ```tsx * useExtraContentPadding({ scrollViewRef, extraContentPadding, ... }); * ``` */ declare function useExtraContentPadding(options: UseExtraContentPaddingOptions): void; export { useExtraContentPadding }; export type { UseExtraContentPaddingOptions };