/**
 * Module Discovery Service
 *
 * Orchestrates multiple discovery strategies to automatically find and load
 * modules from various sources (packages, configs, runtime registration).
 */
import type { ModuleMetadata } from '../types/ModuleMetadata';
export interface DiscoveryOptions {
    packageScanPaths?: string[];
    configScanPaths?: string[];
    packageNamePattern?: string;
    configFilePattern?: string;
    enablePackageScanning?: boolean;
    enableConfigDetection?: boolean;
    enableRuntimeRegistration?: boolean;
    validateModules?: boolean;
    ignorePatterns?: string[];
}
export interface DiscoveryResult {
    modules: ModuleMetadata[];
    errors: DiscoveryError[];
    warnings: DiscoveryWarning[];
    stats: DiscoveryStats;
}
export interface DiscoveryError {
    source: string;
    message: string;
    details?: any;
}
export interface DiscoveryWarning {
    source: string;
    message: string;
    details?: any;
}
export interface DiscoveryStats {
    packagesScanned: number;
    configsFound: number;
    modulesDiscovered: number;
    validationErrors: number;
    discoveryTime: number;
}
export declare class ModuleDiscoveryService {
    private options;
    private runtimeModules;
    private logger;
    private platformInfo;
    constructor(options?: DiscoveryOptions);
    /**
     * Discover modules from all enabled sources
     */
    discoverModules(): Promise<ModuleMetadata[]>;
    /**
     * Discover modules from package.json files
     */
    private discoverFromPackages;
    /**
     * Discover modules from module.config.ts files
     */
    private discoverFromConfigs;
    /**
     * Get modules registered at runtime
     */
    private discoverFromRuntime;
    /**
     * Register a module at runtime
     */
    registerRuntimeModule(module: ModuleMetadata): void;
    /**
     * Scan workspace for packages matching the pattern
     */
    private scanWorkspacePackages;
    /**
     * Find module configuration files
     */
    private findConfigFiles;
    /**
     * Load module metadata from package candidate
     */
    private loadModuleFromPackage;
    /**
     * Load module metadata from configuration file
     */
    private loadModuleFromConfig;
    /**
     * Generate module metadata from package.json
     */
    private generateMetadataFromPackage;
    /**
     * Check if package is a module package
     */
    private isModulePackage;
    /**
     * Extract module ID from package name
     */
    private extractModuleId;
    /**
     * Format module name from ID
     */
    private formatModuleName;
    /**
     * Infer category from module ID
     */
    private inferCategoryFromId;
    /**
     * Read and parse package.json file
     */
    private readPackageJson;
    /**
     * Remove duplicate modules (prefer first occurrence)
     */
    private deduplicateModules;
    /**
     * Validate discovered modules
     */
    private validateDiscoveredModules;
}
//# sourceMappingURL=ModuleDiscoveryService.d.ts.map