constructor({ n, m, partyId, seed, authKey, round }) {
    $.checkArgument(n != null, 'n is required');
    $.checkArgument(m != null, 'm is required');
    $.checkArgument(partyId != null, 'partyId is required');
    $.checkArgument(authKey != null, 'authKey is required');

    $.checkArgument(n > 1, 'n must be greater than 1');
    this.#partySize = parseInt(n);

    $.checkArgument(m > 0 && m <= n, 'm must be in the range [1, n]');
    this.#minSigners = parseInt(m);

    $.checkArgument(partyId >= 0 && partyId < n, 'partyId must be in the range [0, n-1]');
    this.#partyId = parseInt(partyId);

    $.checkArgument(seed == null || Buffer.isBuffer(seed) && seed.length === 32, 'seed must be a 32 byte buffer');
    this.#seed = seed;

    this.#authKey = new bitcoreLib.PrivateKey(authKey);
    $.checkArgument(this.#authKey.toString('hex') === authKey.toString('hex') || this.#authKey.toWIF() === authKey, 'Unrecognized authKey format');

    $.checkArgument(round == null || (round >= 0 && round <= 5), 'round must be in the range [0, 5]');
    this.#round = parseInt(round) || 0;

    this.#dkg = new DklsDkg.Dkg(this.#partySize, this.#minSigners, this.#partyId, this.#seed);
  }
@param {Object} params
@param {number} params.n - number of participants
@param {number} params.m - minimum number of signers
@param {number} params.partyId - party id
@param {Buffer} params.seed - OPTIONAL seed for the DKG
@param {Buffer} params.authKey - authentication key for the DKG
@param {number} params.round - round number for the DKG