export declare enum TraceConstant { CorrelationId = "CorrelationId", Empty = "[Empty]", Entry = "Entry", Exit = "Exit", IsError = "IsError", IsThrowing = "IsThrowing", Length = "Length", Result = "Result", Size = "Size" } export declare class Trace { readonly timeCreated: number; protected readonly emitter: (trace: Trace, message: string, details?: object) => void; readonly phase: string; readonly task: string; readonly id: number; readonly correlationId: number | undefined; constructor(emitter: (trace: Trace, message: string, details?: object) => void, phase: string, task: string, id: number, correlationId: number | undefined, details?: object); entry(details?: object): void; trace(message: string, details?: object): void; exit(details?: object): void; } export declare class BenchmarkTrace extends Trace { constructor(emitTraceFn: (trace: Trace, message: string, details?: object) => void, phase: string, task: string, id: number, correlationId: number | undefined, details?: object); trace(message: string, details?: object): void; } export declare class NoOpTrace extends Trace { trace(_message: string, _details?: object): void; } export declare const NoOpTraceInstance: NoOpTrace; export declare abstract class TraceManager { protected readonly idFactory: () => number; protected readonly valueDelimiter: string; protected readonly newline: "\n" | "\r\n"; constructor(valueDelimiter?: string, newline?: "\n" | "\r\n"); abstract emit(trace: Trace, message: string, details?: object): void; entry(phase: string, task: string, correlationId: number | undefined, details?: object): Trace; protected formatMessage(trace: Trace, message: string, details?: object): string; protected trace(phase: string, task: string, correlationId: number | undefined, details?: object): Trace; protected safeJsonStringify(obj: object, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; } export declare class ReportTraceManager extends TraceManager { private readonly emitter; constructor(emitter: (message: string) => void, valueDelimiter?: string); emit(trace: Trace, message: string, details?: object): void; } export declare class BenchmarkTraceManager extends ReportTraceManager { constructor(outputFn: (message: string) => void, valueDelimiter?: string); protected trace(phase: string, task: string, correlationId: number | undefined, details?: object): BenchmarkTrace; } export declare class NoOpTraceManager extends TraceManager { emit(_tracer: Trace, _message: string, _details?: object): void; protected trace(_phase: string, _task: string, _correlationId: number | undefined, _details?: object): Trace; } export declare const NoOpTraceManagerInstance: NoOpTraceManager;