Currently events are not mandatory on resource creation or movement. It is up to contract developer to emit or not, even if they are defined in the contract. It would be nice to fire some default events, like:
- Resource Creation (for minting for example)
- Resource Movement
- Saving to storage
- Linking to storage
I am not 100% sure what is necessary and what is not, but as Cadence resources are stored in user’s storage, there is currently no way to reliably verify, let’s say if NFT is really minted 100 times, or there is some duplicate NFT with same id etc.