type 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; }; uint CurrentHealth { get const; }; const constString& ActiveAbility { get const; }; bool IsFainted { get const; }; uint MaxHealth { get const; }; const Species@ DisplaySpecies { get const; }; const Forme@ DisplayForme { get const; }; Battle@ Battle { get const; }; BattleSide@ BattleSide { get const; }; const constString& Status { get const; }; const narray@ Moves { get const; }; bool HasHeldItem(const constString &in name) const; void SetHeldItem(const constString &in name); void SetHeldItem(const Item@ item); string Nickname { get const; }; bool HasType(uint8 type) const; void Damage(uint type, DamageSource source); void Heal(uint type); void OverrideActiveAbility(const string &in ability); void ChangeStatBoost(Statistic stat, int8 amount); 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; void ClearStatus() const; void SetStatus(const constString &inout name); }