import cytoscape from "@specs-feup/lara/api/libs/cytoscape-3.26.0.js";
import { NodeBuilder, NodeConstructor, NodeTypeGuard } from "./Node.js";
import BaseGraph from "./BaseGraph.js";
import BaseEdge from "./BaseEdge.js";
declare namespace BaseNode {
    class Class<D extends Data = Data, S extends ScratchData = ScratchData> {
        #private;
        constructor(graph: BaseGraph.Class, node: cytoscape.NodeSingular, _d?: D, _sd?: S);
        get data(): D;
        get scratchData(): S;
        get id(): string;
        get incomers(): BaseEdge.Class[];
        get outgoers(): BaseEdge.Class[];
        is<D2 extends Data, S2 extends ScratchData>(guard: NodeTypeGuard<D2, S2>): this is BaseNode.Class<D2, S2>;
        as<N extends BaseNode.Class<D, S>>(NodeType: NodeConstructor<D, S, N>): N;
        init<D2 extends BaseNode.Data, S2 extends BaseNode.ScratchData>(builder: NodeBuilder<D2, S2>): BaseNode.Class<D2, S2>;
        remove(): void;
        bfs(propagate: (edge: BaseEdge.Class) => boolean): Generator<[BaseNode.Class, BaseEdge.Class[], number]>;
        get graph(): BaseGraph.Class;
        toCy(): cytoscape.NodeSingular;
    }
    class Builder implements NodeBuilder<Data, ScratchData> {
        buildData(data: BaseNode.Data): Data;
        buildScratchData(scratchData: BaseNode.ScratchData): ScratchData;
    }
    const TypeGuard: NodeTypeGuard<Data, ScratchData>;
    interface Data {
        id: string;
    }
    interface ScratchData {
    }
}
export default BaseNode;
//# sourceMappingURL=BaseNode.d.ts.map