SuiMultisigAccountPublicKey constructor

SuiMultisigAccountPublicKey({
  1. required List<SuiMultisigPublicKeyInfo> publicKeys,
  2. required int threshold,
})

Validates and creates a multisig account public key.

Implementation

factory SuiMultisigAccountPublicKey(
    {required List<SuiMultisigPublicKeyInfo> publicKeys,
    required int threshold}) {
  if (publicKeys.isEmpty) {
    throw DartSuiPluginException(
        "At least one public key is required for a multisig address.");
  }
  final keys = publicKeys.map((e) => e.publicKey).toSet();
  if (keys.length != publicKeys.length) {
    throw DartSuiPluginException("Duplicate public key detected.");
  }
  if (keys.length > SuiAccountConst.multisigAccountMaxPublicKey) {
    throw DartSuiPluginException(
        "Exceeded the maximum allowed public keys for a multisig account.");
  }
  if (threshold < SuiAccountConst.multisigAccountMinThreshold ||
      threshold > SuiAccountConst.multisigAccountMaxThreshold) {
    throw DartSuiPluginException(
        "Invalid threshold. Must be between ${SuiAccountConst.multisigAccountMinThreshold} and ${SuiAccountConst.multisigAccountMaxThreshold}.");
  }
  final sumWeight = publicKeys.fold<int>(0, (p, c) => p + c.weight);
  if (sumWeight < threshold) {
    throw DartSuiPluginException(
        "Sum of public key weights must meet or exceed the threshold.");
  }
  return SuiMultisigAccountPublicKey._(
      publicKeys: publicKeys, threshold: threshold);
}