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; }
}