using System;
using System.Collections.Immutable;

namespace StellaOps.Policy;

public sealed record PolicySnapshot(
    long RevisionNumber,
    string RevisionId,
    string Digest,
    DateTimeOffset CreatedAt,
    string? CreatedBy,
    PolicyDocumentFormat Format,
    PolicyDocument Document,
    ImmutableArray<PolicyIssue> Issues,
    PolicyScoringConfig ScoringConfig);

public sealed record PolicySnapshotContent(
    string Content,
    PolicyDocumentFormat Format,
    string? Actor,
    string? Source,
    string? Description);

public sealed record PolicySnapshotSaveResult(
    bool Success,
    bool Created,
    string Digest,
    PolicySnapshot? Snapshot,
    PolicyBindingResult BindingResult);
