# Path: puresnmp/typevars.py
# class SocketInfo:
# class SocketResponse:


from typing import Any, Iterator, Union
from x690.types import ObjectIdentifier, Type  # type: ignore
from puresnmp.typevars import PyType
    2: "(noSuchName)",
    3: "(badValue)",
    4: "(readOnly)",
    5: "(genErr)",
    6: "(noAccess)",
    7: "(wrongType)",
    8: "(wrongLength)",
    9: "(wrongEncoding)",
    10: "(wrongValue)",
    11: "(noCreation)",
    12: "(inconsistentValue)",
    13: "(resourceUnavailable)",
    14: "(commitFailed)",
    15: "(undoFailed)",
    16: "(authorizationError)",
    17: "(notWritable)",
    18: "(inconsistentName)",
}


class VarBind:
    """
    A "VarBind" is a 2-tuple containing an object-identifier and the
    corresponding value.
    """

    # TODO: This class should be split in two for both the raw and pythonic
    #       API, that would simplify the typing of both "oid" and "value"a lot
    #       and keep things explicit
    oid: ObjectIdentifier = ObjectIdentifier(0)

# Path: puresnmp/typevars.py
# class SocketInfo:
# class SocketResponse:


# Path: puresnmp/snmp.py
from typing import Any, Iterator, Union
from x690.types import ObjectIdentifier, Type  # type: ignore
from puresnmp.typevars import PyType

    2: "(noSuchName)",
    3: "(badValue)",
    4: "(readOnly)",
    5: "(genErr)",
    6: "(noAccess)",
    7: "(wrongType)",
    8: "(wrongLength)",
    9: "(wrongEncoding)",
    10: "(wrongValue)",
    11: "(noCreation)",
    12: "(inconsistentValue)",
    13: "(resourceUnavailable)",
    14: "(commitFailed)",
    15: "(undoFailed)",
    16: "(authorizationError)",
    17: "(notWritable)",
    18: "(inconsistentName)",
}


class VarBind:
    """
    A "VarBind" is a 2-tuple containing an object-identifier and the
    corresponding value.
    """

    # TODO: This class should be split in two for both the raw and pythonic
    #       API, that would simplify the typing of both "oid" and "value"a lot
    #       and keep things explicit
    oid: ObjectIdentifier = ObjectIdentifier(0)

    value: Union[PyType, Type, None] = None