/****************************************************************************** * Copyright 2023 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 { AstNode, AstNodeLocator, LangiumDocuments } from 'langium'; import type { SModelElement, SModelRoot } from 'sprotty-protocol'; import type { LangiumSprottyServices } from './sprotty-services.js'; export interface TracedModelElement extends SModelElement { trace?: string; } /** * Compute traces from Langium AST nodes to Sprotty model elements. * The traces are used to synchronize selection between text and diagram, among other features. */ export interface TraceProvider { /** * Trace a Sprotty model element to a whole AST node or a specific property. */ trace(target: TracedModelElement, source: AstNode, property?: string, index?: number): void; /** * Find the source AST node for a given Sprotty model element. */ getSource(target: TracedModelElement): AstNode | undefined; /** * Find the target model element for a given source AST node. */ getTarget(source: AstNode, root: SModelRoot): TracedModelElement | undefined; } export declare class DefaultTraceProvider implements TraceProvider { protected readonly langiumDocuments: LangiumDocuments; protected readonly astNodeLocator: AstNodeLocator; constructor(services: LangiumSprottyServices); trace(target: TracedModelElement, source: AstNode, property?: string | undefined, index?: number | undefined): void; getSource(target: TracedModelElement): AstNode | undefined; getTarget(source: AstNode, root: SModelRoot): TracedModelElement | undefined; private findTargetElements; } //# sourceMappingURL=trace-provider.d.ts.map