code: def events_for_onchain_secretreveal(
          target_state: TargetTransferState,
          channel_state: NettingChannelState,
          block_number: BlockNumber,
          block_hash: BlockHash,
  ) -> List[Event]:
      
      transfer = target_state.transfer
      expiration = transfer.lock.expiration
  
      safe_to_wait, _ = is_safe_to_wait(
          expiration,
          channel_state.reveal_timeout,
          block_number,
      )
      secret_known_offchain = channel.is_secret_known_offchain(
          channel_state.partner_state,
          transfer.lock.secrethash,
      )
      has_onchain_reveal_started = (
          target_state.state == TargetTransferState.ONCHAIN_SECRET_REVEAL
      )
  
      if not safe_to_wait and secret_known_offchain and not has_onchain_reveal_started:
          target_state.state = TargetTransferState.ONCHAIN_SECRET_REVEAL
          secret = channel.get_secret(
              channel_state.partner_state,
              transfer.lock.secrethash,
          )
          assert secret, 'secret should be known at this point'
          return secret_registry.events_for_onchain_secretreveal(
              channel_state=channel_state,
              secret=secret,
              expiration=expiration,
              block_hash=block_hash,
          )
  
      return list()
docs: Emits the event for revealing the secret on-chain if the transfer
      can not be settled off-chain.