import { type ResolvedSlotOptions } from "./timing.js"; /** Internal test seam; not re-exported from the package. */ export declare function resetSlotLayoutCache(): void; interface CharacterSlotElements { slot: HTMLElement; sizer: HTMLElement; previousFace: HTMLElement | null; } interface SlotMeasurement extends CharacterSlotElements { index: number; currentSegment: string; targetSegment: string; currentWidth: number; targetWidth: number; widthWillChange: boolean; } /** Render slot markup without touching animation lifecycle state. */ export declare function renderCharacterSlots(container: HTMLElement, text: string): void; export declare function renderPlainText(container: HTMLElement, text: string): void; export declare function getCharacterSlots(container: HTMLElement): HTMLElement[]; export declare function isSlotLayoutReady(slot: HTMLElement | undefined): boolean; /** * Check the globally imported stylesheet contract. A successful check is * cached because an applied stylesheet does not normally disappear. A failed * check is retried so asynchronously loaded CSS can upgrade plain text later. */ export declare function canRenderSlotLayout(): boolean; export declare function addMissingCharacterSlots(container: HTMLElement, characterSlots: HTMLElement[], requiredSlotCount: number): void; export declare function measureCharacterHeight(container: HTMLElement, characterSlots: HTMLElement[], containerStyle: CSSStyleDeclaration): number; /** Measure all old widths, apply all target sizers, then read all new widths. */ export declare function measureChangedSlots(characterSlots: HTMLElement[], currentSegments: string[], targetSegments: string[], skipUnchanged: boolean): SlotMeasurement[]; export declare function prepareSlotAnimation(measurement: SlotMeasurement, targetSegmentCount: number, characterHeight: number, options: ResolvedSlotOptions): { measurement: SlotMeasurement; timing: import("./timing.js").GlyphTiming; widthTiming: import("./timing.js").WidthTiming; incomingFace: HTMLSpanElement; completionTimeMs: number; }; export declare function scheduleSlotAnimation(preparedAnimation: ReturnType, characterHeight: number, restingColor: string, options: ResolvedSlotOptions, scheduleTask: (callback: () => void, delayMs: number) => void): void; export {};