/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import {
	IDiagnosticsService,
	IMachineInfo,
	IMainProcessDiagnostics,
	IRemoteDiagnosticError,
	IRemoteDiagnosticInfo,
	IWorkspaceInformation,
	PerformanceInfo,
	SystemInfo,
	WorkspaceStatItem,
	WorkspaceStats,
} from '../common/diagnostics.mjs';
import { IProductService } from '../../product/common/productService.mjs';
import { ITelemetryService } from '../../telemetry/common/telemetry.mjs';
import { IWorkspace } from '../../workspace/common/workspace.mjs';
export declare function collectWorkspaceStats(folder: string, filter: string[]): Promise<WorkspaceStats>;
export declare function getMachineInfo(): IMachineInfo;
export declare function collectLaunchConfigs(folder: string): Promise<WorkspaceStatItem[]>;
export declare class DiagnosticsService implements IDiagnosticsService {
	private readonly telemetryService;
	private readonly productService;
	readonly _serviceBrand: undefined;
	constructor(telemetryService: ITelemetryService, productService: IProductService);
	private formatMachineInfo;
	private formatEnvironment;
	getPerformanceInfo(
		info: IMainProcessDiagnostics,
		remoteData: (IRemoteDiagnosticInfo | IRemoteDiagnosticError)[],
	): Promise<PerformanceInfo>;
	getSystemInfo(
		info: IMainProcessDiagnostics,
		remoteData: (IRemoteDiagnosticInfo | IRemoteDiagnosticError)[],
	): Promise<SystemInfo>;
	getDiagnostics(
		info: IMainProcessDiagnostics,
		remoteDiagnostics: (IRemoteDiagnosticInfo | IRemoteDiagnosticError)[],
	): Promise<string>;
	private formatWorkspaceStats;
	private expandGPUFeatures;
	private formatWorkspaceMetadata;
	private formatProcessList;
	private formatProcessItem;
	getWorkspaceFileExtensions(workspace: IWorkspace): Promise<{
		extensions: string[];
	}>;
	reportWorkspaceStats(workspace: IWorkspaceInformation): Promise<void>;
}
