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; };
    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<LearnedMove@>@ Moves { get const; };
    float Weight { get const; set; };
    float Height { get const; set; };
    const constString& ActiveAbility { get const; };
    uint64 TypesLength { get const; };
    uint8 GetType(uint64 index) 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;
    bool HasType(const constString &in type) const;
    void Damage(uint type, DamageSource source);
    void Heal(uint type);
    void OverrideActiveAbility(const string &in ability);
    void ChangeStatBoost(Statistic stat, int8 amount, bool selfInflicted);
    uint GetFlatStat(Statistic stat) const;
    uint GetBoostedStat(Statistic stat) const;
    uint GetBaseStat(Statistic stat) const;
    int8 GetStatBoost(Statistic stat) const;
    bool HasVolatile(const constString &in name) const;
    ref@ AddVolatile(const constString &in name);
    void RemoveVolatile(const constString &in name) const;
    void ClearStatus() const;
    void SetStatus(const constString &in name);
    void ChangeForme(const constString &in name);
}