/**
 * @file codebase-analyzer.ts
 * @description Brownfield codebase analysis for generating intake documentation
 *
 * Implements F-003/UC-003: Codebase Intake Generation
 * - Scans existing codebases to extract structure, dependencies, and metrics
 * - Generates intake forms automatically from code analysis
 * - Identifies technologies, frameworks, and architectural patterns
 * - Estimates technical debt and modernization opportunities
 *
 * @implements NFR-ACC-002: >85% accurate technology detection
 * @implements NFR-PERF-003: <2min analysis for medium codebases (<50k LOC)
 */
export interface CodebaseMetrics {
    totalFiles: number;
    totalLines: number;
    codeLines: number;
    commentLines: number;
    blankLines: number;
    filesByLanguage: Record<string, number>;
    linesByLanguage: Record<string, number>;
}
export interface DependencyInfo {
    name: string;
    version: string;
    type: 'production' | 'development' | 'peer';
    vulnerabilities?: number;
    lastUpdated?: string;
}
export interface TechnologyStack {
    languages: Array<{
        language: string;
        percentage: number;
        files: number;
    }>;
    frameworks: Array<{
        name: string;
        version?: string;
        confidence: number;
    }>;
    databases: Array<{
        type: string;
        confidence: number;
    }>;
    buildTools: string[];
    testFrameworks: string[];
    cicd: string[];
}
export interface ArchitecturePattern {
    pattern: string;
    confidence: number;
    indicators: string[];
}
export interface TechnicalDebt {
    category: 'deprecated' | 'outdated' | 'security' | 'complexity' | 'duplication';
    severity: 'critical' | 'high' | 'medium' | 'low';
    description: string;
    location: string;
    estimatedEffort: string;
}
export interface CodebaseAnalysisResult {
    projectName: string;
    projectPath: string;
    analyzedAt: Date;
    metrics: CodebaseMetrics;
    technologies: TechnologyStack;
    dependencies: DependencyInfo[];
    architecture: ArchitecturePattern[];
    technicalDebt: TechnicalDebt[];
    recommendations: string[];
    estimatedComplexity: 'simple' | 'moderate' | 'complex' | 'enterprise';
}
export interface AnalysisOptions {
    path: string;
    excludePaths?: string[];
    maxFiles?: number;
    detectFrameworks?: boolean;
    detectDebt?: boolean;
    scanDependencies?: boolean;
}
export declare class CodebaseAnalyzer {
    private readonly defaultExcludePaths;
    private readonly languageExtensions;
    /**
     * Analyze a codebase and generate comprehensive analysis
     */
    analyze(options: AnalysisOptions): Promise<CodebaseAnalysisResult>;
    /**
     * Validate analysis path exists and is accessible
     */
    private validatePath;
    /**
     * Gather codebase metrics (lines, files, languages)
     */
    private gatherMetrics;
    /**
     * Detect technologies, frameworks, and tools
     */
    private detectTechnologies;
    /**
     * Detect frameworks from package.json, requirements.txt, pom.xml, etc.
     */
    private detectFrameworks;
    /**
     * Detect databases from configuration files
     */
    private detectDatabases;
    /**
     * Detect build tools
     */
    private detectBuildTools;
    /**
     * Detect test frameworks
     */
    private detectTestFrameworks;
    /**
     * Detect CI/CD configuration
     */
    private detectCICD;
    /**
     * Scan project dependencies
     */
    private scanDependencies;
    /**
     * Detect architecture patterns
     */
    private detectArchitecture;
    /**
     * Detect technical debt
     */
    private detectTechnicalDebt;
    /**
     * Generate recommendations based on analysis
     */
    private generateRecommendations;
    /**
     * Estimate project complexity
     */
    private estimateComplexity;
    /**
     * Walk directory recursively
     */
    private walkDirectory;
    /**
     * Check if path should be excluded
     */
    private shouldExclude;
    /**
     * Get empty tech stack
     */
    private getEmptyTechStack;
}
export default CodebaseAnalyzer;
//# sourceMappingURL=codebase-analyzer.d.ts.map