import { Program } from '../generated';
export declare class Tracer {
    private traceFilePath;
    static traceDir: string;
    static GlobalTracer: Tracer;
    static Tracers: Map<string, Tracer>;
    static LRUTracer: Tracer | undefined;
    static startGlobalTracing(outDir: string): void;
    static startProgramTracing(program: Program): void;
    static stopProgramTracing(): void;
    static stopGlobalTracing(): void;
    private constructor();
    trace(traceLog: string | undefined | void): void;
    events: Map<string, number> | undefined;
    eventsPerContext: Map<string, Map<string, number>> | undefined;
    recordEvent(event: string): void;
    traceEventsStats(): void;
    private static contexts;
    static lastContext(): string;
    static pushContext(newContext: string): void;
    static popContext(): void;
}
export declare function traceGlobal(traceLog: () => string | undefined | void, forceLogToConsole?: boolean): void;
export declare function trace(event: string, traceLog: () => string | undefined | void, forceLogToConsole?: boolean): void;
