import cytoscape from "@specs-feup/lara/api/libs/cytoscape-3.26.0.js";
import BaseGraph from "./BaseGraph.js";
export type GraphConstructor<D extends BaseGraph.Data, S extends BaseGraph.ScratchData, G extends BaseGraph.Class<D, S>> = new (node: cytoscape.Core, _d: D, _sd: S) => G;
export interface GraphBuilder<D extends BaseGraph.Data, S extends BaseGraph.ScratchData> {
    buildData(data: BaseGraph.Data): D;
    buildScratchData(scratchData: BaseGraph.ScratchData): S;
}
export interface GraphTypeGuard<D extends BaseGraph.Data, S extends BaseGraph.ScratchData> {
    isDataCompatible(data: BaseGraph.Data): data is D;
    isScratchDataCompatible(sData: BaseGraph.ScratchData): sData is S;
}
export interface GraphTransformation {
    apply(graph: BaseGraph.Class): void;
}
declare namespace Graph {
    const scratchNamespace = "_smali_flow";
    function create(): BaseGraph.Class;
    function fromCy(graph: cytoscape.Core): BaseGraph.Class;
}
export default Graph;
//# sourceMappingURL=Graph.d.ts.map