import type { LangiumSharedServices } from 'langium/lsp'; import { FileChangeType, type DidChangeWatchedFilesParams } from 'vscode-languageserver-protocol'; import type { DomainLangServices } from '../domain-lang-module.js'; export interface DomainLangRefreshHooks { onManifestChanged?: (change: { uri: string; type: FileChangeType; }) => Promise | void; onManifestDeleted?: (uri: string) => Promise | void; } export interface DomainLangRefreshOptions { dedupeWindowMs?: number; } export interface RefreshOutcome { readonly configChanged: boolean; readonly fullRebuildTriggered: boolean; } export declare function registerDomainLangRefresh(shared: LangiumSharedServices, domainLang: DomainLangServices, hooks?: DomainLangRefreshHooks, options?: DomainLangRefreshOptions): { dispose(): void; }; /** * Processes watched file change events. * * **Architecture:** * - `.dlang` changes are handled entirely by Langium's own `DocumentBuilder.update()` * pipeline. `DomainLangIndexManager.isAffected()` provides transitive import * dependency tracking and specifier-sensitive matching, so Langium's single * `update()` call propagates changes correctly through the import graph. * * - Config changes (model.yaml, model.lock) need explicit handling because Langium * ignores non-language files (they have no LangiumDocument). Config changes * invalidate caches and trigger a full rebuild of all loaded documents, routed * through the workspace lock to serialize with Langium's own updates. */ export declare function processWatchedFileChanges(params: DidChangeWatchedFilesParams, shared: LangiumSharedServices, domainLang: DomainLangServices, hooks?: DomainLangRefreshHooks): Promise;