import type { DataflowGraph, FunctionArgument, OutgoingEdges } from './graph';
import type { GenericDiffConfiguration, GenericDifferenceInformation, WriteableDifferenceReport } from '../../util/diff';
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
interface ProblematicVertex {
    tag: 'vertex';
    id: NodeId;
}
interface ProblematicEdge {
    tag: 'edge';
    from: NodeId;
    to: NodeId;
}
export type ProblematicDiffInfo = ProblematicVertex | ProblematicEdge;
export declare class DataflowDifferenceReport implements WriteableDifferenceReport {
    _comments: string[] | undefined;
    _problematic: ProblematicDiffInfo[] | undefined;
    addComment(comment: string, ...related: readonly ProblematicDiffInfo[]): void;
    comments(): readonly string[] | undefined;
    problematic(): readonly ProblematicDiffInfo[] | undefined;
    isEqual(): boolean;
}
export interface NamedGraph {
    name: string;
    graph: DataflowGraph;
}
interface DataflowDiffContext extends GenericDifferenceInformation<DataflowDifferenceReport> {
    left: DataflowGraph;
    right: DataflowGraph;
    config: GenericDiffConfiguration;
}
export declare function diffOfDataflowGraphs(left: NamedGraph, right: NamedGraph, config?: Partial<GenericDiffConfiguration>): DataflowDifferenceReport;
export declare function equalFunctionArguments(fn: NodeId, a: false | readonly FunctionArgument[], b: false | readonly FunctionArgument[]): boolean;
export declare function diffFunctionArguments(fn: NodeId, a: false | readonly FunctionArgument[], b: false | readonly FunctionArgument[], ctx: GenericDifferenceInformation<DataflowDifferenceReport>): void;
export declare function diffVertices(ctx: DataflowDiffContext): void;
export declare function diffEdges(ctx: DataflowDiffContext, id: NodeId, lEdges: OutgoingEdges | undefined, rEdges: OutgoingEdges | undefined): void;
export {};
