using System.Collections.Generic; namespace LanMountainDesktop.PluginSdk; public interface ISettingsService { event EventHandler? Changed; T LoadSnapshot(SettingsScope scope, string? subjectId = null, string? placementId = null) where T : new(); void SaveSnapshot( SettingsScope scope, T snapshot, string? subjectId = null, string? placementId = null, string? sectionId = null, IReadOnlyCollection? changedKeys = null); T LoadSection( SettingsScope scope, string subjectId, string sectionId, string? placementId = null) where T : new(); void SaveSection( SettingsScope scope, string subjectId, string sectionId, T section, string? placementId = null, IReadOnlyCollection? changedKeys = null); void DeleteSection( SettingsScope scope, string subjectId, string sectionId, string? placementId = null); T? GetValue( SettingsScope scope, string key, string? subjectId = null, string? placementId = null, string? sectionId = null); void SetValue( SettingsScope scope, string key, T value, string? subjectId = null, string? placementId = null, string? sectionId = null, IReadOnlyCollection? changedKeys = null); IComponentSettingsAccessor GetComponentAccessor(string componentId, string? placementId); }