/**
 * Base AST Analyzer
 * Abstract base class for language-specific AST analyzers
 */
import { AnalysisResult, AnalysisContext, AnalysisOptions, SupportedLanguage, ASTNode, CodeFunction, CodeClass, ImportDeclaration, ExportDeclaration, ComplexityMetrics, DependencyGraph } from './types';
export declare abstract class BaseAnalyzer {
    protected language: SupportedLanguage;
    protected defaultOptions: AnalysisOptions;
    constructor(language: SupportedLanguage);
    /**
     * Analyze a single file
     */
    analyzeFile(filePath: string, options?: Partial<AnalysisOptions>): Promise<AnalysisResult>;
    /**
     * Analyze multiple files
     */
    analyzeFiles(filePaths: string[], options?: Partial<AnalysisOptions>): Promise<AnalysisResult[]>;
    /**
     * Build dependency graph from analysis results
     */
    buildDependencyGraph(results: AnalysisResult[]): DependencyGraph;
    /**
     * Create analysis context
     */
    protected createContext(filePath: string, options?: Partial<AnalysisOptions>): AnalysisContext;
    /**
     * Detect language from file path
     */
    private detectLanguageFromPath;
    /**
     * Generate unique ID
     */
    protected generateId(): string;
    /**
     * Get default complexity metrics
     */
    protected getDefaultComplexity(): ComplexityMetrics;
    protected abstract parseAST(content: string, context: AnalysisContext): Promise<any>;
    protected abstract extractNodes(ast: any, context: AnalysisContext): Promise<ASTNode[]>;
    protected abstract extractFunctions(ast: any, context: AnalysisContext): Promise<CodeFunction[]>;
    protected abstract extractClasses(ast: any, context: AnalysisContext): Promise<CodeClass[]>;
    protected abstract extractImports(ast: any, context: AnalysisContext): Promise<ImportDeclaration[]>;
    protected abstract extractExports(ast: any, context: AnalysisContext): Promise<ExportDeclaration[]>;
    protected abstract extractDependencies(ast: any, context: AnalysisContext): Promise<string[]>;
    protected abstract calculateComplexity(ast: any, context: AnalysisContext): Promise<ComplexityMetrics>;
    protected abstract getParserConfig(): any;
}
//# sourceMappingURL=BaseAnalyzer.d.ts.map