/**
 * TypeScript Code Analyzer
 *
 * Extracts function signatures and type definitions from TypeScript files
 * using the TypeScript Compiler API.
 *
 * @module core/discrepancy/analyzers/typescript-analyzer
 */
import { Logger } from '../../../utils/logger.js';
/**
 * Represents a function parameter with name and type.
 */
export interface FunctionParam {
    name: string;
    type: string;
    optional: boolean;
}
/**
 * Represents a function signature extracted from code.
 */
export interface FunctionSignature {
    name: string;
    filePath: string;
    lineNumber: number;
    params: FunctionParam[];
    returnType: string;
    exported: boolean;
    async: boolean;
    jsdoc?: string;
}
/**
 * Represents a type definition (interface, type alias, or class).
 */
export interface TypeDefinition {
    name: string;
    filePath: string;
    lineNumber: number;
    kind: 'interface' | 'type' | 'class';
    exported: boolean;
    properties?: {
        name: string;
        type: string;
        optional: boolean;
    }[];
}
/**
 * Configuration for the TypeScript analyzer.
 */
export interface TypeScriptAnalyzerConfig {
    /** Glob patterns to include (default: ['**\/*.ts']) */
    include?: string[];
    /** Glob patterns to exclude (default: ['**\/*.test.ts', 'node_modules/**']) */
    exclude?: string[];
    /** Base directory for relative paths */
    basePath?: string;
}
/**
 * Result of TypeScript analysis.
 */
export interface AnalysisResult {
    functions: FunctionSignature[];
    types: TypeDefinition[];
    errors: string[];
}
/**
 * Analyzes TypeScript files to extract function signatures and type definitions.
 */
export declare class TypeScriptAnalyzer {
    private readonly logger;
    private readonly config;
    constructor(options?: {
        logger?: Logger;
        config?: TypeScriptAnalyzerConfig;
    });
    /**
     * Analyze a list of TypeScript files.
     */
    analyze(files: string[]): Promise<AnalysisResult>;
    /**
     * Analyze a single TypeScript file.
     */
    analyzeFile(filePath: string): Promise<AnalysisResult>;
    private extractFunctionSignature;
    private extractArrowFunctionSignature;
    private extractMethodSignature;
    private extractInterfaceDefinition;
    private extractTypeAliasDefinition;
    private extractClassDefinition;
    private extractParameters;
    private extractReturnType;
    private extractInterfaceProperties;
    private extractJSDoc;
    private hasExportModifier;
    private hasAsyncModifier;
}
//# sourceMappingURL=typescript-analyzer.d.ts.map