import { Issue } from './issue.js'; export type IssueFormat = 'md' | 'yaml'; export interface DecodedIssue { issue: Issue; format: IssueFormat; /** * Everything needed to reconstruct the file byte-for-byte apart from the * fields the model owns. Callers should treat this as opaque and pass it back * to encodeIssue unchanged. */ raw: { data: Record; body: string; }; /** * Non-fatal observations: a normalized status, an unrecognized value, a * missing title. Surfaced so callers can report integrity problems rather * than discovering them months later. */ warnings: string[]; } /** * Split a bare-YAML record into its YAML head and any markdown tail at column 0. * * The column-0 anchor is load-bearing and must not gain `\s*`: headings indented * inside a `description:` block scalar are body text, not a tail, and matching * them would truncate the record at parse time. Phase 2 verified no record in * the store relies on the difference, but nothing else pins it, so it is pinned * by test here. */ export declare function splitBareYaml(content: string): { head: string; tail: string; }; export declare function decodeIssue(filename: string, content: string): DecodedIssue; export declare function encodeIssue(decoded: DecodedIssue): string; /** Apply changes to a decoded record, keeping derived state consistent. */ export declare function applyIssueChanges(decoded: DecodedIssue, changes: Partial): DecodedIssue; //# sourceMappingURL=issueCodec.d.ts.map