import { LanguagePlugin, ServiceEnvironment, ServicePlugin } from '@volar/language-service'; import * as vscode from 'vscode-languageserver'; import { InitializationOptions, ProjectContext, ServerProjectProvider, ServerProjectProviderFactory, ServerRuntimeEnvironment } from './types.js'; import { createConfigurationHost } from './configurationHost.js'; import { WorkspaceFolderManager } from './workspaceFolderManager.js'; import { SnapshotDocument } from '@volar/snapshot-document'; import type * as ts from 'typescript'; import type { TextDocuments } from 'vscode-languageserver'; export interface ServerContext { connection: vscode.Connection; initializeParams: Omit & { initializationOptions?: InitializationOptions; }; runtimeEnv: ServerRuntimeEnvironment; onDidChangeWatchedFiles: vscode.Connection['onDidChangeWatchedFiles']; configurationHost: ReturnType | undefined; ts: typeof import('typescript') | undefined; tsLocalized: ts.MapLike | undefined; workspaceFolders: WorkspaceFolderManager; documents: TextDocuments; reloadDiagnostics(): void; updateDiagnosticsAndSemanticTokens(): void; } export interface ServerOptions { watchFileExtensions?: string[]; getServicePlugins(): ServicePlugin[] | Promise; getLanguagePlugins(serviceEnv: ServiceEnvironment, projectContext: ProjectContext): LanguagePlugin[] | Promise; } export declare function createServerBase(connection: vscode.Connection, getRuntimeEnv: (params: ServerContext['initializeParams']) => ServerRuntimeEnvironment): { initialize: (params: ServerContext['initializeParams'], projectProviderFactory: ServerProjectProviderFactory, _serverOptions: ServerOptions) => Promise>; initialized: () => void; shutdown: () => void; readonly projects: ServerProjectProvider; readonly env: ServerRuntimeEnvironment; readonly modules: { typescript: typeof ts | undefined; }; };