SolanaMultiSigAccount.fromBuffer constructor

SolanaMultiSigAccount.fromBuffer({
  1. required List<int> data,
  2. required SolAddress address,
})

Implementation

factory SolanaMultiSigAccount.fromBuffer(
    {required List<int> data, required SolAddress address}) {
  if (data.length != SolanaMultiSigAccountUtils.multisigSize) {
    throw MessageException("Account data length is insufficient.", details: {
      "Expected": SolanaMultiSigAccountUtils.multisigSize,
      "length": data.length
    });
  }

  final decode = LayoutSerializable.decode(
      bytes: data, layout: SolanaMultiSigAccountUtils.layout);
  final n = decode["numberOfPossibleSigners"];
  return SolanaMultiSigAccount(
      address: address,
      numberOfSigners: decode["numberOfSigners"],
      numberOfPossibleSigners: n,
      isInitialized: decode["isInitialized"],
      signers: (decode["signers"] as List).cast<SolAddress>().sublist(0, n));
}