export interface PhaseDirectoryComputation { phaseId: number | string; dirName: string; } export interface NextDecimalPhaseResult { next: string; existing: string[]; } /** Reject strings containing null bytes (path traversal defense). */ export declare function assertNoNullBytes(value: string, label: string): void; /** Reject `..` or path separators in phase directory names. */ export declare function assertSafePhaseDirName(dirName: string, label?: string): void; export declare function assertSafeProjectCode(code: string): void; /** Generate kebab-case slug from description. */ export declare function generatePhaseSlug(text: string): string; export declare function parseMultiwordArg(args: string[], flag: string): string | null; /** * Extract a one-liner from the summary body when it is not in frontmatter. * * Scope: content from the first heading to the next heading of ANY level. * Per GFM ATX headings (https://github.github.com/gfm/#atx-headings), * a heading of any level terminates the scope -- including sub-headings * even when the title heading is H1. * * #3 defect-3: the original regex matched the first bold in the entire body * after any heading, leaking bold text from later sections (e.g. deviation * entries) into the one-liner. */ export declare function extractOneLinerFromBody(content: string): string | null; /** * Scan highest sequential phase number in milestone content. * Skips exactly the backlog sentinel (`999`); phases 1000+ are valid canonical IDs. */ export declare function scanSequentialMaxPhaseFromMilestone(milestoneContent: string): number; /** * Scan highest sequential phase number from phase directory names. * Supports optional project-code prefix and optional decimal suffixes. */ export declare function scanSequentialMaxPhaseFromDirs(dirNames: string[]): number; export declare function computeNextSequentialPhaseId(milestoneContent: string, dirNames: string[]): number; export declare function computePhaseDirectory(namingMode: unknown, descriptionSlug: string, prefix: string, nextSequentialPhaseId: number, customId?: string | null): PhaseDirectoryComputation; export declare function buildPhaseRoadmapEntry(phaseId: number | string, description: string, namingMode: unknown): string; export declare function collectDecimalSuffixesFromDirNames(basePhase: string, dirNames: string[]): Set; export declare function collectDecimalSuffixesFromRoadmap(basePhase: string, roadmapContent: string): Set; export declare function computeNextDecimalPhase(basePhase: string, decimalSet: Set): NextDecimalPhaseResult; //# sourceMappingURL=phase-lifecycle-policy.d.ts.map