/**
 * Code Review Mode
 *
 * Provides AI-powered code review capabilities:
 * - Line-by-line analysis
 * - Security vulnerability detection
 * - Performance suggestions
 * - Best practice recommendations
 * - Refactoring opportunities
 */
import { EventEmitter } from 'events';
export type ReviewSeverity = 'critical' | 'warning' | 'info' | 'suggestion';
export type ReviewCategory = 'security' | 'performance' | 'maintainability' | 'bug' | 'style' | 'documentation' | 'testing' | 'accessibility' | 'best-practice';
export interface ReviewComment {
    id: string;
    file: string;
    line: number;
    endLine?: number;
    column?: number;
    severity: ReviewSeverity;
    category: ReviewCategory;
    message: string;
    suggestion?: string;
    codeSnippet?: string;
    fixAvailable?: boolean;
    autoFix?: ReviewFix;
}
export interface ReviewFix {
    type: 'replace' | 'insert' | 'delete';
    line: number;
    endLine?: number;
    oldText?: string;
    newText?: string;
}
export interface ReviewSummary {
    totalFiles: number;
    totalComments: number;
    bySeverity: Record<ReviewSeverity, number>;
    byCategory: Record<ReviewCategory, number>;
    score: number;
    grade: 'A' | 'B' | 'C' | 'D' | 'F';
    highlights: string[];
    recommendations: string[];
}
export interface ReviewResult {
    files: FileReview[];
    summary: ReviewSummary;
    duration: number;
}
export interface FileReview {
    path: string;
    comments: ReviewComment[];
    linesReviewed: number;
    score: number;
}
export interface ReviewConfig {
    includePatterns: string[];
    excludePatterns: string[];
    maxFiles: number;
    maxLinesPerFile: number;
    categories: ReviewCategory[];
    severityThreshold: ReviewSeverity;
    enableAutoFix: boolean;
    gitDiffOnly: boolean;
    baseBranch?: string;
}
export declare class CodeReviewEngine extends EventEmitter {
    private config;
    private projectRoot;
    constructor(projectRoot: string, config?: Partial<ReviewConfig>);
    /**
     * Run code review on the project
     */
    review(): Promise<ReviewResult>;
    /**
     * Review a single file
     */
    reviewFile(filePath: string): Promise<FileReview>;
    /**
     * Get files to review
     */
    private getFilesToReview;
    /**
     * Get files changed in git
     */
    private getGitDiffFiles;
    /**
     * Glob files based on patterns
     */
    private globFiles;
    /**
     * Check if path matches include/exclude patterns
     */
    private matchesPatterns;
    /**
     * Check if path is excluded
     */
    private isExcluded;
    /**
     * Convert glob pattern to regex
     */
    private globToRegex;
    /**
     * Get language from file extension
     */
    private getLanguage;
    /**
     * Check if severity meets threshold
     */
    private meetsThreshold;
    /**
     * Calculate file score
     */
    private calculateFileScore;
    /**
     * Generate review summary
     */
    private generateSummary;
    /**
     * Apply auto-fixes
     */
    applyFixes(fileReviews: FileReview[]): Promise<{
        applied: number;
        failed: number;
    }>;
    /**
     * Format review result as text
     */
    formatAsText(result: ReviewResult): string;
    /**
     * Dispose
     */
    dispose(): void;
}
export declare function createCodeReview(projectRoot: string, config?: Partial<ReviewConfig>): CodeReviewEngine;
/**
 * Quick review function
 */
export declare function reviewProject(projectRoot: string, options?: Partial<ReviewConfig>): Promise<ReviewResult>;
