simulateTransaction method

Future<TransactionResponse> simulateTransaction(
  1. Transaction transactionBlock, {
  2. TransactionIncludeOptions? include,
  3. bool? doGasSelection,
})

Implementation

Future<TransactionResponse> simulateTransaction(
  sui_dart.Transaction transactionBlock, {
  TransactionIncludeOptions? include,
  bool? doGasSelection,
}) async {
  final readMask = _transactionReadMask(include);

  final response = await _client.transactionExecutionService.simulateTransaction(
    SimulateTransactionRequest(
      transaction: transactionBlock.toGrpcTransaction(),
      readMask: readMask,
      doGasSelection: doGasSelection ?? true,
    ),
  );

  var result = _parseTransaction(response.transaction, include);

  if (include?.commandResults == true) {
    result = result.copyWith(
      commandResults: response.commandOutputs.map((cmdResult) {
        return CommandResult(
          returnValues: cmdResult.returnValues.map((output) {
            return CommandOutput(
              bcs: output.hasValue() ? Uint8List.fromList(output.value.value) : Uint8List(0),
            );
          }).toList(),
          mutatedReferences: cmdResult.mutatedByRef.map((output) {
            return CommandOutput(
              bcs: output.hasValue() ? Uint8List.fromList(output.value.value) : Uint8List(0),
            );
          }).toList(),
        );
      }).toList(),
    );
  }

  return result;
}