public FakeOperationalClientEmulatedState(
            IServiceProvider serviceProvider,
            ILogger <FakeOperationalClient> logger,
            IFakeOperationalClientToken token,
            IFakeOperationalClientRandomUtils randomUtils,
            IFakeOperationalClientWebhookUrlValidator webhookUrlValidator,
            Settings settings = null)
        {
            _serviceProvider              = serviceProvider;
            Logger                        = logger;
            Token                         = token;
            RandomUtils                   = randomUtils;
            WebhookUrlValidator           = webhookUrlValidator;
            _settings                     = settings == null ? new Settings() : new Settings(settings);
            _webhookUpdatesTimer          = new Timer(HandleSendWebhookUpdatesCallback, null, Timeout.Infinite, Timeout.Infinite);
            _randomUpdatesTimeout         = new FakeOperationalClientTimeout(RandomUtils);
            _conflictingWebhookUrlTimeout = new FakeOperationalClientTimeout(RandomUtils);

            _webhookUpdatesTimerIsRunning = false;
            _randomUpdatesTimeout.Reset();
            _conflictingWebhookUrlTimeout.Reset();
        }
 public FakeOperationalClientTimeout(IFakeOperationalClientRandomUtils randomUtils)
 {
     _randomUtils = randomUtils;
     Reset(TimeSpan.Zero);
 }