using System.Collections.Generic;
using Jellyfin.Data.Entities;
using Jellyfin.Data.Enums;
namespace Jellyfin.Data.Interfaces
{
    /// 
    /// An abstraction representing an entity that has permissions.
    /// 
    public interface IHasPermissions
    {
        /// 
        /// Gets a collection containing this entity's permissions.
        /// 
        ICollection Permissions { get; }
        /// 
        /// Checks whether this entity has the specified permission kind.
        /// 
        /// The kind of permission.
        /// true if this entity has the specified permission, false otherwise.
        bool HasPermission(PermissionKind kind);
        /// 
        /// Sets the specified permission to the provided value.
        /// 
        /// The kind of permission.
        /// The value to set.
        void SetPermission(PermissionKind kind, bool value);
    }
}