namespace PKHeX.Core;
///
/// Exposes logic for determining if a move can be learned in a HOME-compatible game context.
/// Used for validating move legality when transferring Pokémon through Pokémon HOME.
///
public interface IHomeSource
{
///
/// Gets the game environment this source represents (e.g., SW/SH, BD/SP, S/V).
///
LearnEnvironment Environment { get; }
///
/// Determines if the specified can be learned by the given (with evolution criteria )
/// in the context of Pokémon HOME's move relearner, considering the allowed of move sources.
///
/// The Pokémon entity to check.
/// The evolution criteria representing the species/form context.
/// The move ID to check for learnability.
/// The types of move sources to consider (default is all).
/// Information about how the move can be learned, or a default value if it cannot be learned.
MoveLearnInfo GetCanLearnHOME(PKM pk, EvoCriteria evo, ushort move, MoveSourceType types = MoveSourceType.All);
}