namespace AppClientBase.Services;

/// <summary>
/// EN: Settings service interface for app preferences.
/// VI: Interface dịch vụ cài đặt cho tùy chọn ứng dụng.
/// </summary>
public interface ISettingsService
{
    /// <summary>
    /// EN: Get a setting value.
    /// VI: Lấy giá trị cài đặt.
    /// </summary>
    T Get<T>(string key, T defaultValue);

    /// <summary>
    /// EN: Set a setting value.
    /// VI: Đặt giá trị cài đặt.
    /// </summary>
    void Set<T>(string key, T value);

    /// <summary>
    /// EN: Check if a setting exists.
    /// VI: Kiểm tra xem cài đặt có tồn tại không.
    /// </summary>
    bool Contains(string key);

    /// <summary>
    /// EN: Remove a setting.
    /// VI: Xóa một cài đặt.
    /// </summary>
    void Remove(string key);

    /// <summary>
    /// EN: Clear all settings.
    /// VI: Xóa tất cả cài đặt.
    /// </summary>
    void Clear();
}
