// Copyright (c) Arlo Godfrey. All Rights Reserved. // Licensed under the GNU Lesser General Public License, Version 3.0 with additional terms. // See the LICENSE, LICENSE.LESSER and LICENSE.ADDITIONAL files in the project root for more information. using System; using System.Collections.Generic; using OwlCore.Events; using OwlCore.Provisos; using StrixMusic.Sdk.AdapterModels; using StrixMusic.Sdk.CoreModels; namespace StrixMusic.Sdk.AppModels { /// /// Implementations provide a root entry point for interaction with the SDK. Allows for interfacing with multiple /// merged s, configuring plugins, and more. /// /// Instances of this class may contain data merged from one or more sources. public interface IStrixDataRoot : IAppModel, IMerged, IAsyncInit, IAsyncDisposable { /// /// Configuration options for merging collections items together. /// public MergedCollectionConfig MergeConfig { get; } /// /// The available devices. /// public IReadOnlyList Devices { get; } /// /// Gets the library. /// public ILibrary Library { get; } /// /// A list of pinned playable items. /// public IPlayableCollectionGroup? Pins { get; } /// /// Contains various search-related data and activities. /// public ISearch? Search { get; } /// /// Gets the recently played items for this . /// public IRecentlyPlayed? RecentlyPlayed { get; } /// /// Used to browse and discover new music. /// public IDiscoverables? Discoverables { get; } /// /// Raised when is changed. /// public event EventHandler? PinsChanged; /// /// Raised when is changed. /// public event EventHandler? SearchChanged; /// /// Raised when is changed. /// public event EventHandler? RecentlyPlayedChanged; /// /// Raised when is changed. /// public event EventHandler? DiscoverablesChanged; /// /// Raised when the contents of is changed. /// public event CollectionChangedEventHandler? DevicesChanged; } }