@xchainjs/xchain-doge 0.1.2 → 0.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # v.0.2.0 (2022-xx-xx)
2
+
3
+ ## Update
4
+
5
+ - Fetch `txHex` optionally by scanning UTXOs #489
6
+ - Cache list of `txHex`s in `getTxHexFromCache` to avoid same requests for same data #490
7
+ - Export `buildTx` (from `utils`) and `getSendTxUrl` (from `blockcypher-api`)
8
+
9
+ ## Breaking change
10
+
11
+ - Remove unspecific `AddressParams` type
12
+
1
13
  # v.0.1.2 (2022-02-04)
2
14
 
3
15
  - Use latest axios@0.25.0
package/lib/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './types';
2
2
  export * from './client';
3
3
  export * from './const';
4
- export { broadcastTx, getDefaultFees, getDefaultFeesWithRates, validateAddress, calcFee, scanUTXOs, getPrefix, } from './utils';
4
+ export { broadcastTx, buildTx, getDefaultFees, getDefaultFeesWithRates, validateAddress, calcFee, scanUTXOs, getPrefix, } from './utils';
5
+ export { getSendTxUrl } from './blockcypher-api';
5
6
  export { createTxInfo } from './ledger';
package/lib/index.esm.js CHANGED
@@ -64894,6 +64894,7 @@ var Chain;
64894
64894
  Chain["Polkadot"] = "POLKA";
64895
64895
  Chain["BitcoinCash"] = "BCH";
64896
64896
  Chain["Litecoin"] = "LTC";
64897
+ Chain["Terra"] = "TERRA";
64897
64898
  Chain["Doge"] = "DOGE";
64898
64899
  })(Chain || (Chain = {}));
64899
64900
  var BNBChain = Chain.Binance;
@@ -64904,6 +64905,7 @@ var CosmosChain = Chain.Cosmos;
64904
64905
  var PolkadotChain = Chain.Polkadot;
64905
64906
  var BCHChain = Chain.BitcoinCash;
64906
64907
  var LTCChain = Chain.Litecoin;
64908
+ var LUNAChain = Chain.Terra;
64907
64909
  var DOGEChain = Chain.Doge;
64908
64910
  /**
64909
64911
  * Convert chain to string.
@@ -64924,6 +64926,7 @@ var chainToString = Object.assign(function (chainId) {
64924
64926
  _a[Chain.Binance] = 'Binance Chain',
64925
64927
  _a[Chain.Cosmos] = 'Cosmos',
64926
64928
  _a[Chain.Polkadot] = 'Polkadot',
64929
+ _a[Chain.Terra] = 'Terra',
64927
64930
  _a[Chain.Doge] = 'Dogecoin',
64928
64931
  _a));
64929
64932
 
@@ -65053,34 +65056,40 @@ var assetToBase = function (asset) {
65053
65056
  * Based on definition in Thorchain `common`
65054
65057
  * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24
65055
65058
  */
65056
- var AssetBNB = { chain: Chain.Binance, symbol: 'BNB', ticker: 'BNB' };
65059
+ var AssetBNB = { chain: Chain.Binance, symbol: 'BNB', ticker: 'BNB', synth: false };
65057
65060
  /**
65058
65061
  * Base "chain" asset on bitcoin main net.
65059
65062
  *
65060
65063
  * Based on definition in Thorchain `common`
65061
65064
  * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24
65062
65065
  */
65063
- var AssetBTC = { chain: Chain.Bitcoin, symbol: 'BTC', ticker: 'BTC' };
65066
+ var AssetBTC = { chain: Chain.Bitcoin, symbol: 'BTC', ticker: 'BTC', synth: false };
65064
65067
  /**
65065
65068
  * Base "chain" asset on bitcoin cash main net.
65066
65069
  *
65067
65070
  * Based on definition in Thorchain `common`
65068
65071
  * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24
65069
65072
  */
65070
- var AssetBCH = { chain: Chain.BitcoinCash, symbol: 'BCH', ticker: 'BCH' };
65073
+ var AssetBCH = { chain: Chain.BitcoinCash, symbol: 'BCH', ticker: 'BCH', synth: false };
65071
65074
  /**
65072
65075
  * Base "chain" asset on litecoin main net.
65073
65076
  *
65074
65077
  * Based on definition in Thorchain `common`
65075
65078
  * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24
65076
65079
  */
