import cytoscape from "cytoscape";
import { GraphBuilder, GraphConstructor, GraphTransformation, GraphTypeGuard } from "./Graph.js";
import BaseNode from "./BaseNode.js";
import BaseEdge from "./BaseEdge.js";
import { JavaClasses } from "@specs-feup/lara/api/lara/util/JavaTypes.js";
import DotFormatter from "../dot/DotFormatter.js";
declare namespace BaseGraph {
    class Class<D extends Data = Data, S extends ScratchData = ScratchData> {
        #private;
        constructor(graph: cytoscape.Core, _d?: D, _sd?: S);
        get data(): D;
        get scratchData(): S;
        addNode(id?: string): BaseNode.Class;
        addEdge(source: BaseNode.Class, target: BaseNode.Class, id?: string): BaseEdge.Class;
        getNodeById(id: string): BaseNode.Class | undefined;
        getEdgeById(id: string): BaseEdge.Class | undefined;
        get nodes(): BaseNode.Class[];
        get edges(): BaseEdge.Class[];
        is<D2 extends Data, S2 extends ScratchData>(guard: GraphTypeGuard<D2, S2>): this is BaseGraph.Class<D2, S2>;
        as<G extends BaseGraph.Class<D, S>>(GraphType: GraphConstructor<D, S, G>): G;
        init<D2 extends BaseGraph.Data, S2 extends BaseGraph.ScratchData>(builder: GraphBuilder<D2, S2>): BaseGraph.Class<D2, S2>;
        apply(transformation: GraphTransformation): this;
        toDot(dotFormatter: DotFormatter, label?: string): string;
        toDotFile(dotFormatter: DotFormatter, filename: string, label?: string): JavaClasses.File;
        toCy(): cytoscape.Core;
    }
    class Builder implements GraphBuilder<Data, ScratchData> {
        buildData(data: BaseGraph.Data): Data;
        buildScratchData(scratchData: BaseGraph.ScratchData): ScratchData;
    }
    const TypeGuard: GraphTypeGuard<Data, ScratchData>;
    interface Data {
    }
    interface ScratchData {
    }
}
export default BaseGraph;
//# sourceMappingURL=BaseGraph.d.ts.map