@ledgerhq/live-common 21.5.1-btcjs.3 → 21.7.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.
Files changed (489) hide show
  1. package/lib/__tests__/test-helpers/bridge.js +2 -2
  2. package/lib/__tests__/test-helpers/bridge.js.map +1 -1
  3. package/lib/account/addAccounts.d.ts.map +1 -1
  4. package/lib/account/addAccounts.js +1 -2
  5. package/lib/account/addAccounts.js.map +1 -1
  6. package/lib/account/formatters.js +2 -2
  7. package/lib/account/formatters.js.map +1 -1
  8. package/lib/account/support.d.ts.map +1 -1
  9. package/lib/account/support.js +1 -24
  10. package/lib/account/support.js.map +1 -1
  11. package/lib/api/explorerConfig/index.d.ts.map +1 -1
  12. package/lib/api/explorerConfig/index.js +0 -43
  13. package/lib/api/explorerConfig/index.js.map +1 -1
  14. package/lib/bot/engine.js +1 -1
  15. package/lib/bot/index.d.ts +1 -2
  16. package/lib/bot/index.d.ts.map +1 -1
  17. package/lib/bot/index.js +38 -21
  18. package/lib/bot/index.js.map +1 -1
  19. package/lib/bot/test.bot.js +1 -4
  20. package/lib/bot/test.bot.js.map +1 -1
  21. package/lib/bridge/jsHelpers.d.ts +2 -6
  22. package/lib/bridge/jsHelpers.d.ts.map +1 -1
  23. package/lib/bridge/jsHelpers.js +9 -22
  24. package/lib/bridge/jsHelpers.js.map +1 -1
  25. package/lib/cross.d.ts.map +1 -1
  26. package/lib/cross.js +2 -28
  27. package/lib/cross.js.map +1 -1
  28. package/lib/env.d.ts +10 -5
  29. package/lib/env.d.ts.map +1 -1
  30. package/lib/env.js +5 -0
  31. package/lib/env.js.map +1 -1
  32. package/lib/env.react.d.ts +1 -1
  33. package/lib/env.react.d.ts.map +1 -1
  34. package/lib/exchange/swap/getKYCStatus.d.ts.map +1 -1
  35. package/lib/exchange/swap/getKYCStatus.js +11 -5
  36. package/lib/exchange/swap/getKYCStatus.js.map +1 -1
  37. package/lib/exchange/swap/mock.d.ts +2 -1
  38. package/lib/exchange/swap/mock.d.ts.map +1 -1
  39. package/lib/exchange/swap/mock.js +15 -1
  40. package/lib/exchange/swap/mock.js.map +1 -1
  41. package/lib/families/bitcoin/account.d.ts.map +1 -1
  42. package/lib/families/bitcoin/account.js +2 -3
  43. package/lib/families/bitcoin/account.js.map +1 -1
  44. package/lib/families/bitcoin/datasets/bitcoin.js +6 -6
  45. package/lib/families/bitcoin/datasets/bitcoin.js.map +1 -1
  46. package/lib/families/bitcoin/datasets/litecoin.js +3 -3
  47. package/lib/families/bitcoin/datasets/litecoin.js.map +1 -1
  48. package/lib/families/bitcoin/serialization.d.ts +2 -2
  49. package/lib/families/bitcoin/serialization.d.ts.map +1 -1
  50. package/lib/families/bitcoin/serialization.js +4 -8
  51. package/lib/families/bitcoin/serialization.js.map +1 -1
  52. package/lib/families/bitcoin/specs.d.ts +2 -0
  53. package/lib/families/bitcoin/specs.d.ts.map +1 -1
  54. package/lib/families/bitcoin/specs.js +34 -28
  55. package/lib/families/bitcoin/specs.js.map +1 -1
  56. package/lib/families/bitcoin/speculos-deviceActions.js +2 -2
  57. package/lib/families/bitcoin/speculos-deviceActions.js.map +1 -1
  58. package/lib/families/bitcoin/test-dataset.js +1 -1
  59. package/lib/families/bitcoin/test-dataset.js.map +1 -1
  60. package/lib/families/bitcoin/transaction.d.ts +3 -3
  61. package/lib/families/bitcoin/transaction.d.ts.map +1 -1
  62. package/lib/families/bitcoin/transaction.js +61 -64
  63. package/lib/families/bitcoin/transaction.js.map +1 -1
  64. package/lib/families/bitcoin/types.d.ts +36 -66
  65. package/lib/families/bitcoin/types.d.ts.map +1 -1
  66. package/lib/families/bitcoin/types.js +1 -16
  67. package/lib/families/bitcoin/types.js.map +1 -1
  68. package/lib/families/crypto_org/js-synchronisation.d.ts.map +1 -1
  69. package/lib/families/crypto_org/js-synchronisation.js +5 -13
  70. package/lib/families/crypto_org/js-synchronisation.js.map +1 -1
  71. package/lib/families/elrond/js-synchronisation.d.ts.map +1 -1
  72. package/lib/families/elrond/js-synchronisation.js +4 -12
  73. package/lib/families/elrond/js-synchronisation.js.map +1 -1
  74. package/lib/families/elrond/logic.js +22 -3
  75. package/lib/families/elrond/logic.js.map +1 -1
  76. package/lib/families/elrond/test-dataset.d.ts.map +1 -1
  77. package/lib/families/elrond/test-dataset.js +79 -76
  78. package/lib/families/elrond/test-dataset.js.map +1 -1
  79. package/lib/families/ethereum/synchronisation.d.ts.map +1 -1
  80. package/lib/families/ethereum/synchronisation.js +5 -14
  81. package/lib/families/ethereum/synchronisation.js.map +1 -1
  82. package/lib/families/ethereum/test-dataset.d.ts.map +1 -1
  83. package/lib/families/ethereum/test-dataset.js +2 -3
  84. package/lib/families/ethereum/test-dataset.js.map +1 -1
  85. package/lib/families/polkadot/js-synchronisation.d.ts.map +1 -1
  86. package/lib/families/polkadot/js-synchronisation.js +4 -12
  87. package/lib/families/polkadot/js-synchronisation.js.map +1 -1
  88. package/lib/families/stellar/js-synchronization.d.ts.map +1 -1
  89. package/lib/families/stellar/js-synchronization.js +4 -12
  90. package/lib/families/stellar/js-synchronization.js.map +1 -1
  91. package/lib/families/tezos/synchronisation.d.ts.map +1 -1
  92. package/lib/families/tezos/synchronisation.js +7 -19
  93. package/lib/families/tezos/synchronisation.js.map +1 -1
  94. package/lib/generated/bridge/js.d.ts +0 -4
  95. package/lib/generated/bridge/js.d.ts.map +1 -1
  96. package/lib/generated/bridge/js.js +18 -20
  97. package/lib/generated/bridge/js.js.map +1 -1
  98. package/lib/generated/specs.d.ts +2 -0
  99. package/lib/generated/specs.d.ts.map +1 -1
  100. package/lib/migrations/accounts-dataset.d.ts.map +1 -1
  101. package/lib/migrations/accounts-dataset.js +2 -4
  102. package/lib/migrations/accounts-dataset.js.map +1 -1
  103. package/lib/migrations/accounts.d.ts.map +1 -1
  104. package/lib/migrations/accounts.js +0 -17
  105. package/lib/migrations/accounts.js.map +1 -1
  106. package/lib/mock/account.d.ts.map +1 -1
  107. package/lib/mock/account.js +1 -2
  108. package/lib/mock/account.js.map +1 -1
  109. package/lib/network.d.ts +3 -1
  110. package/lib/network.d.ts.map +1 -1
  111. package/lib/network.js +2 -13
  112. package/lib/network.js.map +1 -1
  113. package/package.json +2 -30
  114. package/src/.DS_Store +0 -0
  115. package/src/__tests__/.DS_Store +0 -0
  116. package/src/__tests__/__snapshots__/.DS_Store +0 -0
  117. package/src/__tests__/__snapshots__/all.libcore.ts.snap +27169 -487
  118. package/src/__tests__/__snapshots__/portfolio.v2.ts.snap +0 -3
  119. package/src/__tests__/test-helpers/bridge.ts +2 -2
  120. package/src/account/addAccounts.ts +1 -2
  121. package/src/account/formatters.ts +2 -2
  122. package/src/account/support.ts +1 -24
  123. package/src/api/explorerConfig/index.ts +4 -35
  124. package/src/bot/engine.ts +1 -1
  125. package/src/bot/index.ts +25 -10
  126. package/src/bot/test.bot.ts +1 -6
  127. package/src/bridge/jsHelpers.ts +8 -37
  128. package/src/cross.ts +2 -30
  129. package/src/env.ts +5 -0
  130. package/src/exchange/swap/getKYCStatus.ts +5 -1
  131. package/src/exchange/swap/mock.ts +11 -0
  132. package/src/families/bitcoin/account.ts +1 -2
  133. package/src/families/bitcoin/datasets/bitcoin.ts +6 -6
  134. package/src/families/bitcoin/datasets/litecoin.ts +6 -6
  135. package/src/families/bitcoin/serialization.ts +0 -6
  136. package/src/families/bitcoin/specs.ts +36 -28
  137. package/src/families/bitcoin/speculos-deviceActions.ts +1 -1
  138. package/src/families/bitcoin/test-dataset.ts +1 -1
  139. package/src/families/bitcoin/transaction.ts +93 -98
  140. package/src/families/bitcoin/types.ts +37 -95
  141. package/src/families/crypto_org/js-synchronisation.ts +4 -22
  142. package/src/families/elrond/js-synchronisation.ts +3 -11
  143. package/src/families/elrond/logic.ts +1 -1
  144. package/src/families/elrond/test-dataset.ts +89 -84
  145. package/src/families/ethereum/synchronisation.ts +4 -13
  146. package/src/families/ethereum/test-dataset.ts +2 -3
  147. package/src/families/polkadot/js-synchronisation.ts +3 -11
  148. package/src/families/stellar/js-synchronization.ts +4 -12
  149. package/src/families/tezos/synchronisation.ts +3 -15
  150. package/src/generated/bridge/js.ts +0 -3
  151. package/src/migrations/accounts-dataset.ts +0 -3
  152. package/src/migrations/accounts.ts +0 -18
  153. package/src/mock/account.ts +0 -2
  154. package/src/network.ts +9 -10
  155. package/lib/__tests__/families/bitcoin/logic.d.ts +0 -2
  156. package/lib/__tests__/families/bitcoin/logic.d.ts.map +0 -1
  157. package/lib/__tests__/families/bitcoin/logic.js +0 -39
  158. package/lib/__tests__/families/bitcoin/logic.js.map +0 -1
  159. package/lib/__tests__/families/bitcoin/wallet-btc/bitcoin.test.d.ts +0 -2
  160. package/lib/__tests__/families/bitcoin/wallet-btc/bitcoin.test.d.ts.map +0 -1
  161. package/lib/__tests__/families/bitcoin/wallet-btc/bitcoin.test.js +0 -85
  162. package/lib/__tests__/families/bitcoin/wallet-btc/bitcoin.test.js.map +0 -1
  163. package/lib/__tests__/families/bitcoin/wallet-btc/utils.test.d.ts +0 -2
  164. package/lib/__tests__/families/bitcoin/wallet-btc/utils.test.d.ts.map +0 -1
  165. package/lib/__tests__/families/bitcoin/wallet-btc/utils.test.js +0 -134
  166. package/lib/__tests__/families/bitcoin/wallet-btc/utils.test.js.map +0 -1
  167. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.d.ts +0 -2
  168. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.d.ts.map +0 -1
  169. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.js +0 -119
  170. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.js.map +0 -1
  171. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.d.ts +0 -2
  172. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.d.ts.map +0 -1
  173. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js +0 -196
  174. package/lib/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.js.map +0 -1
  175. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.d.ts +0 -2
  176. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.d.ts.map +0 -1
  177. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.js +0 -376
  178. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.js.map +0 -1
  179. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.reorg.integration.test.d.ts +0 -2
  180. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.reorg.integration.test.d.ts.map +0 -1
  181. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.reorg.integration.test.js +0 -250
  182. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.reorg.integration.test.js.map +0 -1
  183. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.synced.unit.test.d.ts +0 -2
  184. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.synced.unit.test.d.ts.map +0 -1
  185. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.synced.unit.test.js +0 -128
  186. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.synced.unit.test.js.map +0 -1
  187. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.syncing.integration.test.d.ts +0 -2
  188. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.syncing.integration.test.d.ts.map +0 -1
  189. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.syncing.integration.test.js +0 -396
  190. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.syncing.integration.test.js.map +0 -1
  191. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.d.ts +0 -2
  192. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.d.ts.map +0 -1
  193. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.js +0 -286
  194. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.js.map +0 -1
  195. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.d.ts +0 -2
  196. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.d.ts.map +0 -1
  197. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.js +0 -276
  198. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.js.map +0 -1
  199. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.d.ts +0 -2
  200. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.d.ts.map +0 -1
  201. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.js +0 -414
  202. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.js.map +0 -1
  203. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.litecoin.test.d.ts +0 -2
  204. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.litecoin.test.d.ts.map +0 -1
  205. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.litecoin.test.js +0 -269
  206. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.txs.litecoin.test.js.map +0 -1
  207. package/lib/families/bitcoin/bridge/js.d.ts +0 -8
  208. package/lib/families/bitcoin/bridge/js.d.ts.map +0 -1
  209. package/lib/families/bitcoin/bridge/js.js +0 -149
  210. package/lib/families/bitcoin/bridge/js.js.map +0 -1
  211. package/lib/families/bitcoin/cache.d.ts +0 -28
  212. package/lib/families/bitcoin/cache.d.ts.map +0 -1
  213. package/lib/families/bitcoin/cache.js +0 -109
  214. package/lib/families/bitcoin/cache.js.map +0 -1
  215. package/lib/families/bitcoin/getAccountNetworkInfo.d.ts +0 -6
  216. package/lib/families/bitcoin/getAccountNetworkInfo.d.ts.map +0 -1
  217. package/lib/families/bitcoin/getAccountNetworkInfo.js +0 -124
  218. package/lib/families/bitcoin/getAccountNetworkInfo.js.map +0 -1
  219. package/lib/families/bitcoin/getAccountNetworkInfo.test.d.ts +0 -2
  220. package/lib/families/bitcoin/getAccountNetworkInfo.test.d.ts.map +0 -1
  221. package/lib/families/bitcoin/getAccountNetworkInfo.test.js +0 -71
  222. package/lib/families/bitcoin/getAccountNetworkInfo.test.js.map +0 -1
  223. package/lib/families/bitcoin/js-broadcast.d.ts +0 -11
  224. package/lib/families/bitcoin/js-broadcast.d.ts.map +0 -1
  225. package/lib/families/bitcoin/js-broadcast.js +0 -73
  226. package/lib/families/bitcoin/js-broadcast.js.map +0 -1
  227. package/lib/families/bitcoin/js-buildTransaction.d.ts +0 -5
  228. package/lib/families/bitcoin/js-buildTransaction.d.ts.map +0 -1
  229. package/lib/families/bitcoin/js-buildTransaction.js +0 -106
  230. package/lib/families/bitcoin/js-buildTransaction.js.map +0 -1
  231. package/lib/families/bitcoin/js-createTransaction.d.ts +0 -9
  232. package/lib/families/bitcoin/js-createTransaction.d.ts.map +0 -1
  233. package/lib/families/bitcoin/js-createTransaction.js +0 -27
  234. package/lib/families/bitcoin/js-createTransaction.js.map +0 -1
  235. package/lib/families/bitcoin/js-estimateMaxSpendable.d.ts +0 -15
  236. package/lib/families/bitcoin/js-estimateMaxSpendable.d.ts.map +0 -1
  237. package/lib/families/bitcoin/js-estimateMaxSpendable.js +0 -95
  238. package/lib/families/bitcoin/js-estimateMaxSpendable.js.map +0 -1
  239. package/lib/families/bitcoin/js-getFeesForTransaction.d.ts +0 -26
  240. package/lib/families/bitcoin/js-getFeesForTransaction.d.ts.map +0 -1
  241. package/lib/families/bitcoin/js-getFeesForTransaction.js +0 -100
  242. package/lib/families/bitcoin/js-getFeesForTransaction.js.map +0 -1
  243. package/lib/families/bitcoin/js-getTransactionStatus.d.ts +0 -5
  244. package/lib/families/bitcoin/js-getTransactionStatus.d.ts.map +0 -1
  245. package/lib/families/bitcoin/js-getTransactionStatus.js +0 -131
  246. package/lib/families/bitcoin/js-getTransactionStatus.js.map +0 -1
  247. package/lib/families/bitcoin/js-prepareTransaction.d.ts +0 -5
  248. package/lib/families/bitcoin/js-prepareTransaction.d.ts.map +0 -1
  249. package/lib/families/bitcoin/js-prepareTransaction.js +0 -80
  250. package/lib/families/bitcoin/js-prepareTransaction.js.map +0 -1
  251. package/lib/families/bitcoin/js-signOperation.d.ts +0 -10
  252. package/lib/families/bitcoin/js-signOperation.d.ts.map +0 -1
  253. package/lib/families/bitcoin/js-signOperation.js +0 -212
  254. package/lib/families/bitcoin/js-signOperation.js.map +0 -1
  255. package/lib/families/bitcoin/js-synchronisation.d.ts +0 -10
  256. package/lib/families/bitcoin/js-synchronisation.d.ts.map +0 -1
  257. package/lib/families/bitcoin/js-synchronisation.js +0 -431
  258. package/lib/families/bitcoin/js-synchronisation.js.map +0 -1
  259. package/lib/families/bitcoin/logic.d.ts +0 -34
  260. package/lib/families/bitcoin/logic.d.ts.map +0 -1
  261. package/lib/families/bitcoin/logic.js +0 -290
  262. package/lib/families/bitcoin/logic.js.map +0 -1
  263. package/lib/families/bitcoin/networks.d.ts +0 -3
  264. package/lib/families/bitcoin/networks.d.ts.map +0 -1
  265. package/lib/families/bitcoin/networks.js +0 -379
  266. package/lib/families/bitcoin/networks.js.map +0 -1
  267. package/lib/families/bitcoin/wallet-btc/account.d.ts +0 -35
  268. package/lib/families/bitcoin/wallet-btc/account.d.ts.map +0 -1
  269. package/lib/families/bitcoin/wallet-btc/account.js +0 -3
  270. package/lib/families/bitcoin/wallet-btc/account.js.map +0 -1
  271. package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts +0 -19
  272. package/lib/families/bitcoin/wallet-btc/crypto/base.d.ts.map +0 -1
  273. package/lib/families/bitcoin/wallet-btc/crypto/base.js +0 -136
  274. package/lib/families/bitcoin/wallet-btc/crypto/base.js.map +0 -1
  275. package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts +0 -10
  276. package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.d.ts.map +0 -1
  277. package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js +0 -177
  278. package/lib/families/bitcoin/wallet-btc/crypto/bitcoin.js.map +0 -1
  279. package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts +0 -16
  280. package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.d.ts.map +0 -1
  281. package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js +0 -84
  282. package/lib/families/bitcoin/wallet-btc/crypto/bitcoincash.js.map +0 -1
  283. package/lib/families/bitcoin/wallet-btc/crypto/bitcoingold.d.ts +0 -8
  284. package/lib/families/bitcoin/wallet-btc/crypto/bitcoingold.d.ts.map +0 -1
  285. package/lib/families/bitcoin/wallet-btc/crypto/bitcoingold.js +0 -36
  286. package/lib/families/bitcoin/wallet-btc/crypto/bitcoingold.js.map +0 -1
  287. package/lib/families/bitcoin/wallet-btc/crypto/dash.d.ts +0 -8
  288. package/lib/families/bitcoin/wallet-btc/crypto/dash.d.ts.map +0 -1
  289. package/lib/families/bitcoin/wallet-btc/crypto/dash.js +0 -44
  290. package/lib/families/bitcoin/wallet-btc/crypto/dash.js.map +0 -1
  291. package/lib/families/bitcoin/wallet-btc/crypto/digibyte.d.ts +0 -9
  292. package/lib/families/bitcoin/wallet-btc/crypto/digibyte.d.ts.map +0 -1
  293. package/lib/families/bitcoin/wallet-btc/crypto/digibyte.js +0 -56
  294. package/lib/families/bitcoin/wallet-btc/crypto/digibyte.js.map +0 -1
  295. package/lib/families/bitcoin/wallet-btc/crypto/doge.d.ts +0 -8
  296. package/lib/families/bitcoin/wallet-btc/crypto/doge.d.ts.map +0 -1
  297. package/lib/families/bitcoin/wallet-btc/crypto/doge.js +0 -36
  298. package/lib/families/bitcoin/wallet-btc/crypto/doge.js.map +0 -1
  299. package/lib/families/bitcoin/wallet-btc/crypto/factory.d.ts +0 -3
  300. package/lib/families/bitcoin/wallet-btc/crypto/factory.d.ts.map +0 -1
  301. package/lib/families/bitcoin/wallet-btc/crypto/factory.js +0 -130
  302. package/lib/families/bitcoin/wallet-btc/crypto/factory.js.map +0 -1
  303. package/lib/families/bitcoin/wallet-btc/crypto/index.d.ts +0 -18
  304. package/lib/families/bitcoin/wallet-btc/crypto/index.d.ts.map +0 -1
  305. package/lib/families/bitcoin/wallet-btc/crypto/index.js +0 -45
  306. package/lib/families/bitcoin/wallet-btc/crypto/index.js.map +0 -1
  307. package/lib/families/bitcoin/wallet-btc/crypto/komodo.d.ts +0 -8
  308. package/lib/families/bitcoin/wallet-btc/crypto/komodo.d.ts.map +0 -1
  309. package/lib/families/bitcoin/wallet-btc/crypto/komodo.js +0 -39
  310. package/lib/families/bitcoin/wallet-btc/crypto/komodo.js.map +0 -1
  311. package/lib/families/bitcoin/wallet-btc/crypto/litecoin.d.ts +0 -19
  312. package/lib/families/bitcoin/wallet-btc/crypto/litecoin.d.ts.map +0 -1
  313. package/lib/families/bitcoin/wallet-btc/crypto/litecoin.js +0 -135
  314. package/lib/families/bitcoin/wallet-btc/crypto/litecoin.js.map +0 -1
  315. package/lib/families/bitcoin/wallet-btc/crypto/peercoin.d.ts +0 -8
  316. package/lib/families/bitcoin/wallet-btc/crypto/peercoin.d.ts.map +0 -1
  317. package/lib/families/bitcoin/wallet-btc/crypto/peercoin.js +0 -38
  318. package/lib/families/bitcoin/wallet-btc/crypto/peercoin.js.map +0 -1
  319. package/lib/families/bitcoin/wallet-btc/crypto/pivx.d.ts +0 -8
  320. package/lib/families/bitcoin/wallet-btc/crypto/pivx.d.ts.map +0 -1
  321. package/lib/families/bitcoin/wallet-btc/crypto/pivx.js +0 -40
  322. package/lib/families/bitcoin/wallet-btc/crypto/pivx.js.map +0 -1
  323. package/lib/families/bitcoin/wallet-btc/crypto/qtum.d.ts +0 -8
  324. package/lib/families/bitcoin/wallet-btc/crypto/qtum.d.ts.map +0 -1
  325. package/lib/families/bitcoin/wallet-btc/crypto/qtum.js +0 -36
  326. package/lib/families/bitcoin/wallet-btc/crypto/qtum.js.map +0 -1
  327. package/lib/families/bitcoin/wallet-btc/crypto/stakenet.d.ts +0 -8
  328. package/lib/families/bitcoin/wallet-btc/crypto/stakenet.d.ts.map +0 -1
  329. package/lib/families/bitcoin/wallet-btc/crypto/stakenet.js +0 -40
  330. package/lib/families/bitcoin/wallet-btc/crypto/stakenet.js.map +0 -1
  331. package/lib/families/bitcoin/wallet-btc/crypto/stealth.d.ts +0 -8
  332. package/lib/families/bitcoin/wallet-btc/crypto/stealth.d.ts.map +0 -1
  333. package/lib/families/bitcoin/wallet-btc/crypto/stealth.js +0 -40
  334. package/lib/families/bitcoin/wallet-btc/crypto/stealth.js.map +0 -1
  335. package/lib/families/bitcoin/wallet-btc/crypto/stratis.d.ts +0 -8
  336. package/lib/families/bitcoin/wallet-btc/crypto/stratis.d.ts.map +0 -1
  337. package/lib/families/bitcoin/wallet-btc/crypto/stratis.js +0 -37
  338. package/lib/families/bitcoin/wallet-btc/crypto/stratis.js.map +0 -1
  339. package/lib/families/bitcoin/wallet-btc/crypto/types.d.ts +0 -15
  340. package/lib/families/bitcoin/wallet-btc/crypto/types.d.ts.map +0 -1
  341. package/lib/families/bitcoin/wallet-btc/crypto/types.js +0 -3
  342. package/lib/families/bitcoin/wallet-btc/crypto/types.js.map +0 -1
  343. package/lib/families/bitcoin/wallet-btc/crypto/via.d.ts +0 -8
  344. package/lib/families/bitcoin/wallet-btc/crypto/via.d.ts.map +0 -1
  345. package/lib/families/bitcoin/wallet-btc/crypto/via.js +0 -36
  346. package/lib/families/bitcoin/wallet-btc/crypto/via.js.map +0 -1
  347. package/lib/families/bitcoin/wallet-btc/crypto/vtc.d.ts +0 -8
  348. package/lib/families/bitcoin/wallet-btc/crypto/vtc.d.ts.map +0 -1
  349. package/lib/families/bitcoin/wallet-btc/crypto/vtc.js +0 -36
  350. package/lib/families/bitcoin/wallet-btc/crypto/vtc.js.map +0 -1
  351. package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts +0 -18
  352. package/lib/families/bitcoin/wallet-btc/crypto/zec.d.ts.map +0 -1
  353. package/lib/families/bitcoin/wallet-btc/crypto/zec.js +0 -72
  354. package/lib/families/bitcoin/wallet-btc/crypto/zec.js.map +0 -1
  355. package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts +0 -18
  356. package/lib/families/bitcoin/wallet-btc/crypto/zen.d.ts.map +0 -1
  357. package/lib/families/bitcoin/wallet-btc/crypto/zen.js +0 -97
  358. package/lib/families/bitcoin/wallet-btc/crypto/zen.js.map +0 -1
  359. package/lib/families/bitcoin/wallet-btc/explorer/index.d.ts +0 -31
  360. package/lib/families/bitcoin/wallet-btc/explorer/index.d.ts.map +0 -1
  361. package/lib/families/bitcoin/wallet-btc/explorer/index.js +0 -393
  362. package/lib/families/bitcoin/wallet-btc/explorer/index.js.map +0 -1
  363. package/lib/families/bitcoin/wallet-btc/explorer/types.d.ts +0 -13
  364. package/lib/families/bitcoin/wallet-btc/explorer/types.d.ts.map +0 -1
  365. package/lib/families/bitcoin/wallet-btc/explorer/types.js +0 -3
  366. package/lib/families/bitcoin/wallet-btc/explorer/types.js.map +0 -1
  367. package/lib/families/bitcoin/wallet-btc/index.d.ts +0 -15
  368. package/lib/families/bitcoin/wallet-btc/index.d.ts.map +0 -1
  369. package/lib/families/bitcoin/wallet-btc/index.js +0 -80
  370. package/lib/families/bitcoin/wallet-btc/index.js.map +0 -1
  371. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.d.ts +0 -13
  372. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.d.ts.map +0 -1
  373. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.js +0 -237
  374. package/lib/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.js.map +0 -1
  375. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.d.ts +0 -13
  376. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.d.ts.map +0 -1
  377. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.js +0 -146
  378. package/lib/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.js.map +0 -1
  379. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.d.ts +0 -13
  380. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.d.ts.map +0 -1
  381. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.js +0 -146
  382. package/lib/families/bitcoin/wallet-btc/pickingstrategies/Merge.js.map +0 -1
  383. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.d.ts +0 -23
  384. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.d.ts.map +0 -1
  385. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.js +0 -13
  386. package/lib/families/bitcoin/wallet-btc/pickingstrategies/types.js.map +0 -1
  387. package/lib/families/bitcoin/wallet-btc/storage/index.d.ts +0 -58
  388. package/lib/families/bitcoin/wallet-btc/storage/index.d.ts.map +0 -1
  389. package/lib/families/bitcoin/wallet-btc/storage/index.js +0 -228
  390. package/lib/families/bitcoin/wallet-btc/storage/index.js.map +0 -1
  391. package/lib/families/bitcoin/wallet-btc/storage/mock.d.ts +0 -58
  392. package/lib/families/bitcoin/wallet-btc/storage/mock.d.ts.map +0 -1
  393. package/lib/families/bitcoin/wallet-btc/storage/mock.js +0 -228
  394. package/lib/families/bitcoin/wallet-btc/storage/mock.js.map +0 -1
  395. package/lib/families/bitcoin/wallet-btc/storage/types.d.ts +0 -63
  396. package/lib/families/bitcoin/wallet-btc/storage/types.d.ts.map +0 -1
  397. package/lib/families/bitcoin/wallet-btc/storage/types.js +0 -3
  398. package/lib/families/bitcoin/wallet-btc/storage/types.js.map +0 -1
  399. package/lib/families/bitcoin/wallet-btc/types.d.ts +0 -25
  400. package/lib/families/bitcoin/wallet-btc/types.d.ts.map +0 -1
  401. package/lib/families/bitcoin/wallet-btc/types.js +0 -10
  402. package/lib/families/bitcoin/wallet-btc/types.js.map +0 -1
  403. package/lib/families/bitcoin/wallet-btc/utils/eventemitter.d.ts +0 -6
  404. package/lib/families/bitcoin/wallet-btc/utils/eventemitter.d.ts.map +0 -1
  405. package/lib/families/bitcoin/wallet-btc/utils/eventemitter.js +0 -64
  406. package/lib/families/bitcoin/wallet-btc/utils/eventemitter.js.map +0 -1
  407. package/lib/families/bitcoin/wallet-btc/utils.d.ts +0 -12
  408. package/lib/families/bitcoin/wallet-btc/utils.d.ts.map +0 -1
  409. package/lib/families/bitcoin/wallet-btc/utils.js +0 -166
  410. package/lib/families/bitcoin/wallet-btc/utils.js.map +0 -1
  411. package/lib/families/bitcoin/wallet-btc/wallet.d.ts +0 -73
  412. package/lib/families/bitcoin/wallet-btc/wallet.d.ts.map +0 -1
  413. package/lib/families/bitcoin/wallet-btc/wallet.js +0 -464
  414. package/lib/families/bitcoin/wallet-btc/wallet.js.map +0 -1
  415. package/lib/families/bitcoin/wallet-btc/xpub.d.ts +0 -55
  416. package/lib/families/bitcoin/wallet-btc/xpub.d.ts.map +0 -1
  417. package/lib/families/bitcoin/wallet-btc/xpub.js +0 -585
  418. package/lib/families/bitcoin/wallet-btc/xpub.js.map +0 -1
  419. package/lib/mock/Btc.d.ts +0 -16
  420. package/lib/mock/Btc.d.ts.map +0 -1
  421. package/lib/mock/Btc.js +0 -104
  422. package/lib/mock/Btc.js.map +0 -1
  423. package/src/__tests__/families/bitcoin/logic.ts +0 -40
  424. package/src/__tests__/families/bitcoin/wallet-btc/bitcoin.test.ts +0 -83
  425. package/src/__tests__/families/bitcoin/wallet-btc/utils.test.ts +0 -210
  426. package/src/__tests__/families/bitcoin/wallet-btc/wallet.estimateMaxSpendable.test.ts +0 -56
  427. package/src/__tests__/families/bitcoin/wallet-btc/wallet.integration.test.ts +0 -107
  428. package/src/__tests__/families/bitcoin/wallet-btc/xpub.pickingStrategies.integration.test.ts +0 -366
  429. package/src/__tests__/families/bitcoin/wallet-btc/xpub.reorg.integration.test.ts +0 -135
  430. package/src/__tests__/families/bitcoin/wallet-btc/xpub.synced.unit.test.ts +0 -74
  431. package/src/__tests__/families/bitcoin/wallet-btc/xpub.syncing.integration.test.ts +0 -330
  432. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.NP2WPKH.integration.test.ts +0 -193
  433. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.P2WPKH.integration.test.ts +0 -183
  434. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.integration.test.ts +0 -294
  435. package/src/__tests__/families/bitcoin/wallet-btc/xpub.txs.litecoin.test.ts +0 -167
  436. package/src/families/bitcoin/bridge/js.ts +0 -76
  437. package/src/families/bitcoin/cache.ts +0 -76
  438. package/src/families/bitcoin/getAccountNetworkInfo.test.ts +0 -27
  439. package/src/families/bitcoin/getAccountNetworkInfo.ts +0 -61
  440. package/src/families/bitcoin/js-broadcast.ts +0 -26
  441. package/src/families/bitcoin/js-buildTransaction.ts +0 -57
  442. package/src/families/bitcoin/js-createTransaction.ts +0 -27
  443. package/src/families/bitcoin/js-estimateMaxSpendable.ts +0 -36
  444. package/src/families/bitcoin/js-getFeesForTransaction.ts +0 -59
  445. package/src/families/bitcoin/js-getTransactionStatus.ts +0 -118
  446. package/src/families/bitcoin/js-prepareTransaction.ts +0 -35
  447. package/src/families/bitcoin/js-signOperation.ts +0 -164
  448. package/src/families/bitcoin/js-synchronisation.ts +0 -388
  449. package/src/families/bitcoin/logic.ts +0 -251
  450. package/src/families/bitcoin/networks.ts +0 -360
  451. package/src/families/bitcoin/wallet-btc/account.ts +0 -42
  452. package/src/families/bitcoin/wallet-btc/crypto/base.ts +0 -131
  453. package/src/families/bitcoin/wallet-btc/crypto/bitcoin.ts +0 -147
  454. package/src/families/bitcoin/wallet-btc/crypto/bitcoincash.ts +0 -78
  455. package/src/families/bitcoin/wallet-btc/crypto/bitcoingold.ts +0 -13
  456. package/src/families/bitcoin/wallet-btc/crypto/dash.ts +0 -21
  457. package/src/families/bitcoin/wallet-btc/crypto/digibyte.ts +0 -34
  458. package/src/families/bitcoin/wallet-btc/crypto/doge.ts +0 -13
  459. package/src/families/bitcoin/wallet-btc/crypto/factory.ts +0 -106
  460. package/src/families/bitcoin/wallet-btc/crypto/index.ts +0 -17
  461. package/src/families/bitcoin/wallet-btc/crypto/komodo.ts +0 -16
  462. package/src/families/bitcoin/wallet-btc/crypto/litecoin.ts +0 -113
  463. package/src/families/bitcoin/wallet-btc/crypto/peercoin.ts +0 -15
  464. package/src/families/bitcoin/wallet-btc/crypto/pivx.ts +0 -17
  465. package/src/families/bitcoin/wallet-btc/crypto/qtum.ts +0 -13
  466. package/src/families/bitcoin/wallet-btc/crypto/stakenet.ts +0 -17
  467. package/src/families/bitcoin/wallet-btc/crypto/stealth.ts +0 -17
  468. package/src/families/bitcoin/wallet-btc/crypto/stratis.ts +0 -14
  469. package/src/families/bitcoin/wallet-btc/crypto/types.ts +0 -42
  470. package/src/families/bitcoin/wallet-btc/crypto/via.ts +0 -13
  471. package/src/families/bitcoin/wallet-btc/crypto/vtc.ts +0 -13
  472. package/src/families/bitcoin/wallet-btc/crypto/zec.ts +0 -85
  473. package/src/families/bitcoin/wallet-btc/crypto/zen.ts +0 -112
  474. package/src/families/bitcoin/wallet-btc/explorer/index.ts +0 -305
  475. package/src/families/bitcoin/wallet-btc/explorer/types.ts +0 -20
  476. package/src/families/bitcoin/wallet-btc/index.ts +0 -54
  477. package/src/families/bitcoin/wallet-btc/pickingstrategies/CoinSelect.ts +0 -229
  478. package/src/families/bitcoin/wallet-btc/pickingstrategies/DeepFirst.ts +0 -81
  479. package/src/families/bitcoin/wallet-btc/pickingstrategies/Merge.ts +0 -81
  480. package/src/families/bitcoin/wallet-btc/pickingstrategies/types.ts +0 -41
  481. package/src/families/bitcoin/wallet-btc/storage/index.ts +0 -186
  482. package/src/families/bitcoin/wallet-btc/storage/mock.ts +0 -186
  483. package/src/families/bitcoin/wallet-btc/storage/types.ts +0 -66
  484. package/src/families/bitcoin/wallet-btc/types.ts +0 -26
  485. package/src/families/bitcoin/wallet-btc/utils/eventemitter.ts +0 -9
  486. package/src/families/bitcoin/wallet-btc/utils.ts +0 -153
  487. package/src/families/bitcoin/wallet-btc/wallet.ts +0 -396
  488. package/src/families/bitcoin/wallet-btc/xpub.ts +0 -470
  489. package/src/mock/Btc.ts +0 -47
@@ -1,388 +0,0 @@
1
- import { $Shape } from "utility-types";
2
- import type {
3
- TX,
4
- Currency,
5
- Input as WalletInput,
6
- Output as WalletOutput,
7
- } from "./wallet-btc";
8
- import { DerivationModes as WalletDerivationModes } from "./wallet-btc";
9
- import { BigNumber } from "bignumber.js";
10
- import Btc from "@ledgerhq/hw-app-btc";
11
- import { log } from "@ledgerhq/logs";
12
- import type {
13
- Account,
14
- Operation,
15
- OperationType,
16
- DerivationMode,
17
- } from "../../types";
18
- import type { GetAccountShape } from "../../bridge/jsHelpers";
19
- import { makeSync, makeScanAccounts, mergeOps } from "../../bridge/jsHelpers";
20
- import { findCurrencyExplorer } from "../../api/Ledger";
21
- import { encodeAccountId } from "../../account";
22
- import { encodeOperationId } from "../../operation";
23
- import { BitcoinOutput } from "./types";
24
- import { perCoinLogic } from "./logic";
25
- import wallet from "./wallet-btc";
26
-
27
- // Map LL's DerivationMode to wallet-btc's
28
- const toWalletDerivationMode = (
29
- mode: DerivationMode
30
- ): WalletDerivationModes => {
31
- switch (mode) {
32
- case "segwit":
33
- case "segwit_on_legacy":
34
- case "segwit_unsplit":
35
- case "bch_on_bitcoin_segwit":
36
- case "vertcoin_128_segwit":
37
- return WalletDerivationModes.SEGWIT;
38
-
39
- case "native_segwit":
40
- return WalletDerivationModes.NATIVE_SEGWIT;
41
-
42
- default:
43
- return WalletDerivationModes.LEGACY;
44
- }
45
- };
46
-
47
- // Map LL's currency ID to wallet-btc's Account.params.network
48
- const toWalletNetwork = (currencyId: string): "testnet" | "mainnet" => {
49
- return ["bitcoin_testnet"].includes(currencyId) ? "testnet" : "mainnet";
50
- };
51
-
52
- // Map wallet-btc's Output to LL's BitcoinOutput
53
- const fromWalletUtxo = (utxo: WalletOutput): BitcoinOutput => {
54
- return {
55
- hash: utxo.output_hash,
56
- outputIndex: utxo.output_index,
57
- blockHeight: utxo.block_height,
58
- address: utxo.address,
59
- value: new BigNumber(utxo.value),
60
- rbf: utxo.rbf,
61
- isChange: false, // wallet-btc limitation: doesn't provide it
62
- path: "",
63
- };
64
- };
65
-
66
- // wallet-btc limitation: returns all transactions twice (for each side of the tx)
67
- // so we need to deduplicate them...
68
- const deduplicateOperations = (
69
- operations: (Operation | undefined)[]
70
- ): Operation[] => {
71
- const seen = {};
72
- const out: Operation[] = [];
73
- let j = 0;
74
-
75
- for (const operation of operations) {
76
- if (operation) {
77
- if (seen[operation.id] !== 1) {
78
- seen[operation.id] = 1;
79
- out[j++] = operation;
80
- }
81
- }
82
- }
83
-
84
- return out;
85
- };
86
-
87
- const mapTxToOperations = (
88
- tx: TX,
89
- currencyId: string,
90
- accountId: string,
91
- accountAddresses: string[],
92
- changeAddresses: string[]
93
- ): $Shape<Operation[]> => {
94
- const operations: Operation[] = [];
95
- const hash = tx.hash;
96
- const fee = new BigNumber(tx.fees);
97
- const blockHeight = tx.block?.height;
98
- const blockHash = tx.block?.hash;
99
- const date = new Date(tx.block?.time || tx.received_at);
100
- const senders: string[] = [];
101
- const recipients: string[] = [];
102
- let type: OperationType = "OUT";
103
- let value = new BigNumber(0);
104
- const hasFailed = false;
105
- const accountInputs: WalletInput[] = [];
106
- const accountOutputs: WalletOutput[] = [];
107
- const syncReplaceAddress = perCoinLogic[currencyId]?.syncReplaceAddress;
108
-
109
- for (const input of tx.inputs) {
110
- if (input.address) {
111
- senders.push(
112
- syncReplaceAddress ? syncReplaceAddress(input.address) : input.address
113
- );
114
-
115
- if (input.value) {
116
- if (accountAddresses.includes(input.address)) {
117
- // This address is part of the account
118
- value = value.plus(input.value);
119
- accountInputs.push(input);
120
- }
121
- }
122
- }
123
- }
124
-
125
- // All inputs of a same transaction have the same sequence
126
- const transactionSequenceNumber =
127
- (accountInputs.length > 0 && accountInputs[0].sequence) || undefined;
128
- const hasSpentNothing = value.eq(0);
129
-
130
- for (const output of tx.outputs) {
131
- if (output.address) {
132
- if (accountAddresses.includes(output.address)) {
133
- accountOutputs.push(output);
134
-
135
- if (changeAddresses.includes(output.address)) {
136
- if (
137
- (recipients.length === 0 &&
138
- output.output_hash ===
139
- tx.outputs[tx.outputs.length - 1].output_hash) || // Is that condition safe?
140
- hasSpentNothing
141
- ) {
142
- recipients.push(
143
- syncReplaceAddress
144
- ? syncReplaceAddress(output.address)
145
- : output.address
146
- );
147
- }
148
- } else {
149
- recipients.push(
150
- syncReplaceAddress
151
- ? syncReplaceAddress(output.address)
152
- : output.address
153
- );
154
- }
155
- } else {
156
- recipients.push(
157
- syncReplaceAddress
158
- ? syncReplaceAddress(output.address)
159
- : output.address
160
- );
161
- }
162
- }
163
- }
164
-
165
- if (accountInputs.length > 0) {
166
- // It's a SEND operation
167
- for (const output of accountOutputs) {
168
- if (changeAddresses.includes(output.address)) {
169
- value = value.minus(output.value);
170
- }
171
- }
172
-
173
- type = "OUT";
174
- operations.push({
175
- id: encodeOperationId(accountId, hash, type),
176
- hash,
177
- type,
178
- value,
179
- fee,
180
- senders,
181
- recipients,
182
- blockHeight,
183
- blockHash,
184
- transactionSequenceNumber,
185
- accountId,
186
- date,
187
- hasFailed,
188
- extra: {},
189
- });
190
- }
191
-
192
- if (accountOutputs.length > 0) {
193
- // It's a RECEIVE operation
194
- const filterChangeAddresses = !!accountInputs.length;
195
- let accountOutputCount = 0;
196
- let finalAmount = new BigNumber(0);
197
-
198
- for (const output of accountOutputs) {
199
- if (!filterChangeAddresses || !changeAddresses.includes(output.address)) {
200
- finalAmount = finalAmount.plus(output.value);
201
- accountOutputCount += 1;
202
- }
203
- }
204
-
205
- if (accountOutputCount > 0) {
206
- value = finalAmount;
207
- type = "IN";
208
- operations.push({
209
- id: encodeOperationId(accountId, hash, type),
210
- hash,
211
- type,
212
- value,
213
- fee,
214
- senders,
215
- recipients,
216
- blockHeight,
217
- blockHash,
218
- transactionSequenceNumber,
219
- accountId,
220
- date,
221
- hasFailed,
222
- extra: {},
223
- });
224
- }
225
- }
226
-
227
- return operations;
228
- };
229
-
230
- const getAccountShape: GetAccountShape = async (info) => {
231
- const {
232
- transport,
233
- currency,
234
- index,
235
- derivationPath,
236
- derivationMode,
237
- initialAccount,
238
- } = info;
239
- // In case we get a full derivation path, extract the seed identification part
240
- // 44'/0'/0'/0/0 --> 44'/0'
241
- // FIXME Only the CLI provides a full derivationPath: why?
242
- const rootPath = derivationPath.split("/", 2).join("/");
243
-
244
- const paramXpub = initialAccount?.xpub;
245
-
246
- let generatedXpub;
247
- if (!paramXpub) {
248
- // Xpub not provided, generate it using the hwapp
249
-
250
- if (!transport) {
251
- // hwapp not provided
252
- throw new Error("generateXpub needs a hwapp");
253
- }
254
- generatedXpub = await wallet.generateXpub(
255
- new Btc(transport),
256
- <Currency>currency.id,
257
- rootPath,
258
- index
259
- );
260
- }
261
- const xpub = paramXpub || generatedXpub;
262
-
263
- const accountId = encodeAccountId({
264
- type: "js",
265
- version: "2",
266
- currencyId: currency.id,
267
- xpubOrAddress: xpub,
268
- derivationMode,
269
- });
270
-
271
- const walletNetwork = toWalletNetwork(currency.id);
272
- const walletDerivationMode = toWalletDerivationMode(derivationMode);
273
- const explorer = findCurrencyExplorer(currency);
274
- if (!explorer) {
275
- throw new Error(`No explorer found for currency ${currency.name}`);
276
- }
277
- if (explorer.version !== "v2" && explorer.version !== "v3") {
278
- throw new Error(`Unsupported explorer version ${explorer.version}`);
279
- }
280
-
281
- const walletAccount = initialAccount?.bitcoinResources?.serializedData
282
- ? await wallet.importFromSerializedAccount(
283
- initialAccount.bitcoinResources.serializedData
284
- )
285
- : await wallet.generateAccount({
286
- // TODO remove btc param, not required anymore since we now have the xpub
287
- btc: (!paramXpub && transport && new Btc(transport)) || undefined,
288
- xpub,
289
- path: rootPath,
290
- index,
291
- currency: <Currency>currency.id,
292
- network: walletNetwork,
293
- derivationMode: walletDerivationMode,
294
- explorer: `ledger${explorer.version}`,
295
- explorerURI: `${explorer.endpoint}/blockchain/${explorer.version}/${explorer.id}`,
296
- storage: "mock",
297
- storageParams: [],
298
- });
299
-
300
- const oldOperations = initialAccount?.operations || [];
301
- await wallet.syncAccount(walletAccount);
302
- const balance = await wallet.getAccountBalance(walletAccount);
303
- const currentBlock = await walletAccount.xpub.explorer.getCurrentBlock();
304
- const blockHeight = currentBlock?.height;
305
-
306
- // @ts-expect-error return from wallet-btc should be typed
307
- const { txs: transactions } = await wallet.getAccountTransactions(
308
- walletAccount
309
- );
310
- const accountAddressesWithInfo = await walletAccount.xpub.getXpubAddresses();
311
- const accountAddresses = accountAddressesWithInfo
312
- ? accountAddressesWithInfo.map((a) => a.address)
313
- : [];
314
- const changeAddressesWithInfo =
315
- await walletAccount.xpub.storage.getUniquesAddresses({
316
- account: 1,
317
- });
318
- const changeAddresses = changeAddressesWithInfo
319
- ? changeAddressesWithInfo.map((a) => a.address)
320
- : [];
321
- const newOperations = transactions
322
- ?.map((tx) =>
323
- mapTxToOperations(
324
- tx,
325
- currency.id,
326
- accountId,
327
- accountAddresses,
328
- changeAddresses
329
- )
330
- )
331
- .flat();
332
- const newUniqueOperations = deduplicateOperations(newOperations);
333
- const operations = mergeOps(oldOperations, newUniqueOperations);
334
- const rawUtxos = await wallet.getAccountUnspentUtxos(walletAccount);
335
- const utxos = rawUtxos.map(fromWalletUtxo);
336
- const serializedData = await wallet.exportToSerializedAccount(walletAccount);
337
- return {
338
- id: accountId,
339
- xpub,
340
- balance,
341
- spendableBalance: balance,
342
- operations,
343
- operationsCount: operations.length,
344
- blockHeight,
345
- bitcoinResources: {
346
- utxos,
347
- serializedData,
348
- },
349
- };
350
- };
351
-
352
- const postSync = (initial: Account, synced: Account) => {
353
- log("bitcoin/postSync", "bitcoinResources");
354
- const perCoin = perCoinLogic[synced.currency.id];
355
-
356
- if (perCoin) {
357
- const { postBuildBitcoinResources, syncReplaceAddress } = perCoin;
358
-
359
- if (postBuildBitcoinResources) {
360
- synced.bitcoinResources = postBuildBitcoinResources(
361
- synced,
362
- synced.bitcoinResources
363
- );
364
- }
365
-
366
- if (syncReplaceAddress) {
367
- synced.freshAddress = syncReplaceAddress(synced.freshAddress);
368
- synced.freshAddresses = synced.freshAddresses.map((a) => ({
369
- ...a,
370
- address: syncReplaceAddress(a.address),
371
- }));
372
- if (synced.bitcoinResources) {
373
- synced.bitcoinResources.utxos = synced.bitcoinResources?.utxos.map(
374
- (u) => ({
375
- ...u,
376
- address: u.address && syncReplaceAddress(u.address),
377
- })
378
- );
379
- }
380
- }
381
- }
382
-
383
- log("bitcoin/postSync", "bitcoinResources DONE");
384
- return synced;
385
- };
386
-
387
- export const scanAccounts = makeScanAccounts(getAccountShape);
388
- export const sync = makeSync(getAccountShape, postSync);
@@ -1,251 +0,0 @@
1
- import cashaddr from "cashaddrjs";
2
- import bchaddr from "bchaddrjs";
3
- import { Currency, isValidAddress } from "./wallet-btc";
4
- import { RecipientRequired, InvalidAddress } from "@ledgerhq/errors";
5
- import type { Account, CryptoCurrency, CryptoCurrencyIds } from "./../../types";
6
- import type {
7
- BitcoinOutput,
8
- BitcoinResources,
9
- Transaction,
10
- NetworkInfo,
11
- UtxoStrategy,
12
- CoreBitcoinLikeOutput,
13
- CoreBitcoinLikeInput,
14
- BitcoinInput,
15
- } from "./types";
16
- import { libcoreAmountToBigNumber } from "../../libcore/buildBigNumber";
17
-
18
- // correspond ~ to min relay fees but determined empirically for a tx to be accepted by network
19
- const minFees = {
20
- bitcoin: 1000,
21
- bitcoin_gold: 1000,
22
- pivx: 2000,
23
- stakenet: 1000,
24
- stealthcoin: 2000,
25
- qtum: 4000,
26
- stratis: 2000,
27
- vertcoin: 2000,
28
- viacoin: 2000,
29
- peercoin: 2000,
30
- };
31
- export const getMinRelayFee = (currency: CryptoCurrency): number =>
32
- minFees[currency.id] || 0;
33
- export const inferFeePerByte = (t: Transaction, networkInfo: NetworkInfo) => {
34
- if (t.feesStrategy) {
35
- const speed = networkInfo.feeItems.items.find(
36
- (item) => t.feesStrategy === item.speed
37
- );
38
-
39
- if (!speed) {
40
- return networkInfo.feeItems.defaultFeePerByte;
41
- }
42
-
43
- return speed.feePerByte;
44
- }
45
-
46
- return t.feePerByte || networkInfo.feeItems.defaultFeePerByte;
47
- };
48
- export const isValidRecipient = async (params: {
49
- currency: CryptoCurrency;
50
- recipient: string;
51
- }): Promise<Error | null | undefined> => {
52
- if (!params.recipient) {
53
- return Promise.reject(new RecipientRequired(""));
54
- }
55
-
56
- let valid: boolean;
57
- try {
58
- // Optimistically assume params.currency.id is an actual Currency
59
- valid = isValidAddress(params.recipient, <Currency>params.currency.id);
60
- } catch (e: any) {
61
- // isValidAddress() will throw Error if c is not an actual Currency
62
- return Promise.reject(new InvalidAddress(e.message));
63
- }
64
- if (!valid) {
65
- return Promise.reject(
66
- new InvalidAddress("Invalid address for currency " + params.currency.name)
67
- );
68
- }
69
- return Promise.resolve(null);
70
- };
71
- export function isChangeOutput(output: BitcoinOutput): boolean {
72
- if (!output.path) return false;
73
- const p = output.path.split("/");
74
- return p[p.length - 2] === "1";
75
- }
76
-
77
- type UTXOStatus =
78
- | {
79
- excluded: true;
80
- reason: "pickUnconfirmedRBF" | "userExclusion";
81
- }
82
- | {
83
- excluded: false;
84
- };
85
- export const getUTXOStatus = (
86
- utxo: BitcoinOutput,
87
- utxoStrategy: UtxoStrategy
88
- ): UTXOStatus => {
89
- if (!utxoStrategy.pickUnconfirmedRBF && utxo.rbf && !utxo.blockHeight) {
90
- return {
91
- excluded: true,
92
- reason: "pickUnconfirmedRBF",
93
- };
94
- }
95
-
96
- if (
97
- utxoStrategy.excludeUTXOs.some(
98
- (u) => u.hash === utxo.hash && u.outputIndex === utxo.outputIndex
99
- )
100
- ) {
101
- return {
102
- excluded: true,
103
- reason: "userExclusion",
104
- };
105
- }
106
-
107
- return {
108
- excluded: false,
109
- };
110
- };
111
-
112
- const bchExplicit = (str: string): string => {
113
- const explicit = str.includes(":") ? str : "bitcoincash:" + str;
114
-
115
- try {
116
- const { type } = cashaddr.decode(explicit);
117
- if (type === "P2PKH") return explicit;
118
- } catch (e) {
119
- // ignore errors
120
- }
121
-
122
- return str;
123
- };
124
-
125
- type CoinLogic = {
126
- hasExtraData?: boolean;
127
- hasExpiryHeight?: boolean;
128
- getAdditionals?: (arg0: { transaction: Transaction }) => string[];
129
- asExplicitTransactionRecipient?: (arg0: string) => string;
130
- onScreenTransactionRecipient?: (arg0: string) => string;
131
- postBuildBitcoinResources?: (
132
- arg0: Account,
133
- arg1?: BitcoinResources
134
- ) => BitcoinResources;
135
- syncReplaceAddress?: (addr: string) => string;
136
- injectGetAddressParams?: (arg0: Account) => any;
137
- };
138
-
139
- const bchToCashaddrAddressWithoutPrefix = (recipient) =>
140
- recipient ? bchaddr.toCashAddress(recipient).split(":")[1] : recipient;
141
-
142
- export const perCoinLogic: Record<
143
- CryptoCurrencyIds,
144
- CoinLogic | null | undefined
145
- > = {
146
- zencash: {
147
- hasExtraData: true, // FIXME (legacy) investigate why we need this here and drop
148
- },
149
- zcash: {
150
- hasExtraData: true,
151
- hasExpiryHeight: true,
152
- getAdditionals: () => ["sapling"], // FIXME (legacy) drop in ledgerjs. we always use sapling now for zcash & kmd
153
- },
154
- komodo: {
155
- hasExtraData: true,
156
- hasExpiryHeight: true,
157
- getAdditionals: () => ["sapling"], // FIXME (legacy) drop in ledgerjs. we always use sapling now for zcash & kmd
158
- },
159
- decred: {
160
- hasExpiryHeight: true,
161
- },
162
- bitcoin_gold: {
163
- getAdditionals: () => ["bip143"],
164
- },
165
- bitcoin_cash: {
166
- getAdditionals: ({ transaction }) => {
167
- const additionals = ["bip143"];
168
-
169
- if (bchExplicit(transaction.recipient).startsWith("bitcoincash:")) {
170
- additionals.push("cashaddr");
171
- }
172
-
173
- return additionals;
174
- },
175
- // Due to minimal support, we need to return the explicit format of bitcoincash:.. if it's a P2PKH
176
- asExplicitTransactionRecipient: bchExplicit,
177
- // to represent what happens on the device, which do not display the bitcoincash: prefix
178
- onScreenTransactionRecipient: (str: string): string => {
179
- const prefix = "bitcoincash:";
180
- return str.startsWith(prefix) ? str.slice(prefix.length) : str;
181
- },
182
- syncReplaceAddress: (addr) => bchToCashaddrAddressWithoutPrefix(addr),
183
- injectGetAddressParams: () => ({
184
- forceFormat: "cashaddr",
185
- }),
186
- },
187
- };
188
-
189
- // TODO vvvvv DEPRECATED, TO BE REMOVED vvvvv
190
-
191
- export async function parseBitcoinInput(
192
- input: CoreBitcoinLikeInput
193
- ): Promise<BitcoinInput> {
194
- const address = await input.getAddress();
195
- const rawValue = await input.getValue();
196
- const value = rawValue ? await libcoreAmountToBigNumber(rawValue) : null;
197
- const previousTxHash = await input.getPreviousTxHash();
198
- const previousOutputIndex = await input.getPreviousOutputIndex();
199
- return {
200
- address,
201
- value,
202
- previousTxHash,
203
- previousOutputIndex,
204
- };
205
- }
206
-
207
- export async function parseBitcoinOutput(
208
- output: CoreBitcoinLikeOutput
209
- ): Promise<BitcoinOutput> {
210
- let blockHeight = await output.getBlockHeight();
211
-
212
- if (!blockHeight || blockHeight < 0) {
213
- blockHeight = undefined;
214
- }
215
-
216
- const hash = await output.getTransactionHash();
217
- const outputIndex = await output.getOutputIndex();
218
- const address = await output.getAddress();
219
- const derivationPath = await output.getDerivationPath();
220
- let path;
221
-
222
- if (derivationPath) {
223
- const isDerivationPathNull = await derivationPath.isNull();
224
-
225
- if (!isDerivationPathNull) {
226
- path = await derivationPath.toString();
227
- }
228
- }
229
-
230
- const value = await libcoreAmountToBigNumber(await output.getValue());
231
- const rbf = false; // this is unsafe to generically call this at the moment. libcore segfault.
232
-
233
- return {
234
- hash,
235
- outputIndex,
236
- blockHeight,
237
- address,
238
- isChange: false,
239
- path,
240
- value,
241
- rbf,
242
- };
243
- }
244
-
245
- export async function parseBitcoinUTXO(
246
- output: CoreBitcoinLikeOutput
247
- ): Promise<BitcoinOutput> {
248
- const utxo = await parseBitcoinOutput(output);
249
- utxo.rbf = await output.isReplaceable();
250
- return utxo;
251
- }