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;
}