import type { SpecStatus, Difficulty, RiskLevel, SpecType, SpecScope, SpecTarget, DiagramType } from '../common.js';
import type { Estimation, Actuals, ImpactAnalysis } from '../estimation.js';
export interface Spec {
    id: string;
    title: string;
    slug: string;
    feature?: string;
    type: SpecType;
    scope: SpecScope;
    status: SpecStatus;
    difficulty: Difficulty;
    risk: RiskLevel;
    projectId: string;
    createdAt: string;
    updatedAt: string;
    huPath: string;
    fichaTecnicaPath: string;
    planPath?: string;
    estimation: Estimation;
    actuals: Actuals | null;
    target: SpecTarget;
    tags: string[];
    dependencies: string[];
    blockedBy: string[];
    gitBranch: string;
    impactAnalysis: ImpactAnalysis | null;
}
export interface SpecSummary {
    specId: string;
    title: string;
    oneLiner: string;
    keyDecisions: string[];
    riskHighlights: string[];
    estimationSummary: string;
    affectedModules: string[];
    criticalDependencies: string[];
    generatedAt: string;
}
export type SummaryFormat = 'executive' | 'technical' | 'oneliner';
export type ChecklistCategory = 'completeness' | 'consistency' | 'feasibility' | 'security' | 'edge-cases' | 'ux';
export interface ChecklistItem {
    id: string;
    question: string;
    category: ChecklistCategory;
    answer: 'yes' | 'no' | 'partial' | 'na' | 'pending';
    evidence?: string;
    autoChecked: boolean;
    passed?: boolean | null;
    detail?: string | null;
}
export interface ChecklistCategoryScore {
    category: ChecklistCategory;
    score: number;
    weight: number;
    items: ChecklistItem[];
}
export interface ChecklistScore {
    overall: number;
    categories: ChecklistCategoryScore[];
    autoCheckedCount: number;
    manualPendingCount: number;
    recommendation: 'approve' | 'review' | 'reject';
}
export interface SpecChecklist {
    specId: string;
    items: ChecklistItem[];
    passedCount: number;
    totalCount: number;
    score: number;
    checklistScore?: ChecklistScore;
    generatedAt: string;
}
export interface ReconcileReport {
    specId: string;
    changes: ReconcileChange[];
    specUpdated: boolean;
    reason: string;
    reconciledAt: string;
}
export interface ReconcileChange {
    section: string;
    originalValue: string;
    newValue: string;
    reason: string;
    approved: boolean;
}
export interface SpecVersion {
    specId: string;
    version: number;
    changes: SpecDiff[];
    changedBy: string;
    timestamp: string;
    reason: string;
}
export interface SpecDiff {
    file: 'HU.md' | 'FICHA-TECNICA.md' | 'PLAN.md';
    section: string;
    type: 'added' | 'modified' | 'removed';
    before: string;
    after: string;
}
export interface CascadeNotification {
    specId: string;
    title: string;
    status: SpecStatus;
    message: string;
}
export interface CascadeResult {
    affectedSpecs: string[];
    notifications: CascadeNotification[];
    checkedAt: string;
}
export interface VersionHistory {
    specId: string;
    versions: SpecVersion[];
    currentVersion: number;
}
export interface SpecDiagram {
    type: DiagramType;
    title: string;
    format: 'mermaid';
    content: string;
    description: string;
}
export interface SpecSplitSuggestion {
    originalSpecId: string;
    reason: string;
    suggestedSpecs: SpecSplitItem[];
    dependencyOrder: string[];
    totalEstimate: Estimation;
}
export interface SpecSplitItem {
    suggestedTitle: string;
    type: SpecType;
    target: SpecTarget;
    scope: SpecScope;
    description: string;
    criteriaCount: number;
    dependsOn: string[];
    estimatedHours: number;
}
//# sourceMappingURL=core.d.ts.map