export interface MemorySystemState { shortTerm: MemoryItem[]; longTerm: MemoryItem[]; archive: MemoryItem[]; compressionRatio: number; retentionScore: number; cyclicCleanup: number; } export interface MemoryItem { id: string; content: any; timestamp: Date; accessCount: number; importance: number; tags: string[]; metadata: Record; retentionScore?: number; lastAccessed?: Date; compressionLevel?: number; semanticVector?: number[]; } export interface FileProcessingState { queue: ProcessingFile[]; processed: ProcessedFile[]; categories: FileCategories; locations: Map; encoding: Map; statistics: ProcessingStatistics; } export interface ProcessingFile { id: string; name: string; path: string; size: number; type: string; status: 'pending' | 'processing' | 'completed' | 'error' | 'cancelled'; priority: number; queuedAt: Date; estimatedProcessingTime?: number; dependencies?: string[]; } export interface ProcessedFile extends ProcessingFile { processedAt: Date; processingDuration: number; metadata: FileMetadata; content?: any; errors?: string[]; warnings?: string[]; checksum: string; virusScanResult?: VirusScanResult; } export interface FileCategories { code: FileCategory; documents: FileCategory; data: FileCategory; multimedia: FileCategory; archives: FileCategory; executables: FileCategory; } export interface FileCategory { count: number; types: string[]; totalSize: number; lastUpdated: Date; averageProcessingTime: number; successRate: number; } export interface FileMetadata { size: number; createdAt: Date; modifiedAt: Date; author?: string; encoding?: string; checksum: string; contentType: string; extractedText?: string; semanticTags?: string[]; language?: string; quality?: number; thumbnail?: string; exifData?: Record; dimensions?: { width: number; height: number; }; duration?: number; bitrate?: number; codec?: string; } export interface VirusScanResult { isClean: boolean; threats: string[]; scanEngine: string; scanDate: Date; confidence: number; } export interface ProcessingStatistics { totalProcessed: number; totalSize: number; averageProcessingTime: number; successRate: number; errorRate: number; throughput: number; peakProcessingTime: number; categoryCounts: Record; } export interface PerformanceLogEntry { id: string; timestamp: Date; eventType: string; duration?: number; resourceUsage: ResourceUsage; status: 'success' | 'failure' | 'warning' | 'info'; details: Record; severity?: 'low' | 'medium' | 'high' | 'critical'; correlationId?: string; userId?: string; sessionId?: string; } export interface ResourceUsage { cpu: number; memory: number; diskIO: number; networkIO: number; heapUsed?: number; heapTotal?: number; external?: number; arrayBuffers?: number; } export interface SystemMetrics { uptime: number; totalRequests: number; activeConnections: number; memoryUsage: ResourceUsage; cpuUsage: number; diskSpace: { total: number; used: number; available: number; }; networkStats: { bytesReceived: number; bytesSent: number; packetsReceived: number; packetsSent: number; }; } export interface AlertConfiguration { id: string; name: string; description: string; condition: AlertCondition; actions: AlertAction[]; enabled: boolean; severity: 'low' | 'medium' | 'high' | 'critical'; cooldownPeriod: number; lastTriggered?: Date; } export interface AlertCondition { metric: string; operator: '>' | '<' | '=' | '>=' | '<=' | '!='; threshold: number; duration?: number; aggregation?: 'avg' | 'max' | 'min' | 'sum' | 'count'; } export interface AlertAction { type: 'email' | 'webhook' | 'log' | 'callback'; target: string; template?: string; parameters?: Record; } export interface SearchQuery { query: string; filters?: SearchFilters; sort?: SearchSort; pagination?: SearchPagination; options?: SearchOptions; } export interface SearchFilters { categories?: string[]; dateRange?: { start: Date; end: Date; }; sizeRange?: { min: number; max: number; }; tags?: string[]; importance?: { min: number; max: number; }; status?: string[]; } export interface SearchSort { field: string; direction: 'asc' | 'desc'; } export interface SearchPagination { page: number; limit: number; offset?: number; } export interface SearchOptions { includeArchived?: boolean; fuzzySearch?: boolean; semanticSearch?: boolean; highlightMatches?: boolean; includeMetadata?: boolean; } export interface SearchResult { items: T[]; totalCount: number; page: number; limit: number; hasMore: boolean; searchTime: number; suggestions?: string[]; } export interface SystemConfiguration { memory: MemoryConfiguration; fileProcessing: FileProcessingConfiguration; performance: PerformanceConfiguration; security: SecurityConfiguration; api: ApiConfiguration; } export interface MemoryConfiguration { shortTermCapacity: number; longTermCapacity: number; archiveCapacity: number; compressionRatio: number; retentionThreshold: number; cleanupInterval: number; enableSemanticSearch: boolean; vectorDimensions: number; } export interface FileProcessingConfiguration { maxFileSize: number; supportedExtensions: string[]; processingQueueSize: number; maxConcurrentFiles: number; timeoutSeconds: number; enableVirusScanning: boolean; quarantineDirectory: string; tempDirectory: string; } export interface PerformanceConfiguration { enableLogging: boolean; logLevel: 'debug' | 'info' | 'warn' | 'error'; metricsInterval: number; maxLogEntries: number; enableAnomalyDetection: boolean; alertThresholds: Record; } export interface SecurityConfiguration { enableAuthentication: boolean; allowedOrigins: string[]; rateLimiting: { requests: number; windowMs: number; }; encryptionKey?: string; allowExecutables: boolean; quarantineExtensions: string[]; } export interface ApiConfiguration { baseUrl: string; version: string; timeout: number; retryAttempts: number; enableCors: boolean; corsOptions: { origin: string | string[]; methods: string[]; allowedHeaders: string[]; }; } export interface WebSocketMessage { type: string; payload: any; timestamp: Date; id: string; correlationId?: string; } export interface SystemEvent { id: string; type: string; source: string; timestamp: Date; data: any; severity: 'info' | 'warning' | 'error' | 'critical'; tags: string[]; } export interface BackupConfiguration { enabled: boolean; schedule: string; // cron expression destination: string; retention: { daily: number; weekly: number; monthly: number; }; compression: boolean; encryption: boolean; } export interface RestoreOptions { backupId: string; selective: boolean; components?: string[]; overwrite: boolean; validateIntegrity: boolean; } export interface HealthCheck { status: 'healthy' | 'degraded' | 'unhealthy'; timestamp: Date; checks: HealthCheckResult[]; uptime: number; version: string; } export interface HealthCheckResult { name: string; status: 'pass' | 'fail' | 'warn'; duration: number; message?: string; details?: Record; } export interface CacheConfiguration { enabled: boolean; maxSize: number; ttl: number; strategy: 'lru' | 'lfu' | 'fifo'; persistToDisk: boolean; compressionEnabled: boolean; } export interface QueueConfiguration { maxSize: number; concurrency: number; retryAttempts: number; retryDelay: number; deadLetterQueue: boolean; priorityLevels: number; } // Utility types export type DeepPartial = { [P in keyof T]?: T[P] extends object ? DeepPartial : T[P]; }; export type RequiredFields = T & Required>; export type OptionalFields = Omit & Partial>; export type EventHandler = (event: T) => void | Promise; export type AsyncFunction = (...args: T[]) => Promise; export type Callback = (error: Error | null, result?: T) => void;