Event emitted when contract-related changes occur.
A watch-only script reports the same vtxo_received / vtxo_spent types
but carries no contract, and cannot: annotation needs one. That absence is
the ownership boundary, and the compiler enforces it — reading
event.contract unnarrowed by isContractVtxoEvent fails.
Event emitted when contract-related changes occur.
A watch-only script reports the same
vtxo_received/vtxo_spenttypes but carries nocontract, and cannot: annotation needs one. That absence is the ownership boundary, and the compiler enforces it — readingevent.contractunnarrowed by isContractVtxoEvent fails.