namespace Common.Settings
{
    public class RateLimitingSettings
    {
        public RateLimitPolicySettings Global { get; set; } = new();
        public Dictionary<string, RateLimitPolicySettings> Policies { get; set; } = new();
    }

    public class RateLimitPolicySettings
    {
        public int PermitLimit { get; set; } = 100;

        // Bound from configuration strings like "00:01:00" (1 minute) or "00:10:00" (10 minutes).
        public TimeSpan Window { get; set; } = TimeSpan.FromMinutes(1);

        public int QueueLimit { get; set; } = 0;

        public bool AutoReplenishment { get; set; } = true;
    }
}
