
import { ReactNode, RefCallback } from "react";

//#region src/components/helpers/DisplayTransition/DisplayTransition.d.ts
type ReportedPhase = 'enter' | 'entered' | 'exit' | 'unmounted';
type DisplayTransitionProps = {
  /** Desired visibility (driver). */isShown: boolean; /** Times enter->entered and exit->unmounted. 0 => immediate. If undefined, uses native transition events. */
  duration?: number; /** Fires after enter settles or after exit completes (unmount). */
  onRest?: (transition: 'enter' | 'exit') => void; /** Fires when phase changes. */
  onPhaseChange?: (phase: ReportedPhase) => void; /** Fires when isShown (derived from phase) changes. */
  onToggle?: (isShown: boolean) => void; /** Keep calling children during "unmounted" (you decide what to render). */
  exposeUnmounted?: boolean; /** If false and initially shown, start at "entered" (no first-mount animation/SSR pop). */
  animateOnMount?: boolean; /** Respect prefers-reduced-motion by collapsing duration to 0. */
  respectReducedMotion?: boolean; /** Preserve children content during exit transition. When true, uses stored children from when content was visible. @default true */
  preserveContent?: boolean; /** Render-prop gets { phase, isShown, ref }. Bind ref to the transitioned element for native event detection. */
  children: (props: {
    phase: ReportedPhase;
    isShown: boolean;
    ref: RefCallback<HTMLElement>;
  }) => ReactNode;
};
declare function DisplayTransition({
  isShown: targetShown,
  duration,
  onRest,
  onPhaseChange,
  onToggle,
  exposeUnmounted,
  animateOnMount,
  respectReducedMotion,
  preserveContent,
  children
}: DisplayTransitionProps): ReactNode;
//#endregion
export { DisplayTransition, DisplayTransitionProps };
//# sourceMappingURL=DisplayTransition.d.ts.map