UNPKG

tronbox

Version:

TronBox - Simple development framework for Tron

1 lines 28.2 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _typeof2=_interopRequireDefault(require("@babel/runtime/helpers/typeof"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}var _require=require("web3"),Web3=_require.Web3;var _require2=require("tronweb"),_TronWeb=_require2.TronWeb;var chalk=require("chalk");var constants=require("./constants");var axios=require("axios");var ConsoleLogger=require("../ConsoleLogger");var instance;function TronWrap(){this._toNumber=toNumber;this.EventList=[];this.filterMatchFunction=filterMatchFunction;instance=this;return instance}function toNumber(value){if(!value)return null;if(typeof value==="string"){value=/^0x/.test(value)?value:"0x"+value}else{value=value.toNumber()}return value}function filterMatchFunction(method,abi){var methodObj=abi.filter(function(item){return item.name===method});if(!methodObj||methodObj.length===0){return null}methodObj=methodObj[0];var parametersObj=methodObj.inputs.map(function(item){return item.type});return{"function":methodObj.name+"("+parametersObj.join(",")+")",parameter:parametersObj,methodName:methodObj.name,methodType:methodObj.type}}function sleep(millis){return new Promise(function(resolve){return setTimeout(resolve,millis)})}function filterNetworkConfig(options){var userFeePercentage=typeof options.userFeePercentage==="number"?options.userFeePercentage:typeof options.consume_user_resource_percent==="number"?options.consume_user_resource_percent:constants.deployParameters.userFeePercentage;return{fullNode:options.fullNode||options.fullHost,feeLimit:options.feeLimit||options.fee_limit||constants.deployParameters.feeLimit,originEnergyLimit:options.originEnergyLimit||options.origin_energy_limit||constants.deployParameters.originEnergyLimit,callValue:options.callValue||options.call_value||constants.deployParameters.callValue,tokenValue:options.tokenValue||options.token_value||options.call_token_value,tokenId:options.tokenId||options.token_id,userFeePercentage:userFeePercentage,gas:options.gas||options.gasLimit,gasPrice:options.gasPrice,maxPriorityFeePerGas:options.maxPriorityFeePerGas,maxFeePerGas:options.maxFeePerGas}}function init(options){var extraOptions=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(instance){return instance}if(extraOptions.verify&&(!options||!(options.privateKey||options.mnemonic)||!(options.fullHost||options.fullNode&&options.solidityNode&&options.eventServer))){var configFile=extraOptions.evm?"tronbox-evm-config.js":"tronbox.js";if(!options){throw new Error("It was not possible to instantiate TronWeb. The chosen network does not exist in your \"".concat(configFile,"\"."))}else{if(!options.privateKey){throw new Error("It was not possible to instantiate TronWeb. Private key is missing in your \"".concat(configFile,"\"."))}if(!(options.fullHost||options.fullNode&&options.solidityNode&&options.eventServer)){throw new Error("It was not possible to instantiate TronWeb. Fullhost url is missing in your \"".concat(configFile,"\"."))}throw new Error("It was not possible to instantiate TronWeb. Some required parameters are missing in your \"".concat(configFile,"\"."))}}var getPrivateKey=function getPrivateKey(){if(options.mnemonic){return _TronWeb.fromMnemonic(options.mnemonic,options.path).privateKey.replace(/^0x/,"")}return options.privateKey};TronWrap.prototype=new _TronWeb(options.fullNode||options.fullHost,options.solidityNode||options.fullHost,options.eventServer||options.fullHost,getPrivateKey());var tronWrap=TronWrap.prototype;tronWrap._tre=extraOptions.tre;tronWrap._treUnlockedAccounts={};tronWrap._nextId=1;tronWrap.networkConfig=filterNetworkConfig(options);if(extraOptions.log){tronWrap._log=extraOptions.log}if(extraOptions.evm){var web3=new Web3(options.fullNode||options.fullHost);var pk=getPrivateKey();if(!pk.startsWith("0x"))pk="0x"+pk;var account=web3.eth.accounts.wallet.add(pk);tronWrap._web3=web3;tronWrap._web3_accounts=[account[0].address]}tronWrap._getNetworkInfo=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(){var info,res;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:info={parameters:{},nodeinfo:{}};_context.prev=1;_context.next=4;return Promise.all([tronWrap.trx.getChainParameters(),tronWrap.trx.getNodeInfo()]);case 4:res=_context.sent;info.parameters=res[0]||{};info.nodeinfo=res[1]||{};_context.next=11;break;case 9:_context.prev=9;_context.t0=_context["catch"](1);case 11:return _context.abrupt("return",Promise.resolve(info));case 12:case"end":return _context.stop()}},_callee,null,[[1,9]])}));tronWrap._getNetwork=function(callback){callback&&callback(null,options.network_id)};var defaultAddress=tronWrap.address.fromPrivateKey(tronWrap.defaultPrivateKey);tronWrap._accounts=[defaultAddress];tronWrap._privateKeyByAccount={};tronWrap._privateKeyByAccount[defaultAddress]=tronWrap.defaultPrivateKey;tronWrap._getAccounts=function(callback){var _this=this;if(extraOptions.evm)return tronWrap._evmGetAccounts(callback);var self=this;return new Promise(function(accept){function cb(){if(callback){callback(null,self._accounts);accept()}else{accept(self._accounts)}}if(self._accountsRequested){return cb()}return axios.get(self.networkConfig.fullNode+"/admin/accounts-json").then(function(_ref2){var data=_ref2.data;data=Array.isArray(data)?data:data.privateKeys;if(data.length>0&&data[0].length===64){self.setPrivateKey(data[0]);tronWrap.setPrivateKey(data[0]);self._accounts=[];self._privateKeyByAccount={};var _iterator=_createForOfIteratorHelper(data),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _account=_step.value;var address=_this.address.fromPrivateKey(_account);self._privateKeyByAccount[address]=_account;self._accounts.push(address)}}catch(err){_iterator.e(err)}finally{_iterator.f()}}self._accountsRequested=true;return cb()})["catch"](function(){self._accountsRequested=true;return cb()})})};tronWrap._getContract=function(){var _ref3=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(address,callback){var contractInstance;return _regenerator["default"].wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.next=2;return tronWrap.trx.getContract(address||"");case 2:contractInstance=_context2.sent;if(contractInstance){callback&&callback(null,contractInstance.contract_address)}else{callback(new Error("no code"))}case 4:case"end":return _context2.stop()}},_callee2)}));return function(_x,_x2){return _ref3.apply(this,arguments)}}();tronWrap._deployContract=function(option,callback){if(extraOptions.evm)return tronWrap._evmDeployContract(option,callback);var myContract=this.contract();var originEnergyLimit=option.originEnergyLimit||this.networkConfig.originEnergyLimit;if(originEnergyLimit<0||originEnergyLimit>constants.deployParameters.originEnergyLimit){throw new Error("Origin Energy Limit must be > 0 and <= 10,000,000")}var userFeePercentage=typeof options.userFeePercentage==="number"?options.userFeePercentage:this.networkConfig.userFeePercentage;var constructorAbi=option.abi.find(function(it){return it.type==="constructor"});if(constructorAbi&&option.parameters&&option.parameters.length){option.rawParameter=this.utils.abi.encodeParamsV2ByABI(constructorAbi,option.parameters)}this._new(myContract,{bytecode:option.data,feeLimit:option.feeLimit||this.networkConfig.feeLimit,callValue:option.callValue||this.networkConfig.callValue,userFeePercentage:userFeePercentage,originEnergyLimit:originEnergyLimit,abi:option.abi,parameters:option.parameters,rawParameter:option.rawParameter,name:option.contractName,from:option.from||""},option.privateKey).then(function(){callback(null,myContract);option.address=myContract.address})["catch"](function(reason){callback(new Error(reason))})};tronWrap._new=function(){var _ref4=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(myContract,options){var privateKey,signedTransaction,address,transaction,result,contract,i,e,url,_args3=arguments;return _regenerator["default"].wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:privateKey=_args3.length>2&&_args3[2]!==undefined?_args3[2]:tronWrap.defaultPrivateKey;_context3.prev=1;address=options.from?options.from:tronWrap.address.fromPrivateKey(privateKey);_context3.next=5;return tronWrap.transactionBuilder.createSmartContract(options,address);case 5:transaction=_context3.sent;if(!tronWrap._treUnlockedAccounts[address]){_context3.next=12;break}dlog("Unlocked account",{address:address});signedTransaction=transaction;transaction.signature=[];_context3.next=15;break;case 12:_context3.next=14;return tronWrap.trx.sign(transaction,privateKey);case 14:signedTransaction=_context3.sent;case 15:_context3.next=17;return tronWrap.trx.sendRawTransaction(signedTransaction);case 17:result=_context3.sent;if(!(!result||(0,_typeof2["default"])(result)!=="object")){_context3.next=20;break}return _context3.abrupt("return",Promise.reject("Error while broadcasting the transaction to create the contract ".concat(options.name,". Most likely, the creator has either insufficient bandwidth or energy.")));case 20:if(!result.code){_context3.next=22;break}return _context3.abrupt("return",Promise.reject("".concat(result.code," (").concat(tronWrap.toUtf8(result.message),") while broadcasting the transaction to create the contract ").concat(options.name)));case 22:dlog("Contract broadcasted",{result:result.result,transaction_id:transaction.txID,address:transaction.contract_address});i=0;case 24:if(!(i<10)){_context3.next=45;break}_context3.prev=25;dlog("Requesting contract");delete tronWrap.trx.cache.contracts[signedTransaction.contract_address];_context3.next=30;return tronWrap.trx.getContract(signedTransaction.contract_address);case 30:contract=_context3.sent;dlog("Contract requested");if(!contract.contract_address){_context3.next=35;break}dlog("Contract found");return _context3.abrupt("break",45);case 35:_context3.next=40;break;case 37:_context3.prev=37;_context3.t0=_context3["catch"](25);dlog("Contract does not exist yet");case 40:_context3.next=42;return sleep(500);case 42:i++;_context3.next=24;break;case 45:dlog("Reading contract data");if(!(!contract||!contract.contract_address)){_context3.next=48;break}throw new Error("Contract does not exist");case 48:myContract.address=contract.contract_address;myContract.bytecode=contract.bytecode;myContract.deployed=true;myContract.loadAbi(JSON.parse(JSON.stringify(options.abi||[])));myContract.transactionHash=transaction.txID;dlog("Contract deployed:",options.name);return _context3.abrupt("return",Promise.resolve(myContract));case 57:_context3.prev=57;_context3.t1=_context3["catch"](1);if(_context3.t1.toString().includes("does not exist")){url=this.networkConfig.fullNode+"/wallet/gettransactionbyid?value="+signedTransaction.txID;e="Contract "+chalk.bold(options.name)+" has not been deployed on the network.\nFor more details, check the transaction at:\n"+chalk.blue(url)+"\nIf the transaction above is empty, most likely, your address had no bandwidth/energy to deploy the contract."}return _context3.abrupt("return",Promise.reject(e||_context3.t1));case 61:case"end":return _context3.stop()}},_callee3,this,[[1,57],[25,37]])}));return function(_x3,_x4){return _ref4.apply(this,arguments)}}();tronWrap.triggerContract=function(option,callback){var _this2=this;if(extraOptions.evm)return tronWrap._evmTriggerContract(option,callback);var myContract=this.contract(option.abi,option.address);var callSend="send";option.abi.forEach(function(val){if(val.name===option.methodName){callSend=/payable/.test(val.stateMutability)?"send":"call"}});option.methodArgs||(option.methodArgs={});option.methodArgs.from||(option.methodArgs.from=this._accounts[0]);dlog(option.methodName,option.args,options.methodArgs);var privateKey;if(callSend==="send"&&option.methodArgs.from){privateKey=this._privateKeyByAccount[option.methodArgs.from]}if(!option.methodArgs.feeLimit){option.methodArgs.feeLimit=this.networkConfig.feeLimit}this._getNetworkInfo().then(function(info){if(info.compilerVersion==="1"){delete option.methodArgs.tokenValue;delete option.methodArgs.tokenId}var address=option.methodArgs.from;if(callSend==="send"&&tronWrap._treUnlockedAccounts[address]){dlog("Unlocked account",{address:address});var _myContract$methodIns=myContract.methodInstances[option.methodName],abi=_myContract$methodIns.abi,functionSelector=_myContract$methodIns.functionSelector,defaultOptions=_myContract$methodIns.defaultOptions;var rawParameter=_this2.utils.abi.encodeParamsV2ByABI(abi,option.args);var stateMutability=abi.stateMutability;if(!["payable"].includes(stateMutability.toLowerCase())){delete option.methodArgs.callValue;delete option.methodArgs.tokenId;delete option.methodArgs.tokenValue}var _options={};Object.keys(defaultOptions).forEach(function(_){_options[_]=defaultOptions[_]});Object.keys(option.methodArgs).forEach(function(_){_options[_]=option.methodArgs[_]});_options.rawParameter=rawParameter;return new Promise(function(resolve,reject){tronWrap.transactionBuilder.triggerSmartContract(option.address,functionSelector,_options,[],address).then(function(transaction){if(!transaction.result||!transaction.result.result){return reject("Unknown error: "+JSON.stringify(transaction,null,2))}transaction.transaction.signature=[];tronWrap.trx.sendRawTransaction(transaction.transaction).then(function(broadcast){if(broadcast.code){var err={error:broadcast.code,message:broadcast.code};if(broadcast.message){err.message=tronWrap.toUtf8(broadcast.message);err.error=tronWrap.toUtf8(broadcast.message)}return reject(err)}return resolve(transaction.transaction.txID)})["catch"](function(err){return reject(err)})})})}if(callSend==="send"&&!tronWrap._treUnlockedAccounts[address]&&!privateKey){return callback("sender account not recognized")}return myContract[option.methodName].apply(myContract,(0,_toConsumableArray2["default"])(option.args))[callSend](option.methodArgs||{},privateKey)}).then(function(res){callback(null,res)})["catch"](function(reason){if((0,_typeof2["default"])(reason)==="object"&&reason.error){reason=reason.error}if(process.env.CURRENT==="test"){callback(reason)}else{logErrorAndExit(console,reason)}})};tronWrap.request=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(){var request,_args4=arguments;return _regenerator["default"].wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:request=_args4.length>0&&_args4[0]!==undefined?_args4[0]:{};return _context4.abrupt("return",tronWrap.send(request.method,request.params||[]));case 2:case"end":return _context4.stop()}},_callee4)}));tronWrap.send=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(){var _this3=this;var method,params,_send,result,accounts,i,address,hexAddr,base58Addr,_args6=arguments;return _regenerator["default"].wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:method=_args6.length>0&&_args6[0]!==undefined?_args6[0]:"";params=_args6.length>1&&_args6[1]!==undefined?_args6[1]:[];_send=function(){var _ref7=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(){var _yield$axios$post,data,result,error,err;return _regenerator["default"].wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.prev=0;_context5.next=3;return axios.post(_this3.networkConfig.fullNode+"/tre",{method:method,params:params,id:_this3._nextId++,jsonrpc:"2.0"});case 3:_yield$axios$post=_context5.sent;data=_yield$axios$post.data;result=data.result,error=data.error;if(!result){_context5.next=8;break}return _context5.abrupt("return",result);case 8:if(!error){_context5.next=10;break}throw error.message?error.message:error;case 10:_context5.next=16;break;case 12:_context5.prev=12;_context5.t0=_context5["catch"](0);err=_context5.t0.message?_context5.t0.message:_context5.t0;throw new Error(err);case 16:case"end":return _context5.stop()}},_callee5,null,[[0,12]])}));return function _send(){return _ref7.apply(this,arguments)}}();_context6.t0=method;_context6.next=_context6.t0==="tre_setAccountBalance"?6:_context6.t0==="tre_setAccountStorageAt"?6:_context6.t0==="tre_setAccountCode"?6:_context6.t0==="tre_mine"?6:_context6.t0==="tre_blockTime"?6:_context6.t0==="debug_traceTransaction"?6:_context6.t0==="debug_storageRangeAt"?6:_context6.t0==="tre_unlockedAccounts"?7:12;break;case 6:return _context6.abrupt("return",_send());case 7:_context6.next=9;return _send();case 9:result=_context6.sent;if(result){accounts=params[0]||[];for(i=0;i<accounts.length;i++){address=accounts[i];if(tronWrap._tre){hexAddr=tronWrap.address.toHex(address);base58Addr=tronWrap.address.fromHex(address);tronWrap._treUnlockedAccounts[hexAddr]=true;tronWrap._treUnlockedAccounts[base58Addr]=true}}}return _context6.abrupt("return",result);case 12:return _context6.abrupt("return",_send());case 13:case"end":return _context6.stop()}},_callee6)}));tronWrap.fullNode._request=tronWrap.fullNode.request;tronWrap.solidityNode._request=tronWrap.solidityNode.request;tronWrap._getConsoleLog=function(url,transaction){var urls=["wallet/triggerconstantcontract","walletsolidity/triggerconstantcontract","wallet/broadcasttransaction"];if(urls.includes(url)){ConsoleLogger.getLogMessages(transaction)}};tronWrap.fullNode.request=function(url){var payload=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var method=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"get";return tronWrap.fullNode._request(url,payload,method).then(function(data){tronWrap._getConsoleLog(url,data);return data})};tronWrap.solidityNode.request=function(url){var payload=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var method=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"get";return tronWrap.solidityNode._request(url,payload,method).then(function(data){tronWrap._getConsoleLog(url,data);return data})};tronWrap._evmGetAccounts=function(){var _ref8=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(callback){var accounts;return _regenerator["default"].wrap(function _callee7$(_context7){while(1)switch(_context7.prev=_context7.next){case 0:accounts=(0,_toConsumableArray2["default"])(tronWrap._web3_accounts);tronWrap._privateKeyByAccount[accounts[0]]=tronWrap._web3.eth.accounts.wallet.get(accounts[0]).privateKey;if(!callback){_context7.next=4;break}return _context7.abrupt("return",callback(null,accounts));case 4:return _context7.abrupt("return",accounts);case 5:case"end":return _context7.stop()}},_callee7)}));return function(_x5){return _ref8.apply(this,arguments)}}();tronWrap._evmDeployContract=function(){var _ref9=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(option,callback){var web3,contract,deployFunc,opt,transactionHash,newContract,address,receipt;return _regenerator["default"].wrap(function _callee8$(_context8){while(1)switch(_context8.prev=_context8.next){case 0:web3=tronWrap._web3;contract=new web3.eth.Contract(option.abi);deployFunc=contract.deploy({data:option.data,arguments:option.parameters});opt={from:option.from||tronWrap._web3_accounts[0],gas:option.gas||option.gasLimit||this.networkConfig.gas,gasPrice:option.gasPrice||this.networkConfig.gasPrice,maxPriorityFeePerGas:option.maxPriorityFeePerGas||this.networkConfig.maxPriorityFeePerGas,maxFeePerGas:option.maxFeePerGas||this.networkConfig.maxFeePerGas,value:option.value||option.callValue||option.call_value,nonce:option.nonce,type:option.type};if(opt.maxPriorityFeePerGas||opt.maxFeePerGas){delete opt.gasPrice}_context8.prev=5;if(opt.gas){_context8.next=11;break}dlog("Estimate the gas used for deploying");_context8.next=10;return deployFunc.estimateGas(opt);case 10:opt.gas=_context8.sent;case 11:transactionHash=null;dlog("Deploying contract:",option.contractName);_context8.next=15;return deployFunc.send(opt).on("transactionHash",function(hash){transactionHash=hash});case 15:newContract=_context8.sent;address=newContract.options.address;dlog("Contract broadcasted",{address:address,transactionHash:transactionHash});_context8.prev=18;_context8.next=21;return tronWrap._evmWaitForTransaction(transactionHash);case 21:receipt=_context8.sent;if(!(!receipt||!receipt.status)){_context8.next=24;break}return _context8.abrupt("return",callback(new Error("Contract deployment failed")));case 24:_context8.next=29;break;case 26:_context8.prev=26;_context8.t0=_context8["catch"](18);return _context8.abrupt("return",callback(_context8.t0));case 29:dlog("Contract deployed:",option.contractName);callback(null,{address:address,transactionHash:transactionHash});_context8.next=36;break;case 33:_context8.prev=33;_context8.t1=_context8["catch"](5);callback(_context8.t1);case 36:case"end":return _context8.stop()}},_callee8,this,[[5,33],[18,26]])}));return function(_x6,_x7){return _ref9.apply(this,arguments)}}();tronWrap._evmTriggerContract=function(){var _ref10=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(option,callback){var _contract$methods;var web3,contract,methodFunc,methodArgs,opt,callSend,callRes,tx,transactionHash,receipt;return _regenerator["default"].wrap(function _callee9$(_context9){while(1)switch(_context9.prev=_context9.next){case 0:web3=tronWrap._web3;contract=new web3.eth.Contract(option.abi,option.address);methodFunc=(_contract$methods=contract.methods)[option.methodName].apply(_contract$methods,(0,_toConsumableArray2["default"])(option.args));methodArgs=option.methodArgs;opt={from:methodArgs.from||tronWrap._web3_accounts[0],gas:methodArgs.gas||methodArgs.gasLimit||this.networkConfig.gas,gasPrice:methodArgs.gasPrice||this.networkConfig.gasPrice,maxPriorityFeePerGas:methodArgs.maxPriorityFeePerGas||this.networkConfig.maxPriorityFeePerGas,maxFeePerGas:methodArgs.maxFeePerGas||this.networkConfig.maxFeePerGas,value:methodArgs.value||methodArgs.callValue||methodArgs.call_value,nonce:methodArgs.nonce,type:methodArgs.type};if(opt.maxPriorityFeePerGas||opt.maxFeePerGas){delete opt.gasPrice}callSend="send";option.abi.forEach(function(val){if(val.name===option.methodName){callSend=/payable/.test(val.stateMutability)?"send":"call"}});_context9.prev=8;if(!(callSend==="call")){_context9.next=14;break}_context9.next=12;return methodFunc.call(opt);case 12:callRes=_context9.sent;return _context9.abrupt("return",callback(null,callRes));case 14:if(opt.gas){_context9.next=19;break}dlog("Estimate the gas used for sending transaction");_context9.next=18;return methodFunc.estimateGas(opt);case 18:opt.gas=_context9.sent;case 19:dlog("Sending transaction");_context9.next=22;return methodFunc.send(opt);case 22:tx=_context9.sent;transactionHash=tx.transactionHash;dlog("Transaction sent");_context9.prev=25;_context9.next=28;return tronWrap._evmWaitForTransaction(transactionHash);case 28:receipt=_context9.sent;if(!(!receipt||!receipt.status)){_context9.next=31;break}return _context9.abrupt("return",callback(new Error("Transaction: ".concat(transactionHash," exited with an error (status 0)."))));case 31:_context9.next=36;break;case 33:_context9.prev=33;_context9.t0=_context9["catch"](25);return _context9.abrupt("return",callback(_context9.t0));case 36:callback(null,transactionHash);_context9.next=42;break;case 39:_context9.prev=39;_context9.t1=_context9["catch"](8);callback(_context9.t1);case 42:case"end":return _context9.stop()}},_callee9,this,[[8,39],[25,33]])}));return function(_x8,_x9){return _ref10.apply(this,arguments)}}();tronWrap._evmWaitForTransaction=function(){var _ref11=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11(txHash){var web3,curBlockNumber,transactionBlockTimeout,_getReceipt;return _regenerator["default"].wrap(function _callee11$(_context11){while(1)switch(_context11.prev=_context11.next){case 0:web3=tronWrap._web3;_context11.next=3;return web3.eth.getBlockNumber();case 3:curBlockNumber=_context11.sent;transactionBlockTimeout=50;_getReceipt=function(){var _ref12=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10(){var timeout,blockNumber,receipt;return _regenerator["default"].wrap(function _callee10$(_context10){while(1)switch(_context10.prev=_context10.next){case 0:timeout=false;_context10.prev=1;_context10.next=4;return web3.eth.getBlockNumber();case 4:blockNumber=_context10.sent;if(!(blockNumber-curBlockNumber>transactionBlockTimeout)){_context10.next=9;break}timeout=true;_context10.next=15;break;case 9:dlog("Requesting transaction",txHash);_context10.next=12;return web3.eth.getTransactionReceipt(txHash);case 12:receipt=_context10.sent;if(!receipt){_context10.next=15;break}return _context10.abrupt("return",receipt);case 15:_context10.next=19;break;case 17:_context10.prev=17;_context10.t0=_context10["catch"](1);case 19:if(!timeout){_context10.next=21;break}throw new Error("Transaction was not mined within ".concat(transactionBlockTimeout," blocks, please make sure your transaction was properly sent. Be aware that it might still be mined!"));case 21:_context10.next=23;return sleep(1000);case 23:_context10.next=25;return _getReceipt();case 25:return _context10.abrupt("return",_context10.sent);case 26:case"end":return _context10.stop()}},_callee10,null,[[1,17]])}));return function getReceipt(){return _ref12.apply(this,arguments)}}();dlog("Waiting for transaction");_context11.next=9;return _getReceipt();case 9:return _context11.abrupt("return",_context11.sent);case 10:case"end":return _context11.stop()}},_callee11)}));return function(_x10){return _ref11.apply(this,arguments)}}();return new TronWrap}var logErrorAndExit=function logErrorAndExit(logger,err){function log(str){try{logger.error(str)}catch(err){console.error(str)}}var msg=typeof err==="string"?err:err.message;if(msg){msg=msg.replace(/^error(:|) /i,"");if(msg==="Invalid URL provided to HttpProvider"){msg="Either invalid or wrong URL provided to HttpProvider. Verify the configuration in your \"tronbox.js\""}log(chalk.red(chalk.bold("ERROR:"),msg))}else{log("Error encountered, bailing. Network state unknown.")}process.exit()};var dlog=function dlog(){if(process.env.DEBUG_MODE){for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}for(var i=0;i<args.length;i++){if((0,_typeof2["default"])(args[i])==="object"){try{args[i]=JSON.stringify(args[i],null,2)}catch(err){}}}console.debug(chalk.blue(args.join(" ")))}};module.exports=init;module.exports.config=function(){return console.info("config")};module.exports.constants=constants;module.exports.logErrorAndExit=logErrorAndExit;module.exports.dlog=dlog;module.exports.sleep=sleep;module.exports.TronWeb=_TronWeb;