/**
 * AI Code Review Tool
 *
 * Automatically reviews code changes for bugs, security issues,
 * and best practice violations.
 */
import { EventEmitter } from 'events';
export interface ReviewIssue {
    id: string;
    severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
    category: ReviewCategory;
    file: string;
    line?: number;
    endLine?: number;
    message: string;
    suggestion?: string;
    code?: string;
    fixAvailable?: boolean;
    autoFixable?: boolean;
}
export type ReviewCategory = 'bug' | 'security' | 'performance' | 'style' | 'maintainability' | 'complexity' | 'documentation' | 'type_safety' | 'error_handling' | 'best_practice';
export interface ReviewResult {
    files: string[];
    issues: ReviewIssue[];
    summary: ReviewSummary;
    timestamp: Date;
    duration: number;
}
export interface ReviewSummary {
    totalIssues: number;
    bySeverity: Record<string, number>;
    byCategory: Record<string, number>;
    passedChecks: string[];
    score: number;
}
export interface ReviewConfig {
    checkBugs: boolean;
    checkSecurity: boolean;
    checkPerformance: boolean;
    checkStyle: boolean;
    checkComplexity: boolean;
    checkDocumentation: boolean;
    checkTypesSafety: boolean;
    maxComplexity: number;
    maxFileLength: number;
    maxFunctionLength: number;
    excludePatterns: string[];
    includeOnlyPatterns: string[];
    model: string;
    contextLines: number;
}
/**
 * AI Code Review Tool
 */
export declare class CodeReviewTool extends EventEmitter {
    private config;
    private client;
    private bash;
    private issueIdCounter;
    private vfs;
    constructor(config?: Partial<ReviewConfig>);
    /**
     * Initialize the AI client
     */
    private ensureClient;
    /**
     * Review git diff (staged or unstaged changes)
     */
    reviewGitDiff(options?: {
        staged?: boolean;
        branch?: string;
    }): Promise<ReviewResult>;
    /**
     * Review specific files
     */
    reviewFiles(filePaths: string[]): Promise<ReviewResult>;
    /**
     * Review a single file
     */
    reviewFile(filePath: string): Promise<ReviewResult>;
    /**
     * Review file content with AI
     */
    private reviewFileContent;
    /**
     * Parse git diff output
     */
    private parseGitDiff;
    /**
     * Detect language from file extension
     */
    private detectLanguage;
    /**
     * Check if file should be excluded
     */
    private shouldExclude;
    /**
     * Create result object
     */
    private createResult;
    /**
     * Create empty result
     */
    private createEmptyResult;
    /**
     * Format result for display
     */
    formatResult(result: ReviewResult): string;
    /**
     * Get emoji for severity
     */
    private getSeverityEmoji;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<ReviewConfig>): void;
    /**
     * Get configuration
     */
    getConfig(): ReviewConfig;
}
export declare function getCodeReviewTool(config?: Partial<ReviewConfig>): CodeReviewTool;
export declare function resetCodeReviewTool(): void;
