import { ConfigurationManager } from './ConfigurationManager.js'; import { FileOutput } from './FileOutput.js'; export declare class DebugLogger { private static instances; private debugInstance; private _namespace; private _configManager; private _fileOutput; private _enabled; private _level; private boundOnConfigChange; /** * Factory method to get or create a DebugLogger for a namespace. * Returns cached instance if one exists, ensuring singleton-per-namespace. */ static getLogger(namespace: string): DebugLogger; /** * Dispose all cached logger instances. * Call this in test cleanup or application shutdown. */ static disposeAll(): void; /** * Reset for testing - clears instances without unsubscribing * (use disposeAll in production) */ static resetForTesting(): void; constructor(namespace: string); get namespace(): string; get enabled(): boolean; set enabled(value: boolean); get level(): string; set level(value: string); get configManager(): ConfigurationManager; get fileOutput(): FileOutput; log(messageOrFn: string | (() => string), ...args: unknown[]): void; debug(messageOrFn: string | (() => string), ...args: unknown[]): void; warn(messageOrFn: string | (() => string), ...args: unknown[]): void; private _logWithLevel; error(messageOrFn: string | (() => string), ...args: unknown[]): void; checkEnabled(): boolean; private matchesPattern; private redactSensitive; private onConfigChange; dispose(): Promise; }