using System.Collections.Immutable; using System.Text.Json.Nodes; namespace StellaOps.Notifier.WebService.Contracts; /// /// Request to run a historical simulation against past events. /// public sealed class SimulationRunRequest { public required DateTimeOffset PeriodStart { get; init; } public required DateTimeOffset PeriodEnd { get; init; } public ImmutableArray RuleIds { get; init; } = []; public ImmutableArray EventKinds { get; init; } = []; public int MaxEvents { get; init; } = 1000; public bool IncludeNonMatches { get; init; } = true; public bool EvaluateThrottling { get; init; } = true; public bool EvaluateQuietHours { get; init; } = true; public DateTimeOffset? EvaluationTimestamp { get; init; } } /// /// Request to simulate a single event against current rules. /// public sealed class SimulateSingleEventRequest { public required JsonObject EventPayload { get; init; } public ImmutableArray RuleIds { get; init; } = []; public DateTimeOffset? EvaluationTimestamp { get; init; } }