@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
@@ -1,4 +1,289 @@
1
+ import {
2
+ Account,
3
+ AccountLike,
4
+ Operation,
5
+ SignedOperation,
6
+ TransactionCommon,
7
+ } from "@ledgerhq/types-live";
8
+
9
+ import {
10
+ accountToPlatformAccount,
11
+ getPlatformTransactionSignFlowInfos,
12
+ } from "./converters";
13
+ import {
14
+ RawPlatformTransaction,
15
+ RawPlatformSignedTransaction,
16
+ } from "./rawTypes";
17
+ import {
18
+ deserializePlatformTransaction,
19
+ deserializePlatformSignedTransaction,
20
+ } from "./serializers";
21
+ import type { TrackFunction } from "./tracking";
22
+ import { AppManifest } from "./types";
23
+ import { isTokenAccount, getMainAccount, isAccount } from "../account/index";
24
+ import { getAccountBridge } from "../bridge/index";
25
+ import { Transaction } from "../generated/types";
26
+ import { MessageData } from "../hw/signMessage/types";
27
+ import { prepareMessageToSign } from "../hw/signMessage/index";
28
+
1
29
  export function translateContent(content: any, locale = "en"): string {
2
30
  if (!content || typeof content !== "object") return content;
3
31
  return content[locale] || content.en;
4
32
  }
33
+
34
+ export type WebPlatformContext = {
35
+ manifest: AppManifest;
36
+ accounts: AccountLike[];
37
+ tracking: Record<string, TrackFunction>;
38
+ };
39
+
40
+ function getParentAccount(
41
+ account: AccountLike,
42
+ fromAccounts: AccountLike[]
43
+ ): Account | null {
44
+ return isTokenAccount(account)
45
+ ? (fromAccounts.find((a) => a.id === account.parentId) as Account)
46
+ : null;
47
+ }
48
+
49
+ export function receiveOnAccountLogic(
50
+ { manifest, accounts, tracking }: WebPlatformContext,
51
+ accountId: string,
52
+ uiNavigation: (
53
+ account: AccountLike,
54
+ parentAccount: Account | null,
55
+ accountAddress: string
56
+ ) => Promise<string>
57
+ ): Promise<string> {
58
+ tracking.platformReceiveRequested(manifest);
59
+
60
+ const account = accounts.find((account) => account.id === accountId);
61
+
62
+ if (!account) {
63
+ tracking.platformReceiveFail(manifest);
64
+ return Promise.reject(new Error("Account required"));
65
+ }
66
+
67
+ const parentAccount = getParentAccount(account, accounts);
68
+ const accountAddress = accountToPlatformAccount(
69
+ account,
70
+ parentAccount ?? undefined //FIXME-STP
71
+ ).address;
72
+
73
+ return uiNavigation(account, parentAccount, accountAddress);
74
+ }
75
+
76
+ export function signTransactionLogic(
77
+ { manifest, accounts, tracking }: WebPlatformContext,
78
+ accountId: string,
79
+ transaction: RawPlatformTransaction,
80
+ uiNavigation: (
81
+ account: AccountLike,
82
+ parentAccount: Account | null,
83
+ signFlowInfos: {
84
+ canEditFees: boolean;
85
+ hasFeesProvided: boolean;
86
+ liveTx: Partial<Transaction>;
87
+ }
88
+ ) => Promise<RawPlatformSignedTransaction>
89
+ ): Promise<RawPlatformSignedTransaction> {
90
+ tracking.platformSignTransactionRequested(manifest);
91
+
92
+ if (!transaction) {
93
+ tracking.platformSignTransactionFail(manifest);
94
+ return Promise.reject(new Error("Transaction required"));
95
+ }
96
+
97
+ const platformTransaction = deserializePlatformTransaction(transaction);
98
+ const account = accounts.find((account) => account.id === accountId);
99
+
100
+ if (!account) {
101
+ tracking.platformSignTransactionFail(manifest);
102
+ return Promise.reject(new Error("Account required"));
103
+ }
104
+
105
+ const parentAccount = getParentAccount(account, accounts);
106
+
107
+ if (
108
+ (isTokenAccount(account)
109
+ ? parentAccount?.currency.family
110
+ : account.currency.family) !== platformTransaction.family
111
+ ) {
112
+ return Promise.reject(
113
+ new Error("Transaction family not matching account currency family")
114
+ );
115
+ }
116
+
117
+ const { canEditFees, liveTx, hasFeesProvided } =
118
+ getPlatformTransactionSignFlowInfos(platformTransaction);
119
+
120
+ return uiNavigation(account, parentAccount, {
121
+ canEditFees,
122
+ liveTx,
123
+ hasFeesProvided,
124
+ });
125
+ }
126
+
127
+ export function broadcastTransactionLogic(
128
+ { manifest, accounts, tracking }: WebPlatformContext,
129
+ accountId: string,
130
+ signedTransaction: RawPlatformSignedTransaction,
131
+ uiNavigation: (
132
+ account: AccountLike,
133
+ parentAccount: Account | null,
134
+ signedOperation: SignedOperation
135
+ ) => Promise<string>
136
+ ): Promise<string> {
137
+ if (!signedTransaction) {
138
+ tracking.platformBroadcastFail(manifest);
139
+ return Promise.reject(new Error("Transaction required"));
140
+ }
141
+
142
+ const account = accounts.find((account) => account.id === accountId);
143
+ if (!account) {
144
+ tracking.platformBroadcastFail(manifest);
145
+ return Promise.reject(new Error("Account required"));
146
+ }
147
+
148
+ const parentAccount = getParentAccount(account, accounts);
149
+
150
+ const signedOperation = deserializePlatformSignedTransaction(
151
+ signedTransaction,
152
+ accountId
153
+ );
154
+
155
+ return uiNavigation(account, parentAccount, signedOperation);
156
+ }
157
+
158
+ export type CompleteExchangeRequest = {
159
+ provider: string;
160
+ fromAccountId: string;
161
+ toAccountId: string;
162
+ transaction: RawPlatformTransaction;
163
+ binaryPayload: string;
164
+ signature: string;
165
+ feesStrategy: string;
166
+ exchangeType: number;
167
+ };
168
+ export type CompleteExchangeUiRequest = {
169
+ provider: string;
170
+ exchange: {
171
+ fromAccount: AccountLike;
172
+ fromParentAccount: Account | null;
173
+ toAccount?: AccountLike;
174
+ toParentAccount: Account | null;
175
+ };
176
+ transaction: TransactionCommon;
177
+ binaryPayload: string;
178
+ signature: string;
179
+ feesStrategy: string;
180
+ exchangeType: number;
181
+ };
182
+ export function completeExchangeLogic(
183
+ { manifest, accounts, tracking }: WebPlatformContext,
184
+ {
185
+ provider,
186
+ fromAccountId,
187
+ toAccountId,
188
+ transaction,
189
+ binaryPayload,
190
+ signature,
191
+ feesStrategy,
192
+ exchangeType,
193
+ }: CompleteExchangeRequest,
194
+ uiNavigation: (request: CompleteExchangeUiRequest) => Promise<Operation>
195
+ ): Promise<Operation> {
196
+ tracking.platformCompleteExchangeRequested(manifest);
197
+
198
+ // Nb get a hold of the actual accounts, and parent accounts
199
+ const fromAccount = accounts.find((a) => a.id === fromAccountId);
200
+
201
+ const toAccount = accounts.find((a) => a.id === toAccountId);
202
+
203
+ if (!fromAccount) {
204
+ return Promise.reject();
205
+ }
206
+
207
+ if (exchangeType === 0x00 && !toAccount) {
208
+ // if we do a swap, a destination account must be provided
209
+ return Promise.reject();
210
+ }
211
+
212
+ const fromParentAccount = getParentAccount(fromAccount, accounts);
213
+ const toParentAccount = toAccount
214
+ ? getParentAccount(toAccount, accounts)
215
+ : null;
216
+ const exchange = {
217
+ fromAccount,
218
+ fromParentAccount,
219
+ toAccount,
220
+ toParentAccount,
221
+ };
222
+
223
+ const accountBridge = getAccountBridge(fromAccount, fromParentAccount);
224
+ const mainFromAccount = getMainAccount(fromAccount, fromParentAccount);
225
+
226
+ if (transaction.family !== mainFromAccount.currency.family) {
227
+ return Promise.reject(
228
+ new Error("Account and transaction must be from the same family")
229
+ );
230
+ }
231
+
232
+ const platformTransaction = deserializePlatformTransaction(transaction);
233
+ const { liveTx: liveTransaction } =
234
+ getPlatformTransactionSignFlowInfos(platformTransaction);
235
+
236
+ let processedTransaction = accountBridge.createTransaction(mainFromAccount);
237
+ processedTransaction = accountBridge.updateTransaction(
238
+ {
239
+ ...processedTransaction,
240
+ recipient: liveTransaction.recipient,
241
+ },
242
+ {
243
+ ...liveTransaction,
244
+ feesStrategy,
245
+ }
246
+ );
247
+
248
+ return uiNavigation({
249
+ provider,
250
+ exchange,
251
+ transaction: processedTransaction,
252
+ binaryPayload,
253
+ signature,
254
+ feesStrategy,
255
+ exchangeType,
256
+ });
257
+ }
258
+
259
+ export function signMessageLogic(
260
+ { manifest, accounts, tracking }: WebPlatformContext,
261
+ accountId: string,
262
+ message: string,
263
+ uiNavigation: (
264
+ account: AccountLike,
265
+ message: MessageData | null
266
+ ) => Promise<string>
267
+ ): Promise<string> {
268
+ tracking.platformSignMessageRequested(manifest);
269
+
270
+ const account = accounts.find((account) => account.id === accountId);
271
+ if (account === undefined) {
272
+ tracking.platformSignMessageFail(manifest);
273
+ return Promise.reject(new Error("account not found"));
274
+ }
275
+
276
+ let formattedMessage: MessageData | null;
277
+ try {
278
+ if (isAccount(account)) {
279
+ formattedMessage = prepareMessageToSign(account, message);
280
+ } else {
281
+ throw new Error("account provided should be the main one");
282
+ }
283
+ } catch (error) {
284
+ tracking.platformSignMessageFail(manifest);
285
+ return Promise.reject(error);
286
+ }
287
+
288
+ return uiNavigation(account, formattedMessage);
289
+ }
@@ -20,6 +20,12 @@ import {
20
20
  import { getParentAccount } from "../account";
21
21
  import { listCurrencies } from "../currencies";
22
22
 
23
+ /**
24
+ * TODO: we might want to use "searchParams.append" instead of "searchParams.set"
25
+ * to handle duplicated query params (example: "?foo=bar&foo=baz")
26
+ *
27
+ * We can also use the stringify method of qs (https://github.com/ljharb/qs#stringifying)
28
+ */
23
29
  export function usePlatformUrl(
24
30
  manifest: AppManifest,
25
31
  params: { background: string; text: string; loadDate?: Date },
@@ -2,7 +2,7 @@ import trackingWrapper from "./tracking";
2
2
  import { AppManifest } from "./types";
3
3
 
4
4
  describe("trackingWrapper", () => {
5
- const methodToMessage = [
5
+ test.each([
6
6
  {
7
7
  method: "platformLoad",
8
8
  message: "Platform Load",
@@ -107,10 +107,9 @@ describe("trackingWrapper", () => {
107
107
  method: "platformSignMessageUserRefused",
108
108
  message: "Platform sign message user refused",
109
109
  },
110
- ];
111
-
112
- for (const { method, message } of methodToMessage) {
113
- it(`calls once inner trackPlatform function ${method} with event named: ${message}`, () => {
110
+ ])(
111
+ "calls once inner trackPlatform function $method with event named: $message",
112
+ ({ method, message }) => {
114
113
  // Given
115
114
  const appManifest = appManifestFixture();
116
115
  const mockedTrack = jest.fn();
@@ -127,8 +126,8 @@ describe("trackingWrapper", () => {
127
126
  },
128
127
  null
129
128
  );
130
- });
131
- }
129
+ }
130
+ );
132
131
  });
133
132
 
134
133
  function appManifestFixture(name = "live-app"): AppManifest {
@@ -11,7 +11,7 @@ type TrackPlatform = (
11
11
  mandatory: boolean | null
12
12
  ) => void;
13
13
 
14
- type TrackFunction = (manifest: AppManifest) => void;
14
+ export type TrackFunction = (manifest: AppManifest) => void;
15
15
 
16
16
  /**
17
17
  * Obtain Event data from Platform App manifest
@@ -20,17 +20,22 @@ import {
20
20
  fromCosmosResourcesRaw,
21
21
  fromBitcoinResourcesRaw,
22
22
  fromAlgorandResourcesRaw,
23
+ fromCardanoResourceRaw,
23
24
  fromPolkadotResourcesRaw,
24
25
  fromTezosResourcesRaw,
25
26
  fromElrondResourcesRaw,
26
27
  fromCryptoOrgResourcesRaw,
27
28
  fromSolanaResourcesRaw,
28
29
  fromNFTRaw,
29
- fromCardanoResourceRaw,
30
+ toTronResourcesRaw,
31
+ toCosmosResourcesRaw,
32
+ toAlgorandResourcesRaw,
33
+ toCardanoResourceRaw,
34
+ toPolkadotResourcesRaw,
35
+ toTezosResourcesRaw,
36
+ toElrondResourcesRaw,
30
37
  toCryptoOrgResourcesRaw,
31
38
  toSolanaResourcesRaw,
32
- toCosmosResourcesRaw,
33
- toTronResourcesRaw,
34
39
  } from "./account";
35
40
  import consoleWarnExpectToEqual from "./consoleWarnExpectToEqual";
36
41
  import { AlgorandAccount, AlgorandAccountRaw } from "./families/algorand/types";
@@ -288,6 +293,13 @@ export function patchAccount(
288
293
  }
289
294
  }
290
295
 
296
+ // TODO This will be reworked to belong in each coin family
297
+ // Temporary logic to patch resources for each coin is:
298
+ // - there is raw data to patch from
299
+ // AND
300
+ // - there is no current account data
301
+ // OR
302
+ // - current account data is different
291
303
  switch (account.currency.family) {
292
304
  case "tron":
293
305
  {
@@ -295,10 +307,11 @@ export function patchAccount(
295
307
  const tronUpdatedRaw = updatedRaw as TronAccountRaw;
296
308
  if (
297
309
  tronUpdatedRaw.tronResources &&
298
- !areSameResources(
299
- toTronResourcesRaw(tronAcc.tronResources),
300
- tronUpdatedRaw.tronResources
301
- )
310
+ (!tronAcc.tronResources ||
311
+ !areSameResources(
312
+ toTronResourcesRaw(tronAcc.tronResources),
313
+ tronUpdatedRaw.tronResources
314
+ ))
302
315
  ) {
303
316
  (next as TronAccount).tronResources = fromTronResourcesRaw(
304
317
  tronUpdatedRaw.tronResources
@@ -312,10 +325,11 @@ export function patchAccount(
312
325
  const cosmosUpdatedRaw = updatedRaw as CosmosAccountRaw;
313
326
  if (
314
327
  cosmosUpdatedRaw.cosmosResources &&
315
- !areSameResources(
316
- toCosmosResourcesRaw(cosmosAcc.cosmosResources),
317
- cosmosUpdatedRaw.cosmosResources
318
- )
328
+ (!cosmosAcc.cosmosResources ||
329
+ !areSameResources(
330
+ toCosmosResourcesRaw(cosmosAcc.cosmosResources),
331
+ cosmosUpdatedRaw.cosmosResources
332
+ ))
319
333
  ) {
320
334
  (next as CosmosAccount).cosmosResources = fromCosmosResourcesRaw(
321
335
  cosmosUpdatedRaw.cosmosResources
@@ -328,10 +342,12 @@ export function patchAccount(
328
342
  const cosmosAcc = account as CosmosAccount;
329
343
  const cosmosUpdatedRaw = updatedRaw as CosmosAccountRaw;
330
344
  if (
331
- !areSameResources(
332
- toCosmosResourcesRaw(cosmosAcc.cosmosResources),
333
- cosmosUpdatedRaw.cosmosResources
334
- )
345
+ cosmosUpdatedRaw.cosmosResources &&
346
+ (!cosmosAcc.cosmosResources ||
347
+ !areSameResources(
348
+ toCosmosResourcesRaw(cosmosAcc.cosmosResources),
349
+ cosmosUpdatedRaw.cosmosResources
350
+ ))
335
351
  ) {
336
352
  (next as CosmosAccount).cosmosResources = fromCosmosResourcesRaw(
337
353
  cosmosUpdatedRaw.cosmosResources
@@ -345,10 +361,11 @@ export function patchAccount(
345
361
  const algorandUpdatedRaw = updatedRaw as AlgorandAccountRaw;
346
362
  if (
347
363
  algorandUpdatedRaw.algorandResources &&
348
- !areSameResources(
349
- algorandAcc.algorandResources,
350
- algorandUpdatedRaw.algorandResources
351
- )
364
+ (!algorandAcc.algorandResources ||
365
+ !areSameResources(
366
+ toAlgorandResourcesRaw(algorandAcc.algorandResources),
367
+ algorandUpdatedRaw.algorandResources
368
+ ))
352
369
  ) {
353
370
  (next as AlgorandAccount).algorandResources = fromAlgorandResourcesRaw(
354
371
  algorandUpdatedRaw.algorandResources
@@ -370,10 +387,11 @@ export function patchAccount(
370
387
  const polkadotUpdatedRaw = updatedRaw as PolkadotAccountRaw;
371
388
  if (
372
389
  polkadotUpdatedRaw.polkadotResources &&
373
- !areSameResources(
374
- polkadotAcc.polkadotResources,
375
- polkadotUpdatedRaw.polkadotResources
376
- )
390
+ (!polkadotAcc.polkadotResources ||
391
+ !areSameResources(
392
+ toPolkadotResourcesRaw(polkadotAcc.polkadotResources),
393
+ polkadotUpdatedRaw.polkadotResources
394
+ ))
377
395
  ) {
378
396
  (next as PolkadotAccount).polkadotResources = fromPolkadotResourcesRaw(
379
397
  polkadotUpdatedRaw.polkadotResources
@@ -387,10 +405,11 @@ export function patchAccount(
387
405
  const tezosUpdatedRaw = updatedRaw as TezosAccountRaw;
388
406
  if (
389
407
  tezosUpdatedRaw.tezosResources &&
390
- !areSameResources(
391
- tezosAcc.tezosResources,
392
- tezosUpdatedRaw.tezosResources
393
- )
408
+ (!tezosAcc.tezosResources ||
409
+ !areSameResources(
410
+ toTezosResourcesRaw(tezosAcc.tezosResources),
411
+ tezosUpdatedRaw.tezosResources
412
+ ))
394
413
  ) {
395
414
  (next as TezosAccount).tezosResources = fromTezosResourcesRaw(
396
415
  tezosUpdatedRaw.tezosResources
@@ -404,10 +423,11 @@ export function patchAccount(
404
423
  const elrondUpdatedRaw = updatedRaw as ElrondAccountRaw;
405
424
  if (
406
425
  elrondUpdatedRaw.elrondResources &&
407
- areSameResources(
408
- elrondAcc.elrondResources,
409
- elrondUpdatedRaw.elrondResources
410
- )
426
+ (!elrondAcc.elrondResources ||
427
+ !areSameResources(
428
+ toElrondResourcesRaw(elrondAcc.elrondResources),
429
+ elrondUpdatedRaw.elrondResources
430
+ ))
411
431
  ) {
412
432
  (next as ElrondAccount).elrondResources = fromElrondResourcesRaw(
413
433
  elrondUpdatedRaw.elrondResources
@@ -421,10 +441,11 @@ export function patchAccount(
421
441
  const cardanoUpdatedRaw = updatedRaw as CardanoAccountRaw;
422
442
  if (
423
443
  cardanoUpdatedRaw.cardanoResources &&
424
- !areSameResources(
425
- cardanoAcc.cardanoResources,
426
- cardanoUpdatedRaw.cardanoResources
427
- )
444
+ (!cardanoAcc.cardanoResources ||
445
+ !areSameResources(
446
+ toCardanoResourceRaw(cardanoAcc.cardanoResources),
447
+ cardanoUpdatedRaw.cardanoResources
448
+ ))
428
449
  ) {
429
450
  (next as CardanoAccount).cardanoResources = fromCardanoResourceRaw(
430
451
  cardanoUpdatedRaw.cardanoResources
@@ -438,10 +459,11 @@ export function patchAccount(
438
459
  const cryptoOrgUpdatedRaw = updatedRaw as CryptoOrgAccountRaw;
439
460
  if (
440
461
  cryptoOrgUpdatedRaw.cryptoOrgResources &&
441
- !areSameResources(
442
- toCryptoOrgResourcesRaw(cryptoOrgAcc.cryptoOrgResources),
443
- cryptoOrgUpdatedRaw.cryptoOrgResources
444
- )
462
+ (!cryptoOrgAcc.cryptoOrgResources ||
463
+ !areSameResources(
464
+ toCryptoOrgResourcesRaw(cryptoOrgAcc.cryptoOrgResources),
465
+ cryptoOrgUpdatedRaw.cryptoOrgResources
466
+ ))
445
467
  ) {
446
468
  (next as CryptoOrgAccount).cryptoOrgResources =
447
469
  fromCryptoOrgResourcesRaw(cryptoOrgUpdatedRaw.cryptoOrgResources);
@@ -455,10 +477,11 @@ export function patchAccount(
455
477
 
456
478
  if (
457
479
  solanaUpdatedRaw.solanaResources &&
458
- !areSameResources(
459
- toSolanaResourcesRaw(solanaAcc.solanaResources),
460
- solanaUpdatedRaw.solanaResources
461
- )
480
+ (!solanaAcc.solanaResources ||
481
+ !areSameResources(
482
+ toSolanaResourcesRaw(solanaAcc.solanaResources),
483
+ solanaUpdatedRaw.solanaResources
484
+ ))
462
485
  ) {
463
486
  (next as SolanaAccount).solanaResources = fromSolanaResourcesRaw(
464
487
  solanaUpdatedRaw.solanaResources
@@ -1,2 +0,0 @@
1
- import "../__tests__/test-helpers/setup";
2
- //# sourceMappingURL=test.bot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.bot.d.ts","sourceRoot":"","sources":["../../src/bot/test.bot.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC"}
@@ -1,62 +0,0 @@
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
- require("../__tests__/test-helpers/setup");
40
- var _1 = require(".");
41
- jest.setTimeout(110 * 60 * 1000);
42
- var _a = process.env, BOT_FILTER_CURRENCY = _a.BOT_FILTER_CURRENCY, BOT_FILTER_FAMILY = _a.BOT_FILTER_FAMILY;
43
- test("bot", function () { return __awaiter(void 0, void 0, void 0, function () {
44
- var arg;
45
- return __generator(this, function (_a) {
46
- switch (_a.label) {
47
- case 0:
48
- arg = {};
49
- if (BOT_FILTER_CURRENCY) {
50
- arg.currency = BOT_FILTER_CURRENCY;
51
- }
52
- if (BOT_FILTER_FAMILY) {
53
- arg.family = BOT_FILTER_FAMILY;
54
- }
55
- return [4 /*yield*/, (0, _1.bot)(arg)];
56
- case 1:
57
- _a.sent();
58
- return [2 /*return*/];
59
- }
60
- });
61
- }); });
62
- //# sourceMappingURL=test.bot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.bot.js","sourceRoot":"","sources":["../../src/bot/test.bot.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyC;AACzC,sBAAwB;AAExB,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAC3B,IAAA,KAA6C,OAAO,CAAC,GAAG,EAAtD,mBAAmB,yBAAA,EAAE,iBAAiB,uBAAgB,CAAC;AAC/D,IAAI,CAAC,KAAK,EAAE;;;;;gBACJ,GAAG,GAGL,EAAE,CAAC;gBAEP,IAAI,mBAAmB,EAAE;oBACvB,GAAG,CAAC,QAAQ,GAAG,mBAAmB,CAAC;iBACpC;gBAED,IAAI,iBAAiB,EAAE;oBACrB,GAAG,CAAC,MAAM,GAAG,iBAAiB,CAAC;iBAChC;gBAED,qBAAM,IAAA,MAAG,EAAC,GAAG,CAAC,EAAA;;gBAAd,SAAc,CAAC;;;;KAChB,CAAC,CAAC"}
@@ -1,56 +0,0 @@
1
- declare const _default: {
2
- algorand: {
3
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/algorand/types").AlgorandTransaction, any>;
4
- };
5
- bitcoin: {
6
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/bitcoin/types").Transaction, any>;
7
- };
8
- cardano: {
9
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/cardano/types").Transaction, any>;
10
- };
11
- celo: {
12
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/celo/types").Transaction, any>;
13
- };
14
- cosmos: {
15
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/cosmos/types").Transaction, any>;
16
- };
17
- crypto_org: {
18
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/crypto_org/types").Transaction, any>;
19
- };
20
- elrond: {
21
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/elrond/types").Transaction, any>;
22
- };
23
- ethereum: {
24
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/ethereum/types").Transaction, any>;
25
- };
26
- filecoin: {
27
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/filecoin/types").Transaction, any>;
28
- };
29
- hedera: {
30
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/hedera/types").Transaction, any>;
31
- };
32
- osmosis: {
33
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/osmosis/types").Transaction, any>;
34
- };
35
- polkadot: {
36
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/polkadot/types").Transaction, any>;
37
- };
38
- ripple: {
39
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/ripple/types").Transaction, any>;
40
- };
41
- solana: {
42
- acceptTransferTransaction: import("../bot/types").DeviceAction<import("../families/solana/types").Transaction, any>;
43
- acceptStakeCreateAccountTransaction: import("../bot/types").DeviceAction<import("../families/solana/types").Transaction, any>;
44
- };
45
- stellar: {
46
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/stellar/types").Transaction, any>;
47
- };
48
- tezos: {
49
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/tezos/types").Transaction, any>;
50
- };
51
- tron: {
52
- acceptTransaction: import("../bot/types").DeviceAction<import("../families/tron/types").Transaction, any>;
53
- };
54
- };
55
- export default _default;
56
- //# sourceMappingURL=speculos-deviceActions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"speculos-deviceActions.d.ts","sourceRoot":"","sources":["../../src/generated/speculos-deviceActions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,wBAkBE"}