import type { ProgressRow, ProgressTheme, ProgressView } from "./types.ts"; export interface RenderOptions { /** Terminal columns. Degradation (progress §4.10) is decided entirely from this. */ readonly width: number; readonly theme: ProgressTheme; /** * The braille spinner's frame, advanced by the host's 120 ms timer (progress §4.8) and passed in * rather than read from a clock — animation state that lived here would make every render * time-dependent and unassertable. */ readonly frame?: number; /** * The run's short form for the header (progress §4.1) — `runIdHash(runId)`, which the host computes, * since `src/host/naming.ts` owns that shape and this layer may not import it. Defaults to the run * id's trailing 8 characters, which is the same string. */ readonly runLabel?: string; } /** * Draw the panel: a blank line, the header rule, the tree, and the footer rule that IS the progress bar * (progress §4.1). `rows` comes from `collapse` — this module decides nothing about which rows exist, * only how they look. */ export declare function render(view: ProgressView, rows: readonly ProgressRow[], options: RenderOptions): string[]; /** `3.1s` under a minute, `1m 04s` under an hour, `1:04:22` beyond (progress §4.7). */ export declare function formatDuration(ms: number): string; /** The same scale with the tenths removed — every duration measured against `now` uses this (progress §4.8). */ export declare function formatWholeSeconds(ms: number): string; /** The run clock, always `mm:ss` (progress §4.7) — and always whole seconds, being measured against `now`. */ export declare function formatClock(ms: number): string; /** * `4.1k`, `88.2k`, `1.2M` (progress §4.7). Never raw digits above a thousand: they are unreadable at a * glance and change width constantly, which is exactly what §4.2's column cannot afford. */ export declare function formatTokens(tokens: number): string; //# sourceMappingURL=render.d.ts.map