text: """Manage cloud cloudhooks."""
  import async_timeout
  
  from . import cloud_api
  
  
  class Cloudhooks:
      """Class to help manage cloudhooks."""
  
      def __init__(self, cloud):
          """Initialize cloudhooks."""
          self.cloud = cloud
          self.cloud.iot.register_on_connect(self.async_publish_cloudhooks)
  
      async def async_publish_cloudhooks(self):
          """Inform the Relayer of the cloudhooks that we support."""
          if not self.cloud.is_connected:
              return
  
          cloudhooks = self.cloud.prefs.cloudhooks
          await self.cloud.iot.async_send_message('webhook-register', {
              'cloudhook_ids': [info['cloudhook_id'] for info
                                in cloudhooks.values()]
          }, expect_answer=False)
  
      async def async_create(self, webhook_id):
          """Create a cloud webhook."""
          cloudhooks = self.cloud.prefs.cloudhooks
  
          if webhook_id in cloudhooks:
              raise ValueError('Hook is already enabled for the cloud.')
  
          if not self.cloud.iot.connected:
              raise ValueError("Cloud is not connected")
  
          # Create cloud hook
          with async_timeout.timeout(10):
              resp = await cloud_api.async_create_cloudhook(self.cloud)
  
          data = await resp.json()
          cloudhook_id = data['cloudhook_id']
          cloudhook_url = data['url']
  
          # Store hook
          cloudhooks = dict(cloudhooks)
          hook = cloudhooks[webhook_id] = {
              'webhook_id': webhook_id,
              'cloudhook_id': cloudhook_id,
              'cloudhook_url': cloudhook_url
          }
          await self.cloud.prefs.async_update(cloudhooks=cloudhooks)
  
          await self.async_publish_cloudhooks()
  
          return hook
  
      async def async_delete(self, webhook_id):
          """Delete a cloud webhook."""
          cloudhooks = self.cloud.prefs.cloudhooks
  
          if webhook_id not in cloudhooks:
              raise ValueError('Hook is not enabled for the cloud.')
  
          # Remove hook
          cloudhooks = dict(cloudhooks)
          cloudhooks.pop(webhook_id)
          await self.cloud.prefs.async_update(cloudhooks=cloudhooks)
  
          await self.async_publish_cloudhooks()
  