namespace GFramework.Core.Abstractions.StateManagement;
///
/// 暴露 Store 的诊断信息。
/// 该接口用于调试、监控和后续时间旅行能力的扩展,不参与状态写入流程。
///
/// 状态树的根状态类型。
public interface IStoreDiagnostics
{
///
/// 获取当前已注册的订阅者数量。
///
int SubscriberCount { get; }
///
/// 获取最近一次分发的 action 类型。
/// 即使该次分发未引起状态变化,该值也会更新。
///
Type? LastActionType { get; }
///
/// 获取最近一次真正改变状态的时间戳。
/// 若尚未发生状态变化,则返回 。
///
DateTimeOffset? LastStateChangedAt { get; }
///
/// 获取最近一次分发记录。
///
StoreDispatchRecord? LastDispatchRecord { get; }
///
/// 获取当前 Store 使用的 action 匹配策略。
///
StoreActionMatchingMode ActionMatchingMode { get; }
///
/// 获取历史缓冲区容量。
/// 返回 0 表示当前 Store 未启用历史记录能力。
///
int HistoryCapacity { get; }
///
/// 获取当前可见历史记录数量。
/// 当历史记录启用时,该值至少为 1,因为当前状态会作为历史锚点存在。
///
int HistoryCount { get; }
///
/// 获取当前状态在历史缓冲区中的索引。
/// 当未启用历史记录时返回 -1。
///
int HistoryIndex { get; }
///
/// 获取当前历史快照列表。
/// 调试工具可以基于该列表渲染时间旅行面板,而不需要访问 Store 内部结构。
///
IReadOnlyList> HistoryEntries { get; }
///
/// 获取当前是否处于批处理阶段。
/// 该值为 时,状态变更通知会延迟到最外层批处理结束后再统一发送。
///
bool IsBatching { get; }
}