using Microsoft.Extensions.DependencyInjection; using Serilog.Core; using Wino.Authentication; using Wino.Core.Domain.Interfaces; using Wino.Core.Integration.Processors; using Wino.Core.Services; using Wino.Core.Synchronizers.Errors; using Wino.Core.Synchronizers.Errors.Gmail; using Wino.Core.Synchronizers.Errors.Imap; using Wino.Core.Synchronizers.Errors.Outlook; using Wino.Core.Synchronizers.ImapSync; namespace Wino.Core; public static class CoreContainerSetup { public static void RegisterCoreServices(this IServiceCollection services) { var loggerLevelSwitcher = new LoggingLevelSwitch(); services.AddSingleton(loggerLevelSwitcher); services.AddSingleton(); services.AddSingleton(provider => SynchronizationManager.Instance); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); // Register Outlook error handlers services.AddTransient(); services.AddTransient(); services.AddTransient(); // Register Gmail error handlers services.AddTransient(); services.AddTransient(); services.AddTransient(); // Register shared error handlers services.AddTransient(); // Register IMAP error handlers services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); // Register error handler factories services.AddTransient(); services.AddTransient(); services.AddTransient(); // Register retry executor services.AddTransient(); } }