import { type ChiefStage, type ChiefStageEvent } from "../util/chief-stage-events.js"; export interface StageNarrationLine { /** Underlying stage that produced this line (for logging/tests). */ stage: ChiefStage; /** Display text — ready to send to Discord (≤ 2000 chars). */ text: string; } /** * Project a single stage event into 0..n narration lines. Returns `[]` for * non-projected stages (TRIAGE / SYNTHESIZE / DECIDE / RETROSPECT — the Chief * reply already covers them) and for projected stages whose formatter declines * (e.g. an AWAIT with no open_questions). `skills_used` becomes a `↳ …` * follow-on bullet. * * v1.3.0 Part C (P0) — this is the single source of truth for stage → line * formatting, shared by the batch path (`buildStageNarration`) and the live * path (the dispatcher's `onStage` callback). Both MUST render identically. */ export declare function formatStageEvent(event: ChiefStageEvent): StageNarrationLine[]; /** * Build the narration line list for a turn. Skips stages we don't * project (TRIAGE / SYNTHESIZE / DECIDE / RETROSPECT — these are * already represented by the Chief reply itself), and silently drops * stages whose formatter returns null. `skills_used` entries on any * stage are appended as `↳ skill1, skill2` follow-ons. */ export declare function buildStageNarration(orgRoot: string, turnId: string): StageNarrationLine[]; /** * Convenience — flatten StageNarrationLine[] into the string[] format * that discord-task-card.ts expects. */ export declare function narrationLinesAsStrings(lines: StageNarrationLine[]): string[];