nextRound(prevRoundMessages) {
    $.checkState(this.#round > 0, 'initJoin must be called before participating in the rounds');
    $.checkState(this.#round < 5, 'Signing rounds are over');
    $.checkArgument(Array.isArray(prevRoundMessages), 'prevRoundMessages must be an array');
    $.checkArgument(prevRoundMessages.length === this.#partySize - 1, 'Not ready to proceed to the next round');
    $.checkArgument(prevRoundMessages.every(msg => msg.round === this.#round - 1), 'All messages must be from the previous round');
    $.checkArgument(prevRoundMessages.every(msg => msg.partyId !== this.#partyId), 'Messages must not be from the yourself');

    const prevRoundIncomingMsgs = DklsComms.decryptAndVerifyIncomingMessages(prevRoundMessages, this.#authKey);

    const thisRoundMessages = DklsTypes.serializeMessages(
      this.#dkg.handleIncomingMessages(DklsTypes.deserializeMessages(prevRoundIncomingMsgs))
    );

    const signedMessage = DklsComms.encryptAndAuthOutgoingMessages(
      thisRoundMessages,
      prevRoundMessages.map(m => ({ partyId: m.partyId, publicKey: m.publicKey })),
      this.#authKey
    );

    return this._formatMessage(signedMessage);
  }
Call this after receiving the initJoin broadcast messages from the other participants
 and while isKeyChainReady() is false
@param {Array<Object>} prevRoundMessages 
@returns {{ round: number, partyId: number, publicKey: string, p2pMessages: Object[], broadcastMessage: Object[] }}