docs: async function () {
      const oThis = this
      ;
  
      try {
        const stakerAddress = coreAddresses.getAddressForUser('staker')
          , stakerPassphrase = coreAddresses.getPassphraseForUser('staker');
  
        // Validations
        if (!basicHelper.isAddressValid(stakerAddress) || !stakerPassphrase) {
          let errObj = responseHelper.error({
            internal_error_identifier: 's_sam_ss_1',
            api_error_identifier: 'invalid_staker_details',
            error_config: basicHelper.fetchErrorConfig()
          });
          return Promise.resolve(errObj);
        }
        if (!basicHelper.isAddressValid(oThis.beneficiary)) {
          let errObj = responseHelper.error({
            internal_error_identifier: 's_sam_ss_2',
            api_error_identifier: 'invalid_beneficiary_details',
            error_config: basicHelper.fetchErrorConfig()
          });
          return Promise.resolve(errObj);
        }
        if (!basicHelper.isUuidValid(oThis.uuid)) {
          let errObj = responseHelper.error({
            internal_error_identifier: 's_sam_ss_3',
            api_error_identifier: 'invalid_branded_token_uuid',
            error_config: basicHelper.fetchErrorConfig()
          });
          return Promise.resolve(errObj);
        }
        if (!basicHelper.isNonZeroWeiValid(oThis.toStakeAmount)) {
          let errObj = responseHelper.error({
            internal_error_identifier: 's_sam_ss_4',
            api_error_identifier: 'invalid_amount',
            error_config: basicHelper.fetchErrorConfig()
          });
          return Promise.resolve(errObj);
        }
  
        // Format wei
        oThis.toStakeAmount = basicHelper.formatWeiToString(oThis.toStakeAmount);
  
        const stakeTransactionHash = await openSTValueContractInteract.stake(stakerAddress, stakerPassphrase, oThis.uuid,
          oThis.toStakeAmount, oThis.beneficiary, true);
  
        return Promise.resolve(responseHelper.successWithData({
          transaction_uuid: uuid.v4(),
          transaction_hash: stakeTransactionHash
        }));
  
      } catch (err) {
        let errObj = responseHelper.error({
          internal_error_identifier: 's_sam_ss_5',
          api_error_identifier: 'something_went_wrong',
          error_config: basicHelper.fetchErrorConfig()
        });
        return Promise.resolve(errObj);
      }
    }