import type { EdictModule, Expression, ConcreteEffect, ApprovalGate } from "../ast/nodes.js"; export interface CallEdge { calleeName: string; callSiteNodeId: string; } export type CallGraph = Map; /** * Minimal interface for anything that can source effects in the call graph. * Covers user functions, builtins, typed imports, and tool definitions — * without requiring synthetic FunctionDef casts. */ export interface EffectSource { name: string; id: string; effects: ConcreteEffect[]; approval?: ApprovalGate; } /** * Walk expressions and collect all ident-based function calls. * Recurses into all expression types except lambda bodies (opaque). * * @param exprs - Array of expressions to walk * @returns Array of call edges discovered (callee name + call site node ID) */ export declare function collectCalls(exprs: Expression[]): CallEdge[]; /** * Build the module call graph: edges per function, effect sources, and imported names. * Only walks FunctionDef.body — contracts are Z3 specs, not runtime code. * * @param module - A validated Edict module * @returns `{ graph, effectSources, functionDefs, importedNames }` */ export declare function buildCallGraph(module: EdictModule): { graph: CallGraph; effectSources: Map; importedNames: Set; /** @deprecated Use effectSources — kept for backward compat */ functionDefs: Map; }; //# sourceMappingURL=call-graph.d.ts.map