namespace ScadaLink.NotificationOutbox;
///
/// Configuration options for the Notification Outbox component: dispatch cadence,
/// batch sizing, stuck-message detection, terminal retention, and KPI windowing.
///
public class NotificationOutboxOptions
{
/// Interval between dispatch sweeps that pick up pending notifications for delivery.
public TimeSpan DispatchInterval { get; set; } = TimeSpan.FromSeconds(10);
/// Maximum number of notifications claimed for delivery in a single dispatch sweep.
public int DispatchBatchSize { get; set; } = 100;
/// Age past which an in-progress notification is considered stuck and re-claimed.
public TimeSpan StuckAgeThreshold { get; set; } = TimeSpan.FromMinutes(10);
/// Retention period for notifications in a terminal state before they are purged.
public TimeSpan TerminalRetention { get; set; } = TimeSpan.FromDays(365);
/// Interval between background purge sweeps of terminal notifications.
public TimeSpan PurgeInterval { get; set; } = TimeSpan.FromDays(1);
/// Trailing window used to compute the delivered-notifications throughput KPI.
public TimeSpan DeliveredKpiWindow { get; set; } = TimeSpan.FromMinutes(1);
}