using System.Collections.Generic;
using System.ComponentModel;
namespace RGB.NET.Core;
///
/// Represents a basic decoratable.
///
public interface IDecoratable : INotifyPropertyChanged
{ }
///
///
/// Represents a basic decoratable for a specific type of
///
/// The type of decorators this decoratable can be decorated with.
public interface IDecoratable : IDecoratable
where T : IDecorator
{
///
/// Gets a readonly-list of all attached to this .
///
IReadOnlyList Decorators { get; }
///
/// Adds an to the .
///
/// The to be added.
void AddDecorator(T decorator);
///
/// Removes an from the .
///
/// The to be removed.
void RemoveDecorator(T decorator);
///
/// Removes all from the .
///
void RemoveAllDecorators();
}