import { Neo4jDatabaseService } from '../layer2/neo4j-database/Neo4jDatabaseService';
export interface MultiLanguageCodeEntity {
    id: string;
    name: string;
    type: 'File' | 'Class' | 'Method' | 'Function' | 'Interface' | 'Module' | 'Package';
    language: string;
    sourceCode: string;
    filePath: string;
    startLine: number;
    endLine: number;
    version: string;
    lastModified: Date;
    metadata: Record<string, any>;
}
export interface MultiLanguageCodeRelationship {
    from: string;
    to: string;
    type: 'IMPORTS' | 'EXTENDS' | 'IMPLEMENTS' | 'CALLS' | 'USES' | 'CONTAINS' | 'DEPENDS_ON' | 'INHERITS';
    language: string;
    metadata: Record<string, any>;
    version: string;
}
export interface VersionedMultiLanguageGraph {
    version: string;
    timestamp: Date;
    entities: MultiLanguageCodeEntity[];
    relationships: MultiLanguageCodeRelationship[];
    languages: string[];
    ttlSyncHash: string;
    gitCommit?: string | undefined;
    statistics: {
        totalFiles: number;
        totalClasses: number;
        totalMethods: number;
        totalLines: number;
        languageBreakdown: Record<string, number>;
    };
}
/**
 * MultiLanguageCodeGraphAnalyzer - Advanced multi-language code graph analysis
 *
 * This service creates comprehensive code graphs for ANY programming language by:
 * 1. Using @codegraph-js/codegraph for multi-language AST analysis
 * 2. Supporting TypeScript, JavaScript, Python, Java, Go, Rust, C++, C#, etc.
 * 3. Storing actual source code content with relationships in Neo4j
 * 4. Maintaining version synchronization with TTL files
 * 5. Providing rich multi-language context for LLM queries
 */
export declare class MultiLanguageCodeGraphAnalyzer {
    private neo4jService;
    private currentVersion;
    private supportedLanguages;
    constructor(neo4jService: Neo4jDatabaseService);
    /**
     * Analyze entire multi-language codebase and create versioned code graph
     */
    analyzeMultiLanguageCodebase(projectPath: string): Promise<VersionedMultiLanguageGraph>;
    /**
     * Discover source files by programming language
     */
    private discoverSourceFiles;
    /**
     * Analyze files for a specific programming language
     */
    private analyzeLanguageFiles;
    /**
     * Analyze file using enhanced pattern-based analysis
     * (CodeGraph integration can be added later when API is better understood)
     */
    private analyzeFileWithCodeGraph;
    /**
     * Enhanced pattern-based analysis for multiple languages
     */
    private enhancedPatternAnalysis;
    /**
     * Create file entity
     */
    private createFileEntity;
    /**
     * Create code entity from analysis result
     */
    private createCodeEntity;
    /**
     * Store versioned multi-language graph in Neo4j
     */
    private storeVersionedMultiLanguageGraph;
    /**
     * Generate TTL sync hash for version correlation
     */
    private generateTTLSyncHash;
    /**
     * Find all TTL files in the project
     */
    private findTTLFiles;
    /**
     * Find files recursively
     */
    private findFilesRecursive;
    /**
     * Get current Git commit hash
     */
    private getCurrentGitCommit;
    /**
     * Generate version string
     */
    private generateVersion;
    /**
     * Calculate complexity (simplified)
     */
    private calculateComplexity;
    /**
     * Query multi-language code graph
     */
    queryMultiLanguageCodeGraph(query: string, language?: string, version?: string): Promise<any[]>;
    /**
     * Search code patterns across all languages
     */
    searchMultiLanguageCodePatterns(pattern: string, languages?: string[], entityType?: string, version?: string): Promise<any[]>;
    /**
     * Get language statistics
     */
    getLanguageStatistics(version?: string): Promise<any>;
}
//# sourceMappingURL=MultiLanguageCodeGraphAnalyzer.d.ts.map