export type DebugLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace'; export interface DebugContext { /** The current operation being performed. */ operation?: string; /** Additional context data. */ data?: Record; /** Start time for performance measurement. */ startTime?: number; } declare class DebugLogger { #private; constructor(); error(message: string, context?: () => DebugContext): void; warn(message: string, context?: () => DebugContext): void; info(message: string, context?: () => DebugContext): void; debug(message: string, context?: () => DebugContext): void; trace(message: string, context?: () => DebugContext): void; /** Public guard to check if logging is enabled (and optionally for a minimum level). */ isEnabled(minLevel?: DebugLevel): boolean; /** Create a performance tracker for sync or async operations. */ trackOperation(operation: string, fn: () => ResultType | Promise, context?: Omit): ResultType | Promise; /** Log WebSocket server events for debugging connection issues. */ logWebSocketServerEvent(event: string, data?: object): void; /** Log WebSocket client events for debugging connection issues. */ logWebSocketClientEvent(event: string, data?: object): void; /** Log type resolution events for debugging timeout issues. */ logTypeResolution(filePath: string, position: number, kind: string, duration?: number): void; /** * Log cache operations for debugging performance. * Note: avoid embedding raw secrets in cache keys. Keys should not contain sensitive data. */ logCacheOperation(operation: 'hit' | 'miss' | 'set' | 'clear', key: string, data?: object): void; /** Log token processing performance for debugging get-tokens operations. */ logTokenProcessing(language: string, filePath: string | undefined, valueLength: number, tokenLines: number, totalTokens: number, symbolCount: number, diagnosticCount: number, duration?: number): void; /** Track token processing with detailed performance metrics. */ trackTokenProcessing(language: string, filePath: string | undefined, valueLength: number, fn: () => ResultType | Promise): ResultType | Promise; } export declare function getDebugLogger(): DebugLogger; export {};