/*---------------------------------------------------------
 * Copyright 2022 The Go Authors. All rights reserved.
 * Licensed under the MIT License. See LICENSE in the project root for license information.
 *--------------------------------------------------------*/

import * as vscode from 'vscode';
import { GoLanguageClient, LanguageServerConfig, Restart, ServerInfo } from './language/goLanguageServer';
import { LegacyLanguageService } from './language/registerDefaultProviders';
import { TelemetryService } from './goTelemetry';

// Global variables used for management of the language client.
// They are global so that the server can be easily restarted with
// new configurations.
export interface GoExtensionContext {
	languageClient?: GoLanguageClient;
	legacyLanguageService?: LegacyLanguageService;
	latestConfig?: LanguageServerConfig;
	telemetryService?: TelemetryService;
	serverOutputChannel?: vscode.LogOutputChannel; // server-side output.
	serverTraceChannel?: vscode.LogOutputChannel; // client-side tracing.

	languageServerIsRunning?: boolean;
	// serverInfo is the information from the server received during initialization.
	serverInfo?: ServerInfo;
	// lastUserAction is the time of the last user-triggered change.
	// A user-triggered change is a didOpen, didChange, didSave, or didClose event.
	lastUserAction?: Date;
	crashCount?: number;
	// Some metrics for automated issue reports:
	restartHistory?: Restart[];
	buildDiagnosticCollection?: vscode.DiagnosticCollection;
	lintDiagnosticCollection?: vscode.DiagnosticCollection;
	vetDiagnosticCollection?: vscode.DiagnosticCollection;
}