65077
- var AssetLTC = { chain: Chain.Litecoin, symbol: 'LTC', ticker: 'LTC' };
65080
+ var AssetLTC = { chain: Chain.Litecoin, symbol: 'LTC', ticker: 'LTC', synth: false };
65078
65081
  /**
65079
65082
  * Dogecoin asset
65080
65083
  * Based on definition in Thorchain
65081
65084
  * @see https://gitlab.com/thorchain/thornode/-/blob/781-add-doge-chain/common/asset.go#L24
65082
65085
  */
65083
- var AssetDOGE = { chain: Chain.Doge, symbol: 'DOGE', ticker: 'DOGE' };
65086
+ var AssetDOGE = { chain: Chain.Doge, symbol: 'DOGE', ticker: 'DOGE', synth: false };
65087
+ /**
65088
+ * Luna asset
65089
+ * Based on definition in Thorchain
65090
+ * @see TBD
65091
+ */
65092
+ var AssetLUNA = { chain: Chain.Terra, symbol: 'LUNA', ticker: 'LUNA', synth: false };
65084
65093
  var RUNE_TICKER = 'RUNE';
65085
65094
  /**
65086
65095
  * Base "chain" asset on ethereum main net.
@@ -65088,28 +65097,28 @@ var RUNE_TICKER = 'RUNE';
65088
65097
  * Based on definition in Thorchain `common`
65089
65098
  * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24
65090
65099
  */
65091
- var AssetETH = { chain: Chain.Ethereum, symbol: 'ETH', ticker: 'ETH' };
65100
+ var AssetETH = { chain: Chain.Ethereum, symbol: 'ETH', ticker: 'ETH', synth: false };
65092
65101
  /**
65093
65102
  * Base "chain" asset for RUNE-67C on Binance test net.
65094
65103
  *
65095
65104
  * Based on definition in Thorchain `common`
65096
65105
  * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24
65097
65106
  */
65098
- var AssetRune67C = { chain: Chain.Binance, symbol: 'RUNE-67C', ticker: RUNE_TICKER };
65107
+ var AssetRune67C = { chain: Chain.Binance, symbol: 'RUNE-67C', ticker: RUNE_TICKER, synth: false };
65099
65108
  /**
65100
65109
  * Base "chain" asset for RUNE-B1A on Binance main net.
65101
65110
  *
65102
65111
  * Based on definition in Thorchain `common`
65103
65112
  * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24
65104
65113
  */
65105
- var AssetRuneB1A = { chain: Chain.Binance, symbol: 'RUNE-B1A', ticker: RUNE_TICKER };
65114
+ var AssetRuneB1A = { chain: Chain.Binance, symbol: 'RUNE-B1A', ticker: RUNE_TICKER, synth: false };
65106
65115
  /**
65107
65116
  * Base "chain" asset on thorchain main net.
65108
65117
  *
65109
65118
  * Based on definition in Thorchain `common`
65110
65119
  * @see https://gitlab.com/thorchain/thornode/-/blob/master/common/asset.go#L12-24
65111
65120
  */
65112
- var AssetRuneNative = { chain: Chain.THORChain, symbol: RUNE_TICKER, ticker: RUNE_TICKER };
65121
+ var AssetRuneNative = { chain: Chain.THORChain, symbol: RUNE_TICKER, ticker: RUNE_TICKER, synth: false };
65113
65122
  /**
65114
65123
  * Base "chain" asset for RUNE on ethereum main net.
65115
65124
  *
@@ -65120,6 +65129,7 @@ var AssetRuneERC20 = {
65120
65129
  chain: Chain.Ethereum,
65121
65130
  symbol: RUNE_TICKER + "-0x3155ba85d5f96b2d030a4966af206230e46849cb",
65122
65131
  ticker: RUNE_TICKER,
65132
+ synth: false,
65123
65133
  };
65124
65134
  /**
65125
65135
  * Base "chain" asset for RUNE on ethereum main net.
@@ -65131,6 +65141,7 @@ var AssetRuneERC20Testnet = {
65131
65141
  chain: Chain.Ethereum,
65132
65142
  symbol: RUNE_TICKER + "-0xd601c6A3a36721320573885A8d8420746dA3d7A0",
65133
65143
  ticker: RUNE_TICKER,
65144
+ synth: false,
65134
65145
  };
65135
65146
  /**
65136
65147
  * Currency symbols currently supported
@@ -86747,7 +86758,7 @@ var dogeNetwork = function (network) {
86747
86758
  /**
86748
86759
  * Get the balances of an address.
86749
86760
  *
86750
- * @param {AddressParams} params
86761
+ * @param params
86751
86762
  * @returns {Balance[]} The balances of the given address.
86752
86763
  */
