/** * Scroll-timeline intent — standalone scroll-driven motion primitive (#126). * * Lowers to Signal → Entity → Component → Pose×2 → Transition → Policy → Projection * and compiles through `interpretTransition` with native `animation-timeline: scroll()` * plus a runtime leaf-write floor when scroll timelines are unsupported. * * @module */ import type { ContentAddress } from './brands.js'; import type { DocumentGraph } from './document-graph.js'; import { type RevealPolicy, type RevealTransition } from './reveal.js'; /** Scroll axis for the timeline signal and CSS `scroll()` scroller. */ export type ScrollTimelineAxis = 'progress' | 'y' | 'x' | 'block' | 'inline'; /** Authoring input to {@link ScrollTimeline.intent}. */ export interface ScrollTimelineIntentInput { readonly target: string; readonly axis?: ScrollTimelineAxis; readonly range: readonly [string, string]; readonly from: Readonly>; readonly to: Readonly>; readonly transition: RevealTransition; readonly policy: RevealPolicy; } /** Sealed scroll-timeline intent — data over graph, no behavior authority. */ export interface ScrollTimelineIntent extends ScrollTimelineIntentInput { readonly _tag: 'ScrollTimelineIntent'; } /** Graph bundle produced by {@link lowerScrollTimelineIntent}. */ export interface LoweredScrollTimeline { readonly graph: DocumentGraph; readonly intent: ScrollTimelineIntent; readonly transitionId: ContentAddress; readonly componentId: ContentAddress; readonly entityId: ContentAddress; readonly policyId: ContentAddress; readonly projectionId: ContentAddress; } /** * Lower a {@link ScrollTimelineIntent} into real DocumentGraph node families. * * The signal always maps to a scroll axis; CSS compilation uses * `animation-timeline: scroll()` with the authored `range`. */ export declare function lowerScrollTimelineIntent(intent: ScrollTimelineIntent): LoweredScrollTimeline; /** * Resolve the discrete state for SSR / reduced-motion first paint (#126). * When `reducedMotion: 'settle'` and the user prefers reduced motion, settle * immediately to the `after` pose — no scroll-driven tween. */ export declare function resolveScrollTimelineInitialState(intent: ScrollTimelineIntent, opts: { prefersReducedMotion: boolean; }): 'before' | 'after'; /** Authoring sugar namespace — data over intent, no behavior authority. */ export declare const ScrollTimeline: { /** Seal a scroll-timeline intent from authoring input. */ readonly intent: (input: ScrollTimelineIntentInput) => ScrollTimelineIntent; }; //# sourceMappingURL=scroll-timeline.d.ts.map