import { SymbolAnalysisOptions, ReferenceResult, SymbolInfo, CallGraphResult, RuntimeTraceOptions, RuntimeTraceResult } from '../types/index.js';
/**
 * TypeScriptコードのシンボル参照を分析するクラス
 */
export declare class SymbolReferenceAnalyzer {
    private projectManager;
    private symbolFinder;
    private nodeUtils;
    private callGraphAnalyzer;
    private runtimeTraceAnalyzer;
    private options;
    private basePath;
    /**
     * コンストラクタ
     * @param options 設定オプション
     */
    constructor(options: RuntimeTraceOptions);
    /**
     * シンボルの参照を分析する
     * @param symbolName 分析対象のシンボル名
     * @param options 分析オプション
     * @returns 参照分析結果
     */
    analyzeSymbol(symbolName: string, options?: SymbolAnalysisOptions): ReferenceResult;
    /**
     * ファイル内の未参照シンボルをチェック
     * @param filePath チェック対象のファイルパス
     * @returns 他のファイルから参照されていないシンボルのリスト
     */
    checkFile(filePath: string): SymbolInfo[];
    /**
     * トップレベルのシンボルをチェックする
     * @param sourceFile ソースファイル
     * @param checkedSymbols チェック済みシンボルのセット
     * @param unreferencedSymbols 未参照シンボルのリスト
     */
    private checkTopLevelSymbols;
    /**
     * クラスメンバーをチェックする
     * @param sourceFile ソースファイル
     * @param checkedSymbols チェック済みシンボルのセット
     * @param unreferencedSymbols 未参照シンボルのリスト
     */
    private checkClassMembers;
    /**
     * メソッド参照を検索する
     * @param className クラス名
     * @param methodName メソッド名
     * @returns 参照の配列
     */
    private findMethodReferences;
    /**
     * プロパティ参照を検索する
     * @param className クラス名
     * @param propertyName プロパティ名
     * @returns 参照の配列
     */
    private findPropertyReferences;
    /**
     * 呼び出しグラフを構築する
     * @returns 構築されたノード数
     */
    buildCallGraph(): number;
    /**
     * 2つのシンボル間の呼び出し経路を分析
     * @param fromSymbol 開始シンボル
     * @param toSymbol 終了シンボル
     * @returns 呼び出し経路の分析結果
     */
    traceCallPath(fromSymbol: string, toSymbol: string): CallGraphResult;
    /**
     * シンボルを呼び出すすべての経路を分析
     * @param symbol 対象シンボル
     * @returns 呼び出し経路の分析結果
     */
    findCallers(symbol: string): CallGraphResult;
    /**
     * プロジェクトインスタンスを取得する
     * @returns プロジェクトインスタンス
     */
    getProject(): import("ts-morph").Project;
    /**
     * 2つのシンボル間の呼び出し経路を動的に分析
     * @param fromSymbol 開始シンボル
     * @param toSymbol 終了シンボル
     * @returns 呼び出し経路の分析結果
     */
    traceCallPathRuntime(fromSymbol: string, toSymbol: string): Promise<RuntimeTraceResult>;
}
