import { EventEmitter } from 'events'; import { ProjectMemory, AnalysisSnapshot, SnapshotTrigger, AnalysisComparison, ProjectInsight, LearnedPattern } from '../types/memory'; import { ProjectContext } from '../types'; import { EnhancedAnalysisResult, EnhancedAnalysisOptions } from '../types/analysis'; import { MemoryManager } from './memory-manager'; import { ProjectAnalyzer } from './project-analyzer'; export interface CacheConfig { maxSize: number; ttl: number; strategy: 'lru' | 'lfu' | 'timed'; compressionEnabled: boolean; encryptionEnabled: boolean; persistToDisk: boolean; } export interface ProjectWatchConfig { enabled: boolean; debounceMs: number; patterns: string[]; ignorePatterns: string[]; snapshotThreshold: number; } export interface AnalysisCacheEntry { id: string; projectPath: string; result: EnhancedAnalysisResult; timestamp: Date; hash: string; dependencies: string[]; accessCount: number; lastAccessed: Date; size: number; compressed: boolean; encrypted: boolean; } export interface ProjectContextCache { context: ProjectContext; analysis: AnalysisCacheEntry; insights: ProjectInsight[]; patterns: LearnedPattern[]; lastUpdated: Date; version: number; } export declare class ProjectContextStorage extends EventEmitter { private logger; private memoryManager; private projectAnalyzer; private cache; private cacheConfig; private watchConfig; private watchers; private analysisQueue; private changeBuffer; private snapshotScheduler; constructor(memoryManager: MemoryManager, projectAnalyzer: ProjectAnalyzer, cacheConfig?: CacheConfig, watchConfig?: ProjectWatchConfig); loadProject(projectPath: string, forceRefresh?: boolean): Promise; analyzeProject(projectPath: string, options?: Partial): Promise; createSnapshot(projectPath: string, triggers?: SnapshotTrigger[], description?: string): Promise; compareSnapshots(projectPath: string, baselineId: string, comparisonId: string): Promise; private getCachedAnalysis; private updateCache; private performAnalysis; private startWatching; private handleFileChange; private createOrRefreshProjectMemory; private createSnapshotForMemory; private calculateChangesSinceLastSnapshot; private compareAnalysisResults; private updateTrends; private generateInsights; private isCacheValid; private hasSignificantChanges; private invalidateCache; private enforceCacheLimits; private startMaintenanceScheduler; private performMaintenance; private generateCacheKey; private calculateAnalysisHash; private extractDependencies; private calculateSize; private getAverageComplexity; private findOrCreateTrend; private updateTrendMetrics; private mapEventToChangeType; private categorizeFile; private estimateChangeImpact; private inferProjectPreferences; private debounce; private persistCacheEntry; private calculateSnapshotDifferences; private generateComparisonSummary; private generateComparisonRecommendations; private getProjectVersion; private generateProjectId; private generateSnapshotId; private generateAnalysisId; private generateComparisonId; private generateInsightId; shutdown(): Promise; } //# sourceMappingURL=project-context-storage.d.ts.map