/**
 * Dependency Analyzer Tool
 *
 * Analyzes import/export dependencies, detects circular dependencies,
 * identifies unreachable files, and generates dependency graphs.
 *
 * Inspired by hurry-mode's dependency analysis capabilities.
 */
import { DependencyGraph, CircularDependency, DependencyStats } from "./types.js";
import { ASTParser } from "./ast-parser.js";
/**
 * Configuration for dependency analysis
 */
export interface DependencyAnalyzerConfig {
    rootPath: string;
    filePatterns: string[];
    excludePatterns: string[];
    detectCircular: boolean;
    findUnreachable: boolean;
    generateGraph: boolean;
    entryPoints?: string[];
    maxDepth: number;
    resolveExtensions: string[];
}
/**
 * Analysis result
 */
export interface DependencyAnalysisResult {
    graph: DependencyGraph;
    circularDependencies: CircularDependency[];
    unreachableFiles: string[];
    externalDependencies: Map<string, string[]>;
    stats: DependencyStats;
    analysisTime: number;
}
/**
 * Dependency Analyzer
 */
export declare class DependencyAnalyzer {
    private config;
    private parser;
    private graph;
    private edges;
    private vfs;
    constructor(config?: Partial<DependencyAnalyzerConfig>, parser?: ASTParser);
    /**
     * Analyze dependencies in a codebase
     */
    analyze(rootPath?: string): Promise<DependencyAnalysisResult>;
    /**
     * Analyze a single file
     */
    private analyzeFile;
    /**
     * Resolve an import to a file path
     */
    private resolveImport;
    /**
     * Detect entry points
     */
    private detectEntryPoints;
    /**
     * Calculate depths from entry points
     */
    private calculateDepths;
    /**
     * Detect circular dependencies using DFS
     */
    private detectCircularDependencies;
    /**
     * Find unreachable files
     */
    private findUnreachableFiles;
    /**
     * Extract external dependencies
     */
    private extractExternalDependencies;
    /**
     * Calculate statistics
     */
    private calculateStats;
    /**
     * Discover files to analyze
     */
    private discoverFiles;
    /**
     * Get dependency graph as JSON
     */
    toJSON(): Record<string, unknown>;
    /**
     * Get dependency chain between two files
     */
    getDependencyChain(from: string, to: string): string[] | null;
    /**
     * Get files that depend on a given file
     */
    getDependents(filePath: string): string[];
    /**
     * Get files that a given file depends on
     */
    getDependencies(filePath: string): string[];
    /**
     * Format result for display
     */
    formatResult(result: DependencyAnalysisResult): string;
}
/**
 * Create a dependency analyzer
 */
export declare function createDependencyAnalyzer(config?: Partial<DependencyAnalyzerConfig>, parser?: ASTParser): DependencyAnalyzer;
export declare function getDependencyAnalyzer(): DependencyAnalyzer;
export declare function resetDependencyAnalyzer(): void;
