estimateSize method

int estimateSize()

Implementation

int estimateSize() {
  if (utxos.isEmpty || _outputs.isEmpty) {
    throw const ADAPluginException(
        'Utxos and outputs must not be not empty.');
  }
  final outs = _outputs.map((e) {
    if (e.amount.coin == BigInt.zero) {
      return e.copyWith(amount: e.amount.copyWith(coin: maxU64));
    }
    return e;
  }).toList();
  final transactionSigners = signers;
  final aux = auxiliaryData;

  final transaction = ADATransaction(
    data: aux,
    body: TransactionBody(
        inputs: TransactionInputs(utxos.map((e) => e.input).toList()),
        outputs: TransactionOutputs(outs),
        mint: getMint(),
        fee: BigInt.from(mask32),
        certificates: certificates.isEmpty
            ? null
            : Certificates(certificates.map((e) => e.certificate).toList()),
        auxiliaryDataHash: aux?.toHash()),
    witnessSet: TransactionWitnessSet(
      bootstraps: BootstrapWitnesses(transactionSigners
          .where((element) => element.addressType == ADAAddressType.byron)
          .map((e) =>
              ADATransactionBuilderUtils.fakeBootStrapWitness(e.cast()))
          .toList()),
      nativeScripts: nativeScripts,
      vKeys: VkeyWitnesses(transactionSigners
          .where((element) => element.addressType != ADAAddressType.byron)
          .map((e) => ADATransactionBuilderUtils.fakeVkeyWitnessWitness())
          .toList()),
    ),
  );
  return transaction.size;
}