import type { IParser } from '@rcs-lang/core'; import type { ImportResolver } from '../import-resolver/index.js'; import { SymbolType } from '../import-resolver/types.js'; import type { WorkspaceIndex } from '../workspace-index/index.js'; /** * Represents a definition location */ export interface Definition { /** URI of the file containing the definition */ uri: string; /** Range of the definition */ range: { start: { line: number; character: number; }; end: { line: number; character: number; }; }; /** Type of the symbol */ symbolType?: SymbolType; /** Name of the symbol */ symbolName?: string; } import type { Position, TextDocument } from './types.js'; /** * Provides "Go to Definition" functionality for RCL files */ export declare class DefinitionProvider { private parser; private importResolver; private workspaceIndex; constructor(parser: IParser, importResolver: ImportResolver, workspaceIndex: WorkspaceIndex); /** * Provide definition for a symbol at the given position */ provideDefinition(document: TextDocument, position: Position): Promise; /** * Get symbol at the given position */ private getSymbolAtPosition; /** * Check if character is part of a word (includes letters, numbers, underscore) */ private isWordCharacter; /** * Find definition within the same file */ private findLocalDefinition; /** * Find symbol definition in AST */ private findSymbolDefinitionInAST; /** * Find flow state references within flows */ private findFlowReference; /** * Find definition in imported files */ private findImportedDefinition; /** * Check if a node represents a definition */ private isDefinitionNode; /** * Extract name from a definition node */ private extractNodeName; /** * Convert node type to symbol type */ private nodeTypeToSymbolType; /** * Convert AST node to LSP range */ private nodeToRange; /** * Check if position is within range */ private isPositionInRange; /** * Walk AST nodes recursively */ private walkAST; } //# sourceMappingURL=DefinitionProvider.d.ts.map