/*!
 * Copyright (C) Microsoft Corporation. All rights reserved.
 */
import type { IPowerOperationExecutor } from '../types';
/** @private */
export declare class Log {
    private readonly _powerOperationExecutor;
    private static _instance;
    private constructor();
    static createInstance(powerOperationExecutor: IPowerOperationExecutor): Log;
    static resetInstance(): void;
    private static _sendMessage;
    static trackEvent(eventName: string, eventData?: object): Promise<void>;
    static trackException(exception: object): Promise<void>;
    static trackMetric(metricName: string, value: number): Promise<void>;
    static startScenario(scenarioName: string): Promise<void>;
    static endScenario(scenarioName: string): Promise<void>;
    static setDefaultProperties(properties: object): Promise<void>;
    private static _getInstance;
    /**
     * Recursively serializes Error objects in an object to prevent empty object serialization
     * when passed through postMessage's structured clone algorithm.
     * @param obj - The object to process
     * @returns A new object with Error instances replaced by serializable objects
     */
    private static _serializeErrors;
}
//# sourceMappingURL=log.d.ts.map