using RudderSdk.Core.Abstractions; namespace RudderSdk.Core; /// /// Configuration for . Only and /// are required; everything else falls back to a /// sensible default. /// public sealed class RudderClientOptions { /// API base URL, e.g. https://api.example.com. Required. public string? BaseUrl { get; set; } /// Realtime websocket URL. Required only for . public string? RealtimeUrl { get; set; } /// Project key issued in the admin panel. Required. public string? ProjectKey { get; set; } /// HTTP transport. Defaults to . public IRudderTransport? Transport { get; set; } /// Session token storage. Defaults to . public ITokenStore? TokenStore { get; set; } /// Device identity for login. Defaults to . public IDeviceIdProvider? DeviceIdProvider { get; set; } /// Diagnostic sink. Null by default (silent). public IRudderLogger? Logger { get; set; } /// Time source for the scenario runtime; override in tests. public IClock? Clock { get; set; } /// Scenario-run persistence between app launches. Optional. public IPlanStateStore? PlanStateStore { get; set; } /// Optional scheduler for delayed plan work. public IPlanScheduler? Scheduler { get; set; } /// Realtime transport factory. Required only for . public IRealtimeTransportFactory? RealtimeTransportFactory { get; set; } }