AmountValue:
    | NatValue
    | SetValue
    | CopySet
    | CopyBag

An AmountValue describes a set or quantity of assets that can be owned or shared.

A fungible AmountValue uses a non-negative bigint to represent a quantity of that many assets.

A non-fungible AmountValue uses an array or CopySet of Keys to represent a set of whatever asset each key represents. A Key is a passable value that can be used as an element in a set (SetStore or CopySet) or as the key in a map (MapStore or CopyMap).

SetValue is for the deprecated set representation, using an array directly to represent the array of its elements. CopySet is the proper representation using a CopySet.

A semi-fungible CopyBag is represented as a CopyBag of Key objects. "Bag" is synonymous with MultiSet, where an element of a bag can be present once or more times, i.e., some positive bigint number of times, representing that quantity of the asset represented by that key.