UNPKG

ptokens-utils

Version:

repo holding some utils needed by other packages

1,339 lines (1,319 loc) 115 kB
'use strict'; function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var algosdk = require('algosdk'); var algosdk__default = _interopDefault(algosdk); var _asyncToGenerator = _interopDefault(require('@babel/runtime/helpers/asyncToGenerator')); var _regeneratorRuntime = _interopDefault(require('@babel/runtime/regenerator')); var validate = _interopDefault(require('bitcoin-address-validation')); var axios = _interopDefault(require('axios')); var polling = _interopDefault(require('light-async-polling')); var _toConsumableArray = _interopDefault(require('@babel/runtime/helpers/toConsumableArray')); var BigNumber = _interopDefault(require('bignumber.js')); var Web3PromiEvent = _interopDefault(require('web3-core-promievent')); var eosjs = require('eosjs'); var eosjsJssig = require('eosjs/dist/eosjs-jssig'); var fetch = _interopDefault(require('node-fetch')); var encoding = _interopDefault(require('text-encoding')); var _defineProperty = _interopDefault(require('@babel/runtime/helpers/defineProperty')); var msgpack = require('@msgpack/msgpack'); function isValidAddress(str) { var allowAppId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; if (allowAppId && parseInt(str)) return true; return algosdk__default.isValidAddress(str); } var waitForTransactionConfirmation = function waitForTransactionConfirmation(_client, _txIdx) { return algosdk__default.waitForConfirmation(_client, _txIdx, 4); }; var algo = /*#__PURE__*/Object.freeze({ __proto__: null, isValidAddress: isValidAddress, waitForTransactionConfirmation: waitForTransactionConfirmation }); var Eosio = 'eosio'; var Ethereum = 'ethereum'; var Bitcoin = 'bitcoin'; var Litecoin = 'litecoin'; var Telos = 'telos'; var Dogecoin = 'dogecoin'; var BinanceSmartChain = 'binance-smart-chain'; var Polygon = 'polygon'; var Xdai = 'xdai'; var Ravencoin = 'ravencoin'; var Lbry = 'lbry'; var Ultra = 'ultra'; var Arbitrum = 'arbitrum'; var Luxochain = 'luxochain'; var Algorand = 'algorand'; var Fantom = 'fantom'; var Ore = 'ore'; var Libre = 'libre'; var Testnet = 'testnet'; var Mainnet = 'mainnet'; var BitcoinMainnet = 'mainnet'; var BitcoinTestnet = 'testnet'; var EthereumMainnet = 'mainnet'; var EthereumRopsten = 'testnet_ropsten'; var EosioMainnet = 'mainnet'; var EosioJungle3 = 'testnet_jungle3'; var LitecoinMainnet = 'mainnet'; var LitecoinTestnet = 'testnet'; var TelosMainnet = 'mainnet'; var DogecoinMainnet = 'mainnet'; var BinanceSmartChainMainnet = 'mainnet'; var PolygonMainnet = 'mainnet'; var XdaiMainnet = 'mainnet'; var RavencoinMainnet = 'mainnet'; var LbryMainnet = 'mainnet'; var UltraMainnet = 'mainnet'; var UltraTestnet = 'testnet'; var ArbitrumMainnet = 'mainnet'; var LuxochainMainnet = 'mainnet'; var AlgorandMainnet = 'mainnet'; var FantomMainnet = 'mainnet'; var OreMainnet = 'mainnet'; var LibreMainnet = 'mainnet'; var pBTC = 'pbtc'; var pLTC = 'pltc'; var pETH = 'peth'; var pWETH = 'pweth'; var pMKR = 'pmkr'; var pLINK = 'plink'; var pYFI = 'pyfi'; var PNT = 'pnt'; var PTERIA = 'pteria'; var pUNI = 'puni'; var pBAND = 'pband'; var pBAL = 'pbal'; var pCOMP = 'pcomp'; var pSNX = 'psnx'; var pOMG = 'pomg'; var pDAI = 'pdai'; var pANT = 'pant'; var pLRC = 'plrc'; var pUOS = 'puos'; var pBAT = 'pbat'; var pREP = 'prep'; var pZRX = 'pzrx'; var pPNK = 'ppnk'; var pDOGE = 'pdoge'; var pEOS = 'peos'; var IQ = 'iq'; var TLOS = 'tlos'; var pOPIUM = 'popium'; var pBCP = 'pbcp'; var pDEFIPlusPlus = 'pdefiplusplus'; var CGG = 'cgg'; var pUSDC = 'pusdc'; var pUSDT = 'pusdt'; var pRVN = 'prvn'; var pOPEN = 'popen'; var OCP = 'ocp'; var ANRX = 'anrx'; var TFF = 'tff'; var pSAFEMOON = 'psafemoon'; var EFX = 'efx'; var pSEEDS = 'pseeds'; var pLBC = 'plbc'; var USDO = 'usdo'; var GALA = 'gala'; var ZMT = 'zmt'; var BIST = 'bist'; var pVAI = 'pvai'; var WSB = 'wsb'; var LUXO = 'luxo'; var pTET = 'ptet'; var pKEYS = 'pkeys'; var OATH = 'oath'; var pFTM = 'pftm'; var pWFTM = 'pwftm'; var NUCO = 'nuco'; var ORE = 'ore'; var BLOCKSTREAM_BASE_TESTNET_ENDPOINT = 'https://blockstream.info/testnet/api/'; var BLOCKSTREAM_BASE_MAINNET_ENDPOINT = 'https://blockstream.info/api/'; var _getEsploraApi = function _getEsploraApi(_network) { return axios.create({ baseURL: _network === Mainnet ? BLOCKSTREAM_BASE_MAINNET_ENDPOINT : BLOCKSTREAM_BASE_TESTNET_ENDPOINT, timeout: 50000, headers: { 'Content-Type': 'text/plain' } }); }; var _makeEsploraApiCall = function _makeEsploraApiCall(_network, _callType, _apiPath, _params) { return new Promise(function (resolve, reject) { _getEsploraApi(_network)[_callType.toLowerCase()](_apiPath, _params).then(function (_res) { return resolve(_res.data); }).catch(function (_err) { return reject(_err); }); }); }; var broadcastTransaction = function broadcastTransaction(_network, _tx) { return _makeEsploraApiCall(_network, 'POST', '/tx', _tx); }; var getUtxoByAddress = function getUtxoByAddress(_network, _address) { return _makeEsploraApiCall(_network, 'GET', "/address/".concat(_address, "/utxo")); }; var getTransactionHexById = function getTransactionHexById(_network, _txId) { return _makeEsploraApiCall(_network, 'GET', "/tx/".concat(_txId, "/hex")); }; var isValidAddress$1 = function isValidAddress(_address) { return Boolean(validate(_address)); }; var monitorUtxoByAddress = function () { var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(_network, _address, _eventEmitter, _pollingTime, _broadcastEventName, _confirmationEventName) { var _maxRetries, isBroadcasted, txId, utxos, retries, _args2 = arguments; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _maxRetries = _args2.length > 6 && _args2[6] !== undefined ? _args2[6] : 5; isBroadcasted = false; txId = null; utxos = []; retries = 0; _context2.next = 7; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee() { return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return _makeEsploraApiCall(_network, 'GET', "/address/".concat(_address, "/utxo")); case 3: utxos = _context.sent; if (!(utxos.length > 0)) { _context.next = 20; break; } if (!utxos[0].status.confirmed) { _context.next = 13; break; } if (!isBroadcasted) { _eventEmitter.emit(_broadcastEventName, utxos[0]); _eventEmitter.emit('onBtcTxBroadcasted', utxos[0]); } _eventEmitter.emit(_confirmationEventName, utxos[0]); _eventEmitter.emit('onBtcTxConfirmed', utxos[0]); txId = utxos[0].txid; return _context.abrupt("return", true); case 13: if (isBroadcasted) { _context.next = 18; break; } isBroadcasted = true; _eventEmitter.emit(_broadcastEventName, utxos[0]); _eventEmitter.emit('onBtcTxBroadcasted', utxos[0]); return _context.abrupt("return", false); case 18: _context.next = 21; break; case 20: return _context.abrupt("return", false); case 21: _context.next = 29; break; case 23: _context.prev = 23; _context.t0 = _context["catch"](0); if (!(retries === _maxRetries)) { _context.next = 27; break; } throw _context.t0; case 27: retries += 1; return _context.abrupt("return", false); case 29: case "end": return _context.stop(); } } }, _callee, null, [[0, 23]]); })), _pollingTime); case 7: return _context2.abrupt("return", txId); case 8: case "end": return _context2.stop(); } } }, _callee2); })); return function monitorUtxoByAddress(_x, _x2, _x3, _x4, _x5, _x6) { return _ref.apply(this, arguments); }; }(); var waitForTransactionConfirmation$1 = function () { var _ref3 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee4(_network, _tx, _pollingTime) { var transaction; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: transaction = null; _context4.next = 3; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee3() { return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.prev = 0; _context3.next = 3; return _makeEsploraApiCall(_network, 'GET', "/tx/".concat(_tx)); case 3: transaction = _context3.sent; if (!(!transaction || !transaction.status)) { _context3.next = 6; break; } return _context3.abrupt("return", false); case 6: return _context3.abrupt("return", transaction.status.confirmed); case 9: _context3.prev = 9; _context3.t0 = _context3["catch"](0); return _context3.abrupt("return", false); case 12: case "end": return _context3.stop(); } } }, _callee3, null, [[0, 9]]); })), _pollingTime); case 3: return _context4.abrupt("return", transaction); case 4: case "end": return _context4.stop(); } } }, _callee4); })); return function waitForTransactionConfirmation(_x7, _x8, _x9) { return _ref3.apply(this, arguments); }; }(); var btc = /*#__PURE__*/Object.freeze({ __proto__: null, broadcastTransaction: broadcastTransaction, isValidAddress: isValidAddress$1, getUtxoByAddress: getUtxoByAddress, getTransactionHexById: getTransactionHexById, monitorUtxoByAddress: monitorUtxoByAddress, waitForTransactionConfirmation: waitForTransactionConfirmation$1 }); var DOGE_CHAIN_API = 'https://dogechain.info/api/v1'; var _getDogeChainApi = function _getDogeChainApi(_network) { if (_network === Testnet) throw new Error('Dogecoin on Testnet is not supported'); return axios.create({ baseURL: DOGE_CHAIN_API, timeout: 50000, headers: { 'Content-Type': 'application/json' } }); }; var _makeDogeChainApiCall = function _makeDogeChainApiCall(_network, _callType, _apiPath, _params) { return new Promise(function (resolve, reject) { _getDogeChainApi(_network)[_callType.toLowerCase()](_apiPath, _params).then(function (_res) { return resolve(_res.data); }).catch(function (_err) { return reject(_err); }); }); }; var broadcastTransaction$1 = function broadcastTransaction(_network, _tx) { return _makeDogeChainApiCall(_network, 'POST', '/pushtx', { tx: _tx }); }; var getUtxoByAddress$1 = function getUtxoByAddress(_network, _address) { return new Promise(function (_resolve, _reject) { return _makeDogeChainApiCall(_network, 'GET', "/unspent/".concat(_address, "/")).then(function (_ref) { var unspent_outputs = _ref.unspent_outputs, success = _ref.success, error = _ref.error; return success ? _resolve(unspent_outputs) : _reject(error); }).catch(_reject); }); }; var isValidAddress$2 = function isValidAddress(_address) { var res = _address.match(/D{1}[5-9A-HJ-NP-U]{1}[1-9A-HJ-NP-Za-km-z]{32}/g); if (!res) return false; return res[0] === _address; }; var monitorUtxoByAddress$1 = function () { var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(_network, _address, _eventEmitter, _pollingTime, _broadcastEventName, _confirmationEventName) { var _confirmations, isBroadcasted, utxo, _args2 = arguments; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _confirmations = _args2.length > 6 && _args2[6] !== undefined ? _args2[6] : 1; isBroadcasted = false; utxo = null; _context2.next = 5; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee() { var utxos; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return getUtxoByAddress$1(_network, _address); case 2: utxos = _context.sent; if (!(utxos.length > 0)) { _context.next = 19; break; } if (!(utxos[0].confirmations > 0)) { _context.next = 13; break; } if (!isBroadcasted) { _eventEmitter.emit(_broadcastEventName, utxos[0]); isBroadcasted = true; } if (!(utxos[0].confirmations >= _confirmations)) { _context.next = 10; break; } _eventEmitter.emit(_confirmationEventName, utxos[0]); utxo = utxos[0].tx_hash; return _context.abrupt("return", true); case 10: return _context.abrupt("return", false); case 13: if (isBroadcasted) { _context.next = 17; break; } isBroadcasted = true; _eventEmitter.emit(_broadcastEventName, utxos[0]); return _context.abrupt("return", false); case 17: _context.next = 20; break; case 19: return _context.abrupt("return", false); case 20: case "end": return _context.stop(); } } }, _callee); })), _pollingTime); case 5: return _context2.abrupt("return", utxo.startsWith('0x') ? utxo : '0x' + utxo); case 6: case "end": return _context2.stop(); } } }, _callee2); })); return function monitorUtxoByAddress(_x, _x2, _x3, _x4, _x5, _x6) { return _ref2.apply(this, arguments); }; }(); var waitForTransactionConfirmation$2 = function () { var _ref4 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee4(_network, _transactionHash, _pollingTime) { var transactionToReturn; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: transactionToReturn = null; _context4.next = 3; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee3() { var _yield$_makeDogeChain, transaction; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.prev = 0; _context3.next = 3; return _makeDogeChainApiCall(_network, 'GET', "/transaction/".concat(_transactionHash, "/")); case 3: _yield$_makeDogeChain = _context3.sent; transaction = _yield$_makeDogeChain.transaction; transactionToReturn = transaction; return _context3.abrupt("return", transaction.confirmations > 0); case 9: _context3.prev = 9; _context3.t0 = _context3["catch"](0); return _context3.abrupt("return", false); case 12: case "end": return _context3.stop(); } } }, _callee3, null, [[0, 9]]); })), _pollingTime); case 3: return _context4.abrupt("return", transactionToReturn); case 4: case "end": return _context4.stop(); } } }, _callee4); })); return function waitForTransactionConfirmation(_x7, _x8, _x9) { return _ref4.apply(this, arguments); }; }(); var doge = /*#__PURE__*/Object.freeze({ __proto__: null, broadcastTransaction: broadcastTransaction$1, isValidAddress: isValidAddress$2, getUtxoByAddress: getUtxoByAddress$1, monitorUtxoByAddress: monitorUtxoByAddress$1, waitForTransactionConfirmation: waitForTransactionConfirmation$2 }); var LTC_PTOKENS_NODE_TESTNET_API = 'https://ltc-testnet-node-1.ptokens.io/insight-lite-api'; var LTC_PTOKENS_NODE_MAINNET_API = 'https://ltc-node-1.ptokens.io/insight-lite-api'; var _getInsightLiteApi = function _getInsightLiteApi(_network) { return axios.create({ baseURL: _network === Mainnet ? LTC_PTOKENS_NODE_MAINNET_API : LTC_PTOKENS_NODE_TESTNET_API, timeout: 50000, headers: { 'Content-Type': 'application/json' } }); }; var _makeInsightLiteApiCall = function _makeInsightLiteApiCall(_network, _callType, _apiPath, _params) { return new Promise(function (resolve, reject) { _getInsightLiteApi(_network)[_callType.toLowerCase()](_apiPath, _params).then(function (_res) { return resolve(_res.data); }).catch(function (_err) { return reject(_err); }); }); }; var broadcastTransaction$2 = function broadcastTransaction(_network, _tx) { return _makeInsightLiteApiCall(_network, 'POST', '/tx/send', { rawtx: _tx }); }; var getUtxoByAddress$2 = function getUtxoByAddress(_network, _address) { return _makeInsightLiteApiCall(_network, 'GET', "/addrs/".concat(_address, "/utxo")); }; var getTransactionHexById$1 = function getTransactionHexById(_network, _txId) { return _makeInsightLiteApiCall(_network, 'GET', "/rawtx/".concat(_txId)); }; var isValidAddress$3 = function isValidAddress(_address) { var res = _address.match(/(ltc1|[LM3Q2mn])[a-zA-HJ-NP-Z0-9]{26,40}/g); if (!res) return false; return res[0] === _address; }; var monitorUtxoByAddress$2 = function () { var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(_network, _address, _eventEmitter, _pollingTime, _broadcastEventName, _confirmationEventName) { var _confirmations, isBroadcasted, utxo, utxos, _args2 = arguments; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _confirmations = _args2.length > 6 && _args2[6] !== undefined ? _args2[6] : 1; isBroadcasted = false; utxo = null; utxos = []; _context2.next = 6; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee() { return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return _makeInsightLiteApiCall(_network, 'GET', "/addrs/".concat(_address, "/utxo")); case 2: utxos = _context.sent; if (!(utxos.length > 0)) { _context.next = 21; break; } if (!(utxos[0].confirmations > 0)) { _context.next = 14; break; } if (!isBroadcasted) { _eventEmitter.emit(_broadcastEventName, utxos[0]); _eventEmitter.emit('onLtcTxBroadcasted', utxos[0]); isBroadcasted = true; } if (!(utxos[0].confirmations >= _confirmations)) { _context.next = 11; break; } _eventEmitter.emit(_confirmationEventName, utxos[0]); _eventEmitter.emit('onLtcTxConfirmed', utxos[0]); utxo = utxos[0].txid; return _context.abrupt("return", true); case 11: return _context.abrupt("return", false); case 14: if (isBroadcasted) { _context.next = 19; break; } isBroadcasted = true; _eventEmitter.emit(_broadcastEventName, utxos[0]); _eventEmitter.emit('onLtcTxBroadcasted', utxos[0]); return _context.abrupt("return", false); case 19: _context.next = 22; break; case 21: return _context.abrupt("return", false); case 22: case "end": return _context.stop(); } } }, _callee); })), _pollingTime); case 6: return _context2.abrupt("return", utxo); case 7: case "end": return _context2.stop(); } } }, _callee2); })); return function monitorUtxoByAddress(_x, _x2, _x3, _x4, _x5, _x6) { return _ref.apply(this, arguments); }; }(); var waitForTransactionConfirmation$3 = function () { var _ref3 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee4(_network, _tx, _pollingTime) { var transaction; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: transaction = null; _context4.next = 3; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee3() { return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.prev = 0; _context3.next = 3; return _makeInsightLiteApiCall(_network, 'GET', "/tx/".concat(_tx, "/")); case 3: transaction = _context3.sent; return _context3.abrupt("return", transaction.confirmations > 0); case 7: _context3.prev = 7; _context3.t0 = _context3["catch"](0); return _context3.abrupt("return", false); case 10: case "end": return _context3.stop(); } } }, _callee3, null, [[0, 7]]); })), _pollingTime); case 3: return _context4.abrupt("return", transaction); case 4: case "end": return _context4.stop(); } } }, _callee4); })); return function waitForTransactionConfirmation(_x7, _x8, _x9) { return _ref3.apply(this, arguments); }; }(); var ltc = /*#__PURE__*/Object.freeze({ __proto__: null, broadcastTransaction: broadcastTransaction$2, isValidAddress: isValidAddress$3, getUtxoByAddress: getUtxoByAddress$2, getTransactionHexById: getTransactionHexById$1, monitorUtxoByAddress: monitorUtxoByAddress$2, waitForTransactionConfirmation: waitForTransactionConfirmation$3 }); var UINT32_MAX = Math.pow(2, 32); var decodeUint64le = function decodeUint64le(_buffer) { var rem = _buffer.readUInt32LE(0); var top = _buffer.readUInt32LE(4); return top * UINT32_MAX + rem; }; var encodeUint64le = function encodeUint64le(_number) { var buffer = Buffer.alloc(8); var top = Math.floor(_number / UINT32_MAX); var rem = _number - top * UINT32_MAX; buffer.writeUInt32LE(rem, 0); buffer.writeUInt32LE(top, 4); return buffer; }; var converters = /*#__PURE__*/Object.freeze({ __proto__: null, decodeUint64le: decodeUint64le, encodeUint64le: encodeUint64le }); var HEX_PREFIX = '0x'; var zeroEther = '0x00'; var zeroAddress = '0x0000000000000000000000000000000000000000'; var addHexPrefix = function addHexPrefix(_string) { return isHexPrefixed(_string) ? _string : HEX_PREFIX + _string; }; var removeHexPrefix = function removeHexPrefix(_string) { return isHexPrefixed(_string) ? _string.substr(2) : _string; }; var onChainFormat = function onChainFormat(_amount, _decimals) { return _amount.multipliedBy(new BigNumber(Math.pow(10, _decimals))); }; var offChainFormat = function offChainFormat(_amount, _decimals) { return _amount.dividedBy(new BigNumber(Math.pow(10, _decimals))); }; var getAccount = function getAccount(_web3) { return new Promise(function (_resolve, _reject) { _web3.eth.defaultAccount ? _resolve(_web3.eth.defaultAccount) : _web3.eth.getAccounts().then(function (accounts) { return _resolve(accounts[0]); }).catch(function (err) { return _reject(err); }); }); }; var getContract = function getContract(_web3, _abi, _contractAddress, _account) { var contract = new _web3.eth.Contract(_abi, _contractAddress, { defaultAccount: _account }); return contract; }; var getGasLimit = function getGasLimit(_web3) { return new Promise(function (_resolve, _reject) { _web3.eth.getBlock('latest').then(function (_block) { return _resolve(_block.gasLimit); }).catch(function (_err) { return _reject(_err); }); }); }; var isHexPrefixed = function isHexPrefixed(_string) { return _string.slice(0, 2) === HEX_PREFIX; }; var makeContractCall = function () { var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_web3, _method, _options) { var _params, _contract$methods, abi, contractAddress, account, contract, _args = arguments; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _params = _args.length > 3 && _args[3] !== undefined ? _args[3] : []; _context.prev = 1; abi = _options.abi, contractAddress = _options.contractAddress; _context.next = 5; return getAccount(_web3); case 5: account = _context.sent; contract = getContract(_web3, abi, contractAddress, account); return _context.abrupt("return", (_contract$methods = contract.methods)[_method].apply(_contract$methods, _toConsumableArray(_params)).call()); case 10: _context.prev = 10; _context.t0 = _context["catch"](1); throw new Error(_context.t0.message); case 13: case "end": return _context.stop(); } } }, _callee, null, [[1, 10]]); })); return function makeContractCall(_x, _x2, _x3) { return _ref.apply(this, arguments); }; }(); var makeContractSend = function makeContractSend(_web3, _method, _options) { var _params = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; var promiEvent = Web3PromiEvent(); var start = function () { var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2() { var _contract$methods2, abi, contractAddress, value, gasPrice, gas, account, contract; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.prev = 0; abi = _options.abi, contractAddress = _options.contractAddress, value = _options.value, gasPrice = _options.gasPrice, gas = _options.gas; _context2.next = 4; return getAccount(_web3); case 4: account = _context2.sent; contract = getContract(_web3, abi, contractAddress, account); (_contract$methods2 = contract.methods)[_method].apply(_contract$methods2, _toConsumableArray(_params)).send({ from: account, value: value, gasPrice: gasPrice, gas: gas }).once('transactionHash', function (_hash) { return promiEvent.eventEmitter.emit('transactionHash', _hash); }).once('receipt', function (_receipt) { return promiEvent.eventEmitter.emit('receipt', _receipt); }).once('error', function (_error) { return promiEvent.eventEmitter.emit('error', _error); }).then(function () { return promiEvent.resolve(); }); _context2.next = 12; break; case 9: _context2.prev = 9; _context2.t0 = _context2["catch"](0); promiEvent.reject(_context2.t0); case 12: case "end": return _context2.stop(); } } }, _callee2, null, [[0, 9]]); })); return function start() { return _ref2.apply(this, arguments); }; }(); start(); return promiEvent.eventEmitter; }; var sendSignedMethodTx = function sendSignedMethodTx(_web3, _method, _options, _params) { var promiEvent = Web3PromiEvent(); var start = function () { var _ref3 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee3() { var _contract$methods3, abi, contractAddress, value, gas, gasPrice, privateKey, contract, nonce, _yield$_web3$eth$acco, rawTransaction; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.prev = 0; abi = _options.abi, contractAddress = _options.contractAddress, value = _options.value, gas = _options.gas, gasPrice = _options.gasPrice, privateKey = _options.privateKey; contract = getContract(_web3, abi, _web3.eth.defaultAccount); _context3.next = 5; return _web3.eth.getTransactionCount(_web3.eth.defaultAccount, 'pending'); case 5: nonce = _context3.sent; _context3.t0 = _web3.eth.accounts; _context3.t1 = nonce; _context3.t2 = gasPrice; if (_context3.t2) { _context3.next = 13; break; } _context3.next = 12; return _web3.eth.getGasPrice(); case 12: _context3.t2 = _context3.sent; case 13: _context3.t3 = _context3.t2; _context3.t4 = gas; if (_context3.t4) { _context3.next = 19; break; } _context3.next = 18; return getGasLimit(_web3); case 18: _context3.t4 = _context3.sent; case 19: _context3.t5 = _context3.t4; _context3.t6 = contractAddress; _context3.t7 = value; _context3.t8 = (_contract$methods3 = contract.methods)[_method].apply(_contract$methods3, _toConsumableArray(_params)).encodeABI(); _context3.t9 = { nonce: _context3.t1, gasPrice: _context3.t3, gasLimit: _context3.t5, to: _context3.t6, value: _context3.t7, data: _context3.t8 }; _context3.t10 = privateKey; _context3.next = 27; return _context3.t0.signTransaction.call(_context3.t0, _context3.t9, _context3.t10); case 27: _yield$_web3$eth$acco = _context3.sent; rawTransaction = _yield$_web3$eth$acco.rawTransaction; _web3.eth.sendSignedTransaction(rawTransaction).once('transactionHash', function (_hash) { return promiEvent.eventEmitter.emit('transactionHash', _hash); }).once('receipt', function (_receipt) { return promiEvent.eventEmitter.emit('receipt', _receipt); }).once('error', function (_error) { return promiEvent.eventEmitter.emit('error', _error); }).then(function () { return promiEvent.resolve(); }); _context3.next = 35; break; case 32: _context3.prev = 32; _context3.t11 = _context3["catch"](0); promiEvent.reject(_context3.t11); case 35: case "end": return _context3.stop(); } } }, _callee3, null, [[0, 32]]); })); return function start() { return _ref3.apply(this, arguments); }; }(); start(); return promiEvent.eventEmitter; }; var waitForTransactionConfirmation$4 = function () { var _ref4 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee5(_web3, _tx) { var _pollingTime, receipt, _args5 = arguments; return _regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _pollingTime = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : 5000; receipt = null; _context5.next = 4; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee4() { return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _context4.prev = 0; _context4.next = 3; return _web3.eth.getTransactionReceipt(_tx); case 3: receipt = _context4.sent; if (receipt) { _context4.next = 8; break; } return _context4.abrupt("return", false); case 8: if (!receipt.status) { _context4.next = 12; break; } return _context4.abrupt("return", true); case 12: return _context4.abrupt("return", false); case 13: _context4.next = 18; break; case 15: _context4.prev = 15; _context4.t0 = _context4["catch"](0); return _context4.abrupt("return", false); case 18: case "end": return _context4.stop(); } } }, _callee4, null, [[0, 15]]); })), _pollingTime); case 4: return _context5.abrupt("return", receipt); case 5: case "end": return _context5.stop(); } } }, _callee5); })); return function waitForTransactionConfirmation(_x4, _x5) { return _ref4.apply(this, arguments); }; }(); var eth = /*#__PURE__*/Object.freeze({ __proto__: null, addHexPrefix: addHexPrefix, removeHexPrefix: removeHexPrefix, onChainFormat: onChainFormat, offChainFormat: offChainFormat, getAccount: getAccount, getContract: getContract, getGasLimit: getGasLimit, isHexPrefixed: isHexPrefixed, makeContractCall: makeContractCall, makeContractSend: makeContractSend, sendSignedMethodTx: sendSignedMethodTx, waitForTransactionConfirmation: waitForTransactionConfirmation$4, zeroEther: zeroEther, zeroAddress: zeroAddress }); var EOS_TRANSACTION_EXECUTED = 'executed'; var getApi = function getApi(_privateKey, _rpc) { var _signatureProvider = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; if (_rpc && !_privateKey && !_signatureProvider) { var _rpc2 = typeof _rpc === 'string' ? new eosjs.JsonRpc(_rpc, { fetch: fetch }) : _rpc; return new eosjs.Api({ rpc: _rpc2, textDecoder: new encoding.TextDecoder(), textEncoder: new encoding.TextEncoder() }); } var signatureProvider = _signatureProvider || new eosjsJssig.JsSignatureProvider([_privateKey]); var rpc = typeof _rpc === 'string' ? new eosjs.JsonRpc(_rpc, { fetch: fetch }) : _rpc; return new eosjs.Api({ rpc: rpc, signatureProvider: signatureProvider, textDecoder: new encoding.TextDecoder(), textEncoder: new encoding.TextEncoder() }); }; var getAmountInEosFormat = function getAmountInEosFormat(_amount) { var _decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4; var symbol = arguments.length > 2 ? arguments[2] : undefined; return "".concat(parseFloat(_amount).toFixed(_decimals), " ").concat(symbol); }; var isValidAccountName = function isValidAccountName(_accountName) { return new RegExp('(^[a-z1-5.]{0,11}[a-z1-5]$)|(^[a-z1-5.]{12}[a-j1-5]$)').test(_accountName); }; var waitForTransactionConfirmation$5 = function () { var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(_api, _tx) { var _pollingTime, receipt, _args2 = arguments; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _pollingTime = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : 2000; receipt = null; _context2.next = 4; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee() { return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return _api.rpc.history_get_transaction(_tx); case 3: receipt = _context.sent; if (!(receipt && receipt.trx.receipt.status === EOS_TRANSACTION_EXECUTED)) { _context.next = 8; break; } return _context.abrupt("return", true); case 8: return _context.abrupt("return", false); case 9: _context.next = 14; break; case 11: _context.prev = 11; _context.t0 = _context["catch"](0); return _context.abrupt("return", false); case 14: case "end": return _context.stop(); } } }, _callee, null, [[0, 11]]); })), _pollingTime); case 4: return _context2.abrupt("return", receipt); case 5: case "end": return _context2.stop(); } } }, _callee2); })); return function waitForTransactionConfirmation(_x, _x2) { return _ref.apply(this, arguments); }; }(); var eos = /*#__PURE__*/Object.freeze({ __proto__: null, getApi: getApi, getAmountInEosFormat: getAmountInEosFormat, isValidAccountName: isValidAccountName, waitForTransactionConfirmation: waitForTransactionConfirmation$5 }); var RVN_PTOKENS_NODE_MAINNET_API = 'https://corsproxy.ptokens.io/v1/?apiurl=https://api.ravencoin.org/api'; var _getInsightLiteApi$1 = function _getInsightLiteApi(_network) { if (_network === Testnet) throw new Error('Ravecoin Testnet is not supported'); return axios.create({ baseURL: RVN_PTOKENS_NODE_MAINNET_API, timeout: 50000, headers: { 'Content-Type': 'application/json' } }); }; var _makeInsightLiteApiCall$1 = function _makeInsightLiteApiCall(_network, _callType, _apiPath, _params) { return new Promise(function (resolve, reject) { _getInsightLiteApi$1(_network)[_callType.toLowerCase()](_apiPath, _params).then(function (_res) { return resolve(_res.data); }).catch(function (_err) { return reject(_err); }); }); }; var broadcastTransaction$3 = function broadcastTransaction(_network, _tx) { return _makeInsightLiteApiCall$1(_network, 'POST', '/tx/send', { rawtx: _tx }); }; var getUtxoByAddress$3 = function getUtxoByAddress(_network, _address) { return _makeInsightLiteApiCall$1(_network, 'GET', "/addrs/".concat(_address, "/utxo")); }; var getTransactionHexById$2 = function getTransactionHexById(_network, _txId) { return _makeInsightLiteApiCall$1(_network, 'GET', "/rawtx/".concat(_txId)); }; var isValidAddress$4 = function isValidAddress(_address) { var res = _address.match(/(r|R)[a-zA-HJ-NP-Z0-9]{26,40}/g); if (!res) return false; return res[0] === _address; }; var monitorUtxoByAddress$3 = function () { var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(_network, _address, _eventEmitter, _pollingTime, _broadcastEventName, _confirmationEventName) { var _confirmations, isBroadcasted, utxo, utxos, _args2 = arguments; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _confirmations = _args2.length > 6 && _args2[6] !== undefined ? _args2[6] : 1; isBroadcasted = false; utxo = null; utxos = []; _context2.next = 6; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee() { return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return _makeInsightLiteApiCall$1(_network, 'GET', "/addrs/".concat(_address, "/utxo")); case 2: utxos = _context.sent; if (!(utxos.length > 0)) { _context.next = 19; break; } if (!(utxos[0].confirmations > 0)) { _context.next = 13; break; } if (!isBroadcasted) { _eventEmitter.emit(_broadcastEventName, utxos[0]); isBroadcasted = true; } if (!(utxos[0].confirmations >= _confirmations)) { _context.next = 10; break; } _eventEmitter.emit(_confirmationEventName, utxos[0]); utxo = utxos[0].txid; return _context.abrupt("return", true); case 10: return _context.abrupt("return", false); case 13: if (isBroadcasted) { _context.next = 17; break; } isBroadcasted = true; _eventEmitter.emit(_broadcastEventName, utxos[0]); return _context.abrupt("return", false); case 17: _context.next = 20; break; case 19: return _context.abrupt("return", false); case 20: case "end": return _context.stop(); } } }, _callee); })), _pollingTime); case 6: return _context2.abrupt("return", utxo); case 7: case "end": return _context2.stop(); } } }, _callee2); })); return function monitorUtxoByAddress(_x, _x2, _x3, _x4, _x5, _x6) { return _ref.apply(this, arguments); }; }(); var waitForTransactionConfirmation$6 = function () { var _ref3 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee4(_network, _tx) { var _pollingTime, transaction, _args4 = arguments; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _pollingTime = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : 3000; transaction = null; _context4.next = 4; return polling( _asyncToGenerator( _regeneratorRuntime.mark(function _callee3() { return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _context3.prev = 0; _context3.next = 3; return _makeInsightLiteApiCall$1(_network, 'GET', "/tx/".concat(_tx, "/")); case 3: transaction = _context3.sent; return _context3.abrupt("return", transaction.confirmations > 0); case 7: _context3.prev = 7; _context3.t0 = _context3["catch"](0); return _context3.abrupt("return", false); case 10: case "end": return _context3.stop(); } } }, _callee3, null, [[0, 7]]); })), _pollingTime); case 4: return _context4.abrupt("return", transaction); case 5: case "end": return _context4.stop(); } } }, _callee4); })); return function waitForTransactionConfirmation(_x7, _x8) { return _ref3.apply(this, arguments); }; }(); var rvn = /*#__PURE__*/Object.freeze({ __proto__: null, broadcastTransaction: broadcastTransaction$3, isValidAddress: isValidAddress$4, getUtxoByAddress: getUtxoByAddress$3, getTransactionHexById: getTransactionHexById$2, monitorUtxoByAddress: monitorUtxoByAddress$3, waitForTransactionConfirmation: waitForTransactionConfirmation$6 }); var _pTokenNativeBlockcha; var blockchainTypes = { ethereum: Ethereum, eth: Ethereum, eosio: Eosio, eos: Eosio, bitcoin: Bitcoin, btc: Bitcoin, ltc: Litecoin, litecoin: Litecoin, telos: Telos, dogecoin: Dogecoin, doge: Dogecoin, 'binance-smart-chain': BinanceSmartChain, bsc: BinanceSmartChain, matic: Polygon, polygon: Polygon, xdai: Xdai, ravencoin: Ravencoin, rvn: Ravencoin, lbc: Lbry, lbry: Lbry, ultra: Ultra, uos: Ultra, arbitrum: Arbitrum, luxochain: Luxochain, algorand: Algorand, fantom: Fantom, ore: Ore, libre: Libre }; var blockchainShortTypes = { ethereum: 'eth', eosio: 'eos', bitcoin: 'btc', litecoin: 'ltc', telos: 'telos', dogecoin: 'doge', 'binance-smart-chain': 'bsc', matic: 'polygon', polygon: 'polygon', xdai: 'xdai', ravencoin: 'rvn', lbc: 'lbc', lbry: 'lbc', ultra: 'ultra', arbitrum: 'arbitrum', luxochain: 'luxochain', algorand: 'algo', fantom: 'fantom', ftm: 'fantom', ore: 'ore', libre: 'libre' }; var pTokenNativeBlockchain = (_pTokenNativeBlockcha = { pbtc: Bitcoin, pltc: Litecoin, pweth: Ethereum, peth: Ethereum, plink: Ethereum, pyfi: Ethereum, pmkr: Ethereum, pnt: Ethereum, pteria: Ethereum, puni: Ethereum, pband: Ethereum, pbal: Ethereum, pcomp: Ethereum, psnx: Ethereum, pomg: Ethereum, pdai: Ethereum, pant: Ethereum, plrc: Ethereum, puos: Ethereum, pbat: Ethereum, prep: Ethereum, pzrx: Ethereum, ppnk: Ethereum, pdoge: Dogecoin, peos: Eosio, iq: Eosio, tlos: Telos,