ptokens-utils
Version:
repo holding some utils needed by other packages
1,339 lines (1,319 loc) • 115 kB
JavaScript
'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,