async sign ({ kind, created_at, content, tags }, { signer } = {}) {
    const event = new NDKEvent(this.ndk, {
      kind,
      created_at,
      content,
      tags
    })
    signer ??= this.ndk.signer
    if (!signer) throw new Error('no way to sign this event, please provide a signer or private key')
    await event.sign(signer)
    return event
  }
@param {Object} rawEvent
@param {number} rawEvent.kind
@param {number} rawEvent.created_at
@param {string} rawEvent.content
@param {Array<Array<string>>} rawEvent.tags
@param {Object} context
@param {string} context.privKey
@param {NDKSigner} context.signer
@returns {Promise<NDKEvent>}