from __future__ import annotations

from typing import Any

class Node:
    def __init__(self, id: Any, **attrs: Any) -> None: ...
    @property
    def id(self): ...
    @property
    def attrs(self): ...
    def __getitem__(self, attr_name: Any): ...
    def __setitem__(self, attr_name: Any, attr_value: Any) -> None: ...
    def __contains__(self, attr_name: Any): ...

class Edge:
    def __init__(self, src_id: Any, tgt_id: Any, **attrs: Any) -> None: ...
    @property
    def src_id(self): ...
    @property
    def tgt_id(self): ...
    @property
    def attrs(self): ...
    def __getitem__(self, attr_name: Any): ...
    def __setitem__(self, attr_name: Any, attr_value: Any) -> None: ...
    def __contains__(self, attr_name: Any): ...

class Graph:
    def __init__(self, **attrs: Any) -> None: ...
    @property
    def nodes(self): ...
    @property
    def attrs(self): ...
    @property
    def adjs(self): ...
    def add_node(self, node_id: Any, **attrs: Any) -> None: ...
    def add_edge(self, src_id: Any, tgt_id: Any, **attrs: Any) -> None: ...
    def __len__(self): ...
    def __iter__(self) -> Any: ...
    def __getitem__(self, node_id: Any): ...
    def __contains__(self, node_id: Any): ...
