interface RepositoryHealth {
    healthy: boolean;
    score: number;
    issues: string[];
    recommendations: string[];
    metrics: {
        branches: number;
        commits: number;
        untrackedFiles: number;
        staleBranches: number;
        largeBinaryFiles: number;
        commitFrequency: number;
        conventionalCommitRatio?: number;
        recentCommitsCount?: number;
        repositoryAgeInDays?: number;
        totalCommits?: number;
        totalBranches?: number;
        unmergedCommits?: number;
        danglingCommits?: number;
    };
}
interface BranchInfo {
    name: string;
    lastCommitDate: string;
    lastCommitAuthor: string;
    lastCommitSubject: string;
    isRemote: boolean;
    isStale: boolean;
    type: 'remote' | 'local';
}
interface UnmergedCommitInfo {
    hash: string;
    message: string;
    branch: string;
}
interface DanglingCommitInfo {
    hash: string | undefined;
    type: 'dangling';
}
interface BranchAnalysis {
    branches: BranchInfo[];
    unmergedCommits: UnmergedCommitInfo[];
    danglingCommits: DanglingCommitInfo[];
    analysis: string;
}
interface ComprehensiveGitAnalysis {
    analysis: string;
    recommendations?: string[];
    metrics: RepositoryHealth['metrics'];
    health: RepositoryHealth;
}
export declare class GitService {
    [key: string]: any;
    constructor(gitManager: any, tagger: any);
    getCommitAnalysis(commitHash: any): Promise<{
        hash: any;
        fullHash: any;
        subject: any;
        author: any;
        date: any;
        body: any;
        files: any[];
        diffStats: {
            files: number;
            insertions: number;
            deletions: number;
        };
        semanticChanges: any;
        breakingChanges: any;
        categories: any;
        importance: any;
        tags: any;
    } | null>;
    analyzeFileChange(commitHash: any, status: any, filePath: any): Promise<{
        status: any;
        filePath: any;
        diff: string;
        beforeContent: string;
        afterContent: string;
        category: string;
        language: string;
        importance: string;
        complexity: {
            score: number;
            additions?: undefined;
            deletions?: undefined;
            total?: undefined;
            level?: undefined;
        } | {
            score: number;
            additions: any;
            deletions: any;
            total: any;
            level: string;
        };
        semanticChanges: any;
        functionalImpact: any;
    } | null>;
    analyzeWorkingDirectoryFileChange(status: any, filePath: any): Promise<{
        status: any;
        filePath: any;
        diff: string;
        beforeContent: string;
        afterContent: string;
        category: string;
        language: string;
        importance: string;
        complexity: {
            score: number;
            additions?: undefined;
            deletions?: undefined;
            total?: undefined;
            level?: undefined;
        } | {
            score: number;
            additions: any;
            deletions: any;
            total: any;
            level: string;
        };
        semanticChanges: any;
        functionalImpact: any;
    }>;
    analyzeStagedFileChange(status: any, filePath: any): Promise<{
        status: string;
        filePath: any;
        diff: string;
        beforeContent: string;
        afterContent: string;
        additions: number;
        deletions: number;
        category: string;
        language: string;
        importance: string;
        complexity: {
            score: number;
            additions?: undefined;
            deletions?: undefined;
            total?: undefined;
            level?: undefined;
        } | {
            score: number;
            additions: any;
            deletions: any;
            total: any;
            level: string;
        };
        semanticChanges: any;
        functionalImpact: any;
    }>;
    getCommitDiffStats(commitHash: any): {
        files: number;
        insertions: number;
        deletions: number;
    };
    getCommitsSince(since: any, options?: Record<string, any>): Promise<any>;
    /**
     * Get commits in the range fromRef..toRef.
     *
     * Both refs are validated with `git rev-parse --verify <ref>^{commit}` before
     * the range is queried, so a typo'd tag/SHA surfaces as a clear error instead
     * of an empty range that masquerades as "no changes".
     *
     * @param {string} fromRef - Exclusive lower bound (commit, tag, or branch)
     * @param {string} toRef - Inclusive upper bound (default: 'HEAD')
     * @param {Object} options - Optional filters
     * @param {string} options.author - Filter by author name or email
     * @returns {Promise<Array<{hash: string, message: string}>>} Commits in range
     * @throws {Error} If either ref cannot be resolved to a commit
     */
    getCommitsBetween(fromRef: string, toRef?: string, options?: Record<string, any>): Promise<Array<{
        hash: string;
        message: string;
    }>>;
    /**
     * Process merge commit statistics to create meaningful file analysis
     */
    processMergeCommitStats(commitHash: any, statOutput: any): any[];
    /**
     * Create a meaningful diff summary for merge commits with enhanced categorization
     */
    createMergeCommitDiffSummary(filePath: any, totalChanges: any, additions: any, deletions: any, _commitHash: any): string;
    /**
     * Generate comprehensive merge commit summary with categorized changes and technical details
     */
    generateMergeCommitSummary(files: any, commitHash: any, subject: any): string;
    /**
     * Extract technical details from key merge commit files for specific descriptions
     */
    extractTechnicalDetailsFromMerge(files: any, commitHash: any): string[];
    /**
     * Extract specific technical changes from a diff
     */
    extractSpecificChanges(filePath: any, diff: any): string | null;
    assessRepositoryHealth(_config?: Record<string, any>): Promise<RepositoryHealth>;
    analyzeBranches(format?: string): Promise<BranchAnalysis>;
    analyzeComprehensive(includeRecommendations?: boolean): Promise<ComprehensiveGitAnalysis | {
        analysis: string;
        recommendations: string[] | undefined;
        metrics: {};
        health: {
            healthy: boolean;
            score: number;
        };
    }>;
    findMainBranch(): any;
}
export {};
