using Kbx.Shared.Integrations.Generated;

namespace Kbx.Shared.Integrations;

public static class KbxDurableIntegrationRetryPlanner
{
    public static DateTimeOffset? NextAttemptAt(
        KbxIntegrationDefinition definition,
        int durableAttempt,
        DateTimeOffset now)
    {
        if (durableAttempt < 1) throw new ArgumentOutOfRangeException(nameof(durableAttempt));
        if (durableAttempt > definition.LongRetryAttempts) return null;
        var index = durableAttempt - 1;
        if (index >= definition.LongRetryScheduleSeconds.Count) return null;
        return now.AddSeconds(definition.LongRetryScheduleSeconds[index]);
    }
}
