import { LoadedModule, ModuleExports } from './module-loader';
export interface ModuleMetadata {
    id: string;
    resolvedPath: string;
    packageName?: string;
    version?: string;
    dependencies: string[];
    dependents: string[];
    exports: ModuleExports;
    imports: ModuleImports;
    lastModified?: Date;
    size?: number;
}
export interface ModuleImports {
    default?: string[];
    named: Record<string, string[]>;
    namespace?: string[];
}
export interface DependencyNode {
    id: string;
    dependencies: string[];
    dependents: string[];
    level: number;
}
export type DependencyTreeNode = {
    id: string;
    level?: number;
    circular?: false;
    dependencies: DependencyTreeNode[];
} | {
    id: string;
    circular: true;
};
export declare class ModuleRegistry {
    private readonly modules;
    private readonly dependencyGraph;
    /**
     * Register a loaded module
     */
    register(module: LoadedModule): void;
    /**
     * Get module metadata
     */
    get(moduleId: string): ModuleMetadata | undefined;
    /**
     * Check if module is registered
     */
    has(moduleId: string): boolean;
    /**
     * Get all registered modules
     */
    getAll(): ModuleMetadata[];
    /**
     * Get module dependencies
     */
    getDependencies(moduleId: string): string[];
    /**
     * Get module dependents (modules that depend on this one)
     */
    getDependents(moduleId: string): string[];
    /**
     * Get dependency graph
     */
    getDependencyGraph(): Map<string, DependencyNode>;
    /**
     * Get topological sort of modules
     */
    getTopologicalSort(): string[];
    /**
     * Find circular dependencies
     */
    findCircularDependencies(): string[][];
    /**
     * Get module statistics
     */
    getStatistics(): {
        totalModules: number;
        totalDependencies: number;
        averageDependencies: number;
        maxDependencyDepth: number;
        circularDependencies: number;
    };
    /**
     * Clear registry
     */
    clear(): void;
    /**
     * Remove module from registry
     */
    remove(moduleId: string): boolean;
    private updateDependencyGraph;
    private calculateLevels;
    private extractImports;
    /**
     * Get modules that have no dependencies (entry points)
     */
    getEntryPoints(): string[];
    /**
     * Get modules that are not depended upon (dead code candidates)
     */
    getDeadCodeCandidates(): string[];
    /**
     * Get dependency tree for a specific module
     */
    getDependencyTree(moduleId: string, visited?: Set<string>): DependencyTreeNode;
    private processImportSpecifiers;
    private getResolvedDependencies;
    private resolveSpecifierToModuleId;
}
//# sourceMappingURL=module-registry.d.ts.map