public DefaultGatewayApiClient(
            IOptions <DefaultGatewayApiClientConfiguration> options,
            ILogger logger,
            Token token,
            IGatewayRateLimiter rateLimiter,
            IGatewayHeartbeater heartbeater,
            IGateway gateway,
            IJsonSerializer serializer)
        {
            var configuration = options.Value;

            Intents        = configuration.Intents;
            LargeThreshold = configuration.LargeThreshold;
            Id             = configuration.Id;
            Presence       = configuration.Presence;
            Logger         = logger;
            Token          = token;
            RateLimiter    = rateLimiter;
            RateLimiter.Bind(this);
            Heartbeater = heartbeater;
            Heartbeater.Bind(this);
            Gateway = gateway;
            Gateway.Bind(this);
            Serializer = serializer;

            _random = new Random();
        }
 public DefaultGatewayApiClient(
     IOptions <DefaultGatewayApiClientConfiguration> options,
     ILogger <DefaultGatewayApiClient> logger,
     Token token,
     IGatewayRateLimiter rateLimiter,
     IGatewayHeartbeater heartbeater,
     IGateway gateway,
     IJsonSerializer serializer)
     : this(options, logger as ILogger, token, rateLimiter, heartbeater, gateway, serializer)
 {
 }