/** Category of deletion candidate detected in the codebase. */
export type DeletionCategory = 'dead-code' | 'duplication' | 'over-engineering' | 'premature-optimization' | 'permanent-feature-flag' | 'wrapper-function';
/** Severity of a deletion candidate. */
export type DeletionSeverity = 'low' | 'medium' | 'high';
/** Single candidate identified for potential deletion or simplification. */
export interface DeletionCandidate {
    /** Absolute file path. */
    file: string;
    /** 1-based line number where the issue starts. */
    line: number;
    /** Category of the issue. */
    category: DeletionCategory;
    /** Severity level. */
    severity: DeletionSeverity;
    /** Human-readable description of what was found. */
    description: string;
    /** Suggested action for the developer. */
    suggestion: string;
    /** Optional snippet of the offending code (≤5 lines). */
    snippet?: string;
}
/** Summary of suggest_deletions scan. */
export interface SuggestDeletionsResult {
    /** Absolute path that was scanned. */
    projectPath: string;
    /** Total files analyzed. */
    filesAnalyzed: number;
    /** All deletion candidates found, ranked by severity then category. */
    candidates: DeletionCandidate[];
    /** ISO timestamp of when the scan was performed. */
    scannedAt: string;
}
/** Per-module sustainability breakdown. */
export interface ModuleSustainability {
    /** Relative file path. */
    file: string;
    /** Simplicity score 0-1 (1 = simple). */
    simplicity: number;
    /** Cohesion score 0-1 (1 = highly cohesive). */
    cohesion: number;
    /** Coupling score (fan-in + fan-out; lower is better). */
    coupling: number;
    /** Final sustainability score 0-100. */
    score: number;
    /** Grade A-F derived from score. */
    grade: 'A' | 'B' | 'C' | 'D' | 'F';
}
/** Full sustainability report for a project. */
export interface SustainabilityReport {
    /** Absolute path that was scanned. */
    projectPath: string;
    /** Overall project sustainability score 0-100. */
    overallScore: number;
    /** Overall grade A-F. */
    overallGrade: 'A' | 'B' | 'C' | 'D' | 'F';
    /** Per-module breakdown, sorted worst-first. */
    modules: ModuleSustainability[];
    /** Total files analyzed. */
    filesAnalyzed: number;
    /** ISO timestamp of generation. */
    generatedAt: string;
}
/** Simplicity metrics for a single file. */
export interface FileSimplicityMetrics {
    /** Relative file path. */
    file: string;
    /** Average function length in lines. */
    avgFunctionLength: number;
    /** Maximum nesting depth found. */
    maxNestingDepth: number;
    /** Count of ternary chains (nested ternaries). */
    ternaryChainCount: number;
    /** Count of regex literals (heuristic for "clever" patterns). */
    regexCount: number;
    /** Average number of parameters per function. */
    avgParamCount: number;
    /** Composite simplicity score 0-100. */
    score: number;
    /** Grade A-F. */
    grade: 'A' | 'B' | 'C' | 'D' | 'F';
}
/** Full simplicity report for a project. */
export interface SimplicityReport {
    /** Absolute path that was scanned. */
    projectPath: string;
    /** Overall project simplicity score 0-100. */
    overallScore: number;
    /** Overall grade A-F. */
    overallGrade: 'A' | 'B' | 'C' | 'D' | 'F';
    /** Per-file metrics, sorted worst-first. */
    files: FileSimplicityMetrics[];
    /** Total files analyzed. */
    filesAnalyzed: number;
    /** ISO timestamp of generation. */
    generatedAt: string;
}
/** Internal: sliding-window block entry for duplication detection. */
export interface DuplicationBlockEntry {
    file: string;
    startLine: number;
    hash: string;
    snippet: string;
}
export interface SuggestDeletionsInput {
    projectPath: string;
    files?: string[];
    /** Minimum severity to report. Defaults to 'low'. */
    threshold?: DeletionSeverity;
}
export interface SustainabilityScoreInput {
    projectPath: string;
    files?: string[];
}
export interface SimplicityMetricInput {
    projectPath: string;
    files?: string[];
}
//# sourceMappingURL=delete-first.d.ts.map