using System; using System.Collections.Generic; using System.Threading.Tasks; using Jellyfin.Plugin.JellyLMS.Models; namespace Jellyfin.Plugin.JellyLMS.Services; /// /// Interface for LMS JSON-RPC API communication. /// public interface ILmsApiClient { /// /// Tests the connection to the LMS server. /// /// Server status with connection result. Task TestConnectionAsync(); /// /// Gets all players connected to LMS. /// /// List of LMS players. Task> GetPlayersAsync(); /// /// Gets the status of a specific player. /// /// The player's MAC address. /// The player status. Task GetPlayerStatusAsync(string playerMac); /// /// Plays a URL on the specified player. /// /// The player's MAC address. /// The audio URL to play. /// Optional title for display. /// True if successful. Task PlayUrlAsync(string playerMac, string url, string? title = null); /// /// Pauses playback on the specified player. /// /// The player's MAC address. /// True if successful. Task PauseAsync(string playerMac); /// /// Resumes playback on the specified player. /// /// The player's MAC address. /// True if successful. Task PlayAsync(string playerMac); /// /// Stops playback on the specified player. /// /// The player's MAC address. /// True if successful. Task StopAsync(string playerMac); /// /// Sets the volume on the specified player. /// /// The player's MAC address. /// Volume level (0-100). /// True if successful. Task SetVolumeAsync(string playerMac, int volume); /// /// Seeks to a position on the specified player. /// /// The player's MAC address. /// Position in seconds. /// True if successful. Task SeekAsync(string playerMac, double positionSeconds); /// /// Powers on the specified player. /// /// The player's MAC address. /// True if successful. Task PowerOnAsync(string playerMac); /// /// Powers off the specified player. /// /// The player's MAC address. /// True if successful. Task PowerOffAsync(string playerMac); /// /// Syncs a slave player to a master player. /// /// The master player's MAC address. /// The slave player's MAC address. /// True if successful. Task SyncPlayerAsync(string masterMac, string slaveMac); /// /// Removes a player from its sync group. /// /// The player's MAC address. /// True if successful. Task UnsyncPlayerAsync(string playerMac); /// /// Gets all current sync groups. /// /// List of sync groups. Task> GetSyncGroupsAsync(); }