// 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;
}
}