See test/test.js
for example and comments.
this isn't actually super hack resistent Someone could look at the params to another NFT purchase and use the same params to mint an NFT that was technically already claimed. You can use it to prove that the an owner "agrees" a certain param is accetable, but curretly not sure how to prove that something is already claimed.