namespace ZymonicGateway.Options; public class ZymonicGatewayOptions { public string DatabasePath { get; set; } = "zymonic-gateway.sqlite"; public string PluginDirectory { get; set; } = "plugins"; public string[] PluginAssemblies { get; set; } = []; public QueueRunnerOptions QueueRunner { get; set; } = new(); public ZymonicServerOptions ZymonicServer { get; set; } = new(); public GatewayDebugOptions Debug { get; set; } = new(); public GatewayRequestResponseLogOptions RequestResponseLogs { get; set; } = new(); } public class QueueRunnerOptions { public bool Enabled { get; set; } = true; public int MaxParallelRequests { get; set; } = 2; public int PollIntervalSeconds { get; set; } = 2; public int MaxAttempts { get; set; } = 5; public int RetryDelaySeconds { get; set; } = 30; } public class ZymonicServerOptions { public string BaseUri { get; set; } = ""; public string SystemName { get; set; } = ""; public string ClientId { get; set; } = ""; public string ClientSecret { get; set; } = ""; public string Username { get; set; } = ""; public string Password { get; set; } = ""; public bool PromptForClientSecret { get; set; } public string Scope { get; set; } = ""; } public class GatewayDebugOptions { public List Rules { get; set; } = []; } public class GatewayRequestResponseLogOptions { public string Directory { get; set; } = "request-response-logs"; public int RetentionDays { get; set; } = 30; }