using OF_DL.Models.Config;
namespace OF_DL.Services;
public interface IConfigService
{
///
/// Gets the active configuration in memory.
///
Config CurrentConfig { get; }
///
/// Gets whether the CLI requested non-interactive mode.
///
bool IsCliNonInteractive { get; }
///
/// Loads configuration from disk and applies runtime settings.
///
Task LoadConfigurationAsync(string[] args);
///
/// Saves the current configuration to disk.
///
Task SaveConfigurationAsync(string filePath = "config.conf");
///
/// Replaces the current configuration and applies runtime settings.
///
void UpdateConfig(Config newConfig);
///
/// Returns property names and current values for toggleable config properties.
///
List<(string Name, bool Value)> GetToggleableProperties();
///
/// Applies selected toggleable properties. Returns true if any changed.
///
bool ApplyToggleableSelections(List selectedNames);
}