Implementing collectible card game

My game is a collectible card game, where you play missions / and “summon” cards. Each card has properties such as: level, rarity, and power stats

When player summons a card, there is a chance of duplicates and chance of the duplicates having different “power” stats. How would you suggest I implement this with storage containers?

Thank you!

Our typical approach to this is to have each player store objects that map to their card inventory. This can be either individual objects (where each card is a storage object and has a count of how many of that card the player has) or the entire card inventory is one object (where each card is in an array in the object).

How many possible cards would you have, how many is an individual player expected to own, how would these cards be read/updated - all at once, or would you read individual entries more often? How frequently are each of these access methods used? Are players supposed to be able to see each other’s cards, or only the owner can see them?