/** Minimal shape of the YAML frontmatter fields we consume internally. */
export interface ParsedFrontmatter {
    id?: string;
    status?: string;
    type?: string;
    updated?: string;
}
export type CorruptKind = 'syntax' | 'duplicate-content' | 'truncated';
export interface StatusValidateResult {
    ok: boolean;
    error?: string;
    corruptKind?: CorruptKind;
}
export interface QuarantineResult {
    quarantinedAt: string;
    quarantinePath: string;
}
export interface StaleImplementingSpec {
    specId: string;
    daysInStatus: number;
    hasProgress: boolean;
    lastTransition: string | null;
}
export type ResolvedFrom = 'arg' | 'cwd-walk-planu' | 'git-root' | 'env';
export interface ResolveProjectPathResult {
    projectPath: string;
    resolvedFrom: ResolvedFrom;
}
export interface ProjectOverviewInput {
    projectPath?: string;
    includeStaleImplementing?: boolean;
    staleDays?: number;
    topN?: number;
}
export interface ByStatusCounts {
    draft: number;
    approved: number;
    implementing: number;
    review: number;
    validating: number;
    done: number;
    discarded: number;
}
export interface TopPendingSpec {
    specId: string;
    status: string;
    title: string;
    daysInStatus: number;
    hasProgress: boolean;
}
export interface WorkspaceOverviewDrift {
    statusJsonHealthy: boolean;
    versionInSync: boolean;
    pendingDriftReviews: number;
    planuDriftScore: number;
}
export interface PendingCleanup {
    branches: number;
    worktrees: number;
    stashes: number;
}
export interface ForceUsage {
    forcedSpecs: number;
    totalSpecs: number;
    ratio: number;
    trend: 'improving' | 'stable' | 'worsening';
}
export interface ProjectOverviewResult {
    projectId: string;
    projectPath: string;
    runtime: {
        planuVersion: string;
        node: string;
    };
    status: {
        total: number;
        byStatus: ByStatusCounts;
        pendingTotal: number;
    };
    topPending: TopPendingSpec[];
    lastRelease: {
        version: string;
        publishedAt: string | null;
        tagSha: string | null;
    } | null;
    drift: WorkspaceOverviewDrift;
    pendingCleanup: PendingCleanup | null;
    staleImplementing: StaleImplementingSpec[];
    forceUsage: ForceUsage;
    hints: string[];
}
export type ReconcileSource = 'frontmatter-wins' | 'status-wins' | 'newest-wins';
export interface ReconcileStatusJsonInput {
    projectPath?: string;
    source?: ReconcileSource;
    dryRun?: boolean;
}
export interface ReconcileConflict {
    specId: string;
    statusJson: string;
    frontmatter: string;
    resolved: string;
}
export interface ReconcileStatusJsonResult {
    corrected: number;
    dryRun: boolean;
    source: ReconcileSource;
    conflicts: ReconcileConflict[];
    message: string;
}
//# sourceMappingURL=workspace-overview.d.ts.map