import BaseGraph from "./BaseGraph.js";
import BaseNode from "./BaseNode.js";
import { EdgeBuilder, EdgeConstructor, EdgeTypeGuard } from "./Edge.js";
import cytoscape from "cytoscape";
declare namespace BaseEdge {
    class Class<D extends Data = Data, S extends ScratchData = ScratchData> {
        #private;
        constructor(graph: BaseGraph.Class, edge: cytoscape.EdgeSingular, _d?: D, _sd?: S);
        get data(): D;
        get scratchData(): S;
        get id(): string;
        get source(): BaseNode.Class;
        set source(node: BaseNode.Class);
        get target(): BaseNode.Class;
        set target(node: BaseNode.Class);
        is<D2 extends Data, S2 extends ScratchData>(guard: EdgeTypeGuard<D2, S2>): this is BaseEdge.Class<D2, S2>;
        as<E extends BaseEdge.Class<D, S>>(EdgeType: EdgeConstructor<D, S, E>): E;
        init<D2 extends BaseEdge.Data, S2 extends BaseEdge.ScratchData>(builder: EdgeBuilder<D2, S2>): BaseEdge.Class<D2, S2>;
        remove(): void;
        get graph(): BaseGraph.Class;
        toCy(): cytoscape.EdgeSingular;
    }
    class Builder implements EdgeBuilder<Data, ScratchData> {
        buildData(data: BaseEdge.Data): Data;
        buildScratchData(scratchData: BaseEdge.ScratchData): ScratchData;
    }
    const TypeGuard: EdgeTypeGuard<Data, ScratchData>;
    interface Data {
        id: string;
        source: string;
        target: string;
    }
    interface ScratchData {
    }
}
export default BaseEdge;
//# sourceMappingURL=BaseEdge.d.ts.map