code: async function () {
      logger.step("** Starting stake mint for st prime for beneficiary utilityChainOwner");
      const oThis = this
        , toStakeAmount = (new BigNumber(10000)).mul(new BigNumber(10).toPower(18))
      ;
  
      logger.info('* Utility Chain Owner transfers ST to staker');
      await fundManager.transferST(
          utilityChainOwnerAddr, utilityChainOwnerPassphrase, stakerAddr, toStakeAmount,
          {tag: 'transferSTToStaker', returnType: 'txReceipt'}
      );
  
      logger.info('* Staker approves openSTValue contract');
      const approveResponse = await (new approveService()).perform();
      if (approveResponse.isFailure()) {
        process.exit(1);
      }
  
      const approveTransactionHash = approveResponse.data.transaction_hash;
  
      logger.info('* Get approval status and keep doing so till success');
      const approveReceiptResponse =  await contractInteractHelper.waitAndGetTransactionReceipt(web3Provider, approveTransactionHash, {});
      if (!approveReceiptResponse.isSuccess()) {
        logger.error('Approval receipt error ', approveReceiptResponse);
        process.exit(1);
      }
  
      logger.info('* Start stake');
  
      await (new startStakeService({
        beneficiary: utilityChainOwnerAddr,
        to_stake_amount: toStakeAmount,
        uuid: coreConstants.OST_OPENSTUTILITY_ST_PRIME_UUID
      })).perform();
  
      await oThis._waitForSTPrimeMint();
  
      return Promise.resolve(responseHelper.successWithData({}));
    }
docs: Perform
  
  @return {promise<result>}