using ZB.MOM.WW.OtOpcUa.Commons.Types;

namespace ZB.MOM.WW.OtOpcUa.Commons.Messages.Redundancy;

public enum RedundancyRole { Primary, Secondary, Detached }

/// <summary>
/// Snapshot of a single node's redundancy state. Aggregated by <c>RedundancyStateActor</c>
/// to compute fleet-wide ServiceLevel.
/// </summary>
public sealed record NodeRedundancyState(
    NodeId NodeId,
    RedundancyRole Role,
    bool IsClusterLeader,
    bool IsRoleLeaderForDriver,
    DateTime AsOfUtc);
