/** * Pure task-pane motion math — snappy enter/exit (faster than toasts). * * Open: slide in (~120ms ease-out) * Close: slide out (~100ms ease-in), then unmount */ /** Slide-in duration — a bit snappier than toast (200ms). */ export declare const PLAN_PANE_ENTER_MS = 120; /** Slide-out duration — slightly faster than enter so hide feels instant. */ export declare const PLAN_PANE_EXIT_MS = 100; export type PaneAnimPhase = "enter" | "open" | "exit" | "closed"; export interface PaneAnimState { readonly phase: PaneAnimPhase; /** 0 = fully hidden, 1 = fully shown. */ readonly progress: number; /** Keep the pane in the tree during enter/open/exit. */ readonly mounted: boolean; } /** * Progress for a known phase + age within that phase. */ export declare function paneProgress(phase: PaneAnimPhase, ageMs: number, enterMs?: number, exitMs?: number): number; export declare function paneMounted(phase: PaneAnimPhase): boolean; /** * Overlay placement: slide from above the viewport to restTop. * @param progress 0..1 visibility * @param restTop resting top row when fully open * @param paneHeight box height (for off-screen start) */ export declare function paneSlideTop(progress: number, restTop: number, paneHeight: number): number; /** * Split placement: grow/shrink width with progress. */ export declare function paneSlideWidth(progress: number, fullWidth: number): number; /** * Whether the enter/exit phase has finished and should advance. */ export declare function panePhaseComplete(phase: PaneAnimPhase, ageMs: number, enterMs?: number, exitMs?: number): PaneAnimPhase | null;