import { PresentationAnimationController, ElementAnimationState, TimelineClickGroup } from 'pptx-viewer-shared'; /** Updater over the element-state map (React `setState`-compatible signature). */ export type StatesSetter = (updater: (prev: Map) => Map) => void; /** Mutable handle holding the in-flight `requestAnimationFrame` id (or null). */ export interface BuildRafHandle { current: number | null; } /** Everything the step / build / auto-advance helpers need from the playback. */ export interface PlaybackContext { setStates: StatesSetter; /** Timer ids collected here so the playback can clear them on slide change. */ timers: number[]; buildHandle: BuildRafHandle; /** Host-provided action-sound player; falls back to the local audio element. */ onPlayActionSound?: (soundPath: string) => void; /** Root element to scope media-command target lookups to (the slide frame). */ frameRoot?: () => HTMLElement | null; } /** * Apply a click-group's steps onto the element-state map: fire sound / media * commands, set each step's initial visibility + CSS animation, then schedule * cleanup timers to clear the animation (and hide exits) once each step ends. * Mirrors the Vue / React `applyAnimationGroupSteps`. */ export declare function applyAnimationGroupSteps(group: TimelineClickGroup, ctx: PlaybackContext): void; /** Cancel any in-flight build RAF and clear the handle. */ export declare function cancelBuildReveal(handle: BuildRafHandle): void; /** * Ramp a click-group's staged-build `progress` from 0 -> 1 via * requestAnimationFrame, merging each build element's `build` descriptor onto the * element states each frame. No-op when the group carries no build step, so * ordinary click-advance is unchanged. Mirrors the Vue / React `driveBuildReveal`. */ export declare function driveBuildReveal(controller: PresentationAnimationController, group: TimelineClickGroup, ctx: PlaybackContext): void; /** Apply a group's steps and start its staged-build reveal (if any). */ export declare function playGroup(controller: PresentationAnimationController, group: TimelineClickGroup, ctx: PlaybackContext): void; /** * After a click-group plays, schedule the next group when it should auto-advance * (withPrevious / afterPrevious), chaining through consecutive auto-advance * groups. Mirrors the Vue / React `scheduleAutoAdvanceChain`. */ export declare function scheduleAutoAdvanceChain(controller: PresentationAnimationController, ctx: PlaybackContext): void; //# sourceMappingURL=animation-playback-helpers.d.ts.map