import { UseTransitionRenderReturnType } from './types'; /** * Manages mount/unmount transitions with a two-phase approach (visible → fading-in). * * Opening sequence: * 1. `useLayoutEffect` sets `isVisible=true` synchronously before the browser paints * → element is in the DOM at its initial hidden state on the very first frame. * 2. Double `requestAnimationFrame` in `useEffect` waits for two rendered frames * before setting `isFadingIn=true`, guaranteeing the CSS transition always starts * from the painted hidden state (prevents flickering). * * Closing sequence: * `isFadingIn=false` → CSS transition plays → after `duration` ms → `isVisible=false` * and `shouldRenderContent=false`. * * When `prefers-reduced-motion: reduce` is active the effective duration is forced to * `0` so the element is removed from the DOM immediately after hiding, in sync with * the near-instant CSS transition set by the global `globals.css` rule. * * @param isOpen - Whether the element should be shown. * @param durationVar - CSS variable reference for the transition duration * (e.g. `vars.duration.normal`). Defaults to the theme's normal duration. */ export declare const useTransitionRender: (isOpen: boolean, durationVar?: string) => UseTransitionRenderReturnType;