86753
86764
  var getBalance$1 = function (params) { return __awaiter(void 0, void 0, void 0, function () {
@@ -86788,32 +86799,85 @@ var validateAddress = function (address, network) {
86788
86799
  return false;
86789
86800
  }
86790
86801
  };
86802
+ // Stores list of txHex in memory to avoid requesting same data
86803
+ var txHexMap = {};
86804
+ /**
86805
+ * Helper to get `hex` of `Tx`
86806
+ *
86807
+ * It will try to get it from cache before requesting it from Sochain
86808
+ */
86809
+ var getTxHex = function (_a) {
86810
+ var txHash = _a.txHash, sochainUrl = _a.sochainUrl, network = _a.network;
86811
+ return __awaiter(void 0, void 0, void 0, function () {
86812
+ var txHex, tx_hex;
86813
+ return __generator(this, function (_b) {
86814
+ switch (_b.label) {
86815
+ case 0:
86816
+ txHex = txHexMap[txHash];
86817
+ if (!!txHex)
86818
+ return [2 /*return*/, txHex
86819
+ // or get it from Sochain
86820
+ ];
86821
+ return [4 /*yield*/, getTx({ hash: txHash, sochainUrl: sochainUrl, network: network })
86822
+ // cache it
86823
+ ];
86824
+ case 1:
86825
+ tx_hex = (_b.sent()).tx_hex;
86826
+ // cache it
86827
+ txHexMap[txHash] = tx_hex;
86828
+ return [2 /*return*/, tx_hex];
86829
+ }
86830
+ });
86831
+ });
86832
+ };
86791
86833
  /**
86792
86834
  * Scan UTXOs from sochain.
86793
86835
  *
86794
- * @param {AddressParams} params
86836
+ * @param params
86795
86837
  * @returns {UTXO[]} The UTXOs of the given address.
86796
86838
  */
86797
- var scanUTXOs = function (params) { return __awaiter(void 0, void 0, void 0, function () {
86798
- var unspent, utxos, _i, unspent_1, utxo;
86799
- return __generator(this, function (_a) {
86800
- switch (_a.label) {
86801
- case 0: return [4 /*yield*/, getUnspentTxs(params)];
86802
- case 1:
86803
- unspent = _a.sent();
86804
- utxos = [];
86805
- for (_i = 0, unspent_1 = unspent; _i < unspent_1.length; _i++) {
86806
- utxo = unspent_1[_i];
86807
- utxos.push({
86808
- hash: utxo.txid,
86809
- index: utxo.output_no,
86810
- value: assetToBase(assetAmount(utxo.value, DOGE_DECIMAL)).amount().toNumber(),
86811
- });
86812
- }
86813
- return [2 /*return*/, utxos];
86814
- }
86839
+ var scanUTXOs = function (_a) {
86840
+ var sochainUrl = _a.sochainUrl, network = _a.network, address = _a.address, withTxHex = _a.withTxHex;
86841
+ return __awaiter(void 0, void 0, void 0, function () {
86842
+ var utxos;
86843
+ return __generator(this, function (_b) {
86844
+ switch (_b.label) {
86845
+ case 0: return [4 /*yield*/, getUnspentTxs({
86846
+ sochainUrl: sochainUrl,
86847
+ network: network,
86848
+ address: address,
86849
+ })];
86850
+ case 1:
86851
+ utxos = _b.sent();
86852
+ return [4 /*yield*/, Promise.all(utxos.map(function (utxo) { return __awaiter(void 0, void 0, void 0, function () {
86853
+ var _a;
86854
+ var _b;
86855
+ return __generator(this, function (_c) {
86856
+ switch (_c.label) {
86857
+ case 0:
86858
+ _b = {
86859
+ hash: utxo.txid,
86860
+ index: utxo.output_no,
86861
+ value: assetToBase(assetAmount(utxo.value, DOGE_DECIMAL)).amount().toNumber()
86862
+ };
86863
+ if (!withTxHex) return [3 /*break*/, 2];
86864
+ return [4 /*yield*/, getTxHex({ txHash: utxo.txid, sochainUrl: sochainUrl, network: network })];
86865
+ case 1:
86866
+ _a = _c.sent();
86867
+ return [3 /*break*/, 3];
86868
+ case 2:
86869
+ _a = undefined;
86870
+ _c.label = 3;
86871
+ case 3: return [2 /*return*/, (_b.txHex = _a,
86872
+ _b)];
86873
+ }
86874
+ });
86875
+ }); }))];
86876
+ case 2: return [2 /*return*/, _b.sent()];
86877
+ }
86878
+ });
86815
86879
  });
86816
- }); };
86880
+ };
86817
86881
  /**
86818
86882
  * Build transcation.
86819
86883
  *
@@ -86821,18 +86885,18 @@ var scanUTXOs = function (params) { return __awaiter(void 0, void 0, void 0, fun
86821
86885
  * @returns {Transaction}
86822
86886
  */
86823
86887
  var buildTx = function (_a) {
86824
- var amount = _a.amount, recipient = _a.recipient, memo = _a.memo, feeRate = _a.feeRate, sender = _a.sender, network = _a.network, sochainUrl = _a.sochainUrl;
86888
+ var amount = _a.amount, recipient = _a.recipient, memo = _a.memo, feeRate = _a.feeRate, sender = _a.sender, network = _a.network, sochainUrl = _a.sochainUrl, _b = _a.withTxHex, withTxHex = _b === void 0 ? false : _b;
86825
86889
  return __awaiter(void 0, void 0, void 0, function () {
86826
- var utxos, feeRateWhole, compiledMemo, targetOutputs, _b, inputs, outputs, psbt, params, _i, inputs_1, utxo, _c, _d, _e, _f;
86827
- var _g;
86828
- return __generator(this, function (_h) {
86829
- switch (_h.label) {
86890
+ var utxos, feeRateWhole, compiledMemo, targetOutputs, _c, inputs, outputs, psbt, params, _i, inputs_1, utxo, _d, _e, _f, _g;
86891
+ var _h;
86892
+ return __generator(this, function (_j) {
86893
+ switch (_j.label) {
86830
86894
  case 0:
86831
86895
  if (!validateAddress(recipient, network))
86832
86896
  throw new Error('Invalid address');
86833
- return [4 /*yield*/, scanUTXOs({ sochainUrl: sochainUrl, network: network, address: sender })];
86897
+ return [4 /*yield*/, scanUTXOs({ sochainUrl: sochainUrl, network: network, address: sender, withTxHex: withTxHex })];
86834
86898
  case 1:
86835
- utxos = _h.sent();
86899
+ utxos = _j.sent();
86836
86900
  if (utxos.length === 0)
86837
86901
  throw new Error('No utxos to send');
86838
86902
  feeRateWhole = Number(feeRate.toFixed(0));
@@ -86847,7 +86911,7 @@ var buildTx = function (_a) {
86847
86911
  if (compiledMemo) {
86848
86912
  targetOutputs.push({ script: compiledMemo, value: 0 });
86849
86913
  }
86850
- _b = accumulative(utxos, targetOutputs, feeRateWhole), inputs = _b.inputs, outputs = _b.outputs;
86914
+ _c = accumulative(utxos, targetOutputs, feeRateWhole), inputs = _c.inputs, outputs = _c.outputs;
86851
86915
  // .inputs and .outputs will be undefined if no solution was found
86852
86916
  if (!inputs || !outputs)
86853
86917
  throw new Error('Balance insufficient for transaction');
@@ -86858,21 +86922,21 @@ var buildTx = function (_a) {
86858
86922
  psbt.setMaximumFeeRate(650000);
86859
86923
  params = { sochainUrl: sochainUrl, network: network, address: sender };
86860
86924
  _i = 0, inputs_1 = inputs;
86861
- _h.label = 2;
86925
+ _j.label = 2;
86862
86926
  case 2:
86863
86927
  if (!(_i < inputs_1.length)) return [3 /*break*/, 5];
86864
86928
  utxo = inputs_1[_i];
86865
- _d = (_c = psbt).addInput;
86866
- _g = {
86929
+ _e = (_d = psbt).addInput;
86930
+ _h = {
86867
86931
  hash: utxo.hash,
86868
86932
  index: utxo.index
86869
86933
  };
86870
- _f = (_e = Buffer).from;
86934
+ _g = (_f = Buffer).from;
86871
86935
  return [4 /*yield*/, getTx(__assign({ hash: utxo.hash }, params))];
86872
86936
  case 3:
86873
- _d.apply(_c, [(_g.nonWitnessUtxo = _f.apply(_e, [(_h.sent()).tx_hex, 'hex']),
86874
- _g)]);
86875
- _h.label = 4;
86937
+ _e.apply(_d, [(_h.nonWitnessUtxo = _g.apply(_f, [(_j.sent()).tx_hex, 'hex']),
86938
+ _h)]);
86939
+ _j.label = 4;
86876
86940
  case 4:
86877
86941
  _i++;
86878
86942
  return [3 /*break*/, 2];
@@ -86909,7 +86973,7 @@ var broadcastTx = function (params) { return __awaiter(void 0, void 0, void 0, f
86909
86973
  return __generator(this, function (_a) {
86910
86974
  switch (_a.label) {
86911
86975
  case 0:
86912
- if (!(params.network === 'testnet')) return [3 /*break*/, 2];
86976
+ if (!(params.network === Network.Testnet)) return [3 /*break*/, 2];
86913
86977
  return [4 /*yield*/, broadcastTxToSochain(params)];
86914
86978
  case 1: return [2 /*return*/, _a.sent()];
86915
86979
  case 2: return [4 /*yield*/, broadcastTxToBlockCypher(params)];
@@ -87266,7 +87330,16 @@ var Client = /** @class */ (function (_super) {
87266
87330
  _b.label = 2;
87267
87331
  case 2:
87268
87332
  feeRate = _a;
87269
- return [4 /*yield*/, buildTx(__assign(__assign({}, params), { feeRate: feeRate, sender: this.getAddress(fromAddressIndex), sochainUrl: this.sochainUrl, network: this.network }))];
87333
+ return [4 /*yield*/, buildTx({
87334
+ amount: params.amount,
87335
+ recipient: params.recipient,
87336
+ memo: params.memo,
87337
+ feeRate: feeRate,
87338
+ sender: this.getAddress(fromAddressIndex),
87339
+ sochainUrl: this.sochainUrl,
87340
+ network: this.network,
87341
+ withTxHex: false,
87342
+ })];
87270
87343
  case 3:
87271
87344
  psbt = (_b.sent()).psbt;
87272
87345
  dogeKeys = this.getDogeKeys(this.phrase, fromAddressIndex);
@@ -87278,7 +87351,6 @@ var Client = /** @class */ (function (_super) {
87278
87351
  nodeUrl = getSendTxUrl$1({
87279
87352
  network: this.network,
87280
87353
  sochainUrl: this.sochainUrl,
87281
- address: this.getAddress(fromAddressIndex),
87282
87354
  });
87283
87355
  }
87284
87356
  else {
@@ -87318,5 +87390,5 @@ var createTxInfo = function (params) { return __awaiter(void 0, void 0, void 0,
87318
87390
  });
87319
87391
  }); };
87320
87392
 
87321
- export { Client, DOGE_DECIMAL, MIN_TX_FEE, broadcastTx, calcFee, createTxInfo, getDefaultFees, getDefaultFeesWithRates, getPrefix, scanUTXOs, validateAddress };
87393
+ export { Client, DOGE_DECIMAL, MIN_TX_FEE, broadcastTx, buildTx, calcFee, createTxInfo, getDefaultFees, getDefaultFeesWithRates, getPrefix, getSendTxUrl, scanUTXOs, validateAddress };
87322
87394
  //# sourceMappingURL=index.esm.js.map