from faebryk.core.zig.gen.faebryk.edgebuilder import EdgeCreationAttributes
from faebryk.core.zig.gen.graph.graph import BoundEdge, BoundNode, Edge, Node

class EdgeNext:
    @staticmethod
    def create(*, previous_node: Node, next_node: Node) -> Edge: ...
    @staticmethod
    def build() -> EdgeCreationAttributes: ...
    @staticmethod
    def add_next(*, previous_node: BoundNode, next_node: BoundNode) -> BoundEdge: ...
    @staticmethod
    def is_instance(*, edge: Edge) -> bool: ...
    @staticmethod
    def get_previous_node(*, edge: Edge) -> Node | None: ...
    @staticmethod
    def get_next_node(*, edge: Edge) -> Node | None: ...
    @staticmethod
    def get_previous_edge(*, node: BoundNode) -> BoundEdge | None: ...
    @staticmethod
    def get_next_edge(*, node: BoundNode) -> BoundEdge | None: ...
    @staticmethod
    def get_previous_node_from_node(*, node: BoundNode) -> Node | None: ...
    @staticmethod
    def get_next_node_from_node(*, node: BoundNode) -> Node | None: ...
