import { type ParseResult } from '../java/parser.js'; import { type SymbolTable, type JavaSymbol } from '../java/symbol-table.js'; import type { Logger } from '../utils/logger.js'; export interface IndexedFile { uri: string; filePath: string; parseResult?: ParseResult; symbolTable?: SymbolTable; lastModified: number; } export interface WorkspaceSymbolEntry { name: string; kind: JavaSymbol['kind']; uri: string; line: number; column: number; containerName?: string; } /** * Manages workspace-level Java file indexing and cross-file symbol resolution. */ export declare class WorkspaceIndex { private files; private globalSymbols; private logger; constructor(logger: Logger); /** * Initialize the workspace index by scanning for Java files. */ initialize(rootUri: string | null | undefined): Promise; /** * Update index for a single file (on open/change). */ updateFile(uri: string, parseResult: ParseResult, symbolTable: SymbolTable): void; /** * Remove a file from the index (on close/delete). */ removeFile(uri: string): void; /** * Search for symbols across the workspace. */ searchSymbols(query: string): WorkspaceSymbolEntry[]; /** * Find a type declaration by name across all files. */ findTypeByName(name: string): WorkspaceSymbolEntry | undefined; /** * Find all declarations of a given name across all files. */ findDeclarationsByName(name: string): WorkspaceSymbolEntry[]; /** * Get the symbol table for a specific file. */ getSymbolTable(uri: string): SymbolTable | undefined; /** * Get the parse result for a specific file. */ getParseResult(uri: string): ParseResult | undefined; /** * Get all indexed file URIs. */ getFileUris(): string[]; private findJavaFiles; private indexFile; private rebuildGlobalSymbols; } //# sourceMappingURL=workspace-index.d.ts.map