export type StoryStatus = 'Draft' | 'Ready' | 'InProgress' | 'InReview' | 'Done';
export declare const STORY_STATUSES: StoryStatus[];
export declare function isStoryStatus(v: string): v is StoryStatus;
export interface AcceptanceCriterion {
    text: string;
    checked: boolean;
}
export interface ChangeLogEntry {
    /** ISO-ish date string as captured in the markdown (e.g. "2026-05-11"). */
    date: string;
    /** Author marker as written ("@dev (Charlie)", "po (Pax)", …). */
    author: string;
    /** Free-form note text. */
    note: string;
    /** Raw line as it appears in the file (for round-trip preservation). */
    raw: string;
}
export interface Story {
    /** Canonical id, e.g. "3.3". */
    id: string;
    /** Owning epic id, e.g. "epic-feature-completeness". */
    epicId: string;
    /** First-line H1 title without the "# Story <id> —" prefix. */
    title: string;
    status: StoryStatus;
    /** Severity tag (P0/P1/P2 etc.) when present. */
    severity?: string;
    /** Cluster tag (`install-flow`, `doc-cli-drift`, …) when present. */
    cluster?: string;
    /** Other story ids this one depends on (parsed from "Depends on" line). */
    dependsOn: string[];
    /** All `**Field:**` lines we encountered, normalized to camelCase keys. */
    fields: Record<string, string>;
    /** All `## Heading` sections, keyed by lower-cased heading. */
    sections: Record<string, string>;
    /** Parsed acceptance criteria checkboxes. */
    acceptanceCriteria: AcceptanceCriterion[];
    /** Parsed change-log entries (most recent at file bottom is last here). */
    changeLog: ChangeLogEntry[];
    /** Description section body (often the first ## section). */
    description?: string;
    /** Dev Notes section body. */
    devNotes?: string;
    /** File List section body (may be markdown bullet list as raw string). */
    fileList?: string;
    /** Path the story was loaded from. */
    sourcePath: string;
    /** Raw markdown content. */
    raw: string;
}
export interface Epic {
    /** Canonical id, e.g. "epic-feature-audit". */
    id: string;
    /** First-line H1 title without "# Epic:" prefix when present. */
    title: string;
    /** Status when declared in the epic.md (Draft/Ready/Done…). */
    status?: StoryStatus;
    /** Goal section body. */
    goal?: string;
    /** Scope section body. */
    scope?: string;
    /** All `**Field:**` lines. */
    fields: Record<string, string>;
    /** All `## Heading` sections. */
    sections: Record<string, string>;
    /** Story ids referenced inside the epic (best-effort scrape). */
    storyIds: string[];
    /** Acceptance criteria parsed from the epic.md (less common). */
    acceptanceCriteria: AcceptanceCriterion[];
    sourcePath: string;
    raw: string;
}
export interface ParseError {
    sourcePath: string;
    message: string;
}
export interface ParseResult<T> {
    value?: T;
    errors: ParseError[];
}
