using Content.Shared.Preferences;
using Content.Shared.Roles;
using JetBrains.Annotations;
using Robust.Shared.Configuration;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Utility;
namespace Content.Shared.Customization.Systems;
// ReSharper disable InvalidXmlDocComment
[ImplicitDataDefinitionForInheritors, MeansImplicitUse]
[Serializable, NetSerializable]
public abstract partial class CharacterRequirement
{
///
/// If true valid requirements will be treated as invalid and vice versa
/// This inversion is done by other systems like , not this one
///
[DataField]
public bool Inverted;
///
/// Checks if this character requirement is valid for the given parameters
///
/// You should probably not be calling this directly, use
///
/// Description for the requirement, shown when not null
public abstract bool IsValid(
JobPrototype job,
HumanoidCharacterProfile profile,
Dictionary playTimes,
bool whitelisted,
IPrototype prototype,
IEntityManager entityManager,
IPrototypeManager prototypeManager,
IConfigurationManager configManager,
out string? reason,
int depth = 0
);
}