/*---------------------------------------------------------------------------------------------
 *  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>;
