using SVSim.Database.Models;

namespace SVSim.EmulatedEntrypoint.Services;

/// <summary>Resolves the card pool a pack draws from. Pure function over master data.</summary>
public interface ICardPoolProvider
{
    IReadOnlyList<ShadowverseCardEntry> GetPool(PackConfigEntry pack);

    /// <summary>
    /// Returns the foil twin of <paramref name="baseCardId"/> if it exists in master data
    /// (foil card_id = base card_id + 1 by the cards.json convention), else null. One DB
    /// hit per call; expected ~0.64 calls per 8-card pack at the default 8% rate.
    /// TODO(caching): folds into the broader caching wave once one exists.
    /// </summary>
    ShadowverseCardEntry? TryGetFoilTwin(long baseCardId);
}
