text: """Provides device automations for Lock."""
  from __future__ import annotations
  
  import voluptuous as vol
  
  from homeassistant.components.automation import AutomationActionType
  from homeassistant.components.device_automation import DEVICE_TRIGGER_BASE_SCHEMA
  from homeassistant.components.homeassistant.triggers import state as state_trigger
  from homeassistant.const import (
      CONF_DEVICE_ID,
      CONF_DOMAIN,
      CONF_ENTITY_ID,
      CONF_FOR,
      CONF_PLATFORM,
      CONF_TYPE,
      STATE_LOCKED,
      STATE_UNLOCKED,
  )
  from homeassistant.core import CALLBACK_TYPE, HomeAssistant
  from homeassistant.helpers import config_validation as cv, entity_registry
  from homeassistant.helpers.typing import ConfigType
  
  from . import DOMAIN
  
  TRIGGER_TYPES = {"locked", "unlocked"}
  
  TRIGGER_SCHEMA = DEVICE_TRIGGER_BASE_SCHEMA.extend(
      {
          vol.Required(CONF_ENTITY_ID): cv.entity_id,
          vol.Required(CONF_TYPE): vol.In(TRIGGER_TYPES),
          vol.Optional(CONF_FOR): cv.positive_time_period_dict,
      }
  )
  
  
  async def async_get_triggers(hass: HomeAssistant, device_id: str) -> list[dict]:
      """List device triggers for Lock devices."""
      registry = await entity_registry.async_get_registry(hass)
      triggers = []
  
      # Get all the integrations entities for this device
      for entry in entity_registry.async_entries_for_device(registry, device_id):
          if entry.domain != DOMAIN:
              continue
  
          # Add triggers for each entity that belongs to this integration
          triggers += [
              {
                  CONF_PLATFORM: "device",
                  CONF_DEVICE_ID: device_id,
                  CONF_DOMAIN: DOMAIN,
                  CONF_ENTITY_ID: entry.entity_id,
                  CONF_TYPE: trigger,
              }
              for trigger in TRIGGER_TYPES
          ]
  
      return triggers
  
  
  async def async_get_trigger_capabilities(hass: HomeAssistant, config: dict) -> dict:
      """List trigger capabilities."""
      return {
          "extra_fields": vol.Schema(
              {vol.Optional(CONF_FOR): cv.positive_time_period_dict}
          )
      }
  
  
  async def async_attach_trigger(
      hass: HomeAssistant,
      config: ConfigType,
      action: AutomationActionType,
      automation_info: dict,
  ) -> CALLBACK_TYPE:
      """Attach a trigger."""
      if config[CONF_TYPE] == "locked":
          to_state = STATE_LOCKED
      else:
          to_state = STATE_UNLOCKED
  
      state_config = {
          CONF_PLATFORM: "state",
          CONF_ENTITY_ID: config[CONF_ENTITY_ID],
          state_trigger.CONF_TO: to_state,
      }
      if CONF_FOR in config:
          state_config[CONF_FOR] = config[CONF_FOR]
      state_config = state_trigger.TRIGGER_SCHEMA(state_config)
      return await state_trigger.async_attach_trigger(
          hass, state_config, action, automation_info, platform_type="device"
      )
  