import { BaseAnalyzer } from './BaseAnalyzer';
import { ASTNode, CodeFunction, CodeClass, ImportDeclaration, ExportDeclaration, AnalysisContext, ComplexityMetrics } from './types';
/**
 * C++ AST Analyzer
 * Analyzes C++ source code using regex-based parsing
 * Handles C++ specific constructs like classes, namespaces, templates, and preprocessor directives
 */
export declare class CppAnalyzer extends BaseAnalyzer {
    constructor();
    /**
     * Parse C++ source code (regex-based approach)
     */
    protected parseAST(content: string, context: AnalysisContext): Promise<any>;
    /**
     * Extract AST nodes from C++ code
     */
    protected extractNodes(ast: any, context: AnalysisContext): Promise<ASTNode[]>;
    /**
     * Extract functions from C++ code
     */
    protected extractFunctions(ast: any, context: AnalysisContext): Promise<CodeFunction[]>;
    /**
     * Extract classes from C++ code
     */
    protected extractClasses(ast: any, context: AnalysisContext): Promise<CodeClass[]>;
    /**
     * Extract imports (#include directives) from C++ code
     */
    protected extractImports(ast: any, context: AnalysisContext): Promise<ImportDeclaration[]>;
    /**
     * Extract exports from C++ code
     */
    protected extractExports(ast: any, context: AnalysisContext): Promise<ExportDeclaration[]>;
    /**
     * Extract dependencies from C++ code
     */
    protected extractDependencies(ast: any, _context: AnalysisContext): Promise<string[]>;
    /**
     * Calculate complexity metrics for C++ code
     */
    protected calculateComplexity(ast: any, _context: AnalysisContext): Promise<ComplexityMetrics>;
    /**
     * Get parser configuration for C++
     */
    protected getParserConfig(): any;
    /**
     * Get line number from character index
     */
    private getLineNumber;
    /**
     * Find the end of a code block
     */
    private findBlockEnd;
    /**
     * Parse C++ namespaces
     */
    private parseNamespaces;
    /**
     * Parse preprocessor directives
     */
    private parsePreprocessorDirectives;
    /**
     * Parse type declarations (typedef, using)
     */
    private parseTypeDeclarations;
    /**
     * Parse global variables
     */
    private parseGlobalVariables;
    /**
     * Parse C++ function parameters
     */
    private parseCppParameters;
    /**
     * Parse class methods
     */
    private parseClassMethods;
    /**
     * Parse class properties
     */
    private parseClassProperties;
    /**
     * Check if class is abstract (has pure virtual functions)
     */
    private isAbstractClass;
    /**
     * Extract function calls from code
     */
    private extractFunctionCalls;
    /**
     * Calculate complexity for a single function
     */
    private calculateFunctionComplexity;
}
//# sourceMappingURL=CppAnalyzer.d.ts.map