/** * VersionTimeline — generic chronological version history timeline. * * Lane B Phase 5 P5-T7 — DS primitive promoted from the per-case * EvalVersionTimeline component in forge-agents. Stateless: accepts * a pre-loaded `versions` array and delegates selection / diff * rendering to the consumer. * * Contract (spec R6.1): * props { versions: VersionEntry[], onVersionSelect?, diffAdapter? } * * Each entry renders: createdAt relative timestamp, source badge, * author attribution. Expand-to-diff is deferred to Phase 6 via the * optional diffAdapter — if omitted the expand slot renders nothing. */ import * as React from 'react'; export interface VersionEntry { /** Unique identifier for this version (opaque string). */ versionId: string; /** ISO-8601 timestamp when this version was created. */ createdAt: string; /** Source of the change — drives the source badge. */ source?: string; /** Author name or ID. */ author?: string; /** Optional one-line change summary rendered under the timestamp row. */ summary?: string; /** Raw snapshot — passed to diffAdapter when provided. */ snapshot?: unknown; /** Previous version ID — passed to diffAdapter when provided. */ prevVersionId?: string | null; } export interface DiffInput { prev: VersionEntry; next: VersionEntry; } export interface VersionTimelineProps { versions: VersionEntry[]; /** Called when an entry is selected (toggle — null on deselect). */ onVersionSelect?: (entry: VersionEntry | null) => void; /** * When provided, clicking a second entry renders the diff between * the two picks using this adapter's output. The adapter receives * prev + next VersionEntry objects and should return a React node. */ diffAdapter?: (input: DiffInput) => React.ReactNode; className?: string; } declare function VersionTimeline({ versions, onVersionSelect, diffAdapter, className }: VersionTimelineProps): import("react/jsx-runtime").JSX.Element; export { VersionTimeline };