import { EventEmitter } from 'events'; import { UniversalPackageManager } from '../core/rarn-core.js'; export interface Plugin { name: string; version: string; hooks?: PluginHooks; commands?: PluginCommand[]; resolvers?: PackageResolver[]; fetchers?: PackageFetcher[]; } export interface PluginHooks { beforeInstall?: (packages: string[], context: PluginContext) => Promise; afterInstall?: (installedPackages: Map, context: PluginContext) => Promise; beforeResolve?: (requirements: Record, context: PluginContext) => Promise; afterResolve?: (resolved: Map, context: PluginContext) => Promise; beforeFetch?: (packageInfo: any, context: PluginContext) => Promise; afterFetch?: (packageData: Buffer, context: PluginContext) => Promise; } export interface PluginContext { upm: UniversalPackageManager; config: any; cwd: string; env: NodeJS.ProcessEnv; } export interface PluginCommand { name: string; description: string; handler: (args: string[], context: PluginContext) => Promise; } export interface PackageResolver { name: string; canResolve: (packageSpec: string) => boolean; resolve: (packageSpec: string, context: PluginContext) => Promise; } export interface PackageFetcher { name: string; canFetch: (resolvedPackage: ResolvedPackage) => boolean; fetch: (resolvedPackage: ResolvedPackage, context: PluginContext) => Promise; } export interface ResolvedPackage { name: string; version: string; source: string; checksum?: string; dependencies?: Record; } export interface FetchResult { buffer: Buffer; checksum: string; extractMethod: 'tar' | 'zip' | 'none'; } export declare class PluginManager extends EventEmitter { private plugins; private hooks; private commands; private resolvers; private fetchers; loadPlugin(pluginPath: string): Promise; registerPlugin(plugin: Plugin): void; executeHook(hookName: string, ...args: any[]): Promise; getCommand(name: string): PluginCommand | undefined; getResolver(packageSpec: string): PackageResolver | undefined; getFetcher(resolvedPackage: ResolvedPackage): PackageFetcher | undefined; } export interface Workspace { root: string; packages: WorkspacePackage[]; dependencies: Map; devDependencies: Map; } export interface WorkspacePackage { name: string; path: string; version: string; dependencies?: Record; devDependencies?: Record; workspaceDependencies?: string[]; } export declare class WorkspaceManager { private workspace; loadWorkspace(rootPath: string): Promise; private findPackages; private isPackage; private loadPackage; private buildDependencyGraph; installWorkspace(): Promise; private topologicalSort; private linkWorkspaceDependencies; } export declare class BinaryPackageHandler { private platform; private arch; constructor(); extractBinaryPackage(packageData: Buffer, targetPath: string, metadata: BinaryPackageMetadata): Promise; private extractCondaPackage; private extractWheelPackage; private createActivationScripts; private relocateBinaries; } export interface BinaryPackageMetadata { format: 'conda' | 'wheel' | 'native'; platform: string; arch: string; dependencies: string[]; envVars?: Record; relocatable: boolean; } export declare class NetworkManager { private maxRetries; private timeout; download(url: string, options?: DownloadOptions): Promise; private doDownload; } interface DownloadOptions { headers?: Record; onProgress?: (received: number, total: number) => void; } export declare const GitResolverPlugin: Plugin; export declare class ZeroInstallManager { private vendorPath; constructor(vendorPath?: string); vendorPackage(packageName: string, packageData: Buffer, metadata: any): Promise; loadVendoredPackage(packageName: string): Promise; } export {}; //# sourceMappingURL=rarn-plugins.d.ts.map