import { Node, Parser } from 'web-tree-sitter';
import { ProjectContextManager } from './project-context-manager.js';
import { Matcher } from './matcher.js';
import { Rule } from '@scandiumsys/owstra-types';
export declare class TaintAnalyzer {
    private context;
    private matcher;
    private visitedParameters;
    private readonly MAX_RECURSION_DEPTH;
    private treeCache;
    constructor(context: ProjectContextManager, matcher: Matcher);
    cleanup(): void;
    /**
     * Traces a node back to its sources and returns all unique labels found.
     */
    getTaintLabels(node: Node, lang: string, rule: Rule, parser: Parser, depth?: number): Promise<Set<string>>;
    private isMatchingAnyPattern;
    private getMatchingSourceLabels;
    private extractPatternsFromClause;
    private matchesPattern;
    private findDefinition;
    private isScopeRoot;
    private isFunction;
    private extractDefinitionFromStatement;
    private findParentFunction;
    private getParameterTaintLabels;
    private getTreeRoot;
    private isLiteral;
    private isSafeConstant;
}
