import { Project } from 'ts-morph';
import { CallGraphResult } from '../types';
/**
 * 呼び出しグラフの構築と分析を担当するクラス
 */
export declare class CallGraphAnalyzer {
    private project;
    private nodeUtils;
    private callGraph;
    private outputDir;
    /**
     * コンストラクタ
     * @param project ts-morphのプロジェクトインスタンス
     * @param outputDir 出力ディレクトリ（オプション）
     */
    constructor(project: Project, outputDir?: string);
    /**
     * 出力ディレクトリを確保
     */
    private ensureOutputDir;
    /**
     * グラフファイルの出力パスを生成
     * @param baseName 基本ファイル名
     * @returns 出力パス
     */
    private generateOutputPath;
    /**
     * プロジェクト全体の呼び出しグラフを構築
     * @returns 構築された呼び出しグラフのノード数
     */
    buildCallGraph(): number;
    /**
     * 関数宣言を処理
     * @param sourceFile ソースファイル
     */
    private processFunctions;
    /**
     * クラス宣言を処理
     * @param sourceFile ソースファイル
     */
    private processClasses;
    /**
     * 関数/メソッド本体内の呼び出し式を処理
     * @param node 関数/メソッドノード
     * @param callGraphNode 呼び出しグラフノード
     */
    private processCallExpressions;
    /**
     * 呼び出し関係を記録
     * @param caller 呼び出し元ノード
     * @param calleeName 呼び出し先シンボル名
     */
    private recordCallRelationship;
    /**
     * 呼び出し関係を構築
     */
    private buildCallRelationships;
    /**
     * ノードを取得または作成
     * @param symbolName シンボル名
     * @param type シンボルタイプ
     * @param node ノード（オプション）
     * @returns 呼び出しグラフノード
     */
    private getOrCreateNode;
    /**
     * 2つのシンボル間の呼び出し経路を検索
     * @param fromSymbol 開始シンボル
     * @param toSymbol 終了シンボル
     * @returns 呼び出し経路の分析結果
     */
    findPathsFromTo(fromSymbol: string, toSymbol: string): CallGraphResult;
    /**
     * シンボルを呼び出すすべての経路を検索
     * @param symbol 対象シンボル
     * @returns 呼び出し経路の分析結果
     */
    findAllCallers(symbol: string): CallGraphResult;
    /**
     * 深さ優先探索で経路を検索
     * @param current 現在のノード
     * @param target 目標ノード
     * @param visited 訪問済みノード
     * @param path 現在の経路
     * @param edges 現在の経路のエッジ
     * @param results 結果の経路リスト
     */
    private dfsSearch;
    /**
     * 逆方向の深さ優先探索で経路を検索
     * @param current 現在のノード
     * @param visited 訪問済みノード
     * @param path 現在の経路
     * @param edges 現在の経路のエッジ
     * @param results 結果の経路リスト
     */
    private dfsReverseSearch;
    /**
     * Mermaid形式のグラフを生成
     * @param paths 経路リスト
     * @param baseName 基本ファイル名
     * @returns Mermaid形式の文字列と出力パス
     */
    private generateMermaidFormat;
}
