namespace BlueLaminate.Core.Options;
///
/// Pacing configuration for the listing sweeps, bound from the Sweep
/// configuration section. Controls how the sweep throttles itself between API
/// pages so it stays under CSFloat's rate limit. Defaults preserve the original
/// hard-coded behaviour.
///
public sealed class SweepOptions
{
public const string SectionName = "Sweep";
///
/// Base courtesy delay between pages, applied even when the rate-limit bucket
/// looks healthy so we never hammer the API at a fixed cadence.
///
public TimeSpan PageDelay { get; set; } = TimeSpan.FromSeconds(5);
///
/// Upper bound on the random jitter added to ; the
/// spread keeps request timing from being perfectly regular.
///
public TimeSpan MaxJitter { get; set; } = TimeSpan.FromSeconds(3);
///
/// Pace before the rate-limit bucket is fully empty by this many requests, so
/// a slightly-stale counter can't tip us into a 429.
///
public int RateLimitSafetyMargin { get; set; } = 2;
///
/// Fallback wait when the bucket is exhausted but the API didn't report a usable
/// reset time. Guarantees we never fire a request at zero remaining.
///
public TimeSpan RateLimitCooldown { get; set; } = TimeSpan.FromSeconds(60);
}