syntax = "proto3";

package flare.common.v1;

// 共享枚举（避免 event ↔ message 循环依赖）。

// 会话类型，与 CID TypePrefix 对齐。
enum ConversationType {
  CONVERSATION_TYPE_UNSPECIFIED = 0;  // 未指定
  CONVERSATION_TYPE_SINGLE = 1;       // 单聊（CID 前缀 1）
  CONVERSATION_TYPE_GROUP = 2;        // 群聊（CID 前缀 2）
  CONVERSATION_TYPE_AI = 3;           // AI 会话（CID 前缀 3）
  CONVERSATION_TYPE_SYSTEM = 4;       // 系统通知（CID 前缀 4）
  CONVERSATION_TYPE_CUSTOMER = 5;     // 客服会话（CID 前缀 5）
  CONVERSATION_TYPE_TEMP = 6;         // 临时会话（CID 前缀 6）
  CONVERSATION_TYPE_CHANNEL = 7;      // 频道（订阅者模型，CID 前缀 7）
  CONVERSATION_TYPE_BROADCAST = 8;    // 广播（订阅者模型，CID 前缀 8）
}

/// 删除类型：软删仅当前用户隐藏，硬删仅管理员/合规
enum DeleteType {
  DELETE_TYPE_UNSPECIFIED = 0;
  DELETE_TYPE_SOFT = 1;   /// 用户维度隐藏，多端同步
  DELETE_TYPE_HARD = 2;   /// 物理删除，仅管理员/系统
}

/// 删除作用域：用户私有多端 vs 会话全员
enum DeleteScope {
  DELETE_SCOPE_UNSPECIFIED = 0;
  DELETE_SCOPE_USER_PRIVATE = 1;         /// 仅当前用户可见性
  DELETE_SCOPE_CONVERSATION_GLOBAL = 2;   /// 会话内全员（如管理员删消息）
}

/// 消息置顶作用域：会话全员 vs 当前用户私有
enum MessagePinScope {
  MESSAGE_PIN_SCOPE_CONVERSATION = 0;  /// 会话内所有可见成员
  MESSAGE_PIN_SCOPE_SELF = 1;          /// 仅当前用户自己的多端
}

/// 反应操作：添加/移除（emoji 等）
enum ReactionAction {
  REACTION_ACTION_UNSPECIFIED = 0;
  REACTION_ACTION_ADD = 1;
  REACTION_ACTION_REMOVE = 2;
}

/// 标记类型：重要/待办/已处理/自定义
enum MarkType {
  MARK_TYPE_UNSPECIFIED = 0;
  MARK_TYPE_IMPORTANT = 1;
  MARK_TYPE_TODO = 2;
  MARK_TYPE_DONE = 3;
  MARK_TYPE_CUSTOM = 4;
}
