using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Text.Json;
using GoveeCSharpConnector.Objects;
namespace GoveeCSharpConnector.Interfaces;
public interface IGoveeUdpService
{
///
/// Sends a Scan Command via Udp Multicast.
///
/// Standard 250ms
/// List of GoveeUdpDevices
Task> GetDevices(TimeSpan? timeout = null);
///
/// Request the State of the Device
///
/// Ip Address of the Device
/// Port of the Device. Standard 4003
/// Standard 250ms
///
Task GetState(string deviceAddress, int uniCastPort = 4003, TimeSpan? timeout = null);
///
/// Sets the On/Off State of the Device
///
/// Ip Address of the Device
///
/// Port of the Device. Standard 4003
///
Task ToggleDevice(string deviceAddress, bool on, int uniCastPort = 4003);
///
/// Sets the Brightness of the Device
///
/// Ip Address of the Device
/// In Percent 1-100
/// Port of the Device. Standard 4003
///
Task SetBrightness(string deviceAddress, int brightness, int uniCastPort = 4003);
///
/// Sets the Color of the Device
///
/// Ip Address of the Device
///
/// Port of the Device. Standard 4003
///
Task SetColor(string deviceAddress, RgbColor color, int uniCastPort = 4003);
///
/// Sets the ColorTemp of the Device
///
/// Ip Address of the Device
///
/// Port of the Device. Standard 4003
///
Task SetColorTemp(string deviceAddress, int colorTempInKelvin, int uniCastPort = 4003);
///
/// Starts the Udp Listener
///
///
void StartUdpListener();
///
/// Returns the State of the Udp Listener
///
/// True if Active
bool IsListening();
///
/// Stops the Udp Listener
///
///
void StopUdpListener();
}