import type { JavaSymbol, SymbolTable } from './symbol-table.js'; import type { WorkspaceIndex } from '../project/workspace-index.js'; export interface ResolvedType { /** The simple name (e.g., "List") */ simpleName: string; /** The fully qualified name if known (e.g., "java.util.List") */ qualifiedName?: string; /** Type arguments for generics (e.g., ["String"] for List) */ typeArguments?: string[]; /** Whether this is a primitive type */ isPrimitive: boolean; /** Whether this is an array type */ isArray: boolean; /** Array dimensions (e.g., 2 for int[][]) */ arrayDimensions: number; } export interface TypeContext { /** Symbol table for the current file */ symbolTable: SymbolTable; /** Workspace index for cross-file resolution */ workspaceIndex?: WorkspaceIndex; /** Import map for the current file */ importMap?: ImportMap; } export interface ImportMap { packageName: string; imports: Map; wildcardPackages: string[]; } export interface MethodInfo { name: string; returnType: string; parameters: { name: string; type: string; }[]; isStatic: boolean; declaringType: string; } export interface FieldInfo { name: string; type: string; isStatic: boolean; declaringType: string; } /** * Resolve a type name string to a ResolvedType. * Handles primitives, arrays, generics, and qualified names. */ export declare function resolveTypeString(typeStr: string, context: TypeContext): ResolvedType; /** * Resolve the type of a symbol (variable, field, parameter, method return). */ export declare function resolveSymbolType(symbol: JavaSymbol, context: TypeContext): ResolvedType | undefined; /** * Find members (methods and fields) available on a given type. * Searches: workspace types → JDK model → superclass chain. */ export declare function findTypeMembers(typeName: string, context: TypeContext): { methods: MethodInfo[]; fields: FieldInfo[]; }; /** * Resolve the type of a method call expression. */ export declare function resolveMethodReturnType(typeName: string, methodName: string, context: TypeContext): ResolvedType | undefined; /** * Resolve the type of a field access. */ export declare function resolveFieldType(typeName: string, fieldName: string, context: TypeContext): ResolvedType | undefined; //# sourceMappingURL=type-resolver.d.ts.map