import type { DataflowGraph } from '../../../../../graph/graph';
import type { DataflowGraphVertexFunctionDefinition } from '../../../../../graph/vertex';
import { NodeId } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/node-id';
import { type REnvironmentInformation } from '../../../../../environments/environment';
import type { FlowrAnalyzerContext } from '../../../../../../project/context/flowr-analyzer-context';
import type { IdentifierReference } from '../../../../../environments/identifier';
/**
 * Computes, for every function-definition vertex `F`, `summary(F) = own(F)` unioned with `summary(G)` over every transitive callee `G`.
 * @param graph - the fully linked dataflow graph
 * @param own   - the effects a single function definition produces itself (its contribution to the summary)
 * @returns a map from each function-definition vertex to its transitive-effect summary
 * @useInstead {@link Dataflow.sideEffects.callGraphSummaries}
 */
export declare function computeCallGraphSummaries<T>(this: void, graph: DataflowGraph, own: (id: NodeId, fdef: DataflowGraphVertexFunctionDefinition) => Iterable<T>): Map<NodeId, Set<T>>;
/**
 * Links every materialized package-export vertex back to the `library()`/`use()` call that loaded it,
 * reading the loading call from the export binding's `definedAt` in the (final, authoritative) environment.
 * Only vertices created on demand (exports actually referenced) get an edge, keeping the graph small.
 */
export declare function linkMaterializedExportsToLoaders(graph: DataflowGraph, environment: REnvironmentInformation): void;
/** Re-resolves still-open reads whose name is one of the transitively escaped `<<-` definitions in `escapedNames`, adding {@link EdgeType.Reads} edges. */
export declare function reResolveOpenReferences(this: void, graph: DataflowGraph, environment: REnvironmentInformation, references: readonly IdentifierReference[], escapedNames: ReadonlySet<string>): void;
/**
 * Propagates every function's escaped side effects (attached packages and `<<-` definitions) to its transitive callers.
 * @returns the enriched top-level environment and whether it grew (so the extractor can re-link and re-run to a fixpoint).
 * @useInstead {@link Dataflow.sideEffects.propagateTransitive}
 */
export declare function propagateTransitiveSideEffects(this: void, graph: DataflowGraph, environment: REnvironmentInformation, ctx: FlowrAnalyzerContext): {
    environment: REnvironmentInformation;
    grew: boolean;
    escapedNames: Set<string>;
};
