/**
 * LanguageSourcesPass
 *
 * Detects taint sources and sinks that are not covered by config-based
 * pattern matching (analyzer.js / taint-matcher).  Handles language-specific
 * patterns that require text-level heuristics:
 *   - Java: getter methods returning tainted constructor fields
 *   - JavaScript/TypeScript: assignment sources, DOM XSS property sinks
 *   - Python: assignment sources, return-XSS sinks, trust-boundary violations
 *
 * Also computes the forward-taint maps (pyTaintedVars / jsTaintedVars) that
 * SinkFilterPass uses to reduce false positives.
 *
 * Depends on: taint-matcher, constant-propagation
 */
import type { TaintSource, TaintSink, SastFinding } from '../../types/index.js';
import type { AnalysisPass, PassContext } from '../../graph/analysis-pass.js';
export declare const JS_TAINTED_PATTERNS: ({
    pattern: RegExp;
    type: "http_param";
} | {
    pattern: RegExp;
    type: "http_body";
} | {
    pattern: RegExp;
    type: "http_header";
} | {
    pattern: RegExp;
    type: "http_cookie";
} | {
    pattern: RegExp;
    type: "http_path";
} | {
    pattern: RegExp;
    type: "file_input";
} | {
    pattern: RegExp;
    type: "env_input";
} | {
    pattern: RegExp;
    type: "io_input";
} | {
    pattern: RegExp;
    type: "dom_input";
})[];
export interface LanguageSourcesResult {
    additionalSources: TaintSource[];
    additionalSinks: TaintSink[];
    /**
     * Python forward-taint map: variable name → first tainted line.
     * Used by SinkFilterPass to reduce XPath/XSS false positives.
     */
    pyTaintedVars: Map<string, number>;
    /**
     * Python sanitized-variable set (apostrophe-guard + .replace() sanitizers).
     * Used by SinkFilterPass to suppress sanitized XPath sinks.
     */
    pySanitizedVars: Set<string>;
    /**
     * JavaScript forward-taint map: variable name → first tainted line.
     * Used by SinkFilterPass to suppress spurious XSS sinks.
     */
    jsTaintedVars: Map<string, number>;
}
export declare class LanguageSourcesPass implements AnalysisPass<LanguageSourcesResult> {
    readonly name = "language-sources";
    readonly category: "security";
    run(ctx: PassContext): LanguageSourcesResult;
}
export declare function buildPythonTaintedVars(sourceCode: string): Map<string, number>;
export declare function buildPythonSanitizedVars(sourceCode: string, pyTaintedVars: Map<string, number>): Set<string>;
export declare function findPythonTrustBoundaryViolations(sourceCode: string, taintedVars: Map<string, number>): Array<{
    sourceLine: number;
    sinkLine: number;
}>;
export declare function buildJavaScriptTaintedVars(sourceCode: string, language: string): Map<string, number>;
export declare function findBashPatternFindings(sourceCode: string, file: string): SastFinding[];
//# sourceMappingURL=language-sources-pass.d.ts.map