import { ALCliWrapper } from '../cli/al-cli'; import { ParseProgress } from '../parser/streaming-parser'; import { OptimizedSymbolDatabase } from './symbol-database'; import { ALPackageInfo, ALPackageLoadResult } from '../types/al-types'; export interface PackageDiscoveryOptions { packagesPath: string; includePatterns?: string[]; excludePatterns?: string[]; recursive?: boolean; } export declare class ALPackageManager { private alCli; private parser; private zipExtractor; private database; private progressCallback?; constructor(alCli?: ALCliWrapper, progressCallback?: (progress: ParseProgress) => void, database?: OptimizedSymbolDatabase); /** * Auto-discover AL packages in .alpackages directories */ discoverPackages(options: PackageDiscoveryOptions): Promise; /** * Load AL packages from multiple .app files */ loadPackages(packagePaths: string[], forceReload?: boolean): Promise; /** * Load a single AL package * Tries ZIP extraction first, falls back to AL CLI if needed */ private loadSinglePackage; /** * Load package using direct ZIP extraction (no AL CLI required) */ private loadPackageViaZip; /** * Load package using AL CLI tools (fallback for packages needing conversion) */ private loadPackageViaAlCli; /** * Get the internal database for MCP tools */ getDatabase(): OptimizedSymbolDatabase; /** * Get loaded package information */ getLoadedPackages(): ALPackageInfo[]; /** * Find .alpackages directories and AL project directories automatically */ autoDiscoverPackageDirectories(rootPath: string, maxDepth?: number): Promise; private searchForProjectDirectories; private searchForAlPackagesDirectories; /** * Get custom package paths from VS Code AL extension settings */ private getCustomPackagePaths; /** * Read al.packageCachePath from a VS Code settings file */ private readPackageCachePathFromSettings; /** * Check if a directory should be skipped during auto-discovery */ private shouldSkipDirectory; /** * Check package dependencies and resolve load order */ resolveDependencyOrder(packagePaths: string[]): Promise; /** * Filter package paths to only include the most recent version of each package */ filterToLatestVersions(packagePaths: string[]): Promise; /** * Compare two version strings (e.g., "1.2.3.4" vs "1.2.4.0") * Returns: > 0 if version1 > version2, < 0 if version1 < version2, 0 if equal */ private compareVersions; /** * Report progress to callback */ private reportProgress; } //# sourceMappingURL=package-manager.d.ts.map