/**************************************************************************** * Copyright 2021 TypeFox GmbH * This program and the accompanying materials are made available under the * terms of the MIT License, which is available in the project root. ***************************************************************************/ import type { AstNodeDescription, LangiumDocument, LocalSymbols } from 'langium'; import { DefaultScopeComputation } from 'langium'; import { CancellationToken } from 'vscode-jsonrpc'; import type { NamespaceDeclaration, Container } from '../generated/ast.js'; import { QualifiedNameProvider } from '../services/naming.js'; import type { DomainLangServices } from '../domain-lang-module.js'; /** * Computes the scope for DomainLang elements, supporting nested namespaces, FQN disambiguation, and cross-file references. * Extends Langium's DefaultScopeComputation to provide custom export and local scope logic. */ export declare class DomainLangScopeComputation extends DefaultScopeComputation { qualifiedNameProvider: QualifiedNameProvider; /** * Constructs a new DomainLangScopeComputation with injected services. * @param services - The DomainLangServices instance */ constructor(services: DomainLangServices); /** * Computes exported node descriptions for types, using fully qualified names for nested namespaces. * @param document - The LangiumDocument to process * @param cancelToken - Optional cancellation token * @returns A promise resolving to an array of AstNodeDescription */ collectExportedSymbols(document: LangiumDocument, cancelToken?: CancellationToken): Promise; /** * Computes local scopes for all containers, recursively processing nested namespaces. * @param document - The LangiumDocument to process * @param cancelToken - Optional cancellation token * @returns A promise resolving to a LocalSymbols map */ collectLocalSymbols(document: LangiumDocument, cancelToken?: CancellationToken): Promise; /** * Recursively processes a container and its children, adding local descriptions and qualified names. * @param container - The container node (Model or NamespaceDeclaration) * @param scopes - The LocalSymbols map to populate * @param document - The LangiumDocument being processed * @param cancelToken - Optional cancellation token * @returns A promise resolving to an array of AstNodeDescription */ protected processContainer(container: Container, scopes: LocalSymbols, document: LangiumDocument, cancelToken: CancellationToken): Promise; /** * Creates a qualified AstNodeDescription for a node within a namespace. * * @param namespace - The NamespaceDeclaration containing the node * @param description - The AstNodeDescription to qualify * @param document - The LangiumDocument being processed * @returns A new AstNodeDescription with a fully qualified name * * @example * // For a Domain "Sales" in namespace "Shared" * // Returns description with name "Shared.Sales" */ protected createQualifiedDescription(namespace: NamespaceDeclaration, description: AstNodeDescription, document: LangiumDocument): AstNodeDescription; }