/** * Interactive progress rendering for `check` (M11). Turns the orchestrator's * structured {@link ProgressEvent}s (core emits data, never renders - hard rule * #1) into a live spinner, per-phase checkmarks, and the buyer-prompt list. * * All output goes to the injected `write` (stderr), so stdout stays pure for * `--json`. The animation is time-driven but the committed lines (checkmarks, * prompts) are written synchronously on each event, so behavior is testable * without waiting on timers. */ import type { ProgressEvent } from '../core/run/index.js'; export interface ProgressReporter { onProgress: (event: ProgressEvent) => void; /** Stop any running spinner. Call in a `finally` so a throw never leaks it. */ stop: () => void; } export interface ProgressDeps { /** Where frames and lines are written (stderr). */ write: (s: string) => void; } /** Build a spinner-backed reporter. Attach only on a TTY (caller's choice). */ export declare function createProgressReporter(deps: ProgressDeps): ProgressReporter;