import { Timer } from './timer'; import type { ContextData, Formatter, LoggerConfig, TraceMethod, TracingOptions } from './types'; import { LogLevel } from './types'; export declare class Logger { private config; private formatter; private context; private tracer; private timerManager; constructor(config?: Partial); traceLog(message: string, metadata?: Record): void; debug(message: string, metadata?: Record): void; info(message: string, metadata?: Record): void; warn(message: string, metadata?: Record): void; error(message: string, metadata?: Record, error?: Error): void; fatal(message: string, metadata?: Record, error?: Error): void; withContext(context: ContextData, fn: () => T): T; extendContext(additionalContext: Partial, fn: () => T): T; setContext(key: string, value: unknown): void; getContext(): ContextData; trace: TraceMethod; getTraceId(): string | undefined; startSpan(options: TracingOptions): import("./types").TraceContext | null; finishSpan(spanId: string): number | undefined; addTraceMetadata(key: string, value: unknown): void; addTraceTags(...tags: string[]): void; startTimer(id?: string): Timer | null; stopTimer(id: string): number | undefined; getTimer(id: string): Timer | undefined; child(context: Partial): Logger; setLevel(level: LogLevel): void; setFormatter(formatter: Formatter): void; profile(operationName: string, fn: () => T | Promise, options?: { logResult?: boolean; logLevel?: LogLevel; }): Promise; logRequest(method: string, url: string, statusCode?: number, duration?: number): void; flush(): Promise; getStats(): { activeTimers: number; activeSpans: number; config: LoggerConfig; }; protected output(message: string, level: LogLevel): void; private log; private getHttpLogLevel; }