/** * @fileoverview Fitness live-view derivation from the run's `SignalEnvelope` * (ADR-0011, Phase 6). * * The shared `formatSignalTableRows` (`@opensip-cli/output`) is the canonical * neutral table for the static/non-TTY render path — but fitness's PRODUCTION * source must not import `@opensip-cli/output` (the root owns egress; output * is the egress/format layer). So the TTY live view derives its richer, * fitness-specific table (display names + the `Validated`/`Ignores` columns) * straight from the envelope here, using only `@opensip-cli/contracts` * (envelope/units) + `@opensip-cli/core` (signals). This is the * decision-B fallback: ONE neutral formatter for the shared path, plus a * tool-specific rich view for fitness's terminal UX — both fed by the same * `UnitResult` facts (`filesValidated`/`itemType`/`ignoredCount`), so there is * a single source of truth. * * Pure: no IO, no clock. `getDisplayName` is a registry lookup (display only). */ import type { SignalEnvelope, VerboseDetail } from '@opensip-cli/contracts'; /** A live-view results-table row — one per check unit, with fitness columns. */ export interface FitTableRow { /** Display name (pretty, via the display registry), falling back to the slug. */ readonly check: string; readonly status: 'PASS' | 'FAIL' | 'ERROR'; readonly errors: number; readonly warnings: number; /** Files/items scanned this run (raw count; rendered with the noun). */ readonly validated?: number; readonly itemType?: string; /** Findings suppressed by an inline ignore directive. */ readonly ignored: number; /** Raw duration in milliseconds — the shared table renderer formats it. */ readonly durationMs: number; } /** Build the live-view results-table rows from the envelope (one row per unit). */ export declare function envelopeToFitRows(envelope: SignalEnvelope): FitTableRow[]; /** * Build the run's verbose detail body (ADR-0021) — `undefined` unless the run * asked for it (`--verbose`). Delegates the Signal[] → `FindingGroup[]` mapping * to the shared contracts `buildFindingGroups` (one source for fit + sim), * passing fit's display registry so each block is titled with the check's * pretty name. */ export declare function buildFitVerboseDetail(envelope: SignalEnvelope, opts: { readonly verbose?: boolean; }): VerboseDetail | undefined; //# sourceMappingURL=envelope-view.d.ts.map