shared interface Pokemon { const Species@ Species { get const; } const Forme@ Forme { get const; } uint8 Level { get const; } uint Experience { get const; } Gender Gender { get const; } uint8 Coloring { get const; } bool Shiny { get const; } const Item@ HeldItem { get const; } bool HasHeldItem(const constString &in name) const; void SetHeldItem(const string &in name); void SetHeldItem(const Item@ item); uint CurrentHealth { get const; } const string& Nickname { get const; } const constString& ActiveAbility { get const; } bool IsFainted { get const; } bool HasType(uint8 type) const; uint MaxHealth { get const; } void Damage(uint type, DamageSource source); void Heal(uint type); void OverrideActiveAbility(const string &in ability); LearnedMove@[]@ GetMoves() const; void ChangeStatBoost(Statistic stat, int8 amount); const Species@ DisplaySpecies { get const; } const Species@ DisplayForme { get const; } uint GetFlatStat(Statistic stat) const; uint GetBoostedStat(Statistic stat) const; uint GetBaseStat(Statistic stat) const; int8 GetStatBoost(Statistic stat) const; ref AddVolatile(const constString &in name); void RemoveVolatile(const constString &in name) const; Battle@ Battle { get const; } BattleSide@ BattleSide { get const; } const constString& Status { get const; } void ClearStatus() const; void SetStatus(const constString &inout name); }