import * as t from '@babel/types'; import type { ParseResult } from './parser.js'; export type SinkKind = 'sql' | 'command' | 'innerHTML' | 'fs' | 'mongo'; export interface SinkFlow { sinkKind: SinkKind; callNode: t.CallExpression; } export interface FunctionSummary { /** Parameter names in declaration order. */ paramOrder: string[]; /** paramName → list of sink-reaches found in this function's body. */ paramFlows: Map; } export interface TaintState { /** Top-level variables transitively assigned from a user-input source. */ taintedVars: Set; /** Function name → summary of which params reach which sinks. */ functionSummaries: Map; } export declare function analyzeTaint(parsed: ParseResult): TaintState; export declare function isTainted(node: t.Node, state: TaintState): boolean;