using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using LANCommander.Steam.Enums; using LANCommander.Steam.Events; using LANCommander.Steam.Models; namespace LANCommander.Steam.Abstractions; /// /// Interface for SteamCMD service operations /// public interface ISteamCmdService { /// /// Get or set the SteamCMD executable path /// string? ExecutablePath { get; set; } /// /// Get app info (changenumber / buildid and time updated) for the public branch via app_info_print. /// Requires SteamCMD to be installed and configured. Returns null if SteamCMD is unavailable or the app cannot be queried. /// Task GetAppInfoAsync(uint appId, System.Threading.CancellationToken cancellationToken = default); /// /// Event fired when an install job status changes (started, completed, failed) /// event EventHandler? InstallStatusChanged; /// /// Event fired when install progress is updated /// event EventHandler? InstallProgress; /// /// Check the connection status for a username /// Task GetConnectionStatusAsync(string username); /// /// Auto-detect the SteamCMD executable path /// Task AutoDetectSteamCmdPathAsync(); /// /// Login to Steam with username and optional password /// Task LoginToSteamAsync(string username, string? password = null); /// /// Logout from Steam /// Task LogoutAsync(string username); /// /// Queue an installation job for Steam content /// Returns a job ID that can be used to track progress /// Task InstallContentAsync(uint appId, string installDirectory, string? username = null); /// /// Remove installed content from a directory /// Task RemoveContentAsync(string installDirectory); /// /// Get all profiles (requires profile store to be configured) /// Task> GetProfilesAsync(); /// /// Get a profile by username (requires profile store to be configured) /// Task GetProfileAsync(string username); /// /// Save a profile (requires profile store to be configured) /// Task SaveProfileAsync(SteamCmdProfile profile); /// /// Delete a profile by username (requires profile store to be configured) /// Task DeleteProfileAsync(string username); }