import { type EntranceStyle, type RowRole } from '../official/chatDom.js'; /** * Entrance keyframes, duration, and easing per style. Opacity always arrives on * the shorter side and travel or scale on the longer one, which reads as the row * settling rather than sliding to a stop. * * Durations follow the motion-tokens scale by intent: a transient row is * `standard` (280–350ms), a full welcome surface is `medium` (400–500ms), and an * opacity-only fade is `fast` (150–200ms). Travel and scale styles land on * EASE_SETTLE (3% overshoot), sideways travel and the large welcome surface stay * on EASE_GLIDE, and opacity-only work uses EASE_FADE. */ export declare const ENTRANCE: Record; /** * Pure: the entrance spec (keyframes, duration, easing) for a transcript style. * * Exported so the settings page can play the very same entrance in its preview * instead of keeping a second copy of the keyframes — a preview that drifts from * the engine is worse than no preview, because it teaches the wrong thing. */ export declare function entranceSpec(style: EntranceStyle): { frames: Keyframe[]; durationMs: number; easing: string; }; /** * Role entrances. The user's message travels sideways on the glide curve (280ms, * `standard` band): it reads as having been sent from the composer, and sideways * travel is too directional for the 3% overshoot of EASE_SETTLE. Process rows * get the lightest arrival in the set — 3px of travel on an opacity-only curve * (200ms, `fast` band) — because a busy turn mounts several of them and anything * stronger turns the transcript into a slideshow. */ export declare const ROLE_ENTRANCE: Record; /** Transcript-column entrance; the column stays mounted across switches. */ export declare const PANEL_FRAMES: readonly Keyframe[]; export declare const PANEL_DURATION_MS = 320;