using EDPlayerJournal.Entries;

namespace EDPlayerJournal.BGS;

internal interface ITransactionParserPart {
    /// <summary>
    /// Parse a given entry of the entry type specified when declaring to implement this
    /// interface. You must add your transaction to the passed list in case you did have
    /// enough information to parse one or more. You may update the parser context
    /// with new information in case the entry yielded new information.
    /// Throw an exception if there was an error or a malformed entry. If you have an
    /// incomplete entry, i.e. not enough information to complete one, add an
    /// IncompleteTransaction to the list
    /// </summary>
    /// <param name="entry">The entry to parse</param>
    /// <param name="context">Parsing context that may contain useful information</param>
    /// <param name="transactions">List of parsed transactions</param>
    public void Parse(Entry entry, TransactionParserContext context, TransactionParserOptions options, TransactionList transactions);
}