pragma solidity ^0.8.13; contract CapabilityBeacon { event CapabilityAnnounced(address indexed caller, bytes4 indexed capability, bytes32 metadata); function announce(bytes4 capability, bytes32 metadata) external { emit CapabilityAnnounced(msg.sender, capability, metadata); } }