@ledgerhq/live-common 27.0.0 → 27.1.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (565) 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 +2 -0
  11. package/lib/account/serialization.d.ts.map +1 -1
  12. package/lib/account/serialization.js +105 -47
  13. package/lib/account/serialization.js.map +1 -1
  14. package/lib/apps/support.d.ts.map +1 -1
  15. package/lib/apps/support.js +1 -0
  16. package/lib/apps/support.js.map +1 -1
  17. package/lib/bot/bot-test-context.d.ts +3 -0
  18. package/lib/bot/bot-test-context.d.ts.map +1 -0
  19. package/lib/bot/bot-test-context.js +26 -0
  20. package/lib/bot/bot-test-context.js.map +1 -0
  21. package/lib/bot/bot-test-context.test.d.ts +2 -0
  22. package/lib/bot/bot-test-context.test.d.ts.map +1 -0
  23. package/lib/bot/bot-test-context.test.js +41 -0
  24. package/lib/bot/bot-test-context.test.js.map +1 -0
  25. package/lib/bot/cli.d.ts +2 -0
  26. package/lib/bot/cli.d.ts.map +1 -0
  27. package/lib/bot/cli.js +14 -0
  28. package/lib/bot/cli.js.map +1 -0
  29. package/lib/bot/engine.d.ts +5 -5
  30. package/lib/bot/engine.d.ts.map +1 -1
  31. package/lib/bot/engine.js +161 -112
  32. package/lib/bot/engine.js.map +1 -1
  33. package/lib/bot/formatters.d.ts +2 -2
  34. package/lib/bot/formatters.d.ts.map +1 -1
  35. package/lib/bot/formatters.js +41 -15
  36. package/lib/bot/formatters.js.map +1 -1
  37. package/lib/bot/index.d.ts +1 -1
  38. package/lib/bot/index.d.ts.map +1 -1
  39. package/lib/bot/index.js +90 -15
  40. package/lib/bot/index.js.map +1 -1
  41. package/lib/bot/specs.d.ts +2 -1
  42. package/lib/bot/specs.d.ts.map +1 -1
  43. package/lib/bot/specs.js +13 -9
  44. package/lib/bot/specs.js.map +1 -1
  45. package/lib/bot/types.d.ts +5 -2
  46. package/lib/bot/types.d.ts.map +1 -1
  47. package/lib/countervalues/logic.integration.test.js +65 -0
  48. package/lib/countervalues/logic.integration.test.js.map +1 -1
  49. package/lib/countervalues/modules/weth.d.ts.map +1 -1
  50. package/lib/countervalues/modules/weth.js +5 -10
  51. package/lib/countervalues/modules/weth.js.map +1 -1
  52. package/lib/currencies/sortByMarketcap.d.ts +0 -2
  53. package/lib/currencies/sortByMarketcap.d.ts.map +1 -1
  54. package/lib/currencies/sortByMarketcap.js +3 -17
  55. package/lib/currencies/sortByMarketcap.js.map +1 -1
  56. package/lib/currencies/sortByMarketcap.test.js +0 -5
  57. package/lib/currencies/sortByMarketcap.test.js.map +1 -1
  58. package/lib/env.js +1 -1
  59. package/lib/families/algorand/specs.d.ts.map +1 -1
  60. package/lib/families/algorand/specs.js +18 -10
  61. package/lib/families/algorand/specs.js.map +1 -1
  62. package/lib/families/algorand/speculos-deviceActions.d.ts +1 -4
  63. package/lib/families/algorand/speculos-deviceActions.d.ts.map +1 -1
  64. package/lib/families/algorand/speculos-deviceActions.js +25 -8
  65. package/lib/families/algorand/speculos-deviceActions.js.map +1 -1
  66. package/lib/families/bitcoin/bridge/mock.d.ts.map +1 -1
  67. package/lib/families/bitcoin/bridge/mock.js +6 -1
  68. package/lib/families/bitcoin/bridge/mock.js.map +1 -1
  69. package/lib/families/bitcoin/datasets/bitcoin_cash.d.ts.map +1 -1
  70. package/lib/families/bitcoin/datasets/bitcoin_cash.js +1 -1
  71. package/lib/families/bitcoin/datasets/bitcoin_cash.js.map +1 -1
  72. package/lib/families/bitcoin/datasets/dash.d.ts.map +1 -1
  73. package/lib/families/bitcoin/datasets/dash.js +1 -1
  74. package/lib/families/bitcoin/datasets/dash.js.map +1 -1
  75. package/lib/families/bitcoin/datasets/decred.d.ts.map +1 -1
  76. package/lib/families/bitcoin/datasets/decred.js +1 -1
  77. package/lib/families/bitcoin/datasets/decred.js.map +1 -1
  78. package/lib/families/bitcoin/datasets/digibyte.d.ts.map +1 -1
  79. package/lib/families/bitcoin/datasets/digibyte.js +8 -2
  80. package/lib/families/bitcoin/datasets/digibyte.js.map +1 -1
  81. package/lib/families/bitcoin/datasets/dogecoin.d.ts.map +1 -1
  82. package/lib/families/bitcoin/datasets/dogecoin.js +1 -1
  83. package/lib/families/bitcoin/datasets/dogecoin.js.map +1 -1
  84. package/lib/families/bitcoin/datasets/komodo.js +1 -1
  85. package/lib/families/bitcoin/datasets/komodo.js.map +1 -1
  86. package/lib/families/bitcoin/datasets/litecoin.d.ts.map +1 -1
  87. package/lib/families/bitcoin/datasets/litecoin.js +8 -2
  88. package/lib/families/bitcoin/datasets/litecoin.js.map +1 -1
  89. package/lib/families/bitcoin/datasets/peercoin.js +1 -1
  90. package/lib/families/bitcoin/datasets/peercoin.js.map +1 -1
  91. package/lib/families/bitcoin/datasets/pivx.js +1 -1
  92. package/lib/families/bitcoin/datasets/pivx.js.map +1 -1
  93. package/lib/families/bitcoin/datasets/qtum.js +1 -1
  94. package/lib/families/bitcoin/datasets/qtum.js.map +1 -1
  95. package/lib/families/bitcoin/datasets/stakenet.d.ts.map +1 -1
  96. package/lib/families/bitcoin/datasets/stakenet.js +1 -1
  97. package/lib/families/bitcoin/datasets/stakenet.js.map +1 -1
  98. package/lib/families/bitcoin/datasets/vertcoin.d.ts.map +1 -1
  99. package/lib/families/bitcoin/datasets/vertcoin.js +1 -1
  100. package/lib/families/bitcoin/datasets/vertcoin.js.map +1 -1
  101. package/lib/families/bitcoin/datasets/viacoin.d.ts.map +1 -1
  102. package/lib/families/bitcoin/datasets/viacoin.js +1 -1
  103. package/lib/families/bitcoin/datasets/viacoin.js.map +1 -1
  104. package/lib/families/bitcoin/datasets/zcash.d.ts.map +1 -1
  105. package/lib/families/bitcoin/datasets/zcash.js +1 -1
  106. package/lib/families/bitcoin/datasets/zcash.js.map +1 -1
  107. package/lib/families/bitcoin/datasets/zencash.d.ts.map +1 -1
  108. package/lib/families/bitcoin/datasets/zencash.js +1 -1
  109. package/lib/families/bitcoin/datasets/zencash.js.map +1 -1
  110. package/lib/families/bitcoin/platformAdapter.test.d.ts +2 -0
  111. package/lib/families/bitcoin/platformAdapter.test.d.ts.map +1 -0
  112. package/lib/families/bitcoin/platformAdapter.test.js +48 -0
  113. package/lib/families/bitcoin/platformAdapter.test.js.map +1 -0
  114. package/lib/families/bitcoin/specs.d.ts.map +1 -1
  115. package/lib/families/bitcoin/specs.js +62 -24
  116. package/lib/families/bitcoin/specs.js.map +1 -1
  117. package/lib/families/bitcoin/speculos-deviceActions.d.ts +1 -4
  118. package/lib/families/bitcoin/speculos-deviceActions.d.ts.map +1 -1
  119. package/lib/families/bitcoin/speculos-deviceActions.js +2 -4
  120. package/lib/families/bitcoin/speculos-deviceActions.js.map +1 -1
  121. package/lib/families/cardano/js-estimateMaxSpendable.js +1 -1
  122. package/lib/families/cardano/js-estimateMaxSpendable.js.map +1 -1
  123. package/lib/families/cardano/specs.d.ts.map +1 -1
  124. package/lib/families/cardano/specs.js +19 -8
  125. package/lib/families/cardano/specs.js.map +1 -1
  126. package/lib/families/cardano/speculos-deviceActions.d.ts +1 -4
  127. package/lib/families/cardano/speculos-deviceActions.d.ts.map +1 -1
  128. package/lib/families/cardano/speculos-deviceActions.js +2 -2
  129. package/lib/families/cardano/speculos-deviceActions.js.map +1 -1
  130. package/lib/families/celo/api/hubble.d.ts +6 -1
  131. package/lib/families/celo/api/hubble.d.ts.map +1 -1
  132. package/lib/families/celo/api/hubble.js +135 -13
  133. package/lib/families/celo/api/hubble.js.map +1 -1
  134. package/lib/families/celo/api/index.d.ts +1 -1
  135. package/lib/families/celo/api/index.d.ts.map +1 -1
  136. package/lib/families/celo/api/index.js +2 -1
  137. package/lib/families/celo/api/index.js.map +1 -1
  138. package/lib/families/celo/api/sdk.d.ts +22 -0
  139. package/lib/families/celo/api/sdk.d.ts.map +1 -1
  140. package/lib/families/celo/api/sdk.js +168 -1
  141. package/lib/families/celo/api/sdk.js.map +1 -1
  142. package/lib/families/celo/bridge/js.d.ts.map +1 -1
  143. package/lib/families/celo/bridge/js.js +4 -42
  144. package/lib/families/celo/bridge/js.js.map +1 -1
  145. package/lib/families/celo/cli-transaction.d.ts +12 -2
  146. package/lib/families/celo/cli-transaction.d.ts.map +1 -1
  147. package/lib/families/celo/cli-transaction.js +38 -4
  148. package/lib/families/celo/cli-transaction.js.map +1 -1
  149. package/lib/families/celo/datasets/celo.scanAccounts.1.d.ts +1 -0
  150. package/lib/families/celo/datasets/celo.scanAccounts.1.d.ts.map +1 -1
  151. package/lib/families/celo/datasets/celo.scanAccounts.1.js +298 -2
  152. package/lib/families/celo/datasets/celo.scanAccounts.1.js.map +1 -1
  153. package/lib/families/celo/errors.d.ts +2 -0
  154. package/lib/families/celo/errors.d.ts.map +1 -0
  155. package/lib/families/celo/errors.js +6 -0
  156. package/lib/families/celo/errors.js.map +1 -0
  157. package/lib/families/celo/js-buildTransaction.d.ts +2 -3
  158. package/lib/families/celo/js-buildTransaction.d.ts.map +1 -1
  159. package/lib/families/celo/js-buildTransaction.js +194 -19
  160. package/lib/families/celo/js-buildTransaction.js.map +1 -1
  161. package/lib/families/celo/js-createTransaction.d.ts.map +1 -1
  162. package/lib/families/celo/js-createTransaction.js +3 -1
  163. package/lib/families/celo/js-createTransaction.js.map +1 -1
  164. package/lib/families/celo/js-estimateMaxSpendable.d.ts.map +1 -1
  165. package/lib/families/celo/js-estimateMaxSpendable.js.map +1 -1
  166. package/lib/families/celo/js-getFeesForTransaction.d.ts +2 -3
  167. package/lib/families/celo/js-getFeesForTransaction.d.ts.map +1 -1
  168. package/lib/families/celo/js-getFeesForTransaction.js +137 -10
  169. package/lib/families/celo/js-getFeesForTransaction.js.map +1 -1
  170. package/lib/families/celo/js-getTransactionStatus.d.ts +2 -3
  171. package/lib/families/celo/js-getTransactionStatus.d.ts.map +1 -1
  172. package/lib/families/celo/js-getTransactionStatus.js +97 -41
  173. package/lib/families/celo/js-getTransactionStatus.js.map +1 -1
  174. package/lib/families/celo/js-prepareTransaction.d.ts +2 -3
  175. package/lib/families/celo/js-prepareTransaction.d.ts.map +1 -1
  176. package/lib/families/celo/js-prepareTransaction.js +8 -3
  177. package/lib/families/celo/js-prepareTransaction.js.map +1 -1
  178. package/lib/families/celo/js-signOperation.d.ts.map +1 -1
  179. package/lib/families/celo/js-signOperation.js +17 -3
  180. package/lib/families/celo/js-signOperation.js.map +1 -1
  181. package/lib/families/celo/js-synchronisation.d.ts.map +1 -1
  182. package/lib/families/celo/js-synchronisation.js +51 -6
  183. package/lib/families/celo/js-synchronisation.js.map +1 -1
  184. package/lib/families/celo/logic.d.ts +21 -0
  185. package/lib/families/celo/logic.d.ts.map +1 -0
  186. package/lib/families/celo/logic.js +132 -0
  187. package/lib/families/celo/logic.js.map +1 -0
  188. package/lib/families/celo/preload.d.ts +10 -0
  189. package/lib/families/celo/preload.d.ts.map +1 -0
  190. package/lib/families/celo/preload.js +118 -0
  191. package/lib/families/celo/preload.js.map +1 -0
  192. package/lib/families/celo/react.d.ts +4 -0
  193. package/lib/families/celo/react.d.ts.map +1 -0
  194. package/lib/families/celo/react.js +47 -0
  195. package/lib/families/celo/react.js.map +1 -0
  196. package/lib/families/celo/serialization.d.ts +4 -0
  197. package/lib/families/celo/serialization.d.ts.map +1 -0
  198. package/lib/families/celo/serialization.js +55 -0
  199. package/lib/families/celo/serialization.js.map +1 -0
  200. package/lib/families/celo/specs/createActivateVoteMutation.d.ts +4 -0
  201. package/lib/families/celo/specs/createActivateVoteMutation.d.ts.map +1 -0
  202. package/lib/families/celo/specs/createActivateVoteMutation.js +38 -0
  203. package/lib/families/celo/specs/createActivateVoteMutation.js.map +1 -0
  204. package/lib/families/celo/specs/createLockMutation.d.ts +4 -0
  205. package/lib/families/celo/specs/createLockMutation.d.ts.map +1 -0
  206. package/lib/families/celo/specs/createLockMutation.js +40 -0
  207. package/lib/families/celo/specs/createLockMutation.js.map +1 -0
  208. package/lib/families/celo/specs/createRegisterAccountMutation.d.ts +4 -0
  209. package/lib/families/celo/specs/createRegisterAccountMutation.d.ts.map +1 -0
  210. package/lib/families/celo/specs/createRegisterAccountMutation.js +31 -0
  211. package/lib/families/celo/specs/createRegisterAccountMutation.js.map +1 -0
  212. package/lib/families/celo/specs/createRevokeVoteMutation.d.ts +4 -0
  213. package/lib/families/celo/specs/createRevokeVoteMutation.d.ts.map +1 -0
  214. package/lib/families/celo/specs/createRevokeVoteMutation.js +39 -0
  215. package/lib/families/celo/specs/createRevokeVoteMutation.js.map +1 -0
  216. package/lib/families/celo/specs/createSendMutation.d.ts +5 -0
  217. package/lib/families/celo/specs/createSendMutation.d.ts.map +1 -0
  218. package/lib/families/celo/specs/createSendMutation.js +44 -0
  219. package/lib/families/celo/specs/createSendMutation.js.map +1 -0
  220. package/lib/families/celo/specs/createUnlockMutation.d.ts +4 -0
  221. package/lib/families/celo/specs/createUnlockMutation.d.ts.map +1 -0
  222. package/lib/families/celo/specs/createUnlockMutation.js +37 -0
  223. package/lib/families/celo/specs/createUnlockMutation.js.map +1 -0
  224. package/lib/families/celo/specs/createVoteMutation.d.ts +4 -0
  225. package/lib/families/celo/specs/createVoteMutation.d.ts.map +1 -0
  226. package/lib/families/celo/specs/createVoteMutation.js +51 -0
  227. package/lib/families/celo/specs/createVoteMutation.js.map +1 -0
  228. package/lib/families/celo/specs/createWithdrawMutation.d.ts +4 -0
  229. package/lib/families/celo/specs/createWithdrawMutation.d.ts.map +1 -0
  230. package/lib/families/celo/specs/createWithdrawMutation.js +36 -0
  231. package/lib/families/celo/specs/createWithdrawMutation.js.map +1 -0
  232. package/lib/families/celo/specs/index.d.ts +9 -0
  233. package/lib/families/celo/specs/index.d.ts.map +1 -0
  234. package/lib/families/celo/specs/index.js +25 -0
  235. package/lib/families/celo/specs/index.js.map +1 -0
  236. package/lib/families/celo/specs.d.ts +1 -1
  237. package/lib/families/celo/specs.d.ts.map +1 -1
  238. package/lib/families/celo/specs.js +22 -37
  239. package/lib/families/celo/specs.js.map +1 -1
  240. package/lib/families/celo/speculos-deviceActions.d.ts +1 -4
  241. package/lib/families/celo/speculos-deviceActions.d.ts.map +1 -1
  242. package/lib/families/celo/speculos-deviceActions.js +24 -4
  243. package/lib/families/celo/speculos-deviceActions.js.map +1 -1
  244. package/lib/families/celo/transaction.d.ts.map +1 -1
  245. package/lib/families/celo/transaction.js +8 -6
  246. package/lib/families/celo/transaction.js.map +1 -1
  247. package/lib/families/celo/types.d.ts +102 -1
  248. package/lib/families/celo/types.d.ts.map +1 -1
  249. package/lib/families/celo/validators.d.ts +3 -0
  250. package/lib/families/celo/validators.d.ts.map +1 -0
  251. package/lib/families/celo/validators.js +6 -0
  252. package/lib/families/celo/validators.js.map +1 -0
  253. package/lib/families/cosmos/specs.d.ts.map +1 -1
  254. package/lib/families/cosmos/specs.js +41 -25
  255. package/lib/families/cosmos/specs.js.map +1 -1
  256. package/lib/families/cosmos/speculos-deviceActions.d.ts +1 -4
  257. package/lib/families/cosmos/speculos-deviceActions.d.ts.map +1 -1
  258. package/lib/families/cosmos/speculos-deviceActions.js +2 -4
  259. package/lib/families/cosmos/speculos-deviceActions.js.map +1 -1
  260. package/lib/families/crypto_org/specs.d.ts.map +1 -1
  261. package/lib/families/crypto_org/specs.js +3 -0
  262. package/lib/families/crypto_org/specs.js.map +1 -1
  263. package/lib/families/crypto_org/speculos-deviceActions.d.ts +1 -4
  264. package/lib/families/crypto_org/speculos-deviceActions.d.ts.map +1 -1
  265. package/lib/families/crypto_org/speculos-deviceActions.js +2 -2
  266. package/lib/families/crypto_org/speculos-deviceActions.js.map +1 -1
  267. package/lib/families/elrond/specs.d.ts.map +1 -1
  268. package/lib/families/elrond/specs.js +15 -2
  269. package/lib/families/elrond/specs.js.map +1 -1
  270. package/lib/families/elrond/speculos-deviceActions.d.ts +1 -4
  271. package/lib/families/elrond/speculos-deviceActions.d.ts.map +1 -1
  272. package/lib/families/elrond/speculos-deviceActions.js +2 -4
  273. package/lib/families/elrond/speculos-deviceActions.js.map +1 -1
  274. package/lib/families/ethereum/platformAdapter.test.d.ts +2 -0
  275. package/lib/families/ethereum/platformAdapter.test.d.ts.map +1 -0
  276. package/lib/families/ethereum/platformAdapter.test.js +88 -0
  277. package/lib/families/ethereum/platformAdapter.test.js.map +1 -0
  278. package/lib/families/ethereum/specs.d.ts.map +1 -1
  279. package/lib/families/ethereum/specs.js +36 -12
  280. package/lib/families/ethereum/specs.js.map +1 -1
  281. package/lib/families/ethereum/speculos-deviceActions.d.ts +1 -4
  282. package/lib/families/ethereum/speculos-deviceActions.d.ts.map +1 -1
  283. package/lib/families/ethereum/speculos-deviceActions.js +2 -4
  284. package/lib/families/ethereum/speculos-deviceActions.js.map +1 -1
  285. package/lib/families/filecoin/specs.d.ts.map +1 -1
  286. package/lib/families/filecoin/specs.js +2 -0
  287. package/lib/families/filecoin/specs.js.map +1 -1
  288. package/lib/families/filecoin/speculos-deviceActions.d.ts +1 -4
  289. package/lib/families/filecoin/speculos-deviceActions.d.ts.map +1 -1
  290. package/lib/families/filecoin/speculos-deviceActions.js +2 -2
  291. package/lib/families/filecoin/speculos-deviceActions.js.map +1 -1
  292. package/lib/families/hedera/specs.d.ts.map +1 -1
  293. package/lib/families/hedera/specs.js +11 -3
  294. package/lib/families/hedera/specs.js.map +1 -1
  295. package/lib/families/hedera/speculos-deviceActions.d.ts +1 -4
  296. package/lib/families/hedera/speculos-deviceActions.d.ts.map +1 -1
  297. package/lib/families/hedera/speculos-deviceActions.js +4 -4
  298. package/lib/families/hedera/speculos-deviceActions.js.map +1 -1
  299. package/lib/families/osmosis/specs.d.ts.map +1 -1
  300. package/lib/families/osmosis/specs.js +13 -5
  301. package/lib/families/osmosis/specs.js.map +1 -1
  302. package/lib/families/osmosis/speculos-deviceActions.d.ts +1 -4
  303. package/lib/families/osmosis/speculos-deviceActions.d.ts.map +1 -1
  304. package/lib/families/osmosis/speculos-deviceActions.js +2 -4
  305. package/lib/families/osmosis/speculos-deviceActions.js.map +1 -1
  306. package/lib/families/polkadot/platformAdapter.test.d.ts +2 -0
  307. package/lib/families/polkadot/platformAdapter.test.d.ts.map +1 -0
  308. package/lib/families/polkadot/platformAdapter.test.js +51 -0
  309. package/lib/families/polkadot/platformAdapter.test.js.map +1 -0
  310. package/lib/families/polkadot/specs.d.ts.map +1 -1
  311. package/lib/families/polkadot/specs.js +12 -1
  312. package/lib/families/polkadot/specs.js.map +1 -1
  313. package/lib/families/polkadot/speculos-deviceActions.d.ts +1 -4
  314. package/lib/families/polkadot/speculos-deviceActions.d.ts.map +1 -1
  315. package/lib/families/polkadot/speculos-deviceActions.js +2 -4
  316. package/lib/families/polkadot/speculos-deviceActions.js.map +1 -1
  317. package/lib/families/ripple/platformAdapter.test.d.ts +2 -0
  318. package/lib/families/ripple/platformAdapter.test.d.ts.map +1 -0
  319. package/lib/families/ripple/platformAdapter.test.js +51 -0
  320. package/lib/families/ripple/platformAdapter.test.js.map +1 -0
  321. package/lib/families/ripple/specs.d.ts.map +1 -1
  322. package/lib/families/ripple/specs.js +9 -4
  323. package/lib/families/ripple/specs.js.map +1 -1
  324. package/lib/families/ripple/speculos-deviceActions.d.ts +1 -4
  325. package/lib/families/ripple/speculos-deviceActions.d.ts.map +1 -1
  326. package/lib/families/ripple/speculos-deviceActions.js +2 -4
  327. package/lib/families/ripple/speculos-deviceActions.js.map +1 -1
  328. package/lib/families/solana/api/chain/instruction/token/types.d.ts +2 -2
  329. package/lib/families/solana/specs.d.ts.map +1 -1
  330. package/lib/families/solana/specs.js +29 -11
  331. package/lib/families/solana/specs.js.map +1 -1
  332. package/lib/families/solana/speculos-deviceActions.d.ts +0 -5
  333. package/lib/families/solana/speculos-deviceActions.d.ts.map +1 -1
  334. package/lib/families/solana/speculos-deviceActions.js +0 -4
  335. package/lib/families/solana/speculos-deviceActions.js.map +1 -1
  336. package/lib/families/stellar/api/horizon.d.ts.map +1 -1
  337. package/lib/families/stellar/api/horizon.js +15 -10
  338. package/lib/families/stellar/api/horizon.js.map +1 -1
  339. package/lib/families/stellar/specs.d.ts.map +1 -1
  340. package/lib/families/stellar/specs.js +30 -12
  341. package/lib/families/stellar/specs.js.map +1 -1
  342. package/lib/families/stellar/speculos-deviceActions.d.ts +1 -4
  343. package/lib/families/stellar/speculos-deviceActions.d.ts.map +1 -1
  344. package/lib/families/stellar/speculos-deviceActions.js +2 -4
  345. package/lib/families/stellar/speculos-deviceActions.js.map +1 -1
  346. package/lib/families/tezos/bakers.whitelist-default.d.ts.map +1 -1
  347. package/lib/families/tezos/bakers.whitelist-default.js +1 -1
  348. package/lib/families/tezos/bakers.whitelist-default.js.map +1 -1
  349. package/lib/families/tezos/specs.d.ts.map +1 -1
  350. package/lib/families/tezos/specs.js +2 -0
  351. package/lib/families/tezos/specs.js.map +1 -1
  352. package/lib/families/tezos/speculos-deviceActions.d.ts +1 -4
  353. package/lib/families/tezos/speculos-deviceActions.d.ts.map +1 -1
  354. package/lib/families/tezos/speculos-deviceActions.js +2 -2
  355. package/lib/families/tezos/speculos-deviceActions.js.map +1 -1
  356. package/lib/families/tron/specs.d.ts.map +1 -1
  357. package/lib/families/tron/specs.js +49 -17
  358. package/lib/families/tron/specs.js.map +1 -1
  359. package/lib/families/tron/speculos-deviceActions.d.ts +1 -4
  360. package/lib/families/tron/speculos-deviceActions.d.ts.map +1 -1
  361. package/lib/families/tron/speculos-deviceActions.js +2 -4
  362. package/lib/families/tron/speculos-deviceActions.js.map +1 -1
  363. package/lib/generated/cli-transaction.d.ts +12 -2
  364. package/lib/generated/cli-transaction.d.ts.map +1 -1
  365. package/lib/hw/getGenuineCheckFromDeviceId.d.ts +22 -0
  366. package/lib/hw/getGenuineCheckFromDeviceId.d.ts.map +1 -0
  367. package/lib/hw/getGenuineCheckFromDeviceId.js +49 -0
  368. package/lib/hw/getGenuineCheckFromDeviceId.js.map +1 -0
  369. package/lib/hw/getGenuineCheckFromDeviceId.test.d.ts +2 -0
  370. package/lib/hw/getGenuineCheckFromDeviceId.test.d.ts.map +1 -0
  371. package/lib/hw/getGenuineCheckFromDeviceId.test.js +84 -0
  372. package/lib/hw/getGenuineCheckFromDeviceId.test.js.map +1 -0
  373. package/lib/hw/getLatestAvailableFirmwareFromDeviceId.d.ts +17 -0
  374. package/lib/hw/getLatestAvailableFirmwareFromDeviceId.d.ts.map +1 -0
  375. package/lib/hw/getLatestAvailableFirmwareFromDeviceId.js +27 -0
  376. package/lib/hw/getLatestAvailableFirmwareFromDeviceId.js.map +1 -0
  377. package/lib/hw/hooks/useGenuineCheck.d.ts +34 -0
  378. package/lib/hw/hooks/useGenuineCheck.d.ts.map +1 -0
  379. package/lib/hw/hooks/useGenuineCheck.js +115 -0
  380. package/lib/hw/hooks/useGenuineCheck.js.map +1 -0
  381. package/lib/hw/hooks/useGenuineCheck.test.d.ts +2 -0
  382. package/lib/hw/hooks/useGenuineCheck.test.d.ts.map +1 -0
  383. package/lib/hw/hooks/useGenuineCheck.test.js +316 -0
  384. package/lib/hw/hooks/useGenuineCheck.test.js.map +1 -0
  385. package/lib/hw/hooks/useGetLatestAvailableFirmware.d.ts +29 -0
  386. package/lib/hw/hooks/useGetLatestAvailableFirmware.d.ts.map +1 -0
  387. package/lib/hw/hooks/useGetLatestAvailableFirmware.js +72 -0
  388. package/lib/hw/hooks/useGetLatestAvailableFirmware.js.map +1 -0
  389. package/lib/hw/hooks/useGetLatestAvailableFirmware.test.d.ts +2 -0
  390. package/lib/hw/hooks/useGetLatestAvailableFirmware.test.d.ts.map +1 -0
  391. package/lib/hw/hooks/useGetLatestAvailableFirmware.test.js +155 -0
  392. package/lib/hw/hooks/useGetLatestAvailableFirmware.test.js.map +1 -0
  393. package/lib/load/speculos.d.ts +1 -0
  394. package/lib/load/speculos.d.ts.map +1 -1
  395. package/lib/load/speculos.js +2 -1
  396. package/lib/load/speculos.js.map +1 -1
  397. package/lib/mock/fixtures/cryptoCurrencies.d.ts +5 -0
  398. package/lib/mock/fixtures/cryptoCurrencies.d.ts.map +1 -0
  399. package/lib/mock/fixtures/cryptoCurrencies.js +91 -0
  400. package/lib/mock/fixtures/cryptoCurrencies.js.map +1 -0
  401. package/lib/operation.d.ts.map +1 -1
  402. package/lib/operation.js +6 -0
  403. package/lib/operation.js.map +1 -1
  404. package/lib/platform/converters.test.js +44 -218
  405. package/lib/platform/converters.test.js.map +1 -1
  406. package/lib/platform/logic.d.ts +44 -0
  407. package/lib/platform/logic.d.ts.map +1 -1
  408. package/lib/platform/logic.js +147 -1
  409. package/lib/platform/logic.js.map +1 -1
  410. package/lib/platform/logic.test.d.ts +2 -0
  411. package/lib/platform/logic.test.d.ts.map +1 -0
  412. package/lib/platform/logic.test.js +903 -0
  413. package/lib/platform/logic.test.js.map +1 -0
  414. package/lib/platform/react.d.ts +6 -0
  415. package/lib/platform/react.d.ts.map +1 -1
  416. package/lib/platform/react.js +6 -0
  417. package/lib/platform/react.js.map +1 -1
  418. package/lib/platform/tracking.d.ts +1 -1
  419. package/lib/platform/tracking.d.ts.map +1 -1
  420. package/lib/platform/tracking.test.js +14 -41
  421. package/lib/platform/tracking.test.js.map +1 -1
  422. package/lib/reconciliation.d.ts.map +1 -1
  423. package/lib/reconciliation.js +39 -10
  424. package/lib/reconciliation.js.map +1 -1
  425. package/package.json +5 -7
  426. package/src/__tests__/families/bitcoin/wallet-btc/xpub.syncing.integration.test.ts +2 -2
  427. package/src/__tests__/test-helpers/environment.ts +91 -0
  428. package/src/__tests__/test-helpers/setup.ts +2 -91
  429. package/src/account/serialization.ts +125 -66
  430. package/src/apps/support.ts +1 -0
  431. package/src/bot/bot-test-context.test.ts +37 -0
  432. package/src/bot/bot-test-context.ts +24 -0
  433. package/src/bot/cli.ts +18 -0
  434. package/src/bot/engine.ts +109 -73
  435. package/src/bot/formatters.ts +40 -14
  436. package/src/bot/index.ts +124 -18
  437. package/src/bot/specs.ts +10 -5
  438. package/src/bot/types.ts +7 -3
  439. package/src/countervalues/logic.integration.test.ts +50 -0
  440. package/src/countervalues/modules/weth.ts +9 -12
  441. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +59 -1
  442. package/src/currencies/sortByMarketcap.test.ts +1 -12
  443. package/src/currencies/sortByMarketcap.ts +2 -22
  444. package/src/env.ts +1 -1
  445. package/src/families/algorand/__snapshots__/bridge.integration.test.ts.snap +733 -8
  446. package/src/families/algorand/specs.ts +26 -16
  447. package/src/families/algorand/speculos-deviceActions.ts +31 -10
  448. package/src/families/bitcoin/__snapshots__/bridge.integration.test.ts.snap +43309 -7957
  449. package/src/families/bitcoin/bridge/mock.ts +7 -1
  450. package/src/families/bitcoin/datasets/bitcoin_cash.ts +73 -13
  451. package/src/families/bitcoin/datasets/dash.ts +29 -17
  452. package/src/families/bitcoin/datasets/decred.ts +42 -12
  453. package/src/families/bitcoin/datasets/digibyte.ts +9 -3
  454. package/src/families/bitcoin/datasets/dogecoin.ts +29 -17
  455. package/src/families/bitcoin/datasets/komodo.ts +22 -22
  456. package/src/families/bitcoin/datasets/litecoin.ts +9 -3
  457. package/src/families/bitcoin/datasets/peercoin.ts +17 -17
  458. package/src/families/bitcoin/datasets/pivx.ts +17 -17
  459. package/src/families/bitcoin/datasets/qtum.ts +40 -40
  460. package/src/families/bitcoin/datasets/stakenet.ts +56 -26
  461. package/src/families/bitcoin/datasets/vertcoin.ts +43 -55
  462. package/src/families/bitcoin/datasets/viacoin.ts +35 -23
  463. package/src/families/bitcoin/datasets/zcash.ts +78 -12
  464. package/src/families/bitcoin/datasets/zencash.ts +56 -10
  465. package/src/families/bitcoin/platformAdapter.test.ts +58 -0
  466. package/src/families/bitcoin/specs.ts +81 -41
  467. package/src/families/bitcoin/speculos-deviceActions.ts +68 -69
  468. package/src/families/cardano/js-estimateMaxSpendable.ts +1 -1
  469. package/src/families/cardano/specs.ts +28 -11
  470. package/src/families/cardano/speculos-deviceActions.ts +65 -66
  471. package/src/families/celo/__snapshots__/bridge.integration.test.ts.snap +134 -857
  472. package/src/families/celo/api/hubble.ts +113 -16
  473. package/src/families/celo/api/index.ts +1 -1
  474. package/src/families/celo/api/sdk.ts +88 -0
  475. package/src/families/celo/bridge/js.ts +2 -3
  476. package/src/families/celo/cli-transaction.ts +46 -2
  477. package/src/families/celo/datasets/celo.scanAccounts.1.ts +365 -5
  478. package/src/families/celo/errors.ts +5 -0
  479. package/src/families/celo/js-buildTransaction.ts +173 -20
  480. package/src/families/celo/js-createTransaction.ts +2 -0
  481. package/src/families/celo/js-estimateMaxSpendable.ts +2 -2
  482. package/src/families/celo/js-getFeesForTransaction.ts +118 -19
  483. package/src/families/celo/js-getTransactionStatus.ts +72 -17
  484. package/src/families/celo/js-prepareTransaction.ts +13 -7
  485. package/src/families/celo/js-signOperation.ts +22 -5
  486. package/src/families/celo/js-synchronisation.ts +32 -0
  487. package/src/families/celo/logic.ts +184 -0
  488. package/src/families/celo/preload.ts +78 -0
  489. package/src/families/celo/react.ts +35 -0
  490. package/src/families/celo/serialization.ts +61 -0
  491. package/src/families/celo/specs/createActivateVoteMutation.ts +44 -0
  492. package/src/families/celo/specs/createLockMutation.ts +46 -0
  493. package/src/families/celo/specs/createRegisterAccountMutation.ts +34 -0
  494. package/src/families/celo/specs/createRevokeVoteMutation.ts +43 -0
  495. package/src/families/celo/specs/createSendMutation.ts +44 -0
  496. package/src/families/celo/specs/createUnlockMutation.ts +44 -0
  497. package/src/families/celo/specs/createVoteMutation.ts +67 -0
  498. package/src/families/celo/specs/createWithdrawMutation.ts +44 -0
  499. package/src/families/celo/specs/index.ts +8 -0
  500. package/src/families/celo/specs.ts +34 -34
  501. package/src/families/celo/speculos-deviceActions.ts +63 -45
  502. package/src/families/celo/transaction.ts +12 -4
  503. package/src/families/celo/types.ts +113 -0
  504. package/src/families/celo/validators.ts +2 -0
  505. package/src/families/cosmos/__snapshots__/bridge.integration.test.ts.snap +246 -5
  506. package/src/families/cosmos/specs.ts +44 -28
  507. package/src/families/cosmos/speculos-deviceActions.ts +82 -83
  508. package/src/families/crypto_org/specs.ts +3 -0
  509. package/src/families/crypto_org/speculos-deviceActions.ts +58 -59
  510. package/src/families/elrond/specs.ts +21 -4
  511. package/src/families/elrond/speculos-deviceActions.ts +41 -42
  512. package/src/families/ethereum/__snapshots__/bridge.integration.test.ts.snap +90 -90
  513. package/src/families/ethereum/platformAdapter.test.ts +112 -0
  514. package/src/families/ethereum/specs.ts +47 -23
  515. package/src/families/ethereum/speculos-deviceActions.ts +93 -95
  516. package/src/families/filecoin/specs.ts +2 -1
  517. package/src/families/filecoin/speculos-deviceActions.ts +61 -62
  518. package/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap +57 -2
  519. package/src/families/hedera/specs.ts +13 -5
  520. package/src/families/hedera/speculos-deviceActions.ts +59 -60
  521. package/src/families/osmosis/specs.ts +15 -7
  522. package/src/families/osmosis/speculos-deviceActions.ts +82 -83
  523. package/src/families/polkadot/platformAdapter.test.ts +61 -0
  524. package/src/families/polkadot/specs.ts +20 -2
  525. package/src/families/polkadot/speculos-deviceActions.ts +83 -82
  526. package/src/families/ripple/platformAdapter.test.ts +54 -0
  527. package/src/families/ripple/specs.ts +14 -7
  528. package/src/families/ripple/speculos-deviceActions.ts +72 -73
  529. package/src/families/solana/specs.ts +33 -14
  530. package/src/families/solana/speculos-deviceActions.ts +0 -5
  531. package/src/families/stellar/api/horizon.ts +10 -6
  532. package/src/families/stellar/specs.ts +37 -19
  533. package/src/families/stellar/speculos-deviceActions.ts +85 -87
  534. package/src/families/tezos/bakers.whitelist-default.ts +0 -1
  535. package/src/families/tezos/specs.ts +2 -0
  536. package/src/families/tezos/speculos-deviceActions.ts +76 -77
  537. package/src/families/tron/specs.ts +67 -30
  538. package/src/families/tron/speculos-deviceActions.ts +81 -84
  539. package/src/hw/getGenuineCheckFromDeviceId.test.ts +98 -0
  540. package/src/hw/getGenuineCheckFromDeviceId.ts +61 -0
  541. package/src/hw/getLatestAvailableFirmwareFromDeviceId.ts +37 -0
  542. package/src/hw/hooks/useGenuineCheck.test.ts +232 -0
  543. package/src/hw/hooks/useGenuineCheck.ts +138 -0
  544. package/src/hw/hooks/useGetLatestAvailableFirmware.test.ts +111 -0
  545. package/src/hw/hooks/useGetLatestAvailableFirmware.ts +90 -0
  546. package/src/load/speculos.ts +2 -0
  547. package/src/mock/fixtures/cryptoCurrencies.ts +88 -0
  548. package/src/operation.ts +6 -0
  549. package/src/platform/converters.test.ts +49 -282
  550. package/src/platform/logic.test.ts +756 -0
  551. package/src/platform/logic.ts +285 -0
  552. package/src/platform/react.ts +6 -0
  553. package/src/platform/tracking.test.ts +6 -7
  554. package/src/platform/tracking.ts +1 -1
  555. package/src/reconciliation.ts +88 -43
  556. package/lib/bot/test.bot.d.ts +0 -2
  557. package/lib/bot/test.bot.d.ts.map +0 -1
  558. package/lib/bot/test.bot.js +0 -62
  559. package/lib/bot/test.bot.js.map +0 -1
  560. package/lib/generated/speculos-deviceActions.d.ts +0 -56
  561. package/lib/generated/speculos-deviceActions.d.ts.map +0 -1
  562. package/lib/generated/speculos-deviceActions.js +0 -42
  563. package/lib/generated/speculos-deviceActions.js.map +0 -1
  564. package/src/bot/test.bot.ts +0 -21
  565. package/src/generated/speculos-deviceActions.ts +0 -37
@@ -1,20 +1,380 @@
1
- import type { CurrenciesData } from "@ledgerhq/types-live";
1
+ import BigNumber from "bignumber.js";
2
+ import {
3
+ AmountRequired,
4
+ InvalidAddress,
5
+ InvalidAddressBecauseDestinationIsAlsoSource,
6
+ NotEnoughBalance,
7
+ } from "@ledgerhq/errors";
8
+ import "../../../__tests__/test-helpers/setup";
9
+ import TransactionModule from "../transaction";
10
+ import { CeloAllFundsWarning } from "../errors";
11
+ import type {
12
+ AccountRaw,
13
+ CurrenciesData,
14
+ TransactionStatusCommon,
15
+ } from "@ledgerhq/types-live";
2
16
  import type { Transaction } from "../types";
3
17
 
18
+ // This account is registered for staking and has available funds, locked voting funds,
19
+ // locked non-voting funds, and withdrawable funds.
20
+ const LEDGER_CELO_ACCOUNT_1 = "0xcfD48e0FAf9f19377509cE68a6A6F4D9C85ff8AB";
21
+ // This account has no funds and isn't registered for staking.
22
+ const LEDGER_CELO_ACCOUNT_2 = "0x2cC7E5913bADa8FA2895bDeF7F4C2E36C2368Abb";
23
+ const VALIDATOR_ACCOUNT_1 = "0x0861a61Bf679A30680510EcC238ee43B82C5e843";
24
+
4
25
  const dataset: CurrenciesData<Transaction> = {
5
26
  scanAccounts: [
6
27
  {
7
- name: "celo seed 1",
28
+ name: "Celo 1",
8
29
  apdus: `
9
30
  => e00200000d038000002c8000ce1080000000
10
- <= 41040bd7f9f57b882469eeace7c1b393563e5e1748be7717620a406b4f2d9a01514fe50fcb3366435a99ac21b4f7a807a6ca99782cdb0cb082c49fa6110eb385cadc28336533343162333437436245336232413131363765303643383461366233383543413343396634319000
31
+ <= 410453390dcc1e6f1be0fb34f837b278ed1b4c84097c7493c13a0d915c735af1d8aa445d2738a95e8f50bc22abd2e17cb868d4db22a623d99d861740eb93373d50a328383735443736394535333337363338363732386136374632463564326435666561374637356233399000
11
32
  => e002000015058000002c8000ce10800000000000000000000000
12
- <= 4104d2705d8760cc776edeaef9a99895bcce6e9f19de51640aecf5dcf58be2eca4b9c95882a52c5525b838e69e2b719a6677dfb832b1c0a3f106c303412789621cc928314335443942343735303565314338653432433644443144314435623730423065664334324241309000
33
+ <= 4104eedca4417737f2dae0e12320edba0e845e4ced411e6e2978a9165dde3891099402ff4906ecaab03232f8273592287a94866f14f17b5e2bf6e31837278127919c28636644343865304641663966313933373735303963453638613641364634443943383566663841429000
13
34
  => e002000015058000002c8000ce10800000010000000000000000
14
- <= 41040699e39aa6ee84133dec1f0346f95516ace36d521764823624a2bf0bdfd97bd4b3ddd8f42b08ba251a53ef25a0f658de9fbb57600d2165dab69d10ebf34388a928336337383462383934343964413330313443356261654532374232326263313833343746314639629000
35
+ <= 41042304dfd28a236eb03471986b90f0a3a111537b35766ae8ff78a9f588071f56ec127531a2498b36e856c759bc2734297a07f9f4b331153a8c9c21171f6488884e28326343374535393133624144613846413238393562446546374634433245333643323336384162629000
15
36
  `,
16
37
  },
17
38
  ],
39
+ accounts: [
40
+ {
41
+ // Ignoring the "balance is sum of ops" test since that
42
+ // doesn't seem to take into account staked tokens properly.
43
+ FIXME_tests: ["balance is sum of ops"],
44
+ raw: {
45
+ id: `js:2:celo:${LEDGER_CELO_ACCOUNT_1}:`,
46
+ seedIdentifier:
47
+ "0453390dcc1e6f1be0fb34f837b278ed1b4c84097c7493c13a0d915c735af1d8aa445d2738a95e8f50bc22abd2e17cb868d4db22a623d99d861740eb93373d50a3",
48
+ name: "Celo 1",
49
+ derivationMode: "",
50
+ index: 0,
51
+ freshAddress: LEDGER_CELO_ACCOUNT_1,
52
+ freshAddressPath: "44'/52752'/0'/0/0",
53
+ freshAddresses: [],
54
+ blockHeight: 0,
55
+ operations: [],
56
+ pendingOperations: [],
57
+ currencyId: "celo",
58
+ unitMagnitude: 18,
59
+ lastSyncDate: "",
60
+ balance: "399893159500000000",
61
+ celoResources: {
62
+ registrationStatus: true,
63
+ lockedBalance: "1000000",
64
+ nonvotingLockedBalance: "900000",
65
+ pendingWithdrawals: [],
66
+ votes: [
67
+ {
68
+ validatorGroup: VALIDATOR_ACCOUNT_1,
69
+ amount: "100000",
70
+ activatable: true,
71
+ revokable: true,
72
+ type: "active",
73
+ index: 0,
74
+ },
75
+ ],
76
+ electionAddress: "0x8D6677192144292870907E3Fa8A5527fE55A7ff6",
77
+ lockedGoldAddress: "0x6cC083Aed9e3ebe302A6336dBC7c921C9f03349E",
78
+ },
79
+ } as AccountRaw,
80
+ transactions: [
81
+ {
82
+ name: "Same as Recipient",
83
+ transaction: (t) => ({
84
+ ...t,
85
+ amount: new BigNumber(100),
86
+ recipient: LEDGER_CELO_ACCOUNT_1,
87
+ }),
88
+ expectedStatus: {
89
+ errors: {
90
+ recipient: new InvalidAddressBecauseDestinationIsAlsoSource(),
91
+ },
92
+ warnings: {},
93
+ },
94
+ },
95
+ {
96
+ name: "Invalid Address",
97
+ transaction: (t) => ({
98
+ ...t,
99
+ amount: new BigNumber(100),
100
+ recipient: "dsadasdasdasdas",
101
+ }),
102
+ expectedStatus: {
103
+ errors: {
104
+ recipient: new InvalidAddress(),
105
+ },
106
+ warnings: {},
107
+ },
108
+ },
109
+ {
110
+ name: "Amount Required",
111
+ transaction: TransactionModule.fromTransactionRaw({
112
+ family: "celo",
113
+ recipient: LEDGER_CELO_ACCOUNT_2,
114
+ amount: "0",
115
+ mode: "send",
116
+ fees: null,
117
+ index: 0,
118
+ }),
119
+ expectedStatus: {
120
+ errors: {
121
+ amount: new AmountRequired(),
122
+ },
123
+ warnings: {},
124
+ },
125
+ },
126
+ {
127
+ name: "Not enough balance",
128
+ transaction: TransactionModule.fromTransactionRaw({
129
+ family: "celo",
130
+ recipient: LEDGER_CELO_ACCOUNT_2,
131
+ amount: "399893159500000005",
132
+ mode: "send",
133
+ fees: null,
134
+ index: 0,
135
+ }),
136
+ expectedStatus: {
137
+ errors: {
138
+ amount: new NotEnoughBalance(),
139
+ },
140
+ warnings: {},
141
+ },
142
+ },
143
+ {
144
+ name: "[send] use all amount - should warn all funds",
145
+ transaction: (t) => ({
146
+ ...t,
147
+ useAllAmount: true,
148
+ mode: "send",
149
+ recipient: LEDGER_CELO_ACCOUNT_2,
150
+ }),
151
+ expectedStatus: (account) => ({
152
+ errors: {},
153
+ warnings: {
154
+ amount: new CeloAllFundsWarning(),
155
+ },
156
+ totalSpent: account.spendableBalance,
157
+ }),
158
+ },
159
+ {
160
+ name: "Lock - success",
161
+ transaction: (t) => ({
162
+ ...t,
163
+ mode: "lock",
164
+ amount: new BigNumber(5000),
165
+ }),
166
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
167
+ return {
168
+ errors: {},
169
+ warnings: {},
170
+ amount: new BigNumber(5000),
171
+ };
172
+ },
173
+ },
174
+ {
175
+ name: "Unlock - success",
176
+ transaction: (t) => ({
177
+ ...t,
178
+ mode: "unlock",
179
+ amount: new BigNumber(50000),
180
+ }),
181
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
182
+ return {
183
+ errors: {},
184
+ warnings: {},
185
+ amount: new BigNumber(50000),
186
+ };
187
+ },
188
+ },
189
+ {
190
+ name: "Lock - amount required",
191
+ transaction: (t) => ({
192
+ ...t,
193
+ mode: "lock",
194
+ }),
195
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
196
+ return {
197
+ errors: {
198
+ amount: new AmountRequired(),
199
+ },
200
+ warnings: {},
201
+ };
202
+ },
203
+ },
204
+ {
205
+ name: "Unlock - amount required",
206
+ transaction: (t) => ({
207
+ ...t,
208
+ mode: "unlock",
209
+ }),
210
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
211
+ return {
212
+ errors: {
213
+ amount: new AmountRequired(),
214
+ },
215
+ warnings: {},
216
+ };
217
+ },
218
+ },
219
+ {
220
+ name: "Unlock - Not enough balance",
221
+ transaction: (t) => ({
222
+ ...t,
223
+ mode: "unlock",
224
+ amount: new BigNumber(200000000000000000),
225
+ }),
226
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
227
+ return {
228
+ errors: {
229
+ amount: new NotEnoughBalance(),
230
+ },
231
+ warnings: {},
232
+ };
233
+ },
234
+ },
235
+ {
236
+ name: "Vote - success",
237
+ transaction: (t) => ({
238
+ ...t,
239
+ mode: "vote",
240
+ useAllAmount: true,
241
+ recipient: VALIDATOR_ACCOUNT_1,
242
+ }),
243
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
244
+ return {
245
+ errors: {},
246
+ warnings: {},
247
+ amount: new BigNumber(100000000000000000),
248
+ };
249
+ },
250
+ },
251
+ {
252
+ name: "Vote - Not enough balance",
253
+ transaction: (t) => ({
254
+ ...t,
255
+ mode: "vote",
256
+ recipient: VALIDATOR_ACCOUNT_1,
257
+ amount: new BigNumber(200000000000000000),
258
+ }),
259
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
260
+ return {
261
+ errors: {
262
+ amount: new NotEnoughBalance(),
263
+ },
264
+ warnings: {},
265
+ };
266
+ },
267
+ },
268
+ {
269
+ name: "Activate Vote - success",
270
+ transaction: (t) => ({
271
+ ...t,
272
+ mode: "activate",
273
+ recipient: VALIDATOR_ACCOUNT_1,
274
+ }),
275
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
276
+ return {
277
+ errors: {},
278
+ warnings: {},
279
+ };
280
+ },
281
+ },
282
+ {
283
+ name: "Revoke Vote - success",
284
+ transaction: (t) => ({
285
+ ...t,
286
+ mode: "revoke",
287
+ recipient: VALIDATOR_ACCOUNT_1,
288
+ amount: new BigNumber(9000000),
289
+ index: 0,
290
+ }),
291
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
292
+ return {
293
+ errors: {},
294
+ warnings: {},
295
+ };
296
+ },
297
+ },
298
+ {
299
+ name: "Revoke Vote - Not enough balance",
300
+ transaction: (t) => ({
301
+ ...t,
302
+ mode: "revoke",
303
+ recipient: VALIDATOR_ACCOUNT_1,
304
+ amount: new BigNumber(20000000000000000000),
305
+ index: 0,
306
+ }),
307
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
308
+ return {
309
+ errors: {
310
+ amount: new NotEnoughBalance(),
311
+ },
312
+ warnings: {},
313
+ };
314
+ },
315
+ },
316
+ {
317
+ name: "Revoke Vote - voted amount should be used when revoke amount is set",
318
+ transaction: (t) => ({
319
+ ...t,
320
+ mode: "revoke",
321
+ recipient: VALIDATOR_ACCOUNT_1,
322
+ useAllAmount: true,
323
+ index: 0,
324
+ }),
325
+ expectedStatus: (): Partial<TransactionStatusCommon> => {
326
+ return {
327
+ errors: {},
328
+ warnings: {},
329
+ };
330
+ },
331
+ },
332
+ ],
333
+ },
334
+ {
335
+ FIXME_tests: ["balance is sum of ops"],
336
+ raw: {
337
+ id: `js:2:celo:${LEDGER_CELO_ACCOUNT_2}:`,
338
+ seedIdentifier:
339
+ "0453390dcc1e6f1be0fb34f837b278ed1b4c84097c7493c13a0d915c735af1d8aa445d2738a95e8f50bc22abd2e17cb868d4db22a623d99d861740eb93373d50a3",
340
+ name: "Celo 1",
341
+ derivationMode: "",
342
+ index: 0,
343
+ freshAddress: LEDGER_CELO_ACCOUNT_2,
344
+ freshAddressPath: "44'/52752'/0'/0/0",
345
+ freshAddresses: [],
346
+ blockHeight: 0,
347
+ operations: [],
348
+ pendingOperations: [],
349
+ currencyId: "celo",
350
+ unitMagnitude: 18,
351
+ lastSyncDate: "",
352
+ balance: "399893159500000000",
353
+ celoResources: {
354
+ registrationStatus: false,
355
+ lockedBalance: "0",
356
+ nonvotingLockedBalance: "0",
357
+ pendingWithdrawals: [],
358
+ votes: [],
359
+ electionAddress: "0x8D6677192144292870907E3Fa8A5527fE55A7ff6",
360
+ lockedGoldAddress: "0x6cC083Aed9e3ebe302A6336dBC7c921C9f03349E",
361
+ },
362
+ } as AccountRaw,
363
+ transactions: [
364
+ {
365
+ name: "Register Account - success",
366
+ transaction: (t) => ({
367
+ ...t,
368
+ mode: "register",
369
+ }),
370
+ expectedStatus: {
371
+ errors: {},
372
+ warnings: {},
373
+ },
374
+ },
375
+ ],
376
+ },
377
+ ],
18
378
  };
19
379
 
20
380
  export default dataset;
@@ -0,0 +1,5 @@
1
+ import { createCustomErrorClass } from "@ledgerhq/errors";
2
+
3
+ export const CeloAllFundsWarning = createCustomErrorClass(
4
+ "CeloAllFundsWarning"
5
+ );
@@ -1,32 +1,185 @@
1
- import type { Transaction } from "./types";
1
+ import type { CeloAccount, Transaction } from "./types";
2
2
  import { CeloTx } from "@celo/connect";
3
3
  import { celoKit } from "./api/sdk";
4
- import { Account } from "@ledgerhq/types-live";
4
+ import { BigNumber } from "bignumber.js";
5
+ import { getPendingStakingOperationAmounts, getVote } from "./logic";
5
6
 
6
- const buildTransaction = async (account: Account, transaction: Transaction) => {
7
+ const buildTransaction = async (
8
+ account: CeloAccount,
9
+ transaction: Transaction
10
+ ) => {
7
11
  const kit = celoKit();
8
- const { amount } = transaction;
9
- const value = transaction.useAllAmount
10
- ? account.spendableBalance.minus(transaction.fees || 0)
11
- : amount;
12
-
13
- const celoToken = await kit.contracts.getGoldToken();
14
-
15
- const celoTransaction = {
16
- from: account.freshAddress,
17
- to: celoToken.address,
18
- data: celoToken
19
- .transfer(transaction.recipient, value.toFixed())
20
- .txo.encodeABI(),
21
- };
22
12
 
23
- return {
13
+ const value = transactionValue(account, transaction);
14
+
15
+ let celoTransaction: CeloTx;
16
+
17
+ if (transaction.mode === "lock") {
18
+ const lockedGold = await kit.contracts.getLockedGold();
19
+ celoTransaction = {
20
+ from: account.freshAddress,
21
+ value: value.toFixed(),
22
+ to: lockedGold.address,
23
+ data: lockedGold.lock().txo.encodeABI(),
24
+ gas: await lockedGold.lock().txo.estimateGas({
25
+ from: account.freshAddress,
26
+ value: value.toFixed(),
27
+ }),
28
+ };
29
+ } else if (transaction.mode === "unlock") {
30
+ const lockedGold = await kit.contracts.getLockedGold();
31
+ celoTransaction = {
32
+ from: account.freshAddress,
33
+ to: lockedGold.address,
34
+ data: lockedGold.unlock(value).txo.encodeABI(),
35
+ gas: await lockedGold.unlock(value).txo.estimateGas({
36
+ from: account.freshAddress,
37
+ }),
38
+ };
39
+ } else if (transaction.mode === "withdraw") {
40
+ const lockedGold = await kit.contracts.getLockedGold();
41
+
42
+ celoTransaction = {
43
+ from: account.freshAddress,
44
+ to: lockedGold.address,
45
+ data: lockedGold.withdraw(transaction.index || 0).txo.encodeABI(),
46
+ gas: await lockedGold.withdraw(transaction.index || 0).txo.estimateGas({
47
+ from: account.freshAddress,
48
+ value: value.toFixed(),
49
+ }),
50
+ };
51
+ } else if (transaction.mode === "vote") {
52
+ const election = await kit.contracts.getElection();
53
+ const vote = await election.vote(
54
+ transaction.recipient,
55
+ new BigNumber(value)
56
+ );
57
+
58
+ celoTransaction = {
59
+ from: account.freshAddress,
60
+ to: election.address,
61
+ data: vote.txo.encodeABI(),
62
+ gas: await vote.txo.estimateGas({ from: account.freshAddress }),
63
+ };
64
+ } else if (transaction.mode === "revoke") {
65
+ const election = await kit.contracts.getElection();
66
+ const accounts = await kit.contracts.getAccounts();
67
+ const voteSignerAccount = await accounts.voteSignerToAccount(
68
+ account.freshAddress
69
+ );
70
+
71
+ const revokes = await election.revoke(
72
+ voteSignerAccount,
73
+ transaction.recipient,
74
+ new BigNumber(value)
75
+ );
76
+
77
+ const revoke = revokes.find((transactionObject) => {
78
+ return (
79
+ (transactionObject.txo as any)._method.name ===
80
+ (transaction.index === 0 ? "revokePending" : "revokeActive")
81
+ );
82
+ });
83
+ if (!revoke) throw new Error("No votes to revoke");
84
+
85
+ celoTransaction = {
86
+ from: account.freshAddress,
87
+ to: election.address,
88
+ data: revoke.txo.encodeABI(),
89
+ gas: await revoke.txo.estimateGas({ from: account.freshAddress }),
90
+ };
91
+ } else if (transaction.mode === "activate") {
92
+ const election = await kit.contracts.getElection();
93
+ const accounts = await kit.contracts.getAccounts();
94
+ const voteSignerAccount = await accounts.voteSignerToAccount(
95
+ account.freshAddress
96
+ );
97
+
98
+ const activates = await election.activate(voteSignerAccount);
99
+ const activate = activates.find(
100
+ (a) => a.txo.arguments[0] === transaction.recipient
101
+ );
102
+ if (!activate) throw new Error("No votes to activate");
103
+
104
+ celoTransaction = {
105
+ from: account.freshAddress,
106
+ to: election.address,
107
+ data: activate.txo.encodeABI(),
108
+ gas: await activate.txo.estimateGas({
109
+ from: account.freshAddress,
110
+ }),
111
+ };
112
+ } else if (transaction.mode === "register") {
113
+ const accounts = await kit.contracts.getAccounts();
114
+ celoTransaction = {
115
+ from: account.freshAddress,
116
+ to: accounts.address,
117
+ data: accounts.createAccount().txo.encodeABI(),
118
+ gas: await accounts
119
+ .createAccount()
120
+ .txo.estimateGas({ from: account.freshAddress }),
121
+ };
122
+ } else {
123
+ // Send
124
+ const celoToken = await kit.contracts.getGoldToken();
125
+ celoTransaction = {
126
+ from: account.freshAddress,
127
+ to: celoToken.address,
128
+ data: celoToken
129
+ .transfer(transaction.recipient, value.toFixed())
130
+ .txo.encodeABI(),
131
+ };
132
+
133
+ const gas = await kit.connection.estimateGasWithInflationFactor(
134
+ celoTransaction
135
+ );
136
+
137
+ celoTransaction = {
138
+ ...celoTransaction,
139
+ gas,
140
+ };
141
+ }
142
+ const tx: CeloTx = {
24
143
  ...celoTransaction,
25
144
  chainId: await kit.connection.chainId(),
26
145
  nonce: await kit.connection.nonce(account.freshAddress),
27
- gas: await kit.connection.estimateGasWithInflationFactor(celoTransaction),
28
146
  gasPrice: await kit.connection.gasPrice(),
29
- } as CeloTx;
147
+ };
148
+
149
+ return tx;
150
+ };
151
+
152
+ const transactionValue = (
153
+ account: CeloAccount,
154
+ transaction: Transaction
155
+ ): BigNumber => {
156
+ let value = transaction.amount;
157
+
158
+ if (transaction.useAllAmount) {
159
+ if (
160
+ (transaction.mode === "unlock" || transaction.mode === "vote") &&
161
+ account.celoResources
162
+ ) {
163
+ // Deduct the amount of pending vote transactions from
164
+ // the total non-voting locked balance to get the true non-voting locked balance.
165
+ const pendingOperationAmounts =
166
+ getPendingStakingOperationAmounts(account);
167
+ const pendingOperationAmount =
168
+ transaction.mode === "vote"
169
+ ? pendingOperationAmounts.vote
170
+ : new BigNumber(0);
171
+ value = account.celoResources.nonvotingLockedBalance.minus(
172
+ pendingOperationAmount
173
+ );
174
+ } else if (transaction.mode === "revoke" && account.celoResources) {
175
+ const revoke = getVote(account, transaction.recipient, transaction.index);
176
+ if (revoke?.amount) value = revoke.amount;
177
+ } else {
178
+ value = account.spendableBalance.minus(transaction.fees || 0);
179
+ }
180
+ }
181
+
182
+ return value;
30
183
  };
31
184
 
32
185
  export default buildTransaction;
@@ -7,6 +7,8 @@ const createTransaction = (): Transaction => ({
7
7
  recipient: "",
8
8
  useAllAmount: false,
9
9
  fees: null,
10
+ mode: "send",
11
+ index: null,
10
12
  });
11
13
 
12
14
  export default createTransaction;
@@ -1,4 +1,4 @@
1
- import { Transaction } from "./types";
1
+ import { CeloAccount, Transaction } from "./types";
2
2
  import { BigNumber } from "bignumber.js";
3
3
  import { getMainAccount } from "../../account";
4
4
  import getTransactionStatus from "./js-getTransactionStatus";
@@ -15,7 +15,7 @@ const estimateMaxSpendable = async ({
15
15
  parentAccount: Account;
16
16
  transaction: Transaction;
17
17
  }): Promise<BigNumber> => {
18
- const mainAccount = getMainAccount(account, parentAccount);
18
+ const mainAccount = getMainAccount(account, parentAccount) as CeloAccount;
19
19
  const t = await prepareTransaction(mainAccount, {
20
20
  ...createTransaction(),
21
21
  ...transaction,