@ledgerhq/live-common 27.0.0 → 27.0.1-next.0

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 (405) hide show
  1. package/lib/__tests__/families/bitcoin/wallet-btc/xpub.syncing.integration.test.js +2 -2
  2. package/lib/__tests__/test-helpers/environment.d.ts +2 -0
  3. package/lib/__tests__/test-helpers/environment.d.ts.map +1 -0
  4. package/lib/__tests__/test-helpers/environment.js +107 -0
  5. package/lib/__tests__/test-helpers/environment.js.map +1 -0
  6. package/lib/__tests__/test-helpers/setup.d.ts +1 -1
  7. package/lib/__tests__/test-helpers/setup.d.ts.map +1 -1
  8. package/lib/__tests__/test-helpers/setup.js +1 -101
  9. package/lib/__tests__/test-helpers/setup.js.map +1 -1
  10. package/lib/account/serialization.d.ts.map +1 -1
  11. package/lib/account/serialization.js +83 -40
  12. package/lib/account/serialization.js.map +1 -1
  13. package/lib/bot/bot-test-context.d.ts +3 -0
  14. package/lib/bot/bot-test-context.d.ts.map +1 -0
  15. package/lib/bot/bot-test-context.js +26 -0
  16. package/lib/bot/bot-test-context.js.map +1 -0
  17. package/lib/bot/bot-test-context.test.d.ts +2 -0
  18. package/lib/bot/bot-test-context.test.d.ts.map +1 -0
  19. package/lib/bot/bot-test-context.test.js +41 -0
  20. package/lib/bot/bot-test-context.test.js.map +1 -0
  21. package/lib/bot/cli.d.ts +2 -0
  22. package/lib/bot/cli.d.ts.map +1 -0
  23. package/lib/bot/cli.js +14 -0
  24. package/lib/bot/cli.js.map +1 -0
  25. package/lib/bot/engine.d.ts +5 -5
  26. package/lib/bot/engine.d.ts.map +1 -1
  27. package/lib/bot/engine.js +161 -112
  28. package/lib/bot/engine.js.map +1 -1
  29. package/lib/bot/formatters.d.ts +2 -2
  30. package/lib/bot/formatters.d.ts.map +1 -1
  31. package/lib/bot/formatters.js +41 -15
  32. package/lib/bot/formatters.js.map +1 -1
  33. package/lib/bot/index.d.ts +1 -1
  34. package/lib/bot/index.d.ts.map +1 -1
  35. package/lib/bot/index.js +90 -15
  36. package/lib/bot/index.js.map +1 -1
  37. package/lib/bot/specs.d.ts +2 -1
  38. package/lib/bot/specs.d.ts.map +1 -1
  39. package/lib/bot/specs.js +13 -9
  40. package/lib/bot/specs.js.map +1 -1
  41. package/lib/bot/types.d.ts +5 -2
  42. package/lib/bot/types.d.ts.map +1 -1
  43. package/lib/countervalues/logic.integration.test.js +65 -0
  44. package/lib/countervalues/logic.integration.test.js.map +1 -1
  45. package/lib/countervalues/modules/weth.d.ts.map +1 -1
  46. package/lib/countervalues/modules/weth.js +5 -10
  47. package/lib/countervalues/modules/weth.js.map +1 -1
  48. package/lib/currencies/sortByMarketcap.d.ts +0 -2
  49. package/lib/currencies/sortByMarketcap.d.ts.map +1 -1
  50. package/lib/currencies/sortByMarketcap.js +3 -17
  51. package/lib/currencies/sortByMarketcap.js.map +1 -1
  52. package/lib/currencies/sortByMarketcap.test.js +0 -5
  53. package/lib/currencies/sortByMarketcap.test.js.map +1 -1
  54. package/lib/env.js +1 -1
  55. package/lib/families/algorand/specs.d.ts.map +1 -1
  56. package/lib/families/algorand/specs.js +18 -10
  57. package/lib/families/algorand/specs.js.map +1 -1
  58. package/lib/families/algorand/speculos-deviceActions.d.ts +1 -4
  59. package/lib/families/algorand/speculos-deviceActions.d.ts.map +1 -1
  60. package/lib/families/algorand/speculos-deviceActions.js +25 -8
  61. package/lib/families/algorand/speculos-deviceActions.js.map +1 -1
  62. package/lib/families/bitcoin/bridge/mock.d.ts.map +1 -1
  63. package/lib/families/bitcoin/bridge/mock.js +6 -1
  64. package/lib/families/bitcoin/bridge/mock.js.map +1 -1
  65. package/lib/families/bitcoin/datasets/bitcoin_cash.d.ts.map +1 -1
  66. package/lib/families/bitcoin/datasets/bitcoin_cash.js +1 -1
  67. package/lib/families/bitcoin/datasets/bitcoin_cash.js.map +1 -1
  68. package/lib/families/bitcoin/datasets/dash.d.ts.map +1 -1
  69. package/lib/families/bitcoin/datasets/dash.js +1 -1
  70. package/lib/families/bitcoin/datasets/dash.js.map +1 -1
  71. package/lib/families/bitcoin/datasets/decred.d.ts.map +1 -1
  72. package/lib/families/bitcoin/datasets/decred.js +1 -1
  73. package/lib/families/bitcoin/datasets/decred.js.map +1 -1
  74. package/lib/families/bitcoin/datasets/digibyte.d.ts.map +1 -1
  75. package/lib/families/bitcoin/datasets/digibyte.js +8 -2
  76. package/lib/families/bitcoin/datasets/digibyte.js.map +1 -1
  77. package/lib/families/bitcoin/datasets/dogecoin.d.ts.map +1 -1
  78. package/lib/families/bitcoin/datasets/dogecoin.js +1 -1
  79. package/lib/families/bitcoin/datasets/dogecoin.js.map +1 -1
  80. package/lib/families/bitcoin/datasets/komodo.js +1 -1
  81. package/lib/families/bitcoin/datasets/komodo.js.map +1 -1
  82. package/lib/families/bitcoin/datasets/litecoin.d.ts.map +1 -1
  83. package/lib/families/bitcoin/datasets/litecoin.js +8 -2
  84. package/lib/families/bitcoin/datasets/litecoin.js.map +1 -1
  85. package/lib/families/bitcoin/datasets/peercoin.js +1 -1
  86. package/lib/families/bitcoin/datasets/peercoin.js.map +1 -1
  87. package/lib/families/bitcoin/datasets/pivx.js +1 -1
  88. package/lib/families/bitcoin/datasets/pivx.js.map +1 -1
  89. package/lib/families/bitcoin/datasets/qtum.js +1 -1
  90. package/lib/families/bitcoin/datasets/qtum.js.map +1 -1
  91. package/lib/families/bitcoin/datasets/stakenet.d.ts.map +1 -1
  92. package/lib/families/bitcoin/datasets/stakenet.js +1 -1
  93. package/lib/families/bitcoin/datasets/stakenet.js.map +1 -1
  94. package/lib/families/bitcoin/datasets/vertcoin.d.ts.map +1 -1
  95. package/lib/families/bitcoin/datasets/vertcoin.js +1 -1
  96. package/lib/families/bitcoin/datasets/vertcoin.js.map +1 -1
  97. package/lib/families/bitcoin/datasets/viacoin.d.ts.map +1 -1
  98. package/lib/families/bitcoin/datasets/viacoin.js +1 -1
  99. package/lib/families/bitcoin/datasets/viacoin.js.map +1 -1
  100. package/lib/families/bitcoin/datasets/zcash.d.ts.map +1 -1
  101. package/lib/families/bitcoin/datasets/zcash.js +1 -1
  102. package/lib/families/bitcoin/datasets/zcash.js.map +1 -1
  103. package/lib/families/bitcoin/datasets/zencash.d.ts.map +1 -1
  104. package/lib/families/bitcoin/datasets/zencash.js +1 -1
  105. package/lib/families/bitcoin/datasets/zencash.js.map +1 -1
  106. package/lib/families/bitcoin/platformAdapter.test.d.ts +2 -0
  107. package/lib/families/bitcoin/platformAdapter.test.d.ts.map +1 -0
  108. package/lib/families/bitcoin/platformAdapter.test.js +48 -0
  109. package/lib/families/bitcoin/platformAdapter.test.js.map +1 -0
  110. package/lib/families/bitcoin/specs.d.ts.map +1 -1
  111. package/lib/families/bitcoin/specs.js +62 -24
  112. package/lib/families/bitcoin/specs.js.map +1 -1
  113. package/lib/families/bitcoin/speculos-deviceActions.d.ts +1 -4
  114. package/lib/families/bitcoin/speculos-deviceActions.d.ts.map +1 -1
  115. package/lib/families/bitcoin/speculos-deviceActions.js +2 -4
  116. package/lib/families/bitcoin/speculos-deviceActions.js.map +1 -1
  117. package/lib/families/cardano/js-estimateMaxSpendable.js +1 -1
  118. package/lib/families/cardano/js-estimateMaxSpendable.js.map +1 -1
  119. package/lib/families/cardano/specs.d.ts.map +1 -1
  120. package/lib/families/cardano/specs.js +19 -8
  121. package/lib/families/cardano/specs.js.map +1 -1
  122. package/lib/families/cardano/speculos-deviceActions.d.ts +1 -4
  123. package/lib/families/cardano/speculos-deviceActions.d.ts.map +1 -1
  124. package/lib/families/cardano/speculos-deviceActions.js +2 -2
  125. package/lib/families/cardano/speculos-deviceActions.js.map +1 -1
  126. package/lib/families/celo/specs.d.ts.map +1 -1
  127. package/lib/families/celo/specs.js +2 -0
  128. package/lib/families/celo/specs.js.map +1 -1
  129. package/lib/families/celo/speculos-deviceActions.d.ts +1 -4
  130. package/lib/families/celo/speculos-deviceActions.d.ts.map +1 -1
  131. package/lib/families/celo/speculos-deviceActions.js +2 -4
  132. package/lib/families/celo/speculos-deviceActions.js.map +1 -1
  133. package/lib/families/cosmos/specs.d.ts.map +1 -1
  134. package/lib/families/cosmos/specs.js +41 -25
  135. package/lib/families/cosmos/specs.js.map +1 -1
  136. package/lib/families/cosmos/speculos-deviceActions.d.ts +1 -4
  137. package/lib/families/cosmos/speculos-deviceActions.d.ts.map +1 -1
  138. package/lib/families/cosmos/speculos-deviceActions.js +2 -4
  139. package/lib/families/cosmos/speculos-deviceActions.js.map +1 -1
  140. package/lib/families/crypto_org/specs.d.ts.map +1 -1
  141. package/lib/families/crypto_org/specs.js +3 -0
  142. package/lib/families/crypto_org/specs.js.map +1 -1
  143. package/lib/families/crypto_org/speculos-deviceActions.d.ts +1 -4
  144. package/lib/families/crypto_org/speculos-deviceActions.d.ts.map +1 -1
  145. package/lib/families/crypto_org/speculos-deviceActions.js +2 -2
  146. package/lib/families/crypto_org/speculos-deviceActions.js.map +1 -1
  147. package/lib/families/elrond/specs.d.ts.map +1 -1
  148. package/lib/families/elrond/specs.js +15 -2
  149. package/lib/families/elrond/specs.js.map +1 -1
  150. package/lib/families/elrond/speculos-deviceActions.d.ts +1 -4
  151. package/lib/families/elrond/speculos-deviceActions.d.ts.map +1 -1
  152. package/lib/families/elrond/speculos-deviceActions.js +2 -4
  153. package/lib/families/elrond/speculos-deviceActions.js.map +1 -1
  154. package/lib/families/ethereum/platformAdapter.test.d.ts +2 -0
  155. package/lib/families/ethereum/platformAdapter.test.d.ts.map +1 -0
  156. package/lib/families/ethereum/platformAdapter.test.js +88 -0
  157. package/lib/families/ethereum/platformAdapter.test.js.map +1 -0
  158. package/lib/families/ethereum/specs.d.ts.map +1 -1
  159. package/lib/families/ethereum/specs.js +36 -12
  160. package/lib/families/ethereum/specs.js.map +1 -1
  161. package/lib/families/ethereum/speculos-deviceActions.d.ts +1 -4
  162. package/lib/families/ethereum/speculos-deviceActions.d.ts.map +1 -1
  163. package/lib/families/ethereum/speculos-deviceActions.js +2 -4
  164. package/lib/families/ethereum/speculos-deviceActions.js.map +1 -1
  165. package/lib/families/filecoin/specs.d.ts.map +1 -1
  166. package/lib/families/filecoin/specs.js +2 -0
  167. package/lib/families/filecoin/specs.js.map +1 -1
  168. package/lib/families/filecoin/speculos-deviceActions.d.ts +1 -4
  169. package/lib/families/filecoin/speculos-deviceActions.d.ts.map +1 -1
  170. package/lib/families/filecoin/speculos-deviceActions.js +2 -2
  171. package/lib/families/filecoin/speculos-deviceActions.js.map +1 -1
  172. package/lib/families/hedera/specs.d.ts.map +1 -1
  173. package/lib/families/hedera/specs.js +11 -3
  174. package/lib/families/hedera/specs.js.map +1 -1
  175. package/lib/families/hedera/speculos-deviceActions.d.ts +1 -4
  176. package/lib/families/hedera/speculos-deviceActions.d.ts.map +1 -1
  177. package/lib/families/hedera/speculos-deviceActions.js +4 -4
  178. package/lib/families/hedera/speculos-deviceActions.js.map +1 -1
  179. package/lib/families/osmosis/specs.d.ts.map +1 -1
  180. package/lib/families/osmosis/specs.js +13 -5
  181. package/lib/families/osmosis/specs.js.map +1 -1
  182. package/lib/families/osmosis/speculos-deviceActions.d.ts +1 -4
  183. package/lib/families/osmosis/speculos-deviceActions.d.ts.map +1 -1
  184. package/lib/families/osmosis/speculos-deviceActions.js +2 -4
  185. package/lib/families/osmosis/speculos-deviceActions.js.map +1 -1
  186. package/lib/families/polkadot/platformAdapter.test.d.ts +2 -0
  187. package/lib/families/polkadot/platformAdapter.test.d.ts.map +1 -0
  188. package/lib/families/polkadot/platformAdapter.test.js +51 -0
  189. package/lib/families/polkadot/platformAdapter.test.js.map +1 -0
  190. package/lib/families/polkadot/specs.d.ts.map +1 -1
  191. package/lib/families/polkadot/specs.js +12 -1
  192. package/lib/families/polkadot/specs.js.map +1 -1
  193. package/lib/families/polkadot/speculos-deviceActions.d.ts +1 -4
  194. package/lib/families/polkadot/speculos-deviceActions.d.ts.map +1 -1
  195. package/lib/families/polkadot/speculos-deviceActions.js +2 -4
  196. package/lib/families/polkadot/speculos-deviceActions.js.map +1 -1
  197. package/lib/families/ripple/platformAdapter.test.d.ts +2 -0
  198. package/lib/families/ripple/platformAdapter.test.d.ts.map +1 -0
  199. package/lib/families/ripple/platformAdapter.test.js +51 -0
  200. package/lib/families/ripple/platformAdapter.test.js.map +1 -0
  201. package/lib/families/ripple/specs.d.ts.map +1 -1
  202. package/lib/families/ripple/specs.js +9 -4
  203. package/lib/families/ripple/specs.js.map +1 -1
  204. package/lib/families/ripple/speculos-deviceActions.d.ts +1 -4
  205. package/lib/families/ripple/speculos-deviceActions.d.ts.map +1 -1
  206. package/lib/families/ripple/speculos-deviceActions.js +2 -4
  207. package/lib/families/ripple/speculos-deviceActions.js.map +1 -1
  208. package/lib/families/solana/specs.d.ts.map +1 -1
  209. package/lib/families/solana/specs.js +29 -11
  210. package/lib/families/solana/specs.js.map +1 -1
  211. package/lib/families/solana/speculos-deviceActions.d.ts +0 -5
  212. package/lib/families/solana/speculos-deviceActions.d.ts.map +1 -1
  213. package/lib/families/solana/speculos-deviceActions.js +0 -4
  214. package/lib/families/solana/speculos-deviceActions.js.map +1 -1
  215. package/lib/families/stellar/api/horizon.d.ts.map +1 -1
  216. package/lib/families/stellar/api/horizon.js +15 -10
  217. package/lib/families/stellar/api/horizon.js.map +1 -1
  218. package/lib/families/stellar/specs.d.ts.map +1 -1
  219. package/lib/families/stellar/specs.js +30 -12
  220. package/lib/families/stellar/specs.js.map +1 -1
  221. package/lib/families/stellar/speculos-deviceActions.d.ts +1 -4
  222. package/lib/families/stellar/speculos-deviceActions.d.ts.map +1 -1
  223. package/lib/families/stellar/speculos-deviceActions.js +2 -4
  224. package/lib/families/stellar/speculos-deviceActions.js.map +1 -1
  225. package/lib/families/tezos/bakers.whitelist-default.d.ts.map +1 -1
  226. package/lib/families/tezos/bakers.whitelist-default.js +1 -1
  227. package/lib/families/tezos/bakers.whitelist-default.js.map +1 -1
  228. package/lib/families/tezos/specs.d.ts.map +1 -1
  229. package/lib/families/tezos/specs.js +2 -0
  230. package/lib/families/tezos/specs.js.map +1 -1
  231. package/lib/families/tezos/speculos-deviceActions.d.ts +1 -4
  232. package/lib/families/tezos/speculos-deviceActions.d.ts.map +1 -1
  233. package/lib/families/tezos/speculos-deviceActions.js +2 -2
  234. package/lib/families/tezos/speculos-deviceActions.js.map +1 -1
  235. package/lib/families/tron/specs.d.ts.map +1 -1
  236. package/lib/families/tron/specs.js +49 -17
  237. package/lib/families/tron/specs.js.map +1 -1
  238. package/lib/families/tron/speculos-deviceActions.d.ts +1 -4
  239. package/lib/families/tron/speculos-deviceActions.d.ts.map +1 -1
  240. package/lib/families/tron/speculos-deviceActions.js +2 -4
  241. package/lib/families/tron/speculos-deviceActions.js.map +1 -1
  242. package/lib/hw/getGenuineCheckFromDeviceId.d.ts +22 -0
  243. package/lib/hw/getGenuineCheckFromDeviceId.d.ts.map +1 -0
  244. package/lib/hw/getGenuineCheckFromDeviceId.js +49 -0
  245. package/lib/hw/getGenuineCheckFromDeviceId.js.map +1 -0
  246. package/lib/hw/getGenuineCheckFromDeviceId.test.d.ts +2 -0
  247. package/lib/hw/getGenuineCheckFromDeviceId.test.d.ts.map +1 -0
  248. package/lib/hw/getGenuineCheckFromDeviceId.test.js +84 -0
  249. package/lib/hw/getGenuineCheckFromDeviceId.test.js.map +1 -0
  250. package/lib/hw/getLatestAvailableFirmwareFromDeviceId.d.ts +17 -0
  251. package/lib/hw/getLatestAvailableFirmwareFromDeviceId.d.ts.map +1 -0
  252. package/lib/hw/getLatestAvailableFirmwareFromDeviceId.js +27 -0
  253. package/lib/hw/getLatestAvailableFirmwareFromDeviceId.js.map +1 -0
  254. package/lib/hw/hooks/useGenuineCheck.d.ts +34 -0
  255. package/lib/hw/hooks/useGenuineCheck.d.ts.map +1 -0
  256. package/lib/hw/hooks/useGenuineCheck.js +115 -0
  257. package/lib/hw/hooks/useGenuineCheck.js.map +1 -0
  258. package/lib/hw/hooks/useGenuineCheck.test.d.ts +2 -0
  259. package/lib/hw/hooks/useGenuineCheck.test.d.ts.map +1 -0
  260. package/lib/hw/hooks/useGenuineCheck.test.js +316 -0
  261. package/lib/hw/hooks/useGenuineCheck.test.js.map +1 -0
  262. package/lib/hw/hooks/useGetLatestAvailableFirmware.d.ts +29 -0
  263. package/lib/hw/hooks/useGetLatestAvailableFirmware.d.ts.map +1 -0
  264. package/lib/hw/hooks/useGetLatestAvailableFirmware.js +72 -0
  265. package/lib/hw/hooks/useGetLatestAvailableFirmware.js.map +1 -0
  266. package/lib/hw/hooks/useGetLatestAvailableFirmware.test.d.ts +2 -0
  267. package/lib/hw/hooks/useGetLatestAvailableFirmware.test.d.ts.map +1 -0
  268. package/lib/hw/hooks/useGetLatestAvailableFirmware.test.js +155 -0
  269. package/lib/hw/hooks/useGetLatestAvailableFirmware.test.js.map +1 -0
  270. package/lib/load/speculos.d.ts +1 -0
  271. package/lib/load/speculos.d.ts.map +1 -1
  272. package/lib/load/speculos.js +2 -1
  273. package/lib/load/speculos.js.map +1 -1
  274. package/lib/mock/fixtures/cryptoCurrencies.d.ts +5 -0
  275. package/lib/mock/fixtures/cryptoCurrencies.d.ts.map +1 -0
  276. package/lib/mock/fixtures/cryptoCurrencies.js +91 -0
  277. package/lib/mock/fixtures/cryptoCurrencies.js.map +1 -0
  278. package/lib/platform/converters.test.js +44 -218
  279. package/lib/platform/converters.test.js.map +1 -1
  280. package/lib/platform/logic.d.ts +44 -0
  281. package/lib/platform/logic.d.ts.map +1 -1
  282. package/lib/platform/logic.js +147 -1
  283. package/lib/platform/logic.js.map +1 -1
  284. package/lib/platform/logic.test.d.ts +2 -0
  285. package/lib/platform/logic.test.d.ts.map +1 -0
  286. package/lib/platform/logic.test.js +903 -0
  287. package/lib/platform/logic.test.js.map +1 -0
  288. package/lib/platform/react.d.ts +6 -0
  289. package/lib/platform/react.d.ts.map +1 -1
  290. package/lib/platform/react.js +6 -0
  291. package/lib/platform/react.js.map +1 -1
  292. package/lib/platform/tracking.d.ts +1 -1
  293. package/lib/platform/tracking.d.ts.map +1 -1
  294. package/lib/platform/tracking.test.js +14 -41
  295. package/lib/platform/tracking.test.js.map +1 -1
  296. package/lib/reconciliation.d.ts.map +1 -1
  297. package/lib/reconciliation.js +28 -10
  298. package/lib/reconciliation.js.map +1 -1
  299. package/package.json +5 -6
  300. package/src/__tests__/families/bitcoin/wallet-btc/xpub.syncing.integration.test.ts +2 -2
  301. package/src/__tests__/test-helpers/environment.ts +91 -0
  302. package/src/__tests__/test-helpers/setup.ts +2 -91
  303. package/src/account/serialization.ts +103 -64
  304. package/src/bot/bot-test-context.test.ts +37 -0
  305. package/src/bot/bot-test-context.ts +24 -0
  306. package/src/bot/cli.ts +18 -0
  307. package/src/bot/engine.ts +109 -73
  308. package/src/bot/formatters.ts +40 -14
  309. package/src/bot/index.ts +124 -18
  310. package/src/bot/specs.ts +10 -5
  311. package/src/bot/types.ts +7 -3
  312. package/src/countervalues/logic.integration.test.ts +50 -0
  313. package/src/countervalues/modules/weth.ts +9 -12
  314. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +59 -1
  315. package/src/currencies/sortByMarketcap.test.ts +1 -12
  316. package/src/currencies/sortByMarketcap.ts +2 -22
  317. package/src/env.ts +1 -1
  318. package/src/families/algorand/__snapshots__/bridge.integration.test.ts.snap +733 -8
  319. package/src/families/algorand/specs.ts +26 -16
  320. package/src/families/algorand/speculos-deviceActions.ts +31 -10
  321. package/src/families/bitcoin/__snapshots__/bridge.integration.test.ts.snap +43309 -7957
  322. package/src/families/bitcoin/bridge/mock.ts +7 -1
  323. package/src/families/bitcoin/datasets/bitcoin_cash.ts +73 -13
  324. package/src/families/bitcoin/datasets/dash.ts +29 -17
  325. package/src/families/bitcoin/datasets/decred.ts +42 -12
  326. package/src/families/bitcoin/datasets/digibyte.ts +9 -3
  327. package/src/families/bitcoin/datasets/dogecoin.ts +29 -17
  328. package/src/families/bitcoin/datasets/komodo.ts +22 -22
  329. package/src/families/bitcoin/datasets/litecoin.ts +9 -3
  330. package/src/families/bitcoin/datasets/peercoin.ts +17 -17
  331. package/src/families/bitcoin/datasets/pivx.ts +17 -17
  332. package/src/families/bitcoin/datasets/qtum.ts +40 -40
  333. package/src/families/bitcoin/datasets/stakenet.ts +56 -26
  334. package/src/families/bitcoin/datasets/vertcoin.ts +43 -55
  335. package/src/families/bitcoin/datasets/viacoin.ts +35 -23
  336. package/src/families/bitcoin/datasets/zcash.ts +78 -12
  337. package/src/families/bitcoin/datasets/zencash.ts +56 -10
  338. package/src/families/bitcoin/platformAdapter.test.ts +58 -0
  339. package/src/families/bitcoin/specs.ts +81 -41
  340. package/src/families/bitcoin/speculos-deviceActions.ts +68 -69
  341. package/src/families/cardano/js-estimateMaxSpendable.ts +1 -1
  342. package/src/families/cardano/specs.ts +28 -11
  343. package/src/families/cardano/speculos-deviceActions.ts +65 -66
  344. package/src/families/celo/specs.ts +2 -0
  345. package/src/families/celo/speculos-deviceActions.ts +42 -43
  346. package/src/families/cosmos/__snapshots__/bridge.integration.test.ts.snap +246 -5
  347. package/src/families/cosmos/specs.ts +44 -28
  348. package/src/families/cosmos/speculos-deviceActions.ts +82 -83
  349. package/src/families/crypto_org/specs.ts +3 -0
  350. package/src/families/crypto_org/speculos-deviceActions.ts +58 -59
  351. package/src/families/elrond/specs.ts +21 -4
  352. package/src/families/elrond/speculos-deviceActions.ts +41 -42
  353. package/src/families/ethereum/__snapshots__/bridge.integration.test.ts.snap +90 -90
  354. package/src/families/ethereum/platformAdapter.test.ts +112 -0
  355. package/src/families/ethereum/specs.ts +47 -23
  356. package/src/families/ethereum/speculos-deviceActions.ts +93 -95
  357. package/src/families/filecoin/specs.ts +2 -1
  358. package/src/families/filecoin/speculos-deviceActions.ts +61 -62
  359. package/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap +57 -2
  360. package/src/families/hedera/specs.ts +13 -5
  361. package/src/families/hedera/speculos-deviceActions.ts +59 -60
  362. package/src/families/osmosis/specs.ts +15 -7
  363. package/src/families/osmosis/speculos-deviceActions.ts +82 -83
  364. package/src/families/polkadot/platformAdapter.test.ts +61 -0
  365. package/src/families/polkadot/specs.ts +20 -2
  366. package/src/families/polkadot/speculos-deviceActions.ts +83 -82
  367. package/src/families/ripple/platformAdapter.test.ts +54 -0
  368. package/src/families/ripple/specs.ts +14 -7
  369. package/src/families/ripple/speculos-deviceActions.ts +72 -73
  370. package/src/families/solana/specs.ts +33 -14
  371. package/src/families/solana/speculos-deviceActions.ts +0 -5
  372. package/src/families/stellar/api/horizon.ts +10 -6
  373. package/src/families/stellar/specs.ts +37 -19
  374. package/src/families/stellar/speculos-deviceActions.ts +85 -87
  375. package/src/families/tezos/bakers.whitelist-default.ts +0 -1
  376. package/src/families/tezos/specs.ts +2 -0
  377. package/src/families/tezos/speculos-deviceActions.ts +76 -77
  378. package/src/families/tron/specs.ts +67 -30
  379. package/src/families/tron/speculos-deviceActions.ts +81 -84
  380. package/src/hw/getGenuineCheckFromDeviceId.test.ts +98 -0
  381. package/src/hw/getGenuineCheckFromDeviceId.ts +61 -0
  382. package/src/hw/getLatestAvailableFirmwareFromDeviceId.ts +37 -0
  383. package/src/hw/hooks/useGenuineCheck.test.ts +232 -0
  384. package/src/hw/hooks/useGenuineCheck.ts +138 -0
  385. package/src/hw/hooks/useGetLatestAvailableFirmware.test.ts +111 -0
  386. package/src/hw/hooks/useGetLatestAvailableFirmware.ts +90 -0
  387. package/src/load/speculos.ts +2 -0
  388. package/src/mock/fixtures/cryptoCurrencies.ts +88 -0
  389. package/src/platform/converters.test.ts +49 -282
  390. package/src/platform/logic.test.ts +756 -0
  391. package/src/platform/logic.ts +285 -0
  392. package/src/platform/react.ts +6 -0
  393. package/src/platform/tracking.test.ts +6 -7
  394. package/src/platform/tracking.ts +1 -1
  395. package/src/reconciliation.ts +66 -43
  396. package/lib/bot/test.bot.d.ts +0 -2
  397. package/lib/bot/test.bot.d.ts.map +0 -1
  398. package/lib/bot/test.bot.js +0 -62
  399. package/lib/bot/test.bot.js.map +0 -1
  400. package/lib/generated/speculos-deviceActions.d.ts +0 -56
  401. package/lib/generated/speculos-deviceActions.d.ts.map +0 -1
  402. package/lib/generated/speculos-deviceActions.js +0 -42
  403. package/lib/generated/speculos-deviceActions.js.map +0 -1
  404. package/src/bot/test.bot.ts +0 -21
  405. package/src/generated/speculos-deviceActions.ts +0 -37
@@ -0,0 +1,34 @@
1
+ import type { DeviceId } from "@ledgerhq/types-live";
2
+ import type { GetGenuineCheckFromDeviceIdArgs, GetGenuineCheckFromDeviceIdOutput } from "../getGenuineCheckFromDeviceId";
3
+ export declare type GenuineState = "unchecked" | "genuine" | "non-genuine";
4
+ export declare type DevicePermissionState = "unrequested" | "unlock-needed" | "unlocked" | "requested" | "granted" | "refused";
5
+ export declare type UseGenuineCheckArgs = {
6
+ isHookEnabled?: boolean;
7
+ deviceId: DeviceId;
8
+ lockedDeviceTimeoutMs?: number;
9
+ };
10
+ export declare type UseGenuineCheckDependencies = {
11
+ getGenuineCheckFromDeviceId?: (args: GetGenuineCheckFromDeviceIdArgs) => GetGenuineCheckFromDeviceIdOutput;
12
+ };
13
+ export declare type UseGenuineCheckResult = {
14
+ genuineState: GenuineState;
15
+ devicePermissionState: DevicePermissionState;
16
+ error: Error | null;
17
+ resetGenuineCheckState: () => void;
18
+ };
19
+ /**
20
+ * Hook to check that a device is genuine
21
+ * It replaces a DeviceAction if we're only interested in getting the genuine check
22
+ * @param getGenuineCheckFromDeviceId An optional function to get a genuine check for a given device id,
23
+ * by default set to live-common/hw/getGenuineCheckFromDeviceId.
24
+ * This dependency injection is needed for LLD to have the hook working on the internal thread
25
+ * @param isHookEnabled A boolean to enable (true, default value) or disable (false) the hook
26
+ * @param deviceId A device id, or an empty string if device is usb plugged
27
+ * @param lockedDeviceTimeoutMs Time of no response from device after which the device is considered locked, in ms. Default 1000ms.
28
+ * @returns An object containing:
29
+ * - genuineState: the current GenuineState
30
+ * - devicePermissionState: the current DevicePermissionState
31
+ * - error: any error that occurred during the genuine check, or null
32
+ */
33
+ export declare const useGenuineCheck: ({ getGenuineCheckFromDeviceId, isHookEnabled, deviceId, lockedDeviceTimeoutMs, }: UseGenuineCheckArgs & UseGenuineCheckDependencies) => UseGenuineCheckResult;
34
+ //# sourceMappingURL=useGenuineCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGenuineCheck.d.ts","sourceRoot":"","sources":["../../../src/hw/hooks/useGenuineCheck.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EACV,+BAA+B,EAE/B,iCAAiC,EAClC,MAAM,gCAAgC,CAAC;AAExC,oBAAY,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,CAAC;AACnE,oBAAY,qBAAqB,GAC7B,aAAa,GACb,eAAe,GACf,UAAU,GACV,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd,oBAAY,mBAAmB,GAAG;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,oBAAY,2BAA2B,GAAG;IACxC,2BAA2B,CAAC,EAAE,CAC5B,IAAI,EAAE,+BAA+B,KAClC,iCAAiC,CAAC;CACxC,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,sBAAsB,EAAE,MAAM,IAAI,CAAC;CACpC,CAAC;AAIF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,qFAKzB,mBAAmB,GACpB,2BAA2B,KAAG,qBA6E/B,CAAC"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ exports.__esModule = true;
19
+ exports.useGenuineCheck = void 0;
20
+ var react_1 = require("react");
21
+ var errors_1 = require("@ledgerhq/errors");
22
+ var getGenuineCheckFromDeviceId_1 = require("../getGenuineCheckFromDeviceId");
23
+ var SOCKET_EVENT_PAYLOAD_GENUINE = "0000";
24
+ /**
25
+ * Hook to check that a device is genuine
26
+ * It replaces a DeviceAction if we're only interested in getting the genuine check
27
+ * @param getGenuineCheckFromDeviceId An optional function to get a genuine check for a given device id,
28
+ * by default set to live-common/hw/getGenuineCheckFromDeviceId.
29
+ * This dependency injection is needed for LLD to have the hook working on the internal thread
30
+ * @param isHookEnabled A boolean to enable (true, default value) or disable (false) the hook
31
+ * @param deviceId A device id, or an empty string if device is usb plugged
32
+ * @param lockedDeviceTimeoutMs Time of no response from device after which the device is considered locked, in ms. Default 1000ms.
33
+ * @returns An object containing:
34
+ * - genuineState: the current GenuineState
35
+ * - devicePermissionState: the current DevicePermissionState
36
+ * - error: any error that occurred during the genuine check, or null
37
+ */
38
+ var useGenuineCheck = function (_a) {
39
+ var _b = _a.getGenuineCheckFromDeviceId, getGenuineCheckFromDeviceId = _b === void 0 ? getGenuineCheckFromDeviceId_1.getGenuineCheckFromDeviceId : _b, _c = _a.isHookEnabled, isHookEnabled = _c === void 0 ? true : _c, deviceId = _a.deviceId, _d = _a.lockedDeviceTimeoutMs, lockedDeviceTimeoutMs = _d === void 0 ? 1000 : _d;
40
+ var _e = __read((0, react_1.useState)("unchecked"), 2), genuineState = _e[0], setGenuineState = _e[1];
41
+ var _f = __read((0, react_1.useState)("unrequested"), 2), devicePermissionState = _f[0], setDevicePermissionState = _f[1];
42
+ var _g = __read((0, react_1.useState)(null), 2), error = _g[0], setError = _g[1];
43
+ var resetGenuineCheckState = (0, react_1.useCallback)(function () {
44
+ setDevicePermissionState("unrequested");
45
+ setGenuineState("unchecked");
46
+ }, []);
47
+ (0, react_1.useEffect)(function () {
48
+ if (!isHookEnabled) {
49
+ return;
50
+ }
51
+ var sub = getGenuineCheckFromDeviceId({
52
+ deviceId: deviceId,
53
+ lockedDeviceTimeoutMs: lockedDeviceTimeoutMs
54
+ }).subscribe({
55
+ next: function (_a) {
56
+ var socketEvent = _a.socketEvent, deviceIsLocked = _a.deviceIsLocked;
57
+ if (socketEvent) {
58
+ switch (socketEvent.type) {
59
+ case "device-permission-requested":
60
+ setDevicePermissionState("requested");
61
+ break;
62
+ case "device-permission-granted":
63
+ setDevicePermissionState("granted");
64
+ break;
65
+ case "result":
66
+ if (socketEvent.payload === SOCKET_EVENT_PAYLOAD_GENUINE) {
67
+ setGenuineState("genuine");
68
+ }
69
+ else {
70
+ setGenuineState("non-genuine");
71
+ }
72
+ break;
73
+ }
74
+ }
75
+ else {
76
+ // If no socketEvent, the device is locked or has been unlocked
77
+ if (deviceIsLocked) {
78
+ setDevicePermissionState("unlock-needed");
79
+ }
80
+ else {
81
+ setDevicePermissionState("unlocked");
82
+ }
83
+ }
84
+ },
85
+ error: function (e) {
86
+ if (e instanceof errors_1.UserRefusedAllowManager) {
87
+ setDevicePermissionState("refused");
88
+ }
89
+ else if (e instanceof Error) {
90
+ // Probably an error of type DisconnectedDeviceDuringOperation or something else
91
+ setError(e);
92
+ }
93
+ else {
94
+ setError(new Error("Unknown error: ".concat(e)));
95
+ }
96
+ }
97
+ });
98
+ return function () {
99
+ sub.unsubscribe();
100
+ };
101
+ }, [
102
+ isHookEnabled,
103
+ deviceId,
104
+ lockedDeviceTimeoutMs,
105
+ getGenuineCheckFromDeviceId,
106
+ ]);
107
+ return {
108
+ genuineState: genuineState,
109
+ devicePermissionState: devicePermissionState,
110
+ error: error,
111
+ resetGenuineCheckState: resetGenuineCheckState
112
+ };
113
+ };
114
+ exports.useGenuineCheck = useGenuineCheck;
115
+ //# sourceMappingURL=useGenuineCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGenuineCheck.js","sourceRoot":"","sources":["../../../src/hw/hooks/useGenuineCheck.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,+BAAyD;AACzD,2CAA2D;AAE3D,8EAAmH;AAmCnH,IAAM,4BAA4B,GAAG,MAAM,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AACI,IAAM,eAAe,GAAG,UAAC,EAMH;QAL3B,mCAAgE,EAAhE,2BAA2B,mBAAG,yDAAkC,KAAA,EAChE,qBAAoB,EAApB,aAAa,mBAAG,IAAI,KAAA,EACpB,QAAQ,cAAA,EACR,6BAA4B,EAA5B,qBAAqB,mBAAG,IAAI,KAAA;IAGtB,IAAA,KAAA,OAAkC,IAAA,gBAAQ,EAAe,WAAW,CAAC,IAAA,EAApE,YAAY,QAAA,EAAE,eAAe,QAAuC,CAAC;IACtE,IAAA,KAAA,OACJ,IAAA,gBAAQ,EAAwB,aAAa,CAAC,IAAA,EADzC,qBAAqB,QAAA,EAAE,wBAAwB,QACN,CAAC;IAC3C,IAAA,KAAA,OAAoB,IAAA,gBAAQ,EAAe,IAAI,CAAC,IAAA,EAA/C,KAAK,QAAA,EAAE,QAAQ,QAAgC,CAAC;IAEvD,IAAM,sBAAsB,GAAG,IAAA,mBAAW,EAAC;QACzC,wBAAwB,CAAC,aAAa,CAAC,CAAC;QACxC,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;SACR;QAED,IAAM,GAAG,GAAG,2BAA2B,CAAC;YACtC,QAAQ,UAAA;YACR,qBAAqB,uBAAA;SACtB,CAAC,CAAC,SAAS,CAAC;YACX,IAAI,EAAE,UAAC,EAG6B;oBAFlC,WAAW,iBAAA,EACX,cAAc,oBAAA;gBAEd,IAAI,WAAW,EAAE;oBACf,QAAQ,WAAW,CAAC,IAAI,EAAE;wBACxB,KAAK,6BAA6B;4BAChC,wBAAwB,CAAC,WAAW,CAAC,CAAC;4BACtC,MAAM;wBACR,KAAK,2BAA2B;4BAC9B,wBAAwB,CAAC,SAAS,CAAC,CAAC;4BACpC,MAAM;wBACR,KAAK,QAAQ;4BACX,IAAI,WAAW,CAAC,OAAO,KAAK,4BAA4B,EAAE;gCACxD,eAAe,CAAC,SAAS,CAAC,CAAC;6BAC5B;iCAAM;gCACL,eAAe,CAAC,aAAa,CAAC,CAAC;6BAChC;4BACD,MAAM;qBACT;iBACF;qBAAM;oBACL,+DAA+D;oBAC/D,IAAI,cAAc,EAAE;wBAClB,wBAAwB,CAAC,eAAe,CAAC,CAAC;qBAC3C;yBAAM;wBACL,wBAAwB,CAAC,UAAU,CAAC,CAAC;qBACtC;iBACF;YACH,CAAC;YACD,KAAK,EAAE,UAAC,CAAM;gBACZ,IAAI,CAAC,YAAY,gCAAuB,EAAE;oBACxC,wBAAwB,CAAC,SAAS,CAAC,CAAC;iBACrC;qBAAM,IAAI,CAAC,YAAY,KAAK,EAAE;oBAC7B,gFAAgF;oBAChF,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACb;qBAAM;oBACL,QAAQ,CAAC,IAAI,KAAK,CAAC,yBAAkB,CAAC,CAAE,CAAC,CAAC,CAAC;iBAC5C;YACH,CAAC;SACF,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,aAAa;QACb,QAAQ;QACR,qBAAqB;QACrB,2BAA2B;KAC5B,CAAC,CAAC;IAEH,OAAO;QACL,YAAY,cAAA;QACZ,qBAAqB,uBAAA;QACrB,KAAK,OAAA;QACL,sBAAsB,wBAAA;KACvB,CAAC;AACJ,CAAC,CAAC;AAnFW,QAAA,eAAe,mBAmF1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useGenuineCheck.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGenuineCheck.test.d.ts","sourceRoot":"","sources":["../../../src/hw/hooks/useGenuineCheck.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ exports.__esModule = true;
39
+ var react_hooks_1 = require("@testing-library/react-hooks");
40
+ var rxjs_1 = require("rxjs");
41
+ var errors_1 = require("@ledgerhq/errors");
42
+ var useGenuineCheck_1 = require("./useGenuineCheck");
43
+ var getGenuineCheckFromDeviceId_1 = require("../getGenuineCheckFromDeviceId");
44
+ jest.mock("../getGenuineCheckFromDeviceId");
45
+ jest.useFakeTimers();
46
+ var mockedGetGenuineCheckFromDeviceId = jest.mocked(getGenuineCheckFromDeviceId_1.getGenuineCheckFromDeviceId);
47
+ describe("useGenuineCheck", function () {
48
+ afterEach(function () {
49
+ mockedGetGenuineCheckFromDeviceId.mockClear();
50
+ jest.clearAllTimers();
51
+ });
52
+ describe("When the genuine check requests for a device permission", function () {
53
+ it("should notify the hook consumer of the request", function () { return __awaiter(void 0, void 0, void 0, function () {
54
+ var result;
55
+ return __generator(this, function (_a) {
56
+ switch (_a.label) {
57
+ case 0:
58
+ mockedGetGenuineCheckFromDeviceId.mockReturnValue((0, rxjs_1.of)({
59
+ socketEvent: { type: "device-permission-requested", wording: "" },
60
+ deviceIsLocked: false
61
+ }));
62
+ result = (0, react_hooks_1.renderHook)(function () {
63
+ return (0, useGenuineCheck_1.useGenuineCheck)({
64
+ getGenuineCheckFromDeviceId: mockedGetGenuineCheckFromDeviceId,
65
+ deviceId: "A_DEVICE_ID"
66
+ });
67
+ }).result;
68
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
69
+ return __generator(this, function (_a) {
70
+ jest.advanceTimersByTime(1);
71
+ return [2 /*return*/];
72
+ });
73
+ }); })];
74
+ case 1:
75
+ _a.sent();
76
+ expect(result.current.devicePermissionState).toEqual("requested");
77
+ expect(result.current.genuineState).toEqual("unchecked");
78
+ expect(result.current.error).toBeNull();
79
+ return [2 /*return*/];
80
+ }
81
+ });
82
+ }); });
83
+ it("should notify the hook consumer if the device permission is granted", function () { return __awaiter(void 0, void 0, void 0, function () {
84
+ var result;
85
+ return __generator(this, function (_a) {
86
+ switch (_a.label) {
87
+ case 0:
88
+ mockedGetGenuineCheckFromDeviceId.mockReturnValue((0, rxjs_1.of)({
89
+ socketEvent: { type: "device-permission-granted" },
90
+ deviceIsLocked: false
91
+ }));
92
+ result = (0, react_hooks_1.renderHook)(function () {
93
+ return (0, useGenuineCheck_1.useGenuineCheck)({
94
+ getGenuineCheckFromDeviceId: mockedGetGenuineCheckFromDeviceId,
95
+ deviceId: "A_DEVICE_ID"
96
+ });
97
+ }).result;
98
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
99
+ return __generator(this, function (_a) {
100
+ jest.advanceTimersByTime(1);
101
+ return [2 /*return*/];
102
+ });
103
+ }); })];
104
+ case 1:
105
+ _a.sent();
106
+ expect(result.current.devicePermissionState).toEqual("granted");
107
+ expect(result.current.genuineState).toEqual("unchecked");
108
+ expect(result.current.error).toBeNull();
109
+ return [2 /*return*/];
110
+ }
111
+ });
112
+ }); });
113
+ it("should notify the hook consumer if the device permission is refused", function () { return __awaiter(void 0, void 0, void 0, function () {
114
+ var result;
115
+ return __generator(this, function (_a) {
116
+ switch (_a.label) {
117
+ case 0:
118
+ mockedGetGenuineCheckFromDeviceId.mockReturnValue((0, rxjs_1.throwError)(new errors_1.UserRefusedAllowManager()));
119
+ result = (0, react_hooks_1.renderHook)(function () {
120
+ return (0, useGenuineCheck_1.useGenuineCheck)({
121
+ getGenuineCheckFromDeviceId: mockedGetGenuineCheckFromDeviceId,
122
+ deviceId: "A_DEVICE_ID"
123
+ });
124
+ }).result;
125
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
126
+ return __generator(this, function (_a) {
127
+ jest.advanceTimersByTime(1);
128
+ return [2 /*return*/];
129
+ });
130
+ }); })];
131
+ case 1:
132
+ _a.sent();
133
+ expect(result.current.devicePermissionState).toEqual("refused");
134
+ expect(result.current.genuineState).toEqual("unchecked");
135
+ expect(result.current.error).toBeNull();
136
+ return [2 /*return*/];
137
+ }
138
+ });
139
+ }); });
140
+ });
141
+ describe("When an error occurred during the genuine check", function () {
142
+ it("should notify the hook consumer that an error occurred", function () { return __awaiter(void 0, void 0, void 0, function () {
143
+ var result;
144
+ return __generator(this, function (_a) {
145
+ switch (_a.label) {
146
+ case 0:
147
+ mockedGetGenuineCheckFromDeviceId.mockReturnValue((0, rxjs_1.throwError)(new errors_1.DisconnectedDeviceDuringOperation()));
148
+ result = (0, react_hooks_1.renderHook)(function () {
149
+ return (0, useGenuineCheck_1.useGenuineCheck)({
150
+ getGenuineCheckFromDeviceId: mockedGetGenuineCheckFromDeviceId,
151
+ deviceId: "A_DEVICE_ID"
152
+ });
153
+ }).result;
154
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
155
+ return __generator(this, function (_a) {
156
+ jest.advanceTimersByTime(1);
157
+ return [2 /*return*/];
158
+ });
159
+ }); })];
160
+ case 1:
161
+ _a.sent();
162
+ expect(result.current.genuineState).toEqual("unchecked");
163
+ expect(result.current.error).toBeInstanceOf(errors_1.DisconnectedDeviceDuringOperation);
164
+ return [2 /*return*/];
165
+ }
166
+ });
167
+ }); });
168
+ });
169
+ describe("When the genuine check is completed", function () {
170
+ describe("and it is a success", function () {
171
+ it("should notify the hook consumer of the success", function () { return __awaiter(void 0, void 0, void 0, function () {
172
+ var result;
173
+ return __generator(this, function (_a) {
174
+ switch (_a.label) {
175
+ case 0:
176
+ mockedGetGenuineCheckFromDeviceId.mockReturnValue((0, rxjs_1.of)({
177
+ socketEvent: { type: "result", payload: "0000" },
178
+ deviceIsLocked: false
179
+ }));
180
+ result = (0, react_hooks_1.renderHook)(function () {
181
+ return (0, useGenuineCheck_1.useGenuineCheck)({
182
+ getGenuineCheckFromDeviceId: mockedGetGenuineCheckFromDeviceId,
183
+ deviceId: "A_DEVICE_ID"
184
+ });
185
+ }).result;
186
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
187
+ return __generator(this, function (_a) {
188
+ jest.advanceTimersByTime(1);
189
+ return [2 /*return*/];
190
+ });
191
+ }); })];
192
+ case 1:
193
+ _a.sent();
194
+ expect(result.current.genuineState).toEqual("genuine");
195
+ expect(result.current.error).toBeNull();
196
+ return [2 /*return*/];
197
+ }
198
+ });
199
+ }); });
200
+ });
201
+ describe("and the device is not genuine", function () {
202
+ it("should notify the hook consumer that the device is not genuine", function () { return __awaiter(void 0, void 0, void 0, function () {
203
+ var result;
204
+ return __generator(this, function (_a) {
205
+ switch (_a.label) {
206
+ case 0:
207
+ mockedGetGenuineCheckFromDeviceId.mockReturnValue((0, rxjs_1.of)({
208
+ socketEvent: { type: "result", payload: "1111" },
209
+ deviceIsLocked: false
210
+ }));
211
+ result = (0, react_hooks_1.renderHook)(function () {
212
+ return (0, useGenuineCheck_1.useGenuineCheck)({
213
+ getGenuineCheckFromDeviceId: mockedGetGenuineCheckFromDeviceId,
214
+ deviceId: "A_DEVICE_ID"
215
+ });
216
+ }).result;
217
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
218
+ return __generator(this, function (_a) {
219
+ jest.advanceTimersByTime(1);
220
+ return [2 /*return*/];
221
+ });
222
+ }); })];
223
+ case 1:
224
+ _a.sent();
225
+ expect(result.current.genuineState).toEqual("non-genuine");
226
+ expect(result.current.error).toBeNull();
227
+ return [2 /*return*/];
228
+ }
229
+ });
230
+ }); });
231
+ });
232
+ });
233
+ describe("When the hook consumer requests to reset the genuine check state", function () {
234
+ it("should reset the device permission and genuine states", function () { return __awaiter(void 0, void 0, void 0, function () {
235
+ var result;
236
+ return __generator(this, function (_a) {
237
+ switch (_a.label) {
238
+ case 0:
239
+ // In the case of an unsuccessful genuine check
240
+ mockedGetGenuineCheckFromDeviceId.mockReturnValue((0, rxjs_1.of)({
241
+ socketEvent: { type: "device-permission-granted" },
242
+ deviceIsLocked: false
243
+ }, {
244
+ socketEvent: { type: "result", payload: "1111" },
245
+ deviceIsLocked: false
246
+ }));
247
+ result = (0, react_hooks_1.renderHook)(function () {
248
+ return (0, useGenuineCheck_1.useGenuineCheck)({
249
+ getGenuineCheckFromDeviceId: mockedGetGenuineCheckFromDeviceId,
250
+ isHookEnabled: true,
251
+ deviceId: "A_DEVICE_ID"
252
+ });
253
+ }).result;
254
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
255
+ return __generator(this, function (_a) {
256
+ jest.advanceTimersByTime(1);
257
+ return [2 /*return*/];
258
+ });
259
+ }); })];
260
+ case 1:
261
+ _a.sent();
262
+ expect(result.current.devicePermissionState).toEqual("granted");
263
+ expect(result.current.genuineState).toEqual("non-genuine");
264
+ expect(result.current.error).toBeNull();
265
+ // We ask to reset the genuine check state
266
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
267
+ return __generator(this, function (_a) {
268
+ result.current.resetGenuineCheckState();
269
+ return [2 /*return*/];
270
+ });
271
+ }); })];
272
+ case 2:
273
+ // We ask to reset the genuine check state
274
+ _a.sent();
275
+ expect(result.current.devicePermissionState).toEqual("unrequested");
276
+ expect(result.current.genuineState).toEqual("unchecked");
277
+ expect(result.current.error).toBeNull();
278
+ return [2 /*return*/];
279
+ }
280
+ });
281
+ }); });
282
+ });
283
+ describe("When the device is locked before doing a genuine check, and it timed out", function () {
284
+ it("should notify the hook consumer of the need to unlock the device", function () { return __awaiter(void 0, void 0, void 0, function () {
285
+ var result;
286
+ return __generator(this, function (_a) {
287
+ switch (_a.label) {
288
+ case 0:
289
+ mockedGetGenuineCheckFromDeviceId.mockReturnValue((0, rxjs_1.of)({
290
+ socketEvent: null,
291
+ deviceIsLocked: true
292
+ }));
293
+ result = (0, react_hooks_1.renderHook)(function () {
294
+ return (0, useGenuineCheck_1.useGenuineCheck)({
295
+ getGenuineCheckFromDeviceId: mockedGetGenuineCheckFromDeviceId,
296
+ deviceId: "A_DEVICE_ID"
297
+ });
298
+ }).result;
299
+ return [4 /*yield*/, (0, react_hooks_1.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
300
+ return __generator(this, function (_a) {
301
+ jest.advanceTimersByTime(1);
302
+ return [2 /*return*/];
303
+ });
304
+ }); })];
305
+ case 1:
306
+ _a.sent();
307
+ expect(result.current.devicePermissionState).toEqual("unlock-needed");
308
+ expect(result.current.genuineState).toEqual("unchecked");
309
+ expect(result.current.error).toBeNull();
310
+ return [2 /*return*/];
311
+ }
312
+ });
313
+ }); });
314
+ });
315
+ });
316
+ //# sourceMappingURL=useGenuineCheck.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGenuineCheck.test.js","sourceRoot":"","sources":["../../../src/hw/hooks/useGenuineCheck.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { FirmwareUpdateContext, DeviceId } from "@ledgerhq/types-live";
2
+ import type { GetLatestAvailableFirmwareFromDeviceIdArgs, GetLatestAvailableFirmwareFromDeviceIdOutput } from "../getLatestAvailableFirmwareFromDeviceId";
3
+ export declare type FirmwareUpdateGettingStatus = "unchecked" | "checking" | "no-available-firmware" | "available-firmware";
4
+ export declare type useGetLatestAvailableFirmwareDependencies = {
5
+ getLatestAvailableFirmwareFromDeviceId?: (args: GetLatestAvailableFirmwareFromDeviceIdArgs) => GetLatestAvailableFirmwareFromDeviceIdOutput;
6
+ };
7
+ export declare type useGetLatestAvailableFirmwareArgs = {
8
+ isHookEnabled?: boolean;
9
+ deviceId: DeviceId;
10
+ };
11
+ export declare type useGetLatestAvailableFirmwareResult = {
12
+ latestFirmware: FirmwareUpdateContext | null;
13
+ status: FirmwareUpdateGettingStatus;
14
+ error: Error | null;
15
+ };
16
+ /**
17
+ * Hook to get the latest available firmware for a device
18
+ * @param getLatestAvailableFirmwareFromDeviceId An optional function to get the latest available firmware
19
+ * for a given device id, by default set to live-common/hw/getLatestAvailableFirmwareFromDeviceId.
20
+ * This dependency injection is needed for LLD to have the hook working on the internal thread
21
+ * @param isHookEnabled A boolean to enable (true, default value) or disable (false) the hook
22
+ * @param deviceId A device id, or an empty string if device is usb plugged
23
+ * @returns An object containing:
24
+ * - latestFirmware A FirmwareUpdateContext if found, or null if still processing or no available firmware update
25
+ * - status A FirmwareUpdateGettingStatus to notify consumer on the hook state
26
+ * - error: any error that occurred during the process, or null
27
+ */
28
+ export declare const useGetLatestAvailableFirmware: ({ getLatestAvailableFirmwareFromDeviceId, isHookEnabled, deviceId, }: useGetLatestAvailableFirmwareArgs & useGetLatestAvailableFirmwareDependencies) => useGetLatestAvailableFirmwareResult;
29
+ //# sourceMappingURL=useGetLatestAvailableFirmware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGetLatestAvailableFirmware.d.ts","sourceRoot":"","sources":["../../../src/hw/hooks/useGetLatestAvailableFirmware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EACV,0CAA0C,EAE1C,4CAA4C,EAC7C,MAAM,2CAA2C,CAAC;AAGnD,oBAAY,2BAA2B,GACnC,WAAW,GACX,UAAU,GACV,uBAAuB,GACvB,oBAAoB,CAAC;AAEzB,oBAAY,yCAAyC,GAAG;IACtD,sCAAsC,CAAC,EAAE,CACvC,IAAI,EAAE,0CAA0C,KAC7C,4CAA4C,CAAC;CACnD,CAAC;AAEF,oBAAY,iCAAiC,GAAG;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,oBAAY,mCAAmC,GAAG;IAChD,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE,2BAA2B,CAAC;IACpC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,6BAA6B,yEAIvC,iCAAiC,GAClC,yCAAyC,KAAG,mCAwC7C,CAAC"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ exports.__esModule = true;
19
+ exports.useGetLatestAvailableFirmware = void 0;
20
+ var react_1 = require("react");
21
+ var getLatestAvailableFirmwareFromDeviceId_1 = require("../getLatestAvailableFirmwareFromDeviceId");
22
+ /**
23
+ * Hook to get the latest available firmware for a device
24
+ * @param getLatestAvailableFirmwareFromDeviceId An optional function to get the latest available firmware
25
+ * for a given device id, by default set to live-common/hw/getLatestAvailableFirmwareFromDeviceId.
26
+ * This dependency injection is needed for LLD to have the hook working on the internal thread
27
+ * @param isHookEnabled A boolean to enable (true, default value) or disable (false) the hook
28
+ * @param deviceId A device id, or an empty string if device is usb plugged
29
+ * @returns An object containing:
30
+ * - latestFirmware A FirmwareUpdateContext if found, or null if still processing or no available firmware update
31
+ * - status A FirmwareUpdateGettingStatus to notify consumer on the hook state
32
+ * - error: any error that occurred during the process, or null
33
+ */
34
+ var useGetLatestAvailableFirmware = function (_a) {
35
+ var _b = _a.getLatestAvailableFirmwareFromDeviceId, getLatestAvailableFirmwareFromDeviceId = _b === void 0 ? getLatestAvailableFirmwareFromDeviceId_1.getLatestAvailableFirmwareFromDeviceId : _b, _c = _a.isHookEnabled, isHookEnabled = _c === void 0 ? true : _c, deviceId = _a.deviceId;
36
+ var _d = __read((0, react_1.useState)(null), 2), latestFirmware = _d[0], setLatestFirmware = _d[1];
37
+ var _e = __read((0, react_1.useState)(null), 2), error = _e[0], setError = _e[1];
38
+ var _f = __read((0, react_1.useState)("unchecked"), 2), status = _f[0], setStatus = _f[1];
39
+ (0, react_1.useEffect)(function () {
40
+ if (!isHookEnabled) {
41
+ return;
42
+ }
43
+ setStatus("checking");
44
+ var sub = getLatestAvailableFirmwareFromDeviceId({ deviceId: deviceId }).subscribe({
45
+ next: function (_a) {
46
+ var firmwareUpdateContext = _a.firmwareUpdateContext;
47
+ if (!firmwareUpdateContext) {
48
+ setLatestFirmware(null);
49
+ setStatus("no-available-firmware");
50
+ }
51
+ else {
52
+ setLatestFirmware(firmwareUpdateContext);
53
+ setStatus("available-firmware");
54
+ }
55
+ },
56
+ error: function (e) {
57
+ if (e instanceof Error) {
58
+ setError(e);
59
+ }
60
+ else {
61
+ setError(new Error("Unknown error: ".concat(e)));
62
+ }
63
+ }
64
+ });
65
+ return function () {
66
+ sub.unsubscribe();
67
+ };
68
+ }, [deviceId, getLatestAvailableFirmwareFromDeviceId, isHookEnabled]);
69
+ return { latestFirmware: latestFirmware, error: error, status: status };
70
+ };
71
+ exports.useGetLatestAvailableFirmware = useGetLatestAvailableFirmware;
72
+ //# sourceMappingURL=useGetLatestAvailableFirmware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGetLatestAvailableFirmware.js","sourceRoot":"","sources":["../../../src/hw/hooks/useGetLatestAvailableFirmware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,+BAA4C;AAO5C,oGAAoJ;AAyBpJ;;;;;;;;;;;GAWG;AACI,IAAM,6BAA6B,GAAG,UAAC,EAKH;QAJzC,8CAAsF,EAAtF,sCAAsC,mBAAG,+EAA6C,KAAA,EACtF,qBAAoB,EAApB,aAAa,mBAAG,IAAI,KAAA,EACpB,QAAQ,cAAA;IAGF,IAAA,KAAA,OACJ,IAAA,gBAAQ,EAA+B,IAAI,CAAC,IAAA,EADvC,cAAc,QAAA,EAAE,iBAAiB,QACM,CAAC;IACzC,IAAA,KAAA,OAAoB,IAAA,gBAAQ,EAAe,IAAI,CAAC,IAAA,EAA/C,KAAK,QAAA,EAAE,QAAQ,QAAgC,CAAC;IACjD,IAAA,KAAA,OACJ,IAAA,gBAAQ,EAA8B,WAAW,CAAC,IAAA,EAD7C,MAAM,QAAA,EAAE,SAAS,QAC4B,CAAC;IAErD,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;SACR;QACD,SAAS,CAAC,UAAU,CAAC,CAAC;QAEtB,IAAM,GAAG,GAAG,sCAAsC,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC,SAAS,CAAC;YACzE,IAAI,EAAE,UAAC,EAEwC;oBAD7C,qBAAqB,2BAAA;gBAErB,IAAI,CAAC,qBAAqB,EAAE;oBAC1B,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBACxB,SAAS,CAAC,uBAAuB,CAAC,CAAC;iBACpC;qBAAM;oBACL,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;oBACzC,SAAS,CAAC,oBAAoB,CAAC,CAAC;iBACjC;YACH,CAAC;YACD,KAAK,EAAE,UAAC,CAAM;gBACZ,IAAI,CAAC,YAAY,KAAK,EAAE;oBACtB,QAAQ,CAAC,CAAC,CAAC,CAAC;iBACb;qBAAM;oBACL,QAAQ,CAAC,IAAI,KAAK,CAAC,yBAAkB,CAAC,CAAE,CAAC,CAAC,CAAC;iBAC5C;YACH,CAAC;SACF,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,sCAAsC,EAAE,aAAa,CAAC,CAAC,CAAC;IAEtE,OAAO,EAAE,cAAc,gBAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC;AAC3C,CAAC,CAAC;AA7CW,QAAA,6BAA6B,iCA6CxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useGetLatestAvailableFirmware.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGetLatestAvailableFirmware.test.d.ts","sourceRoot":"","sources":["../../../src/hw/hooks/useGetLatestAvailableFirmware.test.ts"],"names":[],"mappings":""}