using System.Collections.Generic;
using Intrepid.Structures;

namespace Intrepid.Utilities.Structures.Traits
{
    public interface IReadOnlyTraits<T> where T : ITrait
    {
        IEnumerable<SKey> TraitKeys { get; }
        IEnumerable<T> AllTraits { get; }
        public bool Has<TT>() where TT : T;
        bool HasNot<TT>() where TT : T;
        int Count<TT>() where TT : T;
        int Count();
        bool TryGet<TT>(out TT trait) where TT : T;
    }
}