SuiMultisigAccountPublicKey constructor
SuiMultisigAccountPublicKey({
- required List<
SuiMultisigPublicKeyInfo> publicKeys, - 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);
}