estimateSize method

int estimateSize({
  1. ADAAddress? onChangeAddress,
})

Implementation

int estimateSize({ADAAddress? onChangeAddress}) {
  if (utxos.isEmpty || _outputs.isEmpty) {
    throw const MessageException("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 ADATransaction transaction = ADATransaction(
    data: aux,
    body: TransactionBody(
        inputs: utxos.map((e) => e.toInput).toList(),
        outputs: outs,
        mint: getMint(),
        fee: BigInt.from(mask32),
        certs: certificates.map((e) => e.certificate).toList(),
        auxiliaryDataHash: aux?.toHash()),
    witnessSet: TransactionWitnessSet(
      bootstraps: transactionSigners
          .where((element) => element.addressType == ADAAddressType.byron)
          .map((e) =>
              ADATransactionBuilderUtils.fakeBootStrapWitness(e.address))
          .toList(),
      nativeScripts: transactionNativeScripts,
      vKeys: transactionSigners
          .where((element) => element.addressType != ADAAddressType.byron)
          .map((e) => ADATransactionBuilderUtils.fakeVkeyWitnessWitness())
          .toList(),
    ),
  );
  return transaction.size;
}