import { Type } from "./_namespaces/lpc.js";
export declare namespace tracingEnabled {
    type Mode = "project" | "build" | "server";
    export const enum Phase {
        Parse = "parse",
        Program = "program",
        Bind = "bind",
        Check = "check",// Before we get into checking types (e.g. checkSourceFile)
        CheckTypes = "checkTypes",
        Emit = "emit",
        Session = "session"
    }
    interface Args {
        [key: string]: string | number | boolean | null | undefined | Args | readonly (string | number | boolean | null | undefined | Args)[];
    }
    /**
     * @param separateBeginAndEnd - used for special cases where we need the trace point even if the event
     * never terminates (typically for reducing a scenario too big to trace to one that can be completed).
     * In the future we might implement an exit handler to dump unfinished events which would deprecate
     * these operations.
     */
    export function push(phase: Phase, name: string, args?: Args, separateBeginAndEnd?: boolean): void;
    export function pop(results?: Args): void;
    export function popAll(): void;
    export function startTracing(tracingMode: Mode, traceDir: string, configFilePath?: string): void;
    export function dumpLegend(): void;
    export function recordType(type: Type): void;
    export function instant(phase: Phase, name: string, args?: Args): void;
    export {};
}
//# sourceMappingURL=tracing.d.ts.map