using GoveeCSharpConnector.Objects;
using GoveeCSharpConnector.Objects.Misc;
namespace GoveeCSharpConnector.Interfaces;
public interface IGoveeHttpService
{
///
/// Sets the required Api Key for the Govee Api.
/// Request Api Key in the Mobile Phone App.
///
/// Api Key as String
void SetApiKey(string apiKey);
///
/// Returns current set Govee Api Key
///
/// Govee Api Key as String
string GetApiKey();
///
/// Removes the Set Api Key and resets the HTTP Header
///
void RemoveApiKey();
///
/// Requests all Devices registered to Api Key Govee Account
///
/// List of GoveeHttpDevices
Task>> GetDevices();
///
/// Requests the State of a single Govee Device
///
/// Device Id Guid as string
/// Device Model Number as string
/// GoveeHttpState Object
Task> GetDeviceState(string deviceId, string deviceModel);
///
/// Sets the On/Off state of a single Govee Device
///
/// Device Id Guid as string
/// Device Model Number as string
///
///
Task> SetOnOff(string deviceId, string deviceModel, bool on);
///
/// Sets a Rgb Color of a single Govee Device
///
/// Device Id Guid as string
/// Device Model Number as string
/// Rgb Color
///
Task> SetColor(string deviceId, string deviceModel, RgbColor color);
///
/// Sets the Color Temperature of a single Govee Device
///
/// Device Id Guid as string
/// Device Model Number as string
/// Color Temp in Kelvin as Int
///
Task> SetColorTemp(string deviceId, string deviceModel, int value);
///
/// Sets the Brightness of a single Govee Device
///
/// Device Id Guid as string
/// Device Model Number as string
/// Value 1-100
///
Task> SetBrightness(string deviceId, string deviceModel, int value);
///
/// Gets a List of all available Govee Scenes for the Device
///
/// Device Id Guid as string
/// Device Model Number as string
///
Task>> GetScenes(string deviceId, string deviceModel);
///
/// Sets the LightScene of a single Govee Device
///
/// Device Id Guid as string
/// Device Model Number as string
/// Number of the Scene
///
Task> SetLightScene(string deviceId, string deviceModel, int sceneValue);
///
/// Sets the DiyScene of a single Govee Device
///
/// Device Id Guid as string
/// Device Model Number as string
/// Number of the Scene
///
Task> SetDiyScene(string deviceId, string deviceModel, int sceneValue);
}