using Common.Enums;
namespace Infrastructure.Verticals.DownloadClient.Factory;
///
/// Factory for creating and managing download client service instances
///
public interface IDownloadClientFactory
{
///
/// Gets a download client by its ID
///
/// The client ID
/// The download service for the specified client
IDownloadService GetClient(Guid clientId);
///
/// Gets all enabled download clients
///
/// Collection of enabled download client services
IEnumerable GetAllEnabledClients();
///
/// Gets all enabled download clients of a specific type
///
/// The client type
/// Collection of enabled download client services of the specified type
IEnumerable GetClientsByType(DownloadClientType clientType);
///
/// Refreshes a specific client instance (disposes and recreates)
///
/// The client ID to refresh
void RefreshClient(Guid clientId);
///
/// Refreshes all client instances (disposes and recreates)
///
void RefreshAllClients();
}