import { EventEmitter } from "events"; import { Repository, RepositoryState, RepositoryManagerConfig, RepositoryOperationResult, BatchOperationOptions, RepositoryProgressCallback } from "./types"; import { RepositoryConfig } from "../config/types"; export interface RepositoryManagerEvents { repositoryAdded: (repository: Repository) => void; repositoryUpdated: (repository: Repository) => void; repositoryRemoved: (repositoryId: string) => void; operationStarted: (repositoryId: string, operation: string) => void; operationCompleted: (repositoryId: string, operation: string, result: RepositoryOperationResult) => void; operationFailed: (repositoryId: string, operation: string, error: string) => void; batchStarted: (total: number) => void; batchCompleted: (completed: number, failed: number) => void; } export declare interface RepositoryManager { on(event: K, listener: RepositoryManagerEvents[K]): this; emit(event: K, ...args: Parameters): boolean; } export declare class RepositoryManager extends EventEmitter { private repositories; private activeOperations; private gitOps; private config; private concurrencyQueue; private activeConcurrent; constructor(config?: Partial); initialize(): Promise; addRepository(config: RepositoryConfig): Promise; cloneRepository(repositoryId: string): Promise; updateRepository(repositoryId: string): Promise; removeRepository(repositoryId: string, deleteFiles?: boolean): Promise; batchClone(configs: RepositoryConfig[], options?: BatchOperationOptions): Promise; batchUpdate(repositoryIds?: string[], options?: BatchOperationOptions): Promise; getRepository(repositoryId: string): Repository | undefined; getRepositoryByName(name: string): Repository | undefined; getAllRepositories(): Repository[]; getRepositoriesByState(state: RepositoryState): Repository[]; isOperationActive(repositoryId: string): boolean; addProgressCallback(repositoryId: string, callback: RepositoryProgressCallback): void; removeProgressCallback(repositoryId: string, callback: RepositoryProgressCallback): void; getStatistics(): Promise<{ total: number; byState: Record; totalSize: number; totalFiles: number; activeOperations: number; }>; cleanup(): Promise; private loadExistingRepositories; private executeConcurrent; private setupEventHandlers; /** * Check if repository exists */ exists(repositoryId: string): boolean; /** * Clone or update repository */ cloneOrUpdate(repositoryId: string): Promise; private normalizeGitUrl; } //# sourceMappingURL=RepositoryManager.d.ts.map