namespace NATS.Server.Raft;
///
/// RAFT runtime configuration model aligned with Go's raftConfig shape.
/// Go reference: server/raft.go raftConfig (Name, Store, Log, Track, Observer,
/// Recovering, ScaleUp).
///
public sealed class RaftConfig
{
///
/// Gets or sets the logical name for this RAFT group (meta, stream, or consumer group id).
///
public string Name { get; set; } = string.Empty;
// Store/log abstractions are intentionally loose until full WAL/store parity is wired.
///
/// Gets or sets the storage backend that persists RAFT snapshots and stable state.
///
public object? Store { get; set; }
///
/// Gets or sets the write-ahead log implementation used for replicated entries.
///
public object? Log { get; set; }
///
/// Gets or sets a value indicating whether this node tracks replication progress metrics.
///
public bool Track { get; set; }
///
/// Gets or sets a value indicating whether this node is a non-voting observer.
///
public bool Observer { get; set; }
///
/// Gets or sets a value indicating whether the group is replaying log state during recovery.
///
public bool Recovering { get; set; }
///
/// Gets or sets a value indicating whether this node is participating in a membership scale-up.
///
public bool ScaleUp { get; set; }
}