using NetworkResurrector.Agent.PublishedLanguage.Dto;
using NetworkResurrector.Agent.PublishedLanguage.Events;
using System.Threading.Tasks;

namespace NetworkResurrector.Agent.Wrapper.Services
{
    public interface IResurrectorAgentService
    {
        Task<ShutdownResult> Shutdown(string ipAddressOrMachineName, int agentPort, ActionOwner actionOwner = null, ActionOptions actionOptions = null);
        Task<RestartResult> Restart(string ipAddressOrMachineName, int agentPort, ActionOwner actionOwner = null, ActionOptions actionOptions = null);
        Task<SleepResult> Sleep(string ipAddressOrMachineName, int agentPort, ActionOwner actionOwner = null, ActionOptions actionOptions = null);
        Task<LogoutResult> Logout(string ipAddressOrMachineName, int agentPort, ActionOwner actionOwner = null);
        Task<LockResult> Lock(string ipAddressOrMachineName, int agentPort, ActionOwner actionOwner = null);
        Task<CancelResult> Cancel(string ipAddressOrMachineName, int agentPort, ActionOwner actionOwner = null);
    }
}