/** * GitHub Issue Template Parser (Core Logic) * * Native TypeScript implementation for parsing GitHub issue template YAML files * and producing structured JSON config. The CLI * can consume the generated config at .cleo/issue-templates.json. * * Supports: parseIssueTemplates, getTemplateForSubcommand, generateTemplateConfig, validateLabels * * @task T5705 * @epic T5701 */ /** * A single section/field within an issue template. */ export interface TemplateSection { id: string; type: 'textarea' | 'dropdown' | 'input' | 'markdown' | 'checkboxes'; label: string; required: boolean; options?: string[]; placeholder?: string; } /** * A parsed issue template. */ export interface IssueTemplate { filename: string; subcommand: string; name: string; titlePrefix: string; labels: string[]; sections: TemplateSection[]; } /** * The full template config output. */ export interface TemplateConfig { templates: IssueTemplate[]; generatedAt: string; sourceDir: string; } /** * Result type for template parser operations. */ export interface TemplateResult { success: boolean; data?: T; error?: { code: string; message: string; details?: Record; }; } /** * Parse all templates from the repo's .github/ISSUE_TEMPLATE/ directory. * * Reads YAML files directly (live parse, no caching). * Excludes config.yml which is the GitHub template chooser config. */ export declare function parseIssueTemplates(projectRoot: string): TemplateResult; /** * Get template config for a specific subcommand (bug/feature/help). * * Performs a live parse and filters to the matching template. */ export declare function getTemplateForSubcommand(projectRoot: string, subcommand: string): TemplateResult; /** * Generate and cache the config as .cleo/issue-templates.json. * * Performs a live parse, then writes the result using writeJsonFileAtomic. */ export declare function generateTemplateConfig(projectRoot: string): Promise>; /** * Validate that labels exist on a GitHub repo. * * Compares the template labels against a list of known repo labels. * Returns which labels exist and which are missing. */ export declare function validateLabels(labels: string[], repoLabels: string[]): TemplateResult<{ existing: string[]; missing: string[]; }>; //# sourceMappingURL=parser.d.ts.map