import POGOProtos from 'pogo-protos';

export const DEFAULT_POKEMON_NAME = 'MissingNo.';

export enum Grade {
    'S',
    'A',
    'B',
    'C',
    'D',
    'F',
}

export interface IBaseStats {
    baseAttack : number;
    baseDefense : number;
    baseStamina : number;
}

export interface IBaseStatsRank {
    attackRank : number;
    defenseRank : number;
    staminaRank : number;
}

export interface IMaxStats extends IBaseStats {
    level : number;
}

export interface IPokemonSpecies {
    name : string;
    dex : number;
    order : number;
    genus : string;
}

export interface IPokemon extends IPokemonSpecies {
    id : POGOProtos.Enums.PokemonId;
    form : POGOProtos.Enums.Form;
    family : POGOProtos.Enums.PokemonFamilyId;
    types : {
        type1 : POGOProtos.Enums.PokemonType;
        type2 : POGOProtos.Enums.PokemonType | null;
    };
    stats : IBaseStats;
    statsRank : IBaseStatsRank;
}

export interface IStats {
    cp : number;
    level : number;
    ivHp : number;
    ivAtk : number;
    ivDef : number;
    hp : number;
    atk : number;
    def : number;
    total : number;
    speciesGrade : Grade;
    metaGrade : Grade;
}
