/**
 * Canonical wizard tasks — the five user-visible progress steps.
 *
 * The agent commandment in `src/lib/commandments.ts` instructs the LLM
 * to emit TodoWrite using these exact labels in this order. The TUI
 * store (`syncTodos` in `store.ts`) treats this list as the source of
 * truth for the rendered checklist: it pre-populates these five rows
 * on `RunPhase.Running`, matches incoming TodoWrite entries by exact
 * label, and drops anything that doesn't match. That keeps LLM drift
 * (a renamed step on retry, a stray sixth todo) from reordering or
 * regressing the user-visible journey.
 *
 * Order matters — index 0 is the first step shown, index 4 is the last.
 */
export interface CanonicalStep {
    /** Stable identifier; index in CANONICAL_STEPS == step order. */
    readonly id: 'detect' | 'install' | 'plan' | 'wire' | 'dashboard';
    /** User-visible label shown in the progress list. Must match the agent commandment exactly. */
    readonly label: string;
    /** Default activeForm shown when the step is in_progress and the agent has not provided one. */
    readonly defaultActiveForm: string;
}
export declare const CANONICAL_STEPS: readonly CanonicalStep[];
/** The canonical labels in order — convenience for callers that only need the strings. */
export declare const CANONICAL_LABELS: readonly string[];
/**
 * Match an agent-emitted TodoWrite content string to a canonical step.
 * Case-insensitive exact-label match only — anything else returns -1
 * and is dropped by the renderer. The system prompt is the contract;
 * we don't paper over drift here.
 */
export declare function matchCanonicalStep(content: string): number;
