using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tango.PPC.Common.OS
{
/// <summary>
/// Represents a windows license activation manager.
/// </summary>
public interface IOperationSystemManager
{
/// <summary>
/// Determines whether the OS is activated.
/// </summary>
/// <returns></returns>
Task<bool> IsActivated();
/// <summary>
/// Activates the OS using the specified activation key.
/// </summary>
/// <param name="activationKey">The activation key.</param>
/// <returns></returns>
Task Activate(String activationKey);
/// <summary>
/// Deactivates the OS license.
/// </summary>
/// <returns></returns>
Task Deactivate();
/// <summary>
/// Gets the available time zones.
/// </summary>
/// <returns></returns>
ReadOnlyCollection<TimeZoneInfo> GetAvailableTimeZones();
/// <summary>
/// Changes the operation system time zone.
/// </summary>
/// <param name="timeZone">The time zone.</param>
/// <returns></returns>
Task ChangeTimeZone(TimeZoneInfo timeZone);
/// <summary>
/// Gets the machine unique identifier.
/// </summary>
/// <returns></returns>
Task<String> GetDeviceId();
/// <summary>
/// Gets the machine host name.
/// </summary>
/// <returns></returns>
Task<String> GetDeviceName();
/// <summary>
/// Restarts the system.
/// </summary>
/// <returns></returns>
void Restart();
/// <summary>
/// Shutdown the system.
/// </summary>
/// <returns></returns>
void Shutdown();
}
}