/**
 * Java Language Plugin
 *
 * Provides Java-specific AST handling, taint patterns, and framework detection.
 */
import type { Node as SyntaxNode } from 'web-tree-sitter';
import type { TypeInfo, CallInfo, ImportInfo } from '../../types/index.js';
import type { LanguageNodeTypes, ExtractionContext, FrameworkInfo, TaintSourcePattern, TaintSinkPattern } from '../types.js';
import { BaseLanguagePlugin } from './base.js';
/**
 * Java language plugin implementation.
 */
export declare class JavaPlugin extends BaseLanguagePlugin {
    readonly id: "java";
    readonly name = "Java";
    readonly extensions: string[];
    readonly wasmPath = "tree-sitter-java.wasm";
    readonly nodeTypes: LanguageNodeTypes;
    /** Cache: maps a parse Tree to its var-name → simple-type map. */
    private readonly _typeMapCache;
    /**
     * Detect Java frameworks from imports and annotations.
     */
    detectFramework(context: ExtractionContext): FrameworkInfo | undefined;
    /**
     * Java-specific taint source patterns.
     * These supplement the YAML configuration.
     */
    getBuiltinSources(): TaintSourcePattern[];
    /**
     * Java-specific taint sink patterns.
     * These supplement the YAML configuration.
     */
    getBuiltinSinks(): TaintSinkPattern[];
    /**
     * Walk `tree` once and build a map of { variableName → simpleTypeName }.
     * Covers both field declarations and local variable declarations.
     * Generics and array brackets are stripped: `List<String>` → `List`, `int[]` → `int`.
     * Result is cached per Tree instance so subsequent calls are O(1).
     */
    private buildVarTypeMap;
    /**
     * Get receiver type from a method invocation node.
     */
    getReceiverType(node: SyntaxNode, context: ExtractionContext): string | undefined;
    /**
     * Check if node is a Java string literal.
     */
    isStringLiteral(node: SyntaxNode): boolean;
    /**
     * Get string value from Java string literal.
     */
    getStringValue(node: SyntaxNode): string | undefined;
    extractTypes(context: ExtractionContext): TypeInfo[];
    extractCalls(context: ExtractionContext): CallInfo[];
    extractImports(context: ExtractionContext): ImportInfo[];
    extractPackage(context: ExtractionContext): string | undefined;
}
//# sourceMappingURL=java.d.ts.map