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

"""Mutable-set proxy for graph node predecessors and successors."""
from __future__ import annotations

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):
        ...