docs: async def async_delete_device(self, device_id: int) -> None:
          """
          Delete an enrolled device.
  
          :param device_id: unique identifier for the device to be deleted
          """
  
          # Lookup device using zone to obtain an accurate index, which is
          # needed to perform the delete command
          device = self._devices[device_id]
          response = await self._protocol.async_execute(
              GetDeviceCommand(device.category, device.group_number, device.unit_number))
          if isinstance(response, DeviceInfoResponse):
              response = await self._protocol.async_execute(
                  DeleteDeviceCommand(device.category, response.index))
              if isinstance(response, DeviceDeletedResponse):
                  self._devices._delete(device) # pylint: disable=protected-access
                  if self._on_device_deleted:
                      try:
                          self._on_device_deleted(self, device)  # pylint: disable=protected-access
                      except Exception: # pylint: disable=broad-except
                          _LOGGER.error(
                              "Unhandled exception in on_device_deleted callback",
                              exc_info=True)
          if isinstance(response, DeviceNotFoundResponse):
              raise ValueError("Device to be deleted was not found")