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); }