This smart contract manages who can mint lootboxes, and how many, by using a map remaining-mints with the key as a principal and the value being the number of mints available.
(define-map remaining-mints principal uint)
It checks if the address selected can mint NFTs through the read-only can-mint-lootbox returning true if minting is possible, false otherwise.
If the address can-mint, it can call the claim-lootbox and get a lootbox, while decreasing by 1 the number of mints available, directly in the map where we store them.