/**
 * Cyclomatic Complexity Analyzer
 *
 * Automated analysis of code complexity:
 * - Cyclomatic complexity per function
 * - Cognitive complexity
 * - Lines of code metrics
 * - Maintainability index
 */
export interface FunctionComplexity {
    name: string;
    filePath: string;
    startLine: number;
    endLine: number;
    cyclomaticComplexity: number;
    cognitiveComplexity: number;
    linesOfCode: number;
    parameters: number;
    rating: 'A' | 'B' | 'C' | 'D' | 'F';
}
export interface FileComplexity {
    filePath: string;
    functions: FunctionComplexity[];
    averageComplexity: number;
    maxComplexity: number;
    totalLinesOfCode: number;
    maintainabilityIndex: number;
    rating: 'A' | 'B' | 'C' | 'D' | 'F';
}
export interface ComplexityReport {
    files: FileComplexity[];
    summary: {
        totalFiles: number;
        totalFunctions: number;
        averageComplexity: number;
        maxComplexity: number;
        totalLinesOfCode: number;
        complexFunctions: number;
        veryComplexFunctions: number;
        overallRating: 'A' | 'B' | 'C' | 'D' | 'F';
    };
    hotspots: FunctionComplexity[];
    recommendations: string[];
    generatedAt: Date;
}
export interface AnalyzerOptions {
    /** Directory to analyze */
    rootPath?: string;
    /** File patterns to include */
    include?: string[];
    /** Patterns to exclude */
    exclude?: string[];
    /** Complexity threshold for warnings */
    complexityThreshold?: number;
    /** Maximum functions to report in hotspots */
    maxHotspots?: number;
}
/**
 * Analyze complexity of a codebase
 */
export declare function analyzeComplexity(options?: AnalyzerOptions): Promise<ComplexityReport>;
/**
 * Format complexity report for terminal display
 */
export declare function formatComplexityReport(report: ComplexityReport): string;
/**
 * Export complexity data as JSON
 */
export declare function exportComplexityJSON(report: ComplexityReport): string;
/**
 * Export complexity data as CSV
 */
export declare function exportComplexityCSV(report: ComplexityReport): string;
export default analyzeComplexity;
