using System;
namespace PKHeX.Core;
///
/// Group that checks the source of a move in the games that it represents.
///
public interface ILearnGroup
{
///
/// Gets the next group to traverse to continue checking moves.
///
ILearnGroup? GetPrevious(PKM pk, EvolutionHistory history, IEncounterTemplate enc, LearnOption option);
///
/// Checks if it is plausible that the has visited this game group.
///
bool HasVisited(PKM pk, EvolutionHistory history);
bool Check(Span result, ReadOnlySpan current, PKM pk, EvolutionHistory history, IEncounterTemplate enc, MoveSourceType types = MoveSourceType.All, LearnOption option = LearnOption.Current);
void GetAllMoves(Span result, PKM pk, EvolutionHistory history, IEncounterTemplate enc, MoveSourceType types = MoveSourceType.All, LearnOption option = LearnOption.Current);
}