import type { CadenceConfig, CadenceState, Draft, LoopPosition, Profile, TaskStatus, Tier } from '@manehorizons/cadence-types'; export interface ProgressFile { draftId: string; tasks: Record; } export interface TaskStatusEntry { id: string; name: string; status: TaskStatus; acs: string[]; } export interface AcStatus { id: string; state: 'pending' | 'pass' | 'blocked' | 'needs-context'; } export interface StatusReport { /** Schema version for the --json output. Bump on breaking changes. */ schemaVersion: 1; project: string; loopPosition: LoopPosition; activePhase: string | null; activeDraft: string | null; tier: Tier | null; /** Effective profile: DRAFT frontmatter override (if any) wins over project config. */ profile: Profile; draftTitle: string | null; tasks: TaskStatusEntry[]; acs: AcStatus[]; /** * Deliberately narrowed to `{command, reason}` (phase 206), not the full * `NextAction` return: `nextAction()` now also carries a ranked * `legalMoves[]` (phase 206 T1), which is `cadence next`'s surface, not * `status`'s — mirrors `services/progress.ts`/`quickstart/build.ts`'s * identical narrowing, so `cadence status --json`'s public contract * doesn't silently grow a field. */ next: { command: string; reason: string; }; } export declare function gatherStatus(state: CadenceState, draft: Draft | null, progress: ProgressFile | null, config?: Pick | null): StatusReport; export interface DerivedAcResult { id: string; verdict: 'pass' | 'blocked' | 'needs-context' | 'pending'; /** Task ids that prevent a pass (BLOCKED/NEEDS_CONTEXT, or not-yet-DONE). */ blockers: string[]; } export declare function deriveAcResults(draft: Draft, progress: ProgressFile | null): DerivedAcResult[]; export declare function renderStatus(r: StatusReport): string; export declare function loadStatus(root: string): Promise; //# sourceMappingURL=status.d.ts.map