namespace ZB.MOM.WW.OtOpcUa.Client.Shared.Models;

/// <summary>
///     Redundancy information read from the server.
/// </summary>
public sealed class RedundancyInfo
{
    /// <summary>Initializes a new instance of the RedundancyInfo class.</summary>
    /// <param name="mode">The redundancy mode (e.g., "None", "Cold", "Warm", "Hot").</param>
    /// <param name="serviceLevel">The server's current service level (0-255).</param>
    /// <param name="serverUris">URIs of all servers in the redundant set.</param>
    /// <param name="applicationUri">The application URI of the connected server.</param>
    public RedundancyInfo(string mode, byte serviceLevel, string[] serverUris, string applicationUri)
    {
        Mode = mode;
        ServiceLevel = serviceLevel;
        ServerUris = serverUris;
        ApplicationUri = applicationUri;
    }

    /// <summary>The redundancy mode (e.g., "None", "Cold", "Warm", "Hot").</summary>
    public string Mode { get; }

    /// <summary>The server's current service level (0-255).</summary>
    public byte ServiceLevel { get; }

    /// <summary>URIs of all servers in the redundant set.</summary>
    public string[] ServerUris { get; }

    /// <summary>The application URI of the connected server.</summary>
    public string ApplicationUri { get; }
}