using Microsoft.Extensions.DependencyInjection;

namespace ScadaLink.DataConnectionLayer;

public static class ServiceCollectionExtensions
{
    public static IServiceCollection AddDataConnectionLayer(this IServiceCollection services)
    {
        services.AddOptions<DataConnectionOptions>()
            .BindConfiguration("DataConnectionLayer");

        services.AddOptions<OpcUaGlobalOptions>()
            .BindConfiguration("OpcUa");

        // WP-34: Register the factory for protocol extensibility
        services.AddSingleton<IDataConnectionFactory, DataConnectionFactory>();

        return services;
    }

    public static IServiceCollection AddDataConnectionLayerActors(this IServiceCollection services)
    {
        // Actor registration happens in AkkaHostedService or SiteCommunicationActor setup.
        // DataConnectionManagerActor and DataConnectionActor instances are created by the actor system.
        return services;
    }
}
