@ledgerhq/live-common 21.15.0 → 21.16.3

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.
Files changed (200) hide show
  1. package/lib/__tests__/families/bitcoin/wallet-btc/utils.test.js +95 -7
  2. package/lib/__tests__/families/bitcoin/wallet-btc/utils.test.js.map +1 -1
  3. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.js +1 -1
  4. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.js.map +1 -1
  5. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js +2 -2
  6. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js.map +1 -1
  7. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.js +20 -10
  8. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.js.map +1 -1
  9. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.js +1 -1
  10. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.js.map +1 -1
  11. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.js +1 -1
  12. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.js.map +1 -1
  13. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.js +2 -2
  14. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.js.map +1 -1
  15. package/lib/account/formatters.d.ts.map +1 -1
  16. package/lib/account/formatters.js +33 -1
  17. package/lib/account/formatters.js.map +1 -1
  18. package/lib/apps/polyfill.d.ts.map +1 -1
  19. package/lib/apps/polyfill.js +3 -0
  20. package/lib/apps/polyfill.js.map +1 -1
  21. package/lib/currencies/sortByMarketcap.d.ts.map +1 -1
  22. package/lib/currencies/sortByMarketcap.js +8 -1
  23. package/lib/currencies/sortByMarketcap.js.map +1 -1
  24. package/lib/currencies/support.d.ts.map +1 -1
  25. package/lib/currencies/support.js.map +1 -1
  26. package/lib/families/bitcoin/bech32m.d.ts +22 -0
  27. package/lib/families/bitcoin/bech32m.d.ts.map +1 -0
  28. package/lib/families/bitcoin/bech32m.js +166 -0
  29. package/lib/families/bitcoin/bech32m.js.map +1 -0
  30. package/lib/families/bitcoin/datasets/bitcoin.d.ts.map +1 -1
  31. package/lib/families/bitcoin/datasets/bitcoin.js +4 -0
  32. package/lib/families/bitcoin/datasets/bitcoin.js.map +1 -1
  33. package/lib/families/bitcoin/datasets/bitcoin_cash.d.ts.map +1 -1
  34. package/lib/families/bitcoin/datasets/bitcoin_cash.js +4 -0
  35. package/lib/families/bitcoin/datasets/bitcoin_cash.js.map +1 -1
  36. package/lib/families/bitcoin/datasets/bitcoin_gold.d.ts.map +1 -1
  37. package/lib/families/bitcoin/datasets/bitcoin_gold.js +4 -0
  38. package/lib/families/bitcoin/datasets/bitcoin_gold.js.map +1 -1
  39. package/lib/families/bitcoin/datasets/dash.d.ts.map +1 -1
  40. package/lib/families/bitcoin/datasets/dash.js +4 -0
  41. package/lib/families/bitcoin/datasets/dash.js.map +1 -1
  42. package/lib/families/bitcoin/datasets/decred.d.ts.map +1 -1
  43. package/lib/families/bitcoin/datasets/decred.js +4 -0
  44. package/lib/families/bitcoin/datasets/decred.js.map +1 -1
  45. package/lib/families/bitcoin/datasets/digibyte.d.ts.map +1 -1
  46. package/lib/families/bitcoin/datasets/digibyte.js +4 -0
  47. package/lib/families/bitcoin/datasets/digibyte.js.map +1 -1
  48. package/lib/families/bitcoin/datasets/dogecoin.d.ts.map +1 -1
  49. package/lib/families/bitcoin/datasets/dogecoin.js +4 -0
  50. package/lib/families/bitcoin/datasets/dogecoin.js.map +1 -1
  51. package/lib/families/bitcoin/datasets/komodo.d.ts.map +1 -1
  52. package/lib/families/bitcoin/datasets/komodo.js +4 -0
  53. package/lib/families/bitcoin/datasets/komodo.js.map +1 -1
  54. package/lib/families/bitcoin/datasets/litecoin.d.ts.map +1 -1
  55. package/lib/families/bitcoin/datasets/litecoin.js +4 -0
  56. package/lib/families/bitcoin/datasets/litecoin.js.map +1 -1
  57. package/lib/families/bitcoin/datasets/peercoin.d.ts.map +1 -1
  58. package/lib/families/bitcoin/datasets/peercoin.js +4 -0
  59. package/lib/families/bitcoin/datasets/peercoin.js.map +1 -1
  60. package/lib/families/bitcoin/datasets/pivx.d.ts.map +1 -1
  61. package/lib/families/bitcoin/datasets/pivx.js +4 -0
  62. package/lib/families/bitcoin/datasets/pivx.js.map +1 -1
  63. package/lib/families/bitcoin/datasets/qtum.d.ts.map +1 -1
  64. package/lib/families/bitcoin/datasets/qtum.js +4 -0
  65. package/lib/families/bitcoin/datasets/qtum.js.map +1 -1
  66. package/lib/families/bitcoin/datasets/stakenet.d.ts.map +1 -1
  67. package/lib/families/bitcoin/datasets/stakenet.js +4 -0
  68. package/lib/families/bitcoin/datasets/stakenet.js.map +1 -1
  69. package/lib/families/bitcoin/datasets/vertcoin.d.ts.map +1 -1
  70. package/lib/families/bitcoin/datasets/vertcoin.js +4 -0
  71. package/lib/families/bitcoin/datasets/vertcoin.js.map +1 -1
  72. package/lib/families/bitcoin/datasets/viacoin.d.ts.map +1 -1
  73. package/lib/families/bitcoin/datasets/viacoin.js +4 -0
  74. package/lib/families/bitcoin/datasets/viacoin.js.map +1 -1
  75. package/lib/families/bitcoin/datasets/zcash.d.ts.map +1 -1
  76. package/lib/families/bitcoin/datasets/zcash.js +4 -0
  77. package/lib/families/bitcoin/datasets/zcash.js.map +1 -1
  78. package/lib/families/bitcoin/datasets/zencash.d.ts.map +1 -1
  79. package/lib/families/bitcoin/datasets/zencash.js +4 -0
  80. package/lib/families/bitcoin/datasets/zencash.js.map +1 -1
  81. package/lib/families/bitcoin/js-buildTransaction.d.ts.map +1 -1
  82. package/lib/families/bitcoin/js-buildTransaction.js +1 -1
  83. package/lib/families/bitcoin/js-buildTransaction.js.map +1 -1
  84. package/lib/families/bitcoin/js-estimateMaxSpendable.d.ts.map +1 -1
  85. package/lib/families/bitcoin/js-estimateMaxSpendable.js +1 -1
  86. package/lib/families/bitcoin/js-estimateMaxSpendable.js.map +1 -1
  87. package/lib/families/bitcoin/js-synchronisation.d.ts.map +1 -1
  88. package/lib/families/bitcoin/js-synchronisation.js +26 -14
  89. package/lib/families/bitcoin/js-synchronisation.js.map +1 -1
  90. package/lib/families/bitcoin/logic.d.ts +1 -1
  91. package/lib/families/bitcoin/logic.d.ts.map +1 -1
  92. package/lib/families/bitcoin/logic.js +6 -0
  93. package/lib/families/bitcoin/logic.js.map +1 -1
  94. package/lib/families/bitcoin/specs.d.ts.map +1 -1
  95. package/lib/families/bitcoin/specs.js +2 -1
  96. package/lib/families/bitcoin/specs.js.map +1 -1
  97. package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts.map +1 -1
  98. package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js +11 -11
  99. package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js.map +1 -1
  100. package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts.map +1 -1
  101. package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js +2 -1
  102. package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js.map +1 -1
  103. package/lib/families/bitcoin/wallet-btc/crypto/digibyte.js +21 -2
  104. package/lib/families/bitcoin/wallet-btc/crypto/digibyte.js.map +1 -1
  105. package/lib/families/bitcoin/wallet-btc/crypto/litecoin.js +2 -2
  106. package/lib/families/bitcoin/wallet-btc/crypto/litecoin.js.map +1 -1
  107. package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts.map +1 -1
  108. package/lib/families/bitcoin/wallet-btc/crypto/zec.js +3 -2
  109. package/lib/families/bitcoin/wallet-btc/crypto/zec.js.map +1 -1
  110. package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts.map +1 -1
  111. package/lib/families/bitcoin/wallet-btc/crypto/zen.js +3 -2
  112. package/lib/families/bitcoin/wallet-btc/crypto/zen.js.map +1 -1
  113. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.d.ts +2 -1
  114. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.d.ts.map +1 -1
  115. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.js +16 -12
  116. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.js.map +1 -1
  117. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.d.ts +2 -1
  118. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.d.ts.map +1 -1
  119. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.js +12 -7
  120. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.js.map +1 -1
  121. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.d.ts +2 -1
  122. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.d.ts.map +1 -1
  123. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.js +12 -7
  124. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.js.map +1 -1
  125. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.d.ts +2 -1
  126. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.d.ts.map +1 -1
  127. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.js.map +1 -1
  128. package/lib/families/bitcoin/wallet-btc/utils.d.ts +38 -1
  129. package/lib/families/bitcoin/wallet-btc/utils.d.ts.map +1 -1
  130. package/lib/families/bitcoin/wallet-btc/utils.js +104 -32
  131. package/lib/families/bitcoin/wallet-btc/utils.js.map +1 -1
  132. package/lib/families/bitcoin/wallet-btc/wallet.d.ts +1 -1
  133. package/lib/families/bitcoin/wallet-btc/wallet.d.ts.map +1 -1
  134. package/lib/families/bitcoin/wallet-btc/wallet.js +9 -6
  135. package/lib/families/bitcoin/wallet-btc/wallet.js.map +1 -1
  136. package/lib/families/bitcoin/wallet-btc/xpub.js +2 -2
  137. package/lib/families/bitcoin/wallet-btc/xpub.js.map +1 -1
  138. package/lib/families/elrond/logic.js +22 -3
  139. package/lib/families/elrond/logic.js.map +1 -1
  140. package/lib/nft/NftMetadataProvider/index.d.ts +7 -0
  141. package/lib/nft/NftMetadataProvider/index.d.ts.map +1 -1
  142. package/lib/nft/NftMetadataProvider/index.js +3 -3
  143. package/lib/nft/NftMetadataProvider/index.js.map +1 -1
  144. package/lib/operation.js +1 -1
  145. package/lib/operation.js.map +1 -1
  146. package/package.json +16 -16
  147. package/src/.DS_Store +0 -0
  148. package/src/__tests__/__snapshots__/all.libcore.ts.snap +62 -123199
  149. package/src/__tests__/families/bitcoin/wallet-btc/utils.test.ts +109 -2
  150. package/src/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.ts +3 -2
  151. package/src/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.ts +2 -2
  152. package/src/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.ts +35 -31
  153. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.ts +3 -2
  154. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.ts +3 -2
  155. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.ts +6 -4
  156. package/src/account/formatters.ts +43 -0
  157. package/src/apps/polyfill.ts +3 -0
  158. package/src/currencies/.DS_Store +0 -0
  159. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +3 -1
  160. package/src/currencies/sortByMarketcap.ts +9 -1
  161. package/src/currencies/support.ts +1 -0
  162. package/src/families/bitcoin/bech32m.ts +197 -0
  163. package/src/families/bitcoin/datasets/bitcoin.ts +4 -0
  164. package/src/families/bitcoin/datasets/bitcoin_cash.ts +4 -0
  165. package/src/families/bitcoin/datasets/bitcoin_gold.ts +4 -0
  166. package/src/families/bitcoin/datasets/dash.ts +4 -0
  167. package/src/families/bitcoin/datasets/decred.ts +4 -0
  168. package/src/families/bitcoin/datasets/digibyte.ts +4 -0
  169. package/src/families/bitcoin/datasets/dogecoin.ts +4 -0
  170. package/src/families/bitcoin/datasets/komodo.ts +4 -0
  171. package/src/families/bitcoin/datasets/litecoin.ts +4 -0
  172. package/src/families/bitcoin/datasets/peercoin.ts +4 -0
  173. package/src/families/bitcoin/datasets/pivx.ts +4 -0
  174. package/src/families/bitcoin/datasets/qtum.ts +4 -0
  175. package/src/families/bitcoin/datasets/stakenet.ts +4 -0
  176. package/src/families/bitcoin/datasets/vertcoin.ts +4 -0
  177. package/src/families/bitcoin/datasets/viacoin.ts +4 -0
  178. package/src/families/bitcoin/datasets/zcash.ts +4 -0
  179. package/src/families/bitcoin/datasets/zencash.ts +4 -0
  180. package/src/families/bitcoin/js-buildTransaction.ts +2 -1
  181. package/src/families/bitcoin/js-estimateMaxSpendable.ts +2 -1
  182. package/src/families/bitcoin/js-synchronisation.ts +30 -16
  183. package/src/families/bitcoin/logic.ts +7 -2
  184. package/src/families/bitcoin/specs.ts +6 -1
  185. package/src/families/bitcoin/wallet-btc/crypto/bitcoin.ts +5 -4
  186. package/src/families/bitcoin/wallet-btc/crypto/bitcoincash.ts +2 -1
  187. package/src/families/bitcoin/wallet-btc/crypto/digibyte.ts +1 -1
  188. package/src/families/bitcoin/wallet-btc/crypto/litecoin.ts +1 -1
  189. package/src/families/bitcoin/wallet-btc/crypto/zec.ts +3 -2
  190. package/src/families/bitcoin/wallet-btc/crypto/zen.ts +3 -2
  191. package/src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts +34 -22
  192. package/src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts +30 -9
  193. package/src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts +30 -9
  194. package/src/families/bitcoin/wallet-btc/pickingstrategies/types.ts +3 -3
  195. package/src/families/bitcoin/wallet-btc/utils.ts +118 -35
  196. package/src/families/bitcoin/wallet-btc/wallet.ts +10 -6
  197. package/src/families/bitcoin/wallet-btc/xpub.ts +5 -5
  198. package/src/families/elrond/logic.ts +1 -1
  199. package/src/nft/NftMetadataProvider/index.tsx +1 -1
  200. package/src/operation.ts +1 -1
@@ -29,6 +29,7 @@ var bchaddrjs_1 = __importDefault(require("bchaddrjs"));
29
29
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
30
30
  // @ts-ignore
31
31
  var address_1 = require("bitcoinjs-lib/src/address");
32
+ var errors_1 = require("@ledgerhq/errors");
32
33
  var types_1 = require("../types");
33
34
  // a mock explorer class that just use js objects
34
35
  var BitcoinCash = /** @class */ (function () {
@@ -67,7 +68,7 @@ var BitcoinCash = /** @class */ (function () {
67
68
  };
68
69
  BitcoinCash.prototype.toOutputScript = function (address) {
69
70
  if (!this.validateAddress(address)) {
70
- throw new Error("Invalid address");
71
+ throw new errors_1.InvalidAddress();
71
72
  }
72
73
  // TODO find a better way to calculate the script from bch address instead of converting to bitcoin address
73
74
  return (0, address_1.toOutputScript)(bchaddrjs_1["default"].toLegacyAddress(address), this.network);
@@ -1 +1 @@
1
- {"version":3,"file":"bitcoincash.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/bitcoincash.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,qHAAqH;AACrH,OAAO,MAAM,CAAC,YAAY,CAAC;AAC3B,oDAAwC;AACxC,wDAAgC;AAChC,6DAA6D;AAC7D,aAAa;AACb,qDAA2D;AAC3D,kCAA2C;AAG3C,iDAAiD;AACjD;IAIE,8DAA8D;IAC9D,qBAAY,EAA6B;YAA3B,OAAO,aAAA;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC;IAClD,CAAC;IAED,4HAA4H;IAC5H,2BAA2B;IAC3B,iDAA2B,GAA3B,UACE,IAAY,EACZ,OAAe,EACf,KAAa;QAEb,IAAM,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,IAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvE,IAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,sBAAO,CAAC,aAAa,CAAC,sBAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACnE;QACD,MAAM,IAAI,KAAK,CAAC,uCAAqC,OAAS,CAAC,CAAC;IAClE,CAAC;IAED,oCAAoC;IACpC,gCAAU,GAAV,UACE,cAAsB,EACtB,IAAY,EACZ,OAAe,EACf,KAAa;QAEb,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,qCAAqC;IACrC,EAAE;IACF,8DAA8D;IAC9D,4DAA4D;IAC5D,0DAA0D;IAC1D,6DAA6D;IAC7D,uCAAiB,GAAjB,UAAkB,OAAe;QAC/B,OAAO,uBAAe,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,oCAAc,GAAd,UAAe,OAAe;QAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACpC;QACD,2GAA2G;QAC3G,OAAO,IAAA,wBAAc,EAAC,sBAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,kDAAkD;IAClD,qCAAe,GAAf,UAAgB,OAAe;QAC7B,OAAO,sBAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,2BAA2B;IAC3B,sCAAgB,GAAhB,UAAiB,OAAe;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACH,kBAAC;AAAD,CAAC,AAlED,IAkEC;AAED,qBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"bitcoincash.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/bitcoincash.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,qHAAqH;AACrH,OAAO,MAAM,CAAC,YAAY,CAAC;AAC3B,oDAAwC;AACxC,wDAAgC;AAChC,6DAA6D;AAC7D,aAAa;AACb,qDAA2D;AAC3D,2CAAkD;AAClD,kCAA2C;AAG3C,iDAAiD;AACjD;IAIE,8DAA8D;IAC9D,qBAAY,EAA6B;YAA3B,OAAO,aAAA;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC;IAClD,CAAC;IAED,4HAA4H;IAC5H,2BAA2B;IAC3B,iDAA2B,GAA3B,UACE,IAAY,EACZ,OAAe,EACf,KAAa;QAEb,IAAM,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,IAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvE,IAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,sBAAO,CAAC,aAAa,CAAC,sBAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACnE;QACD,MAAM,IAAI,KAAK,CAAC,uCAAqC,OAAS,CAAC,CAAC;IAClE,CAAC;IAED,oCAAoC;IACpC,gCAAU,GAAV,UACE,cAAsB,EACtB,IAAY,EACZ,OAAe,EACf,KAAa;QAEb,OAAO,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,qCAAqC;IACrC,EAAE;IACF,8DAA8D;IAC9D,4DAA4D;IAC5D,0DAA0D;IAC1D,6DAA6D;IAC7D,uCAAiB,GAAjB,UAAkB,OAAe;QAC/B,OAAO,uBAAe,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,oCAAc,GAAd,UAAe,OAAe;QAC5B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAClC,MAAM,IAAI,uBAAc,EAAE,CAAC;SAC5B;QACD,2GAA2G;QAC3G,OAAO,IAAA,wBAAc,EAAC,sBAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,kDAAkD;IAClD,qCAAe,GAAf,UAAgB,OAAe;QAC7B,OAAO,sBAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,2BAA2B;IAC3B,sCAAgB,GAAhB,UAAiB,OAAe;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACH,kBAAC;AAAD,CAAC,AAlED,IAkEC;AAED,qBAAe,WAAW,CAAC"}
@@ -14,11 +14,30 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
17
36
  var __importDefault = (this && this.__importDefault) || function (mod) {
18
37
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
38
  };
20
39
  exports.__esModule = true;
21
- var bech32_1 = require("bech32");
40
+ var bech32 = __importStar(require("bech32"));
22
41
  var bs58check_1 = __importDefault(require("bs58check"));
23
42
  var base_1 = __importDefault(require("./base"));
24
43
  var Digibyte = /** @class */ (function (_super) {
@@ -39,7 +58,7 @@ var Digibyte = /** @class */ (function (_super) {
39
58
  Digibyte.prototype.validateAddress = function (address) {
40
59
  // bech32 address
41
60
  if (address.substring(0, 3) === "dgb") {
42
- if (bech32_1.bech32.decodeUnsafe(address)) {
61
+ if (bech32.decodeUnsafe(address)) {
43
62
  return true;
44
63
  }
45
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"digibyte.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/digibyte.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iCAAgC;AAChC,wDAAkC;AAClC,gDAA0B;AAE1B;IAAuB,4BAAI;IACzB,8DAA8D;IAC9D,kBAAY,EAA6B;YAA3B,OAAO,aAAA;QAArB;QACE,4EAA4E;QAC5E,oEAAoE;QACpE,kBAAM,EAAE,OAAO,SAAA,EAAE,CAAC,SAKnB;QAJC,KAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QACjE,KAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;QACnC,KAAI,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC;QAClC,KAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC;;IAClD,CAAC;IAED,kCAAe,GAAf,UAAgB,OAAe;QAC7B,iBAAiB;QACjB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE;YACrC,IAAI,eAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC;aACb;SACF;QACD,eAAe;QACf,IAAM,GAAG,GAAG,sBAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,OAAO,CACL,GAAG,CAAC,MAAM,GAAG,CAAC;YACd,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAC3E,CAAC;IACJ,CAAC;IACH,eAAC;AAAD,CAAC,AA3BD,CAAuB,iBAAI,GA2B1B;AAED,qBAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"digibyte.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/digibyte.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAiC;AACjC,wDAAkC;AAClC,gDAA0B;AAE1B;IAAuB,4BAAI;IACzB,8DAA8D;IAC9D,kBAAY,EAA6B;YAA3B,OAAO,aAAA;QAArB;QACE,4EAA4E;QAC5E,oEAAoE;QACpE,kBAAM,EAAE,OAAO,SAAA,EAAE,CAAC,SAKnB;QAJC,KAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QACjE,KAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;QACnC,KAAI,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC;QAClC,KAAI,CAAC,OAAO,CAAC,0BAA0B,GAAG,KAAK,CAAC;;IAClD,CAAC;IAED,kCAAe,GAAf,UAAgB,OAAe;QAC7B,iBAAiB;QACjB,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE;YACrC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC;aACb;SACF;QACD,eAAe;QACf,IAAM,GAAG,GAAG,sBAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,OAAO,CACL,GAAG,CAAC,MAAM,GAAG,CAAC;YACd,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAC3E,CAAC;IACJ,CAAC;IACH,eAAC;AAAD,CAAC,AA3BD,CAAuB,iBAAI,GA2B1B;AAED,qBAAe,QAAQ,CAAC"}
@@ -42,7 +42,7 @@ var bip32 = __importStar(require("bip32"));
42
42
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
43
43
  // @ts-ignore
44
44
  var address_1 = require("bitcoinjs-lib/src/address");
45
- var bech32_1 = require("bech32");
45
+ var bech32 = __importStar(require("bech32"));
46
46
  var types_1 = require("../types");
47
47
  var base_1 = __importDefault(require("./base"));
48
48
  // Todo copy paste from bitcoin.ts. we can merge them later
@@ -117,7 +117,7 @@ var Litecoin = /** @class */ (function (_super) {
117
117
  Litecoin.prototype.validateAddress = function (address) {
118
118
  // bech32 address
119
119
  if (address.substring(0, 3) === "ltc") {
120
- if (bech32_1.bech32.decodeUnsafe(address)) {
120
+ if (bech32.decodeUnsafe(address)) {
121
121
  return true;
122
122
  }
123
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"litecoin.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/litecoin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"litecoin.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/litecoin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zec.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/zec.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,cAAM,KAAM,YAAW,OAAO;IAE5B,OAAO,EAAE,GAAG,CAAC;gBAGD,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE;IAQzC,YAAY,CAAC,QAAQ,EAAE,MAAM;IAQ7B,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAOtE,UAAU,CACR,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM;IAKT,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAIjC,cAAc,CAAC,OAAO,EAAE,MAAM;IAY9B,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKzC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAG3C;AAED,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"zec.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/zec.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,cAAM,KAAM,YAAW,OAAO;IAE5B,OAAO,EAAE,GAAG,CAAC;gBAGD,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE;IAQzC,YAAY,CAAC,QAAQ,EAAE,MAAM;IAQ7B,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAOtE,UAAU,CACR,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM;IAKT,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAIjC,cAAc,CAAC,OAAO,EAAE,MAAM;IAY9B,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKzC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAG3C;AAED,eAAe,KAAK,CAAC"}
@@ -10,8 +10,9 @@ var address_1 = require("bitcoinjs-lib/src/address");
10
10
  // @ts-ignore
11
11
  var zcash_bitcore_lib_1 = __importDefault(require("zcash-bitcore-lib"));
12
12
  var bs58check_1 = __importDefault(require("bs58check"));
13
- var types_1 = require("../types");
14
13
  var coininfo_1 = __importDefault(require("coininfo"));
14
+ var errors_1 = require("@ledgerhq/errors");
15
+ var types_1 = require("../types");
15
16
  var ZCash = /** @class */ (function () {
16
17
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
18
  function ZCash(_a) {
@@ -51,7 +52,7 @@ var ZCash = /** @class */ (function () {
51
52
  };
52
53
  ZCash.prototype.toOutputScript = function (address) {
53
54
  if (!this.validateAddress(address)) {
54
- throw new Error("Invalid address");
55
+ throw new errors_1.InvalidAddress();
55
56
  }
56
57
  // TODO find a better way to calculate the script from zec address instead of converting to bitcoin address
57
58
  return (0, address_1.toOutputScript)(ZCash.toBitcoinAddr(address), coininfo_1["default"].bitcoin.main.toBitcoinJS());
@@ -1 +1 @@
1
- {"version":3,"file":"zec.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/zec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zec.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/zec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zen.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/zen.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,cAAM,GAAI,YAAW,OAAO;IAE1B,OAAO,EAAE,GAAG,CAAC;gBAGD,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE;IAyBzC,YAAY,CAAC,QAAQ,EAAE,MAAM;IAS7B,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAStE,UAAU,CACR,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM;IAKT,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAIjC,cAAc,CAAC,OAAO,EAAE,MAAM;IAY9B,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAazC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAG3C;AAED,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"zen.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/zen.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,cAAM,GAAI,YAAW,OAAO;IAE1B,OAAO,EAAE,GAAG,CAAC;gBAGD,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,GAAG,CAAA;KAAE;IAyBzC,YAAY,CAAC,QAAQ,EAAE,MAAM;IAS7B,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAStE,UAAU,CACR,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM;IAKT,iBAAiB,CAAC,OAAO,EAAE,MAAM;IAIjC,cAAc,CAAC,OAAO,EAAE,MAAM;IAY9B,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAazC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAG3C;AAED,eAAe,GAAG,CAAC"}
@@ -10,8 +10,9 @@ var address_1 = require("bitcoinjs-lib/src/address");
10
10
  // @ts-ignore
11
11
  var zcash_bitcore_lib_1 = __importDefault(require("zcash-bitcore-lib"));
12
12
  var bs58check_1 = __importDefault(require("bs58check"));
13
- var types_1 = require("../types");
14
13
  var coininfo_1 = __importDefault(require("coininfo"));
14
+ var errors_1 = require("@ledgerhq/errors");
15
+ var types_1 = require("../types");
15
16
  var Zen = /** @class */ (function () {
16
17
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
18
  function Zen(_a) {
@@ -71,7 +72,7 @@ var Zen = /** @class */ (function () {
71
72
  };
72
73
  Zen.prototype.toOutputScript = function (address) {
73
74
  if (!this.validateAddress(address)) {
74
- throw new Error("Invalid address");
75
+ throw new errors_1.InvalidAddress();
75
76
  }
76
77
  // TODO find a better way to calculate the script from zen address instead of converting to bitcoin address
77
78
  return (0, address_1.toOutputScript)(Zen.toBitcoinAddr(address), coininfo_1["default"].bitcoin.main.toBitcoinJS());
@@ -1 +1 @@
1
- {"version":3,"file":"zen.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/zen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zen.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/crypto/zen.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@ import BigNumber from "bignumber.js";
2
2
  import { Output } from "../storage/types";
3
3
  import Xpub from "../xpub";
4
4
  import { PickingStrategy } from "./types";
5
+ import { OutputInfo } from "..";
5
6
  export declare class CoinSelect extends PickingStrategy {
6
- selectUnspentUtxosToUse(xpub: Xpub, amount: BigNumber, feePerByte: number, nbOutputsWithoutChange: number): Promise<{
7
+ selectUnspentUtxosToUse(xpub: Xpub, outputs: OutputInfo[], feePerByte: number): Promise<{
7
8
  totalValue: BigNumber;
8
9
  unspentUtxos: Output[];
9
10
  fee: number;
@@ -1 +1 @@
1
- {"version":3,"file":"CoinSelect.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK1C,qBAAa,UAAW,SAAQ,eAAe;IAEvC,uBAAuB,CAC3B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,sBAAsB,EAAE,MAAM;;;;;;CAwLjC"}
1
+ {"version":3,"file":"CoinSelect.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,qBAAa,UAAW,SAAQ,eAAe;IAEvC,uBAAuB,CAC3B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,UAAU,EAAE,EACrB,UAAU,EAAE,MAAM;;;;;;CAoMrB"}
@@ -87,9 +87,9 @@ var CoinSelect = /** @class */ (function (_super) {
87
87
  return _super !== null && _super.apply(this, arguments) || this;
88
88
  }
89
89
  // eslint-disable-next-line class-methods-use-this
90
- CoinSelect.prototype.selectUnspentUtxosToUse = function (xpub, amount, feePerByte, nbOutputsWithoutChange) {
90
+ CoinSelect.prototype.selectUnspentUtxosToUse = function (xpub, outputs, feePerByte) {
91
91
  return __awaiter(this, void 0, void 0, function () {
92
- var addresses, unspentUtxos, _a, TOTAL_TRIES, fixedSize, oneOutputSize, oneInputSize, currentAvailableValue, effectiveUtxos, i, outEffectiveValue, effectiveUtxo, notInputFees, currentValue, currentSelection, actualTarget, currentWaste, bestWaste, bestSelection, bestSelectionNeedChangeoutput, currentSelectionNeedChangeoutput, i, backtrack, nbInput, eu, eu, total, unspentUtxoSelected, i, fee, pickingStrategy;
92
+ var addresses, unspentUtxos, _a, TOTAL_TRIES, fixedSize, outputAddresses, oneOutputSize, oneInputSize, currentAvailableValue, effectiveUtxos, i, outEffectiveValue, effectiveUtxo, notInputFees, currentValue, currentSelection, amount, actualTarget, currentWaste, bestWaste, bestSelection, bestSelectionNeedChangeoutput, currentSelectionNeedChangeoutput, i, backtrack, nbInput, eu, eu, total, unspentUtxoSelected, i, fee, pickingStrategy;
93
93
  var _this = this;
94
94
  return __generator(this, function (_b) {
95
95
  switch (_b.label) {
@@ -105,9 +105,14 @@ var CoinSelect = /** @class */ (function (_super) {
105
105
  });
106
106
  TOTAL_TRIES = 100000;
107
107
  (0, logs_1.log)("picking strategy", "utxos", unspentUtxos);
108
- fixedSize = utils.estimateTxSize(0, 0, this.crypto, this.derivationMode);
109
- oneOutputSize = utils.estimateTxSize(0, 1, this.crypto, this.derivationMode) - fixedSize;
110
- oneInputSize = utils.estimateTxSize(1, 0, this.crypto, this.derivationMode) - fixedSize;
108
+ fixedSize = utils.maxTxSize(0, [], false, this.crypto, this.derivationMode);
109
+ outputAddresses = outputs.map(function (o) { return o.address; });
110
+ oneOutputSize = outputAddresses.length > 0
111
+ ? utils.maxTxSize(0, [outputAddresses[0]], false, this.crypto, this.derivationMode) - fixedSize
112
+ : utils.maxTxSize(0, [], true, this.crypto, this.derivationMode) -
113
+ fixedSize;
114
+ oneInputSize = utils.maxTxSize(1, [], false, this.crypto, this.derivationMode) -
115
+ fixedSize;
111
116
  currentAvailableValue = 0;
112
117
  effectiveUtxos = [];
113
118
  for (i = 0; i < unspentUtxos.length; i += 1) {
@@ -121,9 +126,10 @@ var CoinSelect = /** @class */ (function (_super) {
121
126
  currentAvailableValue += outEffectiveValue;
122
127
  }
123
128
  }
124
- notInputFees = feePerByte * (fixedSize + oneOutputSize * nbOutputsWithoutChange);
129
+ notInputFees = feePerByte * (fixedSize + oneOutputSize * outputs.length);
125
130
  currentValue = 0;
126
131
  currentSelection = [];
132
+ amount = outputs.reduce(function (sum, output) { return sum.plus(output.value); }, new bignumber_js_1["default"](0));
127
133
  actualTarget = notInputFees + amount.toNumber();
128
134
  // Insufficient funds
129
135
  if (currentAvailableValue < actualTarget) {
@@ -146,14 +152,14 @@ var CoinSelect = /** @class */ (function (_super) {
146
152
  currentSelectionNeedChangeoutput = true;
147
153
  currentWaste =
148
154
  feePerByte *
149
- utils.estimateTxSize(nbInput, nbOutputsWithoutChange + 1, this.crypto, this.derivationMode);
155
+ utils.maxTxSizeCeil(nbInput, outputAddresses, true, this.crypto, this.derivationMode);
150
156
  }
151
157
  else {
152
158
  // changeoutput is not required
153
159
  currentSelectionNeedChangeoutput = false;
154
160
  currentWaste =
155
161
  feePerByte *
156
- utils.estimateTxSize(nbInput, nbOutputsWithoutChange, this.crypto, this.derivationMode) +
162
+ utils.maxTxSizeCeil(nbInput, outputAddresses, false, this.crypto, this.derivationMode) +
157
163
  currentValue -
158
164
  actualTarget;
159
165
  }
@@ -202,9 +208,7 @@ var CoinSelect = /** @class */ (function (_super) {
202
208
  }
203
209
  }
204
210
  fee = feePerByte *
205
- utils.estimateTxSize(unspentUtxoSelected.length, bestSelectionNeedChangeoutput
206
- ? nbOutputsWithoutChange + 1
207
- : nbOutputsWithoutChange, this.crypto, this.derivationMode);
211
+ utils.maxTxSizeCeil(unspentUtxoSelected.length, outputAddresses, bestSelectionNeedChangeoutput, this.crypto, this.derivationMode);
208
212
  return [2 /*return*/, {
209
213
  totalValue: total,
210
214
  unspentUtxos: unspentUtxoSelected,
@@ -213,7 +217,7 @@ var CoinSelect = /** @class */ (function (_super) {
213
217
  }];
214
218
  }
215
219
  pickingStrategy = new DeepFirst_1.DeepFirst(this.crypto, this.derivationMode, this.excludedUTXOs);
216
- return [2 /*return*/, pickingStrategy.selectUnspentUtxosToUse(xpub, amount, feePerByte, nbOutputsWithoutChange)];
220
+ return [2 /*return*/, pickingStrategy.selectUnspentUtxosToUse(xpub, outputs, feePerByte)];
217
221
  }
218
222
  });
219
223
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CoinSelect.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAqC;AACrC,iCAAyC;AACzC,2CAAoD;AAGpD,iCAA0C;AAC1C,8CAAkC;AAClC,yCAAwC;AACxC,uCAAqC;AAErC;IAAgC,8BAAe;IAA/C;;IA8LA,CAAC;IA7LC,kDAAkD;IAC5C,4CAAuB,GAA7B,UACE,IAAU,EACV,MAAiB,EACjB,UAAkB,EAClB,sBAA8B;;;;;;4BAIZ,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;wBAAzC,SAAS,GAAG,SAA6B;wBAC/C,IAAA,UAAG,EAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;wBAEjB,KAAA,gBAAO,CAAA;wBAC1B,qBAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,UAAC,OAAO,IAAK,OAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAA5C,CAA4C,CAAC,CACzE,EAAA;;wBAHG,YAAY,GAAG,kBACnB,SAEC,EACF,CAAC,MAAM,CACN,UAAC,CAAC;4BACA,OAAA,CAAC,KAAI,CAAC,aAAa,CAAC,MAAM,CACxB,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,YAAY,EAA5D,CAA4D,CACpE,CAAC,MAAM;wBAFR,CAEQ,CACX;wBACK,WAAW,GAAG,MAAM,CAAC;wBAC3B,IAAA,UAAG,EAAC,kBAAkB,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;wBAEzC,SAAS,GAAG,KAAK,CAAC,cAAc,CACpC,CAAC,EACD,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,CACpB,CAAC;wBAEI,aAAa,GACjB,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;wBAErE,YAAY,GAChB,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;wBAGvE,qBAAqB,GAAG,CAAC,CAAC;wBAC1B,cAAc,GAGb,EAAE,CAAC;wBAER,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;4BACzC,iBAAiB,GACrB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,YAAY,CAAC;4BAC5D,IAAI,iBAAiB,GAAG,CAAC,EAAE;gCACnB,aAAa,GAAG;oCACpB,KAAK,EAAE,CAAC;oCACR,cAAc,EAAE,iBAAiB;iCAClC,CAAC;gCACF,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gCACnC,qBAAqB,IAAI,iBAAiB,CAAC;6BAC5C;yBACF;wBAIK,YAAY,GAChB,UAAU,GAAG,CAAC,SAAS,GAAG,aAAa,GAAG,sBAAsB,CAAC,CAAC;wBAGhE,YAAY,GAAG,CAAC,CAAC;wBACf,gBAAgB,GAAc,EAAE,CAAC;wBAGjC,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;wBAEtD,qBAAqB;wBACrB,IAAI,qBAAqB,GAAG,YAAY,EAAE;4BACxC,MAAM,IAAI,yBAAgB,EAAE,CAAC;yBAC9B;wBACD,+BAA+B;wBAC/B,cAAc,GAAG,IAAA,eAAM,EAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;wBAC1D,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;wBACtC,YAAY,GAAG,CAAC,CAAC;wBACjB,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;wBACpC,aAAa,GAAc,EAAE,CAAC;wBAG9B,6BAA6B,GAAG,KAAK,CAAC;wBACtC,gCAAgC,GAAG,KAAK,CAAC;wBAC7C,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;4BACnC,SAAS,GAAG,KAAK,CAAC;4BAChB,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC,MAAM,CAAC;4BACzD,IAAI,YAAY,IAAI,YAAY,EAAE;gCAChC,IAAI,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,EAAE;oCAC5D,2BAA2B;oCAC3B,gCAAgC,GAAG,IAAI,CAAC;oCACxC,YAAY;wCACV,UAAU;4CACV,KAAK,CAAC,cAAc,CAClB,OAAO,EACP,sBAAsB,GAAG,CAAC,EAC1B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,CACpB,CAAC;iCACL;qCAAM;oCACL,+BAA+B;oCAC/B,gCAAgC,GAAG,KAAK,CAAC;oCACzC,YAAY;wCACV,UAAU;4CACR,KAAK,CAAC,cAAc,CAClB,OAAO,EACP,sBAAsB,EACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,CACpB;4CACH,YAAY;4CACZ,YAAY,CAAC;iCAChB;gCACD,IAAI,YAAY,IAAI,SAAS,EAAE;oCAC7B,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC;oCACzC,OAAO,cAAc,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE;wCACnD,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qCAC3B;oCACD,aAAa,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;oCAC7C,SAAS,GAAG,YAAY,CAAC;oCACzB,6BAA6B,GAAG,gCAAgC,CAAC;iCAClE;gCACD,SAAS,GAAG,IAAI,CAAC;6BAClB;4BACD,IAAI,gBAAgB,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE;gCACpD,SAAS,GAAG,IAAI,CAAC;6BAClB;4BACD,iBAAiB;4BACjB,IAAI,SAAS,EAAE;gCACb,OACE,gBAAgB,CAAC,MAAM,GAAG,CAAC;oCAC3B,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,EAC9C;oCACA,gBAAgB,CAAC,GAAG,EAAE,CAAC;iCACxB;gCACD,qEAAqE;gCACrE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;oCACjC,MAAM;iCACP;gCACD,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gCAChD,EAAE,GAAG,cAAc,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gCACvD,YAAY,IAAI,EAAE,CAAC,cAAc,CAAC;6BACnC;iCAAM;gCAEC,EAAE,GAAG,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gCACnD,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC5B,YAAY,IAAI,EAAE,CAAC,cAAc,CAAC;6BACnC;yBACF;wBACD,iBAAiB;wBACjB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;4BACxB,KAAK,GAAG,IAAI,yBAAS,CAAC,CAAC,CAAC,CAAC;4BACvB,mBAAmB,GAAa,EAAE,CAAC;4BACzC,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gCAChD,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;oCACpB,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oCAChE,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;iCACjE;6BACF;4BACK,GAAG,GACP,UAAU;gCACV,KAAK,CAAC,cAAc,CAClB,mBAAmB,CAAC,MAAM,EAC1B,6BAA6B;oCAC3B,CAAC,CAAC,sBAAsB,GAAG,CAAC;oCAC5B,CAAC,CAAC,sBAAsB,EAC1B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,CACpB,CAAC;4BACJ,sBAAO;oCACL,UAAU,EAAE,KAAK;oCACjB,YAAY,EAAE,mBAAmB;oCACjC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oCACnB,gBAAgB,EAAE,6BAA6B;iCAChD,EAAC;yBACH;wBAEK,eAAe,GAAG,IAAI,qBAAS,CACnC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,aAAa,CACnB,CAAC;wBACF,sBAAO,eAAe,CAAC,uBAAuB,CAC5C,IAAI,EACJ,MAAM,EACN,UAAU,EACV,sBAAsB,CACvB,EAAC;;;;KACH;IACH,iBAAC;AAAD,CAAC,AA9LD,CAAgC,uBAAe,GA8L9C;AA9LY,gCAAU"}
1
+ {"version":3,"file":"CoinSelect.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@ import BigNumber from "bignumber.js";
2
2
  import { Output } from "../storage/types";
3
3
  import Xpub from "../xpub";
4
4
  import { PickingStrategy } from "./types";
5
+ import { OutputInfo } from "..";
5
6
  export declare class DeepFirst extends PickingStrategy {
6
- selectUnspentUtxosToUse(xpub: Xpub, amount: BigNumber, feePerByte: number, nbOutputsWithoutChange: number): Promise<{
7
+ selectUnspentUtxosToUse(xpub: Xpub, outputs: OutputInfo[], feePerByte: number): Promise<{
7
8
  totalValue: BigNumber;
8
9
  unspentUtxos: Output[];
9
10
  fee: number;
@@ -1 +1 @@
1
- {"version":3,"file":"DeepFirst.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1C,qBAAa,SAAU,SAAQ,eAAe;IAEtC,uBAAuB,CAC3B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,sBAAsB,EAAE,MAAM;;;;;;CAkEjC"}
1
+ {"version":3,"file":"DeepFirst.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,qBAAa,SAAU,SAAQ,eAAe;IAEtC,uBAAuB,CAC3B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,UAAU,EAAE,EACrB,UAAU,EAAE,MAAM;;;;;;CAuFrB"}
@@ -86,9 +86,9 @@ var DeepFirst = /** @class */ (function (_super) {
86
86
  return _super !== null && _super.apply(this, arguments) || this;
87
87
  }
88
88
  // eslint-disable-next-line class-methods-use-this
89
- DeepFirst.prototype.selectUnspentUtxosToUse = function (xpub, amount, feePerByte, nbOutputsWithoutChange) {
89
+ DeepFirst.prototype.selectUnspentUtxosToUse = function (xpub, outputs, feePerByte) {
90
90
  return __awaiter(this, void 0, void 0, function () {
91
- var addresses, unspentUtxos, _a, txSizeNoInput, fee, sizePerInput, sizePerOutput, total, unspentUtxoSelected, i;
91
+ var addresses, unspentUtxos, _a, outputAddresses, txSizeNoInput, fee, emptyTxSize, sizePerInput, sizePerOutput, total, unspentUtxoSelected, amount, i;
92
92
  var _this = this;
93
93
  return __generator(this, function (_b) {
94
94
  switch (_b.label) {
@@ -102,15 +102,20 @@ var DeepFirst = /** @class */ (function (_super) {
102
102
  unspentUtxos = _a.apply(void 0, [_b.sent()]).filter(function (o) {
103
103
  return !_this.excludedUTXOs.filter(function (x) { return x.hash === o.output_hash && x.outputIndex === o.output_index; }).length;
104
104
  });
105
+ outputAddresses = outputs.map(function (o) { return o.address; });
105
106
  unspentUtxos = (0, lodash_1.sortBy)(unspentUtxos, "block_height");
106
- txSizeNoInput = utils.estimateTxSize(0, nbOutputsWithoutChange, this.crypto, this.derivationMode);
107
+ txSizeNoInput = utils.maxTxSize(0, outputAddresses, false, this.crypto, this.derivationMode);
107
108
  fee = txSizeNoInput * feePerByte;
108
- sizePerInput = utils.estimateTxSize(1, 0, this.crypto, this.derivationMode) -
109
- utils.estimateTxSize(0, 0, this.crypto, this.derivationMode);
110
- sizePerOutput = utils.estimateTxSize(0, 1, this.crypto, this.derivationMode) -
111
- utils.estimateTxSize(0, 0, this.crypto, this.derivationMode);
109
+ emptyTxSize = utils.maxTxSizeCeil(0, [], false, this.crypto, this.derivationMode);
110
+ sizePerInput = utils.maxTxSize(1, [], false, this.crypto, this.derivationMode) -
111
+ emptyTxSize;
112
+ sizePerOutput = (outputAddresses[0]
113
+ ? utils.maxTxSize(0, [outputAddresses[0]], false, this.crypto, this.derivationMode)
114
+ : utils.maxTxSize(0, [], true, this.crypto, this.derivationMode)) -
115
+ emptyTxSize;
112
116
  total = new bignumber_js_1["default"](0);
113
117
  unspentUtxoSelected = [];
118
+ amount = outputs.reduce(function (sum, output) { return sum.plus(output.value); }, new bignumber_js_1["default"](0));
114
119
  i = 0;
115
120
  while (total.lt(amount.plus(fee))) {
116
121
  if (!unspentUtxos[i]) {
@@ -1 +1 @@
1
- {"version":3,"file":"DeepFirst.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAqC;AACrC,iCAAyC;AACzC,2CAAoD;AAGpD,iCAA0C;AAC1C,8CAAkC;AAClC,uCAAqC;AAErC;IAA+B,6BAAe;IAA9C;;IAwEA,CAAC;IAvEC,kDAAkD;IAC5C,2CAAuB,GAA7B,UACE,IAAU,EACV,MAAiB,EACjB,UAAkB,EAClB,sBAA8B;;;;;;4BAIZ,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;wBAAzC,SAAS,GAAG,SAA6B;wBAC/C,IAAA,UAAG,EAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;wBAElB,KAAA,gBAAO,CAAA;wBACxB,qBAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,UAAC,OAAO,IAAK,OAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAA5C,CAA4C,CAAC,CACzE,EAAA;;wBAHC,YAAY,GAAG,kBACjB,SAEC,EACF,CAAC,MAAM,CACN,UAAC,CAAC;4BACA,OAAA,CAAC,KAAI,CAAC,aAAa,CAAC,MAAM,CACxB,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,YAAY,EAA5D,CAA4D,CACpE,CAAC,MAAM;wBAFR,CAEQ,CACX;wBAED,YAAY,GAAG,IAAA,eAAM,EAAC,YAAY,EAAE,cAAc,CAAC,CAAC;wBAE9C,aAAa,GAAG,KAAK,CAAC,cAAc,CACxC,CAAC,EACD,sBAAsB,EACtB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,CACpB,CAAC;wBACE,GAAG,GAAG,aAAa,GAAG,UAAU,CAAC;wBAC/B,YAAY,GAChB,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC;4BAC5D,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;wBAEzD,aAAa,GACjB,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC;4BAC5D,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;wBAE3D,KAAK,GAAG,IAAI,yBAAS,CAAC,CAAC,CAAC,CAAC;wBACvB,mBAAmB,GAAa,EAAE,CAAC;wBAErC,CAAC,GAAG,CAAC,CAAC;wBACV,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;4BACjC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gCACpB,MAAM,IAAI,yBAAgB,EAAE,CAAC;6BAC9B;4BACD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;4BAC1C,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC1C,GAAG,IAAI,YAAY,GAAG,UAAU,CAAC;4BACjC,CAAC,IAAI,CAAC,CAAC;yBACR;wBAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,GAAG,UAAU,CAAC,EAAE;4BAChE,0CAA0C;4BAC1C,sBAAO;oCACL,UAAU,EAAE,KAAK;oCACjB,YAAY,EAAE,mBAAmB;oCACjC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oCACnB,gBAAgB,EAAE,KAAK;iCACxB,EAAC;yBACH;wBACD,GAAG,IAAI,aAAa,GAAG,UAAU,CAAC,CAAC,8BAA8B;wBACjE,sBAAO;gCACL,UAAU,EAAE,KAAK;gCACjB,YAAY,EAAE,mBAAmB;gCACjC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gCACnB,gBAAgB,EAAE,IAAI;6BACvB,EAAC;;;;KACH;IACH,gBAAC;AAAD,CAAC,AAxED,CAA+B,uBAAe,GAwE7C;AAxEY,8BAAS"}
1
+ {"version":3,"file":"DeepFirst.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@ import BigNumber from "bignumber.js";
2
2
  import { Output } from "../storage/types";
3
3
  import Xpub from "../xpub";
4
4
  import { PickingStrategy } from "./types";
5
+ import { OutputInfo } from "..";
5
6
  export declare class Merge extends PickingStrategy {
6
- selectUnspentUtxosToUse(xpub: Xpub, amount: BigNumber, feePerByte: number, nbOutputsWithoutChange: number): Promise<{
7
+ selectUnspentUtxosToUse(xpub: Xpub, outputs: OutputInfo[], feePerByte: number): Promise<{
7
8
  totalValue: BigNumber;
8
9
  unspentUtxos: Output[];
9
10
  fee: number;
@@ -1 +1 @@
1
- {"version":3,"file":"Merge.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1C,qBAAa,KAAM,SAAQ,eAAe;IAElC,uBAAuB,CAC3B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,sBAAsB,EAAE,MAAM;;;;;;CAkEjC"}
1
+ {"version":3,"file":"Merge.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,qBAAa,KAAM,SAAQ,eAAe;IAElC,uBAAuB,CAC3B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,UAAU,EAAE,EACrB,UAAU,EAAE,MAAM;;;;;;CAuFrB"}
@@ -86,9 +86,9 @@ var Merge = /** @class */ (function (_super) {
86
86
  return _super !== null && _super.apply(this, arguments) || this;
87
87
  }
88
88
  // eslint-disable-next-line class-methods-use-this
89
- Merge.prototype.selectUnspentUtxosToUse = function (xpub, amount, feePerByte, nbOutputsWithoutChange) {
89
+ Merge.prototype.selectUnspentUtxosToUse = function (xpub, outputs, feePerByte) {
90
90
  return __awaiter(this, void 0, void 0, function () {
91
- var addresses, unspentUtxos, _a, sizePerInput, sizePerOutput, txSizeNoInput, fee, total, unspentUtxoSelected, i;
91
+ var addresses, unspentUtxos, _a, outputAddresses, emptyTxSize, sizePerInput, sizePerOutput, txSizeNoInput, fee, total, unspentUtxoSelected, i, amount;
92
92
  var _this = this;
93
93
  return __generator(this, function (_b) {
94
94
  switch (_b.label) {
@@ -102,16 +102,21 @@ var Merge = /** @class */ (function (_super) {
102
102
  unspentUtxos = _a.apply(void 0, [_b.sent()]).filter(function (o) {
103
103
  return !_this.excludedUTXOs.filter(function (x) { return x.hash === o.output_hash && x.outputIndex === o.output_index; }).length;
104
104
  });
105
- sizePerInput = utils.estimateTxSize(1, 0, this.crypto, this.derivationMode) -
106
- utils.estimateTxSize(0, 0, this.crypto, this.derivationMode);
107
- sizePerOutput = utils.estimateTxSize(0, 1, this.crypto, this.derivationMode) -
108
- utils.estimateTxSize(0, 0, this.crypto, this.derivationMode);
105
+ outputAddresses = outputs.map(function (o) { return o.address; });
106
+ emptyTxSize = utils.maxTxSizeCeil(0, [], false, this.crypto, this.derivationMode);
107
+ sizePerInput = utils.maxTxSize(1, [], false, this.crypto, this.derivationMode) -
108
+ emptyTxSize;
109
+ sizePerOutput = (outputAddresses[0]
110
+ ? utils.maxTxSize(0, [outputAddresses[0]], false, this.crypto, this.derivationMode)
111
+ : utils.maxTxSize(0, [], true, this.crypto, this.derivationMode)) -
112
+ emptyTxSize;
109
113
  unspentUtxos = (0, lodash_1.sortBy)(unspentUtxos, function (utxo) { return parseInt(utxo.value, 10); });
110
- txSizeNoInput = utils.estimateTxSize(0, nbOutputsWithoutChange, this.crypto, this.derivationMode);
114
+ txSizeNoInput = utils.maxTxSize(0, outputAddresses, false, this.crypto, this.derivationMode);
111
115
  fee = txSizeNoInput * feePerByte;
112
116
  total = new bignumber_js_1["default"](0);
113
117
  unspentUtxoSelected = [];
114
118
  i = 0;
119
+ amount = outputs.reduce(function (sum, output) { return sum.plus(output.value); }, new bignumber_js_1["default"](0));
115
120
  while (total.lt(amount.plus(fee))) {
116
121
  if (!unspentUtxos[i]) {
117
122
  throw new errors_1.NotEnoughBalance();
@@ -1 +1 @@
1
- {"version":3,"file":"Merge.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Merge.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import BigNumber from "bignumber.js";
2
+ import { OutputInfo } from "..";
2
3
  import { ICrypto } from "../crypto/types";
3
4
  import { Output } from "../storage/types";
4
5
  import Xpub from "../xpub";
@@ -13,7 +14,7 @@ export declare abstract class PickingStrategy {
13
14
  hash: string;
14
15
  outputIndex: number;
15
16
  }>);
16
- abstract selectUnspentUtxosToUse(xpub: Xpub, amount: BigNumber, feePerByte: number, nbOutputsWithoutChange: number): Promise<{
17
+ abstract selectUnspentUtxosToUse(xpub: Xpub, outputs: OutputInfo[], feePerByte: number): Promise<{
17
18
  unspentUtxos: Output[];
18
19
  totalValue: BigNumber;
19
20
  fee: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,8BAAsB,eAAe;IACnC,MAAM,EAAE,OAAO,CAAC;IAEhB,cAAc,EAAE,MAAM,CAAC;IAGvB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;gBAGD,MAAM,EAAE,OAAO,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAOJ,QAAQ,CAAC,uBAAuB,CAC9B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,sBAAsB,EAAE,MAAM,GAC7B,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,EAAE,SAAS,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/types.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,8BAAsB,eAAe;IACnC,MAAM,EAAE,OAAO,CAAC;IAEhB,cAAc,EAAE,MAAM,CAAC;IAGvB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;gBAGD,MAAM,EAAE,OAAO,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAOJ,QAAQ,CAAC,uBAAuB,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,UAAU,EAAE,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,EAAE,SAAS,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/types.ts"],"names":[],"mappings":";;;AAKA;IAWE,yBACE,MAAe,EACf,cAAsB,EACtB,aAGE;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAaH,sBAAC;AAAD,CAAC,AAnCD,IAmCC;AAnCqB,0CAAe"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/families/bitcoin/wallet-btc/pickingstrategies/types.ts"],"names":[],"mappings":";;;AAMA;IAWE,yBACE,MAAe,EACf,cAAsB,EACtB,aAGE;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAYH,sBAAC;AAAD,CAAC,AAlCD,IAkCC;AAlCqB,0CAAe"}
@@ -6,7 +6,44 @@ export declare function toHexInt(number: any): string;
6
6
  export declare function compressPublicKey(publicKey: any): any;
7
7
  export declare function createXPUB(depth: any, fingerprint: any, childnum: any, chaincode: any, publicKey: any, network: any): string;
8
8
  export declare function byteSize(count: number): 1 | 3 | 5 | 9;
9
- export declare function estimateTxSize(inputCount: number, outputCount: number, currency: ICrypto, derivationMode: string): number;
9
+ export declare function outputSize(currency: ICrypto, addr: string): number;
10
+ /**
11
+ * Calculates the maximun size of an imaginary transaction in virtual bytes
12
+ * (vB). 1vB = 4 WU (weight units). If a cryptocurrency doesn't use segwit, then
13
+ * 1 byte = 1 vB. Weight units are used for segwit transactions, where certain
14
+ * bytes of the transaction is counted as 4 WU and some as 1 WU. The resulting
15
+ * size is then ceil(totalWU/4) vB.
16
+ *
17
+ * refer to https://medium.com/coinmonks/on-bitcoin-transaction-sizes-part-2-9445373d17f4
18
+ * and https://bitcoin.stackexchange.com/questions/96017/what-are-the-sizes-of-single-sig-and-2-of-3-multisig-taproot-inputs
19
+ * and https://bitcoinops.org/en/tools/calc-size/
20
+ *
21
+ * Suggested improvement: I assume that these calculations won't be exactly
22
+ * correct for altcoins (but I don't know). Therefore we should move this
23
+ * functionality into ICrypto, to make it easier to provide slightly different
24
+ * calculations for different cryptocurrencies.
25
+ *
26
+ * The reason for the name maxTxSize, instead of just txSize, is that the size
27
+ * of modern ecdsa signatures aren't know beforehand. They are either 71 or
28
+ * 72 bytes. This function always count with 72 byte signatures.
29
+ *
30
+ * The size of schnorr signatures is expected to be 65 bytes, since the Bitcoin
31
+ * hardware app appends the optional sighash type 01 at the end of the
32
+ * signature. If the app removes that optional byte, this functions should be
33
+ * updated to use 64 byte schnorr signatures, even if 65 still is an acceptable
34
+ * maximum.
35
+ *
36
+ * @param inputCount Number of inputs of the imaginary transaction
37
+ * @param outputAddrs The addresses of the outputs, excluding change.
38
+ * @param includeChange Indicates whether we should add a change output. The
39
+ * change output will have the same derivation mode as the inputs. See
40
+ * derivationMode parameter.
41
+ * @param currency The currency for which the calculation is done.
42
+ * @param derivationMode The derivation mode used for calculating the size of
43
+ * the inputs.
44
+ */
45
+ export declare function maxTxSize(inputCount: number, outputAddrs: string[], includeChange: boolean, currency: ICrypto, derivationMode: string): number;
46
+ export declare function maxTxSizeCeil(inputCount: number, outputAddrs: string[], includeChange: boolean, currency: ICrypto, derivationMode: string): number;
10
47
  export declare function computeDustAmount(currency: ICrypto, txSize: number): any;
11
48
  export declare function isValidAddress(address: string, currency?: Currency): boolean;
12
49
  export declare function isTaprootAddress(address: string, currency?: Currency): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/families/bitcoin/wallet-btc/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAInD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,YAQtC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,UAQ3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,UAIrC;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,UAWnC;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,GAAG,OAa/C;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,GAAG,EACV,WAAW,EAAE,GAAG,EAChB,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,GAAG,UASb;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,iBAWrC;AAGD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,OAAO,EACjB,cAAc,EAAE,MAAM,UAoCvB;AAGD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAalE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,WASlE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,WAQpE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/families/bitcoin/wallet-btc/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAKnD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,YAQtC;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,UAQ3C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,UAIrC;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,UAWnC;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,GAAG,OAa/C;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,GAAG,EACV,WAAW,EAAE,GAAG,EAChB,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,GAAG,EACd,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,GAAG,UASb;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,iBAWrC;AA6CD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,SAAS,CACvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,OAAO,EACjB,cAAc,EAAE,MAAM,GACrB,MAAM,CAiBR;AAED,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EAAE,EACrB,aAAa,EAAE,OAAO,EACtB,QAAQ,EAAE,OAAO,EACjB,cAAc,EAAE,MAAM,GACrB,MAAM,CASR;AAGD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAalE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,WASlE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,WAQpE"}