/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
import { IConfigurationService } from "../../configuration/common/configuration.mjs";
import { IProductService } from "../../product/common/productService.mjs";
import { ClassifiedEvent, IGDPRProperty, OmitMetadata, StrictPropertyCheck } from "./gdprTypings.mjs";
import { ITelemetryData, ITelemetryService, TelemetryLevel } from "./telemetry.mjs";
import { ITelemetryServiceConfig, TelemetryService } from "./telemetryService.mjs";
export interface IServerTelemetryService extends ITelemetryService {
    updateInjectedTelemetryLevel(telemetryLevel: TelemetryLevel): Promise<void>;
}
export declare class ServerTelemetryService extends TelemetryService implements IServerTelemetryService {
    private _injectedTelemetryLevel;
    constructor(config: ITelemetryServiceConfig, injectedTelemetryLevel: TelemetryLevel, _configurationService: IConfigurationService, _productService: IProductService);
    publicLog(eventName: string, data?: ITelemetryData): Promise<void>;
    publicLog2<E extends ClassifiedEvent<OmitMetadata<T>> = never, T extends IGDPRProperty = never>(eventName: string, data?: StrictPropertyCheck<T, E>): Promise<void>;
    publicLogError(errorEventName: string, data?: ITelemetryData): Promise<void>;
    publicLogError2<E extends ClassifiedEvent<OmitMetadata<T>> = never, T extends IGDPRProperty = never>(eventName: string, data?: StrictPropertyCheck<T, E>): Promise<void>;
    updateInjectedTelemetryLevel(telemetryLevel: TelemetryLevel): Promise<void>;
}
export declare const ServerNullTelemetryService: {
    updateInjectedTelemetryLevel(): Promise<void>;
    readonly _serviceBrand: undefined;
    readonly sendErrorTelemetry: false;
    publicLog(eventName: string, data?: ITelemetryData | undefined): Promise<undefined>;
    publicLog2<E extends ClassifiedEvent<OmitMetadata<T>> = never, T extends IGDPRProperty = never>(eventName: string, data?: import("./gdprTypings.mjs").StrictPropertyChecker<E, ClassifiedEvent<OmitMetadata<T>>, import("vs/platform/telemetry/common/gdprTypings").StrictPropertyCheckError> | undefined): Promise<undefined>;
    publicLogError(eventName: string, data?: ITelemetryData | undefined): Promise<undefined>;
    publicLogError2<E_1 extends ClassifiedEvent<OmitMetadata<T_1>> = never, T_1 extends IGDPRProperty = never>(eventName: string, data?: import("./gdprTypings.mjs").StrictPropertyChecker<E_1, ClassifiedEvent<OmitMetadata<T_1>>, import("vs/platform/telemetry/common/gdprTypings").StrictPropertyCheckError> | undefined): Promise<undefined>;
    setExperimentProperty(): void;
    telemetryLevel: TelemetryLevel;
    getTelemetryInfo(): Promise<import("./telemetry.mjs").ITelemetryInfo>;
};
export declare const IServerTelemetryService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IServerTelemetryService>;
