namespace TeamsISO.Engine.Domain;

/// <summary>
/// Network-layer NDI configuration. Lets the operator place TeamsISO inside an NDI
/// "transcoder" topology where the upstream (Teams) outputs are confined to a private
/// group so they don't pollute the production network, while TeamsISO's own normalized
/// outputs broadcast on the standard <c>"Public"</c> group consumed by the switcher.
///
/// Both fields are comma-separated lists of NDI group names. Whitespace around commas
/// is tolerated. <c>null</c> or whitespace means "use the NDI default", which is the
/// implicit <c>"Public"</c> group.
/// </summary>
/// <param name="DiscoveryGroups">
/// Groups the engine's finder subscribes to when enumerating sources. Set this to
/// the private group your Teams machine is configured to broadcast on (e.g.
/// <c>"teamsiso-input"</c>) when you want to hide raw Teams outputs from the rest of
/// the network.
/// </param>
/// <param name="OutputGroups">
/// Groups TeamsISO's own ISO senders broadcast on. Leave at the default for the
/// normal case where downstream switchers receive over the standard
/// <c>"Public"</c> group; override only for split-audience setups.
/// </param>
public sealed record NdiGroupSettings(string? DiscoveryGroups, string? OutputGroups)
{
    public static readonly NdiGroupSettings Default = new(null, null);
}
