/**
 * 动作注册表 - 管理所有可用的动作类型
 */
class ActionRegistry {
  constructor() {
    this.actions = new Map();
  }
  
  /**
   * 注册动作
   * @param {string} name - 动作名称
   * @param {Class} ActionClass - 动作类
   */
  register(name, ActionClass) {
    this.actions.set(name, ActionClass);
  }
  
  /**
   * 获取动作类
   * @param {string} name - 动作名称
   * @returns {Class|null}
   */
  get(name) {
    return this.actions.get(name) || null;
  }
  
  /**
   * 检查动作是否存在
   * @param {string} name - 动作名称
   * @returns {boolean}
   */
  has(name) {
    return this.actions.has(name);
  }
  
  /**
   * 获取所有已注册的动作名称
   * @returns {string[]}
   */
  list() {
    return Array.from(this.actions.keys());
  }
}

module.exports = ActionRegistry;
