import { type LoadedRoadmapSource, type RoadmapDefinition, type RoadmapSourceProject, type RoadmapSourceValidationResult } from '../core/index.js'; export declare const DEFAULT_ROADMAP_SOURCE_MANIFEST = "docs/roadmap/project.yaml"; export interface RoadmapSourceStore { cwd: string; manifestPath: string; sourceRoot: string; outputPath: string; project: RoadmapSourceProject; sources: LoadedRoadmapSource[]; roadmap: RoadmapDefinition; projection: string; } export declare function resolveRoadmapSourceManifest(cwd: string, sourceFlag?: string): string; export declare function hasModularRoadmapSources(cwd: string, sourceFlag?: string): boolean; export declare function loadRoadmapSourceStore(cwd: string, sourceFlag?: string): RoadmapSourceStore; export interface WriteRoadmapProjectionOptions { /** Overwrite even when the on-disk projection holds content no source produces. */ force?: boolean; } export declare function writeRoadmapSourceProjection(store: RoadmapSourceStore, options?: WriteRoadmapProjectionOptions): 'written' | 'unchanged'; /** * Refuse to silently discard authored content that exists only in the projection. * * `slope validate` regenerated the projection as a side effect and reported * success, so a phase, six sprints and 26 tickets edited into the generated file * vanished with no error, no warning and no diff — and it reproduced across * operators, because nothing in the file said it was generated (GH #637). */ export declare function assertNoProjectionContentLoss(store: RoadmapSourceStore, existing: string): void; export interface CompleteRoadmapSourceSprintResult { source: string; projection: 'written' | 'unchanged'; changed: boolean; /** True when the source could not be patched surgically and was rewritten in canonical style. */ reformatted?: boolean; /** * Set when the sprint holds a scorecard but its authored status is a deliberate * non-complete disposition (absorbed, blocked, ...). Reconciliation refuses to * overwrite it — a scorecard records how a sprint was played, not whether it * completed (GH #660). The authored status is reported so the caller can surface * the mismatch; nothing is written. */ skipped?: 'status_conflict'; /** The authored status that blocked auto-promotion, when skipped. */ authoredStatus?: string; } export declare function completeRoadmapSourceSprint(cwd: string, sprint: number, options?: { sourceFlag?: string; scorecardPath?: string; dryRun?: boolean; force?: boolean; }): CompleteRoadmapSourceSprintResult; /** * Compare a checked-out generated projection with canonical generated bytes. * Git may materialize tracked LF files as CRLF on Windows; normalize only that * checkout representation so every other formatting or semantic difference * remains observable drift. */ export declare function roadmapProjectionMatches(actual: string, expected: string): boolean; export interface RoadmapSourceStoreValidationOptions { checkProjection?: boolean; checkArchiveEvidence?: boolean; } export declare function validateRoadmapSourceStore(store: RoadmapSourceStore, options?: RoadmapSourceStoreValidationOptions): RoadmapSourceValidationResult; export interface RoadmapSourceArchiveMove { sourceId: string; from: string; to: string; fromAbsolute: string; toAbsolute: string; } export interface RoadmapSourceArchivePlan { through: number; moves: RoadmapSourceArchiveMove[]; project: RoadmapSourceProject; manifestYaml: string; } export declare function planRoadmapSourceArchive(store: RoadmapSourceStore, through: number): RoadmapSourceArchivePlan; export declare function applyRoadmapSourceArchive(store: RoadmapSourceStore, plan: RoadmapSourceArchivePlan): void; //# sourceMappingURL=roadmap-source-store.d.ts.map