/** * Browser-only text-roll animation. Each grapheme owns one clipped slot; the * previous face rolls out while the next face rolls in. */ /** Options shared by the low-level animation and all framework adapters. */ export interface SlotOptions { /** "down" rolls glyphs downward (enter from top); "up" rolls upward. */ direction?: "up" | "down"; /** Per-character stagger in ms (default 45). */ stagger?: number; /** Slide duration per character in ms (default 300). */ duration?: number; /** How long the incoming glyph trails the outgoing one, in ms (default 50). */ exitOffset?: number; /** Easing — defaults to a springy, overshooting "back" curve. */ easing?: string; /** * Per-letter personality: 0 makes every glyph move identically; 1 adds the * strongest timing variation and tilt. Default 0.6. */ bounce?: number; /** * Incoming glyph tint. Pass one CSS color, or return a color for each * `(segmentIndex, segmentCount)` pair. */ color?: string | ((segmentIndex: number, segmentCount: number) => string); /** Tint fade duration in ms (default 280). */ colorFade?: number; /** * Keep graphemes that are identical at the same index static. Disable this * when differently sized strings are not positionally aligned. */ skipUnchanged?: boolean; /** * true interrupts the running roll. false lets it finish, then plays only * the latest queued target. Default true. */ interrupt?: boolean; } export interface ChromaticOptions { /** Starting hue in degrees. Default 0. */ from?: number; /** Hue distance from first to last grapheme. Default 320 degrees. */ spread?: number; /** HSL saturation percentage. Default 92. */ saturation?: number; /** HSL lightness percentage. Default 60. */ lightness?: number; } /** Build a color function that sweeps a hue range across the text. */ export declare function chromatic({ from, spread, saturation, lightness, }?: ChromaticOptions): (segmentIndex: number, segmentCount: number) => string; /** Render settled text, falling back to plain text until the CSS is ready. */ export declare function renderTextWithCssFallback(container: HTMLElement, text: string): void; /** Build slot markup immediately and cancel any animation that owns it. */ export declare function buildSlotText(container: HTMLElement, text: string): void; export declare function animateSlotText(container: HTMLElement, targetText: string, options?: SlotOptions): void; export declare function clearSlotText(container: HTMLElement, text?: string): void;