Summary
Two admin and lifecycle operations — storage TTL extension and protocol fee recipient updates — emit no observable events, leaving indexers with no signal unless they poll storage directly. Both events should be added together with a shared test assertion helper that makes event verification consistent across all future event tests.
Scope
- Emit a contract event on TTL extension with fields:
creator_id, extended_at_ledger, new_expiry_ledger
- Emit a contract event on
set_protocol_fee_recipient with fields: old_recipient, new_recipient, updated_at_ledger
- Each event must use a distinct topic so indexers can filter without scanning all events
- Add
assert_event(env, contract_id, topic, expected_fields) test helper — extracts events from transaction result meta, filters by topic, compares fields with a clear mismatch message
- Use the helper in tests for both new events
Acceptance Criteria
ETA: 12 hours
Coordinate on Telegram
Summary
Two admin and lifecycle operations — storage TTL extension and protocol fee recipient updates — emit no observable events, leaving indexers with no signal unless they poll storage directly. Both events should be added together with a shared test assertion helper that makes event verification consistent across all future event tests.
Scope
creator_id,extended_at_ledger,new_expiry_ledgerset_protocol_fee_recipientwith fields:old_recipient,new_recipient,updated_at_ledgerassert_event(env, contract_id, topic, expected_fields)test helper — extracts events from transaction result meta, filters by topic, compares fields with a clear mismatch messageAcceptance Criteria
assert_eventhelper filters by topic and contract correctlyETA: 12 hours
Coordinate on Telegram