///|
/// 事件:已发生的事实,不可变
pub trait Event {
  /// 应用事件到状态,返回新状态
  /// 纯函数,无副作用
  // apply(state : S, event : E) -> S

  /// 事件版本(用于 Schema 演化)
  fn version() -> Int32

  /// 事件类型名称(用于调试)
  fn type_name() -> String
}

// pub struct AggregateId(String)

///|
/// 聚合根:组合命令处理和事件应用
// pub trait Aggregate {
//   /// 获取聚合根 ID
//   id(state : S) -> Id

//   /// 获取当前状态
//   state(aggregate : Self) -> S

//   /// 获取未提交事件
//   uncommitted_events(aggregate : Self) -> Array[E]

//   /// 创建新聚合根(从空状态开始)
//   empty() -> S

//   /// 从快照恢复
//   from_snapshot(state : S, version : Int) -> Self
// }