/** * Performance measurement and memory management utilities * Part of Sub-phase 3.3.1-3.3.2 optimization efforts */ import type { PerformanceMetrics } from "../types/index.js"; /** * Performance measurement utility for tracking operations */ export declare class PerformanceTracker { private metrics; /** * Start tracking performance for an operation */ start(operationName: string): void; /** * End tracking and calculate metrics */ end(operationName: string): PerformanceMetrics | null; /** * Get metrics for an operation */ getMetrics(operationName: string): PerformanceMetrics | null; /** * Clear all metrics */ clear(): void; /** * Format metrics for display */ formatMetrics(operationName: string): string; } /** * Global performance tracker instance */ export declare const globalTracker: PerformanceTracker; /** * Memory management utilities */ export declare class MemoryManager { /** * Force garbage collection if available */ static forceGC(): boolean; /** * Get current memory usage in MB */ static getMemoryUsageMB(): { rss: number; heapTotal: number; heapUsed: number; external: number; }; /** * Monitor memory usage and warn if it exceeds threshold */ static monitorMemory(threshold?: number): boolean; /** * Clean up and optimize memory usage. * Attempts to force garbage collection if available. * * @returns {object|null} Memory usage statistics if cleanup was performed, or null if not possible. * - If manual garbage collection is not available (i.e., Node.js not run with --expose-gc), * no cleanup is performed and null is returned. * - Clearing the require cache is not attempted due to potential side effects. */ static cleanup(): { beforeMB: number; afterMB: number; freedMB: number; } | null; } /** * Decorator for tracking performance of async functions */ export declare function trackPerformance(operationName: string): Promise>(_target: unknown, _propertyName: string, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor; /** * Performance monitoring for CLI operations */ export declare class CLIPerformanceMonitor { private static instance; private enabled; static getInstance(): CLIPerformanceMonitor; enable(): void; disable(): void; /** * Monitor a CLI operation */ monitorOperation(operationName: string, operation: () => Promise): Promise; } /** * Export singleton monitor for easy access */ export declare const cliMonitor: CLIPerformanceMonitor;