namespace DnsmasqWebUI.Models.EffectiveConfig;
///
/// Source file for each field in .
/// Same property names as config: use sources.Port for config.Port, sources.AddnHostsPaths[i].Source for config.AddnHostsPaths[i], etc.
/// Enables the UI to show exactly where each value came from and whether it is readonly.
///
///
/// Single-value and flags: Property is ?. Readonly = source?.IsReadOnly == true. Tooltip = .
/// Multi-value: Property is IReadOnlyList<ValueWithSource> or PathWithSource for addn-hosts. Use sources.AddnHostsPaths[i].Source. Same readonly/tooltip from that Source.
///
public record EffectiveConfigSources(
// --- Hosts ---
ConfigValueSource? NoHosts,
IReadOnlyList AddnHostsPaths,
// --- Multi-value (ARG_DUP): source per value ---
IReadOnlyList ServerLocalValues,
IReadOnlyList AddressValues,
IReadOnlyList Interfaces,
IReadOnlyList ListenAddresses,
IReadOnlyList ExceptInterfaces,
IReadOnlyList DhcpRanges,
IReadOnlyList DhcpHostLines,
IReadOnlyList DhcpOptionLines,
IReadOnlyList ResolvFiles,
// --- Flags (set if any occurrence; source = first file that set it, so we know if readonly) ---
ConfigValueSource? ExpandHosts,
ConfigValueSource? BogusPriv,
ConfigValueSource? StrictOrder,
ConfigValueSource? NoResolv,
ConfigValueSource? DomainNeeded,
ConfigValueSource? NoPoll,
ConfigValueSource? BindInterfaces,
ConfigValueSource? NoNegcache,
ConfigValueSource? DhcpAuthoritative,
ConfigValueSource? LeasefileRo,
// --- Single-value (last occurrence wins; source = file that set the last value) ---
ConfigValueSource? DhcpLeaseFilePath,
ConfigValueSource? CacheSize,
ConfigValueSource? Port,
ConfigValueSource? LocalTtl,
ConfigValueSource? PidFilePath,
ConfigValueSource? User,
ConfigValueSource? Group,
ConfigValueSource? LogFacility,
ConfigValueSource? DhcpLeaseMax,
ConfigValueSource? NegTtl,
ConfigValueSource? MaxTtl,
ConfigValueSource? MaxCacheTtl,
ConfigValueSource? MinCacheTtl,
ConfigValueSource? DhcpTtl
);