A request to perform an “Action” on a token. Stores the information
about the action to be performed and must be consumed by the confirm_request
or confirm_request_mut functions when the Rules are satisfied.
TokenPolicy represents a set of rules that define what actions can be
performed on a Token and which Rules must be satisfied for the
action to succeed.
An event emitted when a TokenPolicy is created and shared. Because
TokenPolicy can only be shared (and potentially frozen in the future),
we emit this event in the share_policy function and mark it as mutable.