import { type Language, type LanguagePlugin, type LanguageService, type LanguageServiceEnvironment, type ProjectContext, type ProviderResult } from '@volar/language-service'; import { createSys, type TypeScriptProjectHost } from '@volar/typescript'; import type * as ts from 'typescript'; import { URI } from 'vscode-uri'; import type { LanguageServer } from '../types'; export interface TypeScriptProjectLS { tryAddFile(fileName: string): void; getCommandLine(): ts.ParsedCommandLine; languageService: LanguageService; dispose(): void; } export interface ProjectExposeContext { env: LanguageServiceEnvironment; configFileName: string | undefined; projectHost: TypeScriptProjectHost; sys: ReturnType; uriConverter: { asUri(fileName: string): URI; asFileName(uri: URI): string; }; } export declare function createTypeScriptLS(ts: typeof import('typescript'), tsLocalized: ts.MapLike | undefined, tsconfig: string | ts.CompilerOptions, server: LanguageServer, serviceEnv: LanguageServiceEnvironment, workspaceFolder: URI, uriConverter: { asUri(fileName: string): URI; asFileName(uri: URI): string; }, create: (projectContext: ProjectExposeContext) => ProviderResult<{ languagePlugins: LanguagePlugin[]; setup?(options: { language: Language; project: ProjectContext; }): void; }>): Promise;