import type { PokemonSet } from '@pkmn/sim'; import { Rng } from './rng.js'; export type Team = PokemonSet[]; export declare function isLegal(team: Team): boolean; /** Serialize a parsed Team to paste + packed forms. */ export declare function serialize(team: Team): { paste: string; packed: string; }; /** Import a paste to a parsed Team (or null). */ export declare function parse(paste: string): Team | null; /** Deduped individual sets drawn from a set of Teams — the gene pool. */ export declare function buildGenePool(pastes: string[]): PokemonSet[]; /** * Per-species move pool: every move any set of that species runs across the * source Teams. Lets the move-swap operator explore real, legal move choices * (e.g. every move a Gauntlet Tyranitar has been given) without learnset data. */ export declare function buildMovePool(pastes: string[]): Map; export declare function shuffle(items: readonly T[], rng: Rng): T[]; /** A Team of up to `size` unique-species sets drawn (shuffled) from `sets`. */ export declare function uniqueSpeciesTeam(sets: PokemonSet[], size: number, rng: Rng): Team; /** Mutate a Team into a *legal* variant. Tries operators in a random order and * validates each; returns the mutated Team + operator, or null if none stuck. * When a move pool is given, a move-swap operator is added. */ export declare function mutate(team: Team, pool: PokemonSet[], rng: Rng, movePool?: Map): { team: Team; operator: string; } | null; /** Breed two parents into a *legal* child (unique species, up to 6 members). */ export declare function crossover(a: Team, b: Team, rng: Rng): Team | null;