save progress
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
using System;
|
||||
using StellaOps.Signals.Models;
|
||||
|
||||
namespace StellaOps.Signals.Options;
|
||||
|
||||
/// <summary>
|
||||
/// Gate multiplier configuration in basis points (10000 = 100%).
|
||||
/// </summary>
|
||||
public sealed class SignalsGateMultiplierOptions
|
||||
{
|
||||
public int AuthRequiredMultiplierBps { get; set; } = 3000;
|
||||
|
||||
public int FeatureFlagMultiplierBps { get; set; } = 2000;
|
||||
|
||||
public int AdminOnlyMultiplierBps { get; set; } = 1500;
|
||||
|
||||
public int NonDefaultConfigMultiplierBps { get; set; } = 5000;
|
||||
|
||||
public int MinimumMultiplierBps { get; set; } = 500;
|
||||
|
||||
public int GetMultiplierBps(CallgraphGateType gateType) => gateType switch
|
||||
{
|
||||
CallgraphGateType.AuthRequired => AuthRequiredMultiplierBps,
|
||||
CallgraphGateType.FeatureFlag => FeatureFlagMultiplierBps,
|
||||
CallgraphGateType.AdminOnly => AdminOnlyMultiplierBps,
|
||||
CallgraphGateType.NonDefaultConfig => NonDefaultConfigMultiplierBps,
|
||||
_ => 10000
|
||||
};
|
||||
|
||||
public void Validate()
|
||||
{
|
||||
EnsureBps(nameof(AuthRequiredMultiplierBps), AuthRequiredMultiplierBps);
|
||||
EnsureBps(nameof(FeatureFlagMultiplierBps), FeatureFlagMultiplierBps);
|
||||
EnsureBps(nameof(AdminOnlyMultiplierBps), AdminOnlyMultiplierBps);
|
||||
EnsureBps(nameof(NonDefaultConfigMultiplierBps), NonDefaultConfigMultiplierBps);
|
||||
EnsureBps(nameof(MinimumMultiplierBps), MinimumMultiplierBps);
|
||||
}
|
||||
|
||||
private static void EnsureBps(string name, int value)
|
||||
{
|
||||
if (value < 0 || value > 10000)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(name, value, "Value must be between 0 and 10000.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user