code: def events_for_unlock_lock(
          initiator_state: InitiatorTransferState,
          channel_state: NettingChannelState,
          secret: Secret,
          secrethash: SecretHash,
          pseudo_random_generator: random.Random,
  ) -> List[Event]:
      
      # next hop learned the secret, unlock the token locally and send the
      # lock claim message to next hop
      transfer_description = initiator_state.transfer_description
  
      message_identifier = message_identifier_from_prng(pseudo_random_generator)
      unlock_lock = channel.send_unlock(
          channel_state=channel_state,
          message_identifier=message_identifier,
          payment_identifier=transfer_description.payment_identifier,
          secret=secret,
          secrethash=secrethash,
      )
  
      payment_sent_success = EventPaymentSentSuccess(
          payment_network_identifier=channel_state.payment_network_identifier,
          token_network_identifier=TokenNetworkID(channel_state.token_network_identifier),
          identifier=transfer_description.payment_identifier,
          amount=transfer_description.amount,
          target=transfer_description.target,
          secret=secret,
      )
  
      unlock_success = EventUnlockSuccess(
          transfer_description.payment_identifier,
          transfer_description.secrethash,
      )
  
      return [unlock_lock, payment_sent_success, unlock_success]
docs: Unlocks the lock offchain, and emits the events for the successful payment.