namespace NexusShell.Services.Policy;

public sealed class NexusPolicySnapshot
{
    public required string Role { get; init; }
    public required string PolicyId { get; init; }
    public required string PolicyName { get; init; }
    public required string PolicyVersion { get; init; }
    public required string SourcePath { get; init; }
    public required DateTimeOffset EvaluatedAtUtc { get; init; }
    public IReadOnlyList<string> AllowApps { get; init; } = [];
    public IReadOnlyList<string> DenyApps { get; init; } = [];
    public IReadOnlyList<string> AllowFeatures { get; init; } = [];
    public IReadOnlyList<string> DenyFeatures { get; init; } = [];
    public IReadOnlyList<string> AllowCommands { get; init; } = [];
    public IReadOnlyList<string> DenyCommands { get; init; } = [];
    public IReadOnlyList<string> DenySettingsSections { get; init; } = [];
    public bool ConsoleAccess { get; init; }
    public bool StoreAccess { get; init; }
}
