import { MotionState } from '../../state/motion-state'; export interface PresenceContext { initial?: boolean; custom?: any; /** * Registry of motion states under this AnimatePresence — fed by * ExitFeature at mount/unmount. inject resolves to the nearest ancestor, * so nested AnimatePresence instances scope correctly without DOM tagging. */ register?: (state: MotionState) => void; unregister?: (state: MotionState) => void; /** Registry of `usePresence()` handlers under this AnimatePresence. */ registerHandler?: (handler: PresenceHandler) => void; unregisterHandler?: (handler: PresenceHandler) => void; } /** * A component's own exit, for components that animate out without a * `motion` element's `exit` (see `usePresence`). */ export interface PresenceHandler { /** The element whose removal waits for `onExit`. */ element: () => Element | null | undefined; /** Starts the exit. Removal waits for the returned promise. */ onExit: () => Promise | void; /** The element came back while its exit was running. */ onEnter?: () => void; } export declare const injectAnimatePresence: (fallback?: T) => T extends null ? PresenceContext : PresenceContext, provideAnimatePresence: (contextValue: PresenceContext) => PresenceContext, animatePresenceInjectionKey: import('vue').InjectionKey;