import { type Module } from 'langium'; import type { DefaultSharedModuleContext, LangiumServices, LangiumSharedServices, PartialLangiumServices } from 'langium/lsp'; import { QualifiedNameProvider } from './services/naming.js'; import { DomainLangFormatter } from './lsp/domain-lang-formatter.js'; import { DomainLangHoverProvider } from './lsp/hover/domain-lang-hover.js'; import { DomainLangCompletionProvider } from './lsp/domain-lang-completion.js'; import { DomainLangCodeActionProvider } from './lsp/domain-lang-code-actions.js'; import { DomainLangCodeLensProvider } from './lsp/domain-lang-code-lens-provider.js'; import type { IDiagramGenerator, IModelLayoutEngine } from 'sprotty-protocol'; import { ImportResolver } from './services/import-resolver.js'; import { ManifestManager } from './services/workspace-manager.js'; import { PackageBoundaryDetector } from './services/package-boundary-detector.js'; /** * Declaration of custom services - add your own service classes here. */ export type DomainLangAddedServices = { imports: { ImportResolver: ImportResolver; ManifestManager: ManifestManager; PackageBoundaryDetector: PackageBoundaryDetector; }; references: { QualifiedNameProvider: QualifiedNameProvider; }; lsp: { Formatter: DomainLangFormatter; HoverProvider: DomainLangHoverProvider; CompletionProvider: DomainLangCompletionProvider; CodeLensProvider: DomainLangCodeLensProvider; CodeActionProvider: DomainLangCodeActionProvider; }; diagram: { DiagramGenerator: IDiagramGenerator; ModelLayoutEngine: IModelLayoutEngine; }; }; /** * Union of Langium default services and your custom services - use this as constructor parameter * of custom service classes. */ export type DomainLangServices = LangiumServices & DomainLangAddedServices; /** * Dependency injection module that overrides Langium default services and contributes the * declared custom services. The Langium defaults can be partially specified to override only * selected services, while the custom services must be fully specified. */ export declare const DomainLangModule: Module; /** * Create the full set of services required by Langium. * * First inject the shared services by merging two modules: * - Langium default shared services * - Services generated by langium-cli * * Then inject the language-specific services by merging three modules: * - Langium default language-specific services * - Services generated by langium-cli * - Services specified in this file * * @param context Optional module context with the LSP connection * @returns An object wrapping the shared services and the language-specific services */ export declare function createDomainLangServices(context: DefaultSharedModuleContext): { shared: LangiumSharedServices; DomainLang: DomainLangServices; };