import { Rpc } from '@na-ji/pogo-protos';
import type { AllForms, AllPokemon, Evolutions, FormChanges, SinglePokemon, TempEvolutions } from '../typings/dataTypes';
import type { EvoBranch, EvolutionQuest, Generation, NiaMfObj, RawFormChange, TempEvo } from '../typings/general';
import type { Options } from '../typings/inputs';
import Masterfile from './Masterfile';
export default class Pokemon extends Masterfile {
    parsedPokemon: AllPokemon;
    parsedPokeForms: AllPokemon;
    parsedForms: AllForms;
    formsRef: {
        [id: string]: string;
    };
    generations: Generation;
    lcBanList: Set<string>;
    evolvedPokemon: Set<number>;
    options: Options;
    formsToSkip: string[];
    evolutionQuests: {
        [id: string]: EvolutionQuest;
    };
    parsedCostumes: {
        [id: string]: {
            id: number;
            name: string;
            proto: string;
            noEvolve: boolean;
        };
    };
    jungleCupRules: {
        types: number[];
        banned: number[];
    };
    constructor(options: Options);
    pokemonName(id: number): string;
    formName(id: number, formName: string): string;
    skipForms(formName: string): boolean;
    lookupPokemon(name: string): string;
    lookupForm(id: number | undefined): string;
    getGeneration(id: number): {
        genId?: number;
        generation?: string;
    };
    getMoves(moves: (string | number)[]): number[];
    getTypes(incomingTypes: (string | number)[]): number[];
    getCostumeOverrides(costumes: string[]): {
        costumeId: Rpc.PokemonDisplayProto.Costume;
        costumeProto: string;
        costumeName: string;
    }[];
    compileFormChanges(formChanges?: RawFormChange[]): FormChanges[];
    compileEvos(mfObject: EvoBranch[]): Evolutions[];
    compileTempEvos(mfObject: TempEvo[], evoBranch: EvoBranch[], primaryForm: SinglePokemon): TempEvolutions[];
    generateProtoForms(): void;
    addExtendedStats(object: NiaMfObj): void;
    cleanExtendedStats(): void;
    addFormBaseStats(formId: number, hp: number, a: number, d: number, sa: number, sd: number, sp: number): void;
    addEvolutionQuest(object: NiaMfObj): void;
    addForm(object: NiaMfObj): void;
    addPokemon(object: NiaMfObj): void;
    addSourdoughMoveMappings({ data: { sourdoughMoveMappingSettings: { mappings }, }, }: NiaMfObj): void;
    addSmeargleMovesSettings({ data: { smeargleMovesSettings: { quickMoves, cinematicMoves }, }, }: NiaMfObj): void;
    missingPokemon(): void;
    sortForms(): void;
    littleCup(): void;
    jungleCup(object: NiaMfObj): void;
    jungleEligibility(): void;
    makeFormsSeparate(): void;
    parseCostumes(): void;
    parsePokeApi(baseStats: AllPokemon, tempEvos: {
        [id: string]: AllPokemon;
    }): void;
}
