// 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.Threading; using System.Threading.Tasks; namespace StrixMusic.Sdk.BaseModels { /// /// A published album containing one or more tracks, discs, artist, etc. /// public interface IAlbumBase : IPlayableCollectionItem, IAlbumCollectionItemBase, IArtistCollectionBase, ITrackCollectionBase, IImageCollectionBase, IGenreCollectionBase, IAsyncDisposable { /// /// The date the album was released. /// DateTime? DatePublished { get; } /// /// If true, is supported. /// bool IsChangeDatePublishedAsyncAvailable { get; } /// /// Changes the for this album. /// /// The new date the album was published. /// A cancellation token that may be used to cancel the ongoing task. /// A representing the asynchronous operation. Task ChangeDatePublishedAsync(DateTime datePublished, CancellationToken cancellationToken = default); /// /// Raised when is changed. /// event EventHandler? DatePublishedChanged; /// /// Raised when is changed. /// event EventHandler? IsChangeDatePublishedAsyncAvailableChanged; } }