/**
 * Dataflow analysis — define/use chains and data movement edges.
 *
 * Adds three edge types to track how data moves through functions:
 *   - flows_to:  parameter/variable flows into another function as an argument
 *   - returns:   a call's return value is captured and used in the caller
 *   - mutates:   a parameter-derived value is mutated (e.g. arr.push())
 *
 * Opt-in via `build --dataflow`. Supports all languages with DATAFLOW_RULES.
 */
import { DATAFLOW_RULES } from '../ast-analysis/rules/index.js';
import { makeDataflowRules as _makeDataflowRules } from '../ast-analysis/shared.js';
import type { BetterSqlite3Database, TreeSitterNode } from '../types.js';
export { _makeDataflowRules as makeDataflowRules, DATAFLOW_RULES };
export declare const DATAFLOW_EXTENSIONS: Set<string>;
interface DataflowResult {
    parameters: unknown[];
    returns: unknown[];
    assignments: unknown[];
    argFlows: unknown[];
    mutations: unknown[];
}
export declare function extractDataflow(tree: {
    rootNode: TreeSitterNode;
}, _filePath: string, _definitions: unknown[], langId?: string): DataflowResult;
interface FileSymbolsDataflow {
    _tree?: {
        rootNode: TreeSitterNode;
    } | null;
    _langId?: string | null;
    definitions: Array<{
        name: string;
        kind: string;
        line: number;
    }>;
    dataflow?: DataflowResult | null;
}
export declare function buildDataflowEdges(db: BetterSqlite3Database, fileSymbols: Map<string, FileSymbolsDataflow>, rootDir: string, engineOpts?: {
    nativeDb?: {
        bulkInsertDataflow?(edges: Array<Record<string, unknown>>): number;
    };
    suspendJsDb?: () => void;
    resumeJsDb?: () => void;
}): Promise<void>;
export declare function dataflowData(name: string, customDbPath?: string, opts?: {
    noTests?: boolean;
    file?: string;
    kind?: string;
    limit?: number;
    offset?: number;
}): Record<string, unknown>;
export declare function dataflowPathData(from: string, to: string, customDbPath?: string, opts?: {
    noTests?: boolean;
    maxDepth?: number;
    fromFile?: string;
    toFile?: string;
    kind?: string;
    limit?: number;
    offset?: number;
}): Record<string, unknown>;
export declare function dataflowImpactData(name: string, customDbPath?: string, opts?: {
    noTests?: boolean;
    depth?: number;
    file?: string;
    kind?: string;
    limit?: number;
    offset?: number;
}): Record<string, unknown>;
//# sourceMappingURL=dataflow.d.ts.map