# Path: google/cloud/iot_v1/types/device_manager.py
# class CreateDeviceRegistryRequest(proto.Message):
# class GetDeviceRegistryRequest(proto.Message):
# class DeleteDeviceRegistryRequest(proto.Message):
# class UpdateDeviceRegistryRequest(proto.Message):
# class ListDeviceRegistriesRequest(proto.Message):
# class ListDeviceRegistriesResponse(proto.Message):
# class CreateDeviceRequest(proto.Message):
# class GetDeviceRequest(proto.Message):
# class UpdateDeviceRequest(proto.Message):
# class DeleteDeviceRequest(proto.Message):
# class ListDevicesRequest(proto.Message):
# class GatewayListOptions(proto.Message):
# class ListDevicesResponse(proto.Message):
# class ModifyCloudToDeviceConfigRequest(proto.Message):
# class ListDeviceConfigVersionsRequest(proto.Message):
# class ListDeviceConfigVersionsResponse(proto.Message):
# class ListDeviceStatesRequest(proto.Message):
# class ListDeviceStatesResponse(proto.Message):
# class SendCommandToDeviceRequest(proto.Message):
# class SendCommandToDeviceResponse(proto.Message):
# class BindDeviceToGatewayRequest(proto.Message):
# class BindDeviceToGatewayResponse(proto.Message):
# class UnbindDeviceFromGatewayRequest(proto.Message):
# class UnbindDeviceFromGatewayResponse(proto.Message):
#     def raw_page(self):
#     def raw_page(self):
# 
# Path: google/cloud/iot_v1/types/resources.py
# class MqttState(proto.Enum):
# class HttpState(proto.Enum):
# class LogLevel(proto.Enum):
# class GatewayType(proto.Enum):
# class GatewayAuthMethod(proto.Enum):
# class PublicKeyCertificateFormat(proto.Enum):
# class PublicKeyFormat(proto.Enum):
# class Device(proto.Message):
# class GatewayConfig(proto.Message):
# class DeviceRegistry(proto.Message):
# class MqttConfig(proto.Message):
# class HttpConfig(proto.Message):
# class EventNotificationConfig(proto.Message):
# class StateNotificationConfig(proto.Message):
# class RegistryCredential(proto.Message):
# class X509CertificateDetails(proto.Message):
# class PublicKeyCertificate(proto.Message):
# class DeviceCredential(proto.Message):
# class PublicKeyCredential(proto.Message):
# class DeviceConfig(proto.Message):
# class DeviceState(proto.Message):
#     MQTT_STATE_UNSPECIFIED = 0
#     MQTT_ENABLED = 1
#     MQTT_DISABLED = 2
#     HTTP_STATE_UNSPECIFIED = 0
#     HTTP_ENABLED = 1
#     HTTP_DISABLED = 2
#     LOG_LEVEL_UNSPECIFIED = 0
#     NONE = 10
#     ERROR = 20
#     INFO = 30
#     DEBUG = 40
#     GATEWAY_TYPE_UNSPECIFIED = 0
#     GATEWAY = 1
#     NON_GATEWAY = 2
#     GATEWAY_AUTH_METHOD_UNSPECIFIED = 0
#     ASSOCIATION_ONLY = 1
#     DEVICE_AUTH_TOKEN_ONLY = 2
#     ASSOCIATION_AND_DEVICE_AUTH_TOKEN = 3
#     UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT = 0
#     X509_CERTIFICATE_PEM = 1
#     UNSPECIFIED_PUBLIC_KEY_FORMAT = 0
#     RSA_PEM = 3
#     RSA_X509_PEM = 1
#     ES256_PEM = 2
#     ES256_X509_PEM = 4


import abc
import pkg_resources
import google.auth  # type: ignore
import google.api_core
from typing import Awaitable, Callable, Dict, Optional, Sequence, Union
from google.api_core import exceptions as core_exceptions
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials  # type: ignore
from google.oauth2 import service_account  # type: ignore
from google.cloud.iot_v1.types import device_manager
from google.cloud.iot_v1.types import resources
from google.iam.v1 import iam_policy_pb2  # type: ignore
from google.iam.v1 import policy_pb2  # type: ignore
from google.protobuf import empty_pb2  # type: ignore

       .. warning::
            Only call this method if the transport is NOT shared
            with other clients - this may cause errors in other clients!
        """
        raise NotImplementedError()

    @property
    def create_device_registry(
        self,
    ) -> Callable[
        [device_manager.CreateDeviceRegistryRequest],
        Union[resources.DeviceRegistry, Awaitable[resources.DeviceRegistry]],
    ]:
        raise NotImplementedError()

    @property
    def get_device_registry(
        self,
    ) -> Callable[
        [device_manager.GetDeviceRegistryRequest],
        Union[resources.DeviceRegistry, Awaitable[resources.DeviceRegistry]],
    ]:
        raise NotImplementedError()

    @property
    def update_device_registry(
        self,
    ) -> Callable[
        [device_manager.UpdateDeviceRegistryRequest],

# Path: google/cloud/iot_v1/types/device_manager.py
# class CreateDeviceRegistryRequest(proto.Message):
# class GetDeviceRegistryRequest(proto.Message):
# class DeleteDeviceRegistryRequest(proto.Message):
# class UpdateDeviceRegistryRequest(proto.Message):
# class ListDeviceRegistriesRequest(proto.Message):
# class ListDeviceRegistriesResponse(proto.Message):
# class CreateDeviceRequest(proto.Message):
# class GetDeviceRequest(proto.Message):
# class UpdateDeviceRequest(proto.Message):
# class DeleteDeviceRequest(proto.Message):
# class ListDevicesRequest(proto.Message):
# class GatewayListOptions(proto.Message):
# class ListDevicesResponse(proto.Message):
# class ModifyCloudToDeviceConfigRequest(proto.Message):
# class ListDeviceConfigVersionsRequest(proto.Message):
# class ListDeviceConfigVersionsResponse(proto.Message):
# class ListDeviceStatesRequest(proto.Message):
# class ListDeviceStatesResponse(proto.Message):
# class SendCommandToDeviceRequest(proto.Message):
# class SendCommandToDeviceResponse(proto.Message):
# class BindDeviceToGatewayRequest(proto.Message):
# class BindDeviceToGatewayResponse(proto.Message):
# class UnbindDeviceFromGatewayRequest(proto.Message):
# class UnbindDeviceFromGatewayResponse(proto.Message):
#     def raw_page(self):
#     def raw_page(self):
# 
# Path: google/cloud/iot_v1/types/resources.py
# class MqttState(proto.Enum):
# class HttpState(proto.Enum):
# class LogLevel(proto.Enum):
# class GatewayType(proto.Enum):
# class GatewayAuthMethod(proto.Enum):
# class PublicKeyCertificateFormat(proto.Enum):
# class PublicKeyFormat(proto.Enum):
# class Device(proto.Message):
# class GatewayConfig(proto.Message):
# class DeviceRegistry(proto.Message):
# class MqttConfig(proto.Message):
# class HttpConfig(proto.Message):
# class EventNotificationConfig(proto.Message):
# class StateNotificationConfig(proto.Message):
# class RegistryCredential(proto.Message):
# class X509CertificateDetails(proto.Message):
# class PublicKeyCertificate(proto.Message):
# class DeviceCredential(proto.Message):
# class PublicKeyCredential(proto.Message):
# class DeviceConfig(proto.Message):
# class DeviceState(proto.Message):
#     MQTT_STATE_UNSPECIFIED = 0
#     MQTT_ENABLED = 1
#     MQTT_DISABLED = 2
#     HTTP_STATE_UNSPECIFIED = 0
#     HTTP_ENABLED = 1
#     HTTP_DISABLED = 2
#     LOG_LEVEL_UNSPECIFIED = 0
#     NONE = 10
#     ERROR = 20
#     INFO = 30
#     DEBUG = 40
#     GATEWAY_TYPE_UNSPECIFIED = 0
#     GATEWAY = 1
#     NON_GATEWAY = 2
#     GATEWAY_AUTH_METHOD_UNSPECIFIED = 0
#     ASSOCIATION_ONLY = 1
#     DEVICE_AUTH_TOKEN_ONLY = 2
#     ASSOCIATION_AND_DEVICE_AUTH_TOKEN = 3
#     UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT = 0
#     X509_CERTIFICATE_PEM = 1
#     UNSPECIFIED_PUBLIC_KEY_FORMAT = 0
#     RSA_PEM = 3
#     RSA_X509_PEM = 1
#     ES256_PEM = 2
#     ES256_X509_PEM = 4


# Path: google/cloud/iot_v1/services/device_manager/transports/base.py
import abc
import pkg_resources
import google.auth  # type: ignore
import google.api_core
from typing import Awaitable, Callable, Dict, Optional, Sequence, Union
from google.api_core import exceptions as core_exceptions
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials  # type: ignore
from google.oauth2 import service_account  # type: ignore
from google.cloud.iot_v1.types import device_manager
from google.cloud.iot_v1.types import resources
from google.iam.v1 import iam_policy_pb2  # type: ignore
from google.iam.v1 import policy_pb2  # type: ignore
from google.protobuf import empty_pb2  # type: ignore


       .. warning::
            Only call this method if the transport is NOT shared
            with other clients - this may cause errors in other clients!
        """
        raise NotImplementedError()

    @property
    def create_device_registry(
        self,
    ) -> Callable[
        [device_manager.CreateDeviceRegistryRequest],
        Union[resources.DeviceRegistry, Awaitable[resources.DeviceRegistry]],
    ]:
        raise NotImplementedError()

    @property
    def get_device_registry(
        self,
    ) -> Callable[
        [device_manager.GetDeviceRegistryRequest],
        Union[resources.DeviceRegistry, Awaitable[resources.DeviceRegistry]],
    ]:
        raise NotImplementedError()

    @property
    def update_device_registry(
        self,
    ) -> Callable[
        [device_manager.UpdateDeviceRegistryRequest],

        Union[resources.DeviceRegistry, Awaitable[resources.DeviceRegistry]],