namespace Shared.Operations;

public static class ReconcilePolicy
{
    public static string DecideStatus(
        bool valuesMatch,
        DateTimeOffset sourceChangedAt,
        DateTimeOffset observedAt,
        TimeSpan gracePeriod)
    {
        if (valuesMatch) return "matched";
        if (observedAt < sourceChangedAt) throw new ArgumentOutOfRangeException(nameof(observedAt));
        return observedAt - sourceChangedAt < gracePeriod ? "pending" : "mismatch";
    }
}
