using C4IT.FASD.Base;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace C4IT.DataHistoryProvider.Base.DataSources
{
    public interface IRemoteDesktopManager<TRemoteConnectionInfo, TClientInfo, TRemoteConnectionStatus>
    {
        Task<TRemoteConnectionInfo> InitiateConnectionOfClient(TClientInfo clientInfos, bool isElevated, CancellationToken token = default);
        Task TerminateConnection(Guid connectionId);
        Task<TRemoteConnectionStatus> GetConnectionStatus(Guid connectionId);
        bool IsActive();
        Task<HealthInformation> GetHealthInfo();
    }
}
