# This file was generated by stubgen-pyx v0.2.19 from cuda_core/cuda/core/graph/_adjacency_set_proxy.pyx

"""Mutable-set proxy for graph node predecessors and successors."""
from collections.abc import Iterator, Set
from typing import Any

from cuda.core.graph._graph_node import GraphNode


class AdjacencySetProxy:
    """Mutable set proxy for a node's predecessors or successors.  Mutations
    write through to the underlying CUDA graph."""
    __slots__ = '_core'

    def __init__(self, node: GraphNode, is_fwd: bool) -> None: ...
    @classmethod
    def _from_iterable(cls, it) -> set[GraphNode]: ...
    def __contains__(self, x: object) -> bool: ...
    def __iter__(self) -> Iterator[GraphNode]: ...
    def __len__(self) -> int: ...
    def add(self, value: GraphNode) -> None: ...
    def discard(self, value: GraphNode) -> None: ...
    def clear(self) -> None:
        """Remove all edges in a single driver call."""
    def __isub__(self, it: Set[Any]) -> AdjacencySetProxy:
        """Remove edges to all nodes in *it* in a single driver call."""
    def update(self, *others) -> None:
        """Add edges to multiple nodes at once."""
    def __ior__(self, it: Set[Any]) -> AdjacencySetProxy:
        """Add edges to all nodes in *it* in a single driver call."""
    def __repr__(self) -> str: ...

class _AdjacencySetCore:
    """Cythonized core implementing AdjacencySetProxy"""
    def __init__(self, node: GraphNode, is_fwd: bool): ...
