interface Pokemon{ const Species@ Species { get const; } const Forme@ Forme { get const; } const Species@ DisplaySpecies { get const; } const Forme@ DisplayForme { get const; } uint8 Level { get const; } uint32 Experience { get const; } Gender Gender { get const; } uint8 Coloring { get const; } bool Shiny { get const; } const Item@ HeldItem { get const; } uint32 CurrentHealth{ get const; } const string& Nickname { get const; } const string& ActiveAbility { get const; } bool IsFainted { get const; } bool HasType(uint8) const; uint32 MaxHealth{ get const; }; const Species@ DisplaySpecies { get const; } uint8[]@ GetTypes() const; LearnedMove@[]@ GetMoves() const void ChangeStatBoost(Statistic stat, int8 amount); uint32 GetFlatStat(Statistic stat) const; uint32 GetBoostedStat(Statistic stat) const; uint32 GetBaseStat(Statistic stat) const; int8 GetStatBoost(Statistic stat) const; bool HasHeldItem(const string &in name) const; void Damage(uint32 amount, DamageSource source); void Heal(uint32 amount); void OverrideActiveAbility(const string &in ability); void SetHeldItem(const string &in name); void SetHeldItem(const Item@ name); Battle Battle{ get const; } }