using System;
namespace PKHeX.Core;
///
/// Exposes info about the Technical Machine / Technical Record (TR) compatibility and history of use.
///
public interface ITechRecord
{
///
/// Rules for permitting the given record.
///
public IPermitRecord Permit { get; }
///
/// Indicates if the TR has been previously used on this entity to learn the move.
///
/// TR index
/// True if learned
bool GetMoveRecordFlag(int index);
///
/// Sets the flag indicating that the TR has been learned.
///
/// TR index
/// True if learned
void SetMoveRecordFlag(int index, bool value = true);
///
/// Indicates if any move has been learned via TR.
///
bool GetMoveRecordFlagAny();
}
public interface IPermitRecord
{
///
/// Individual accessed indexes indicate if they can be learned.
///
bool IsRecordPermitted(int index);
///
/// Individual accessed move IDs that a given record remembers.
///
ReadOnlySpan RecordPermitIndexes { get; }
///
/// Maximum count of record flags that are available.
///
int RecordCountTotal { get; }
///
/// Maximum count of record flags that are used.
///
int RecordCountUsed { get; }
}