@ledgerhq/live-common 31.0.0 → 31.1.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 (418) hide show
  1. package/lib/countervalues/api/api.d.ts.map +1 -1
  2. package/lib/countervalues/api/api.js +12 -18
  3. package/lib/countervalues/api/api.js.map +1 -1
  4. package/lib/countervalues/helpers.d.ts +2 -0
  5. package/lib/countervalues/helpers.d.ts.map +1 -1
  6. package/lib/countervalues/helpers.js +19 -5
  7. package/lib/countervalues/helpers.js.map +1 -1
  8. package/lib/countervalues/logic.d.ts.map +1 -1
  9. package/lib/countervalues/logic.integration.test.js.map +1 -1
  10. package/lib/countervalues/logic.js +1 -0
  11. package/lib/countervalues/logic.js.map +1 -1
  12. package/lib/countervalues/react.d.ts.map +1 -1
  13. package/lib/countervalues/react.js +9 -7
  14. package/lib/countervalues/react.js.map +1 -1
  15. package/lib/countervalues/react.test.d.ts +2 -0
  16. package/lib/countervalues/react.test.d.ts.map +1 -0
  17. package/lib/countervalues/react.test.js +107 -0
  18. package/lib/countervalues/react.test.js.map +1 -0
  19. package/lib/data/icons/react/euroc.d.ts +8 -0
  20. package/lib/data/icons/react/euroc.d.ts.map +1 -0
  21. package/lib/data/icons/react/euroc.js +36 -0
  22. package/lib/data/icons/react/euroc.js.map +1 -0
  23. package/lib/data/icons/react/index.d.ts +1 -0
  24. package/lib/data/icons/react/index.d.ts.map +1 -1
  25. package/lib/data/icons/react/index.js +9 -7
  26. package/lib/data/icons/react/index.js.map +1 -1
  27. package/lib/data/icons/reactNative/euroc.d.ts +8 -0
  28. package/lib/data/icons/reactNative/euroc.d.ts.map +1 -0
  29. package/lib/data/icons/reactNative/euroc.js +37 -0
  30. package/lib/data/icons/reactNative/euroc.js.map +1 -0
  31. package/lib/data/icons/reactNative/index.d.ts +1 -0
  32. package/lib/data/icons/reactNative/index.d.ts.map +1 -1
  33. package/lib/data/icons/reactNative/index.js +9 -7
  34. package/lib/data/icons/reactNative/index.js.map +1 -1
  35. package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts +32 -0
  36. package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts.map +1 -0
  37. package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.js +39 -0
  38. package/lib/deviceSDK/actions/toggleOnboardingEarlyCheck.js.map +1 -0
  39. package/lib/deviceSDK/commands/toggleOnboardingEarlyCheck.d.ts +27 -0
  40. package/lib/deviceSDK/commands/toggleOnboardingEarlyCheck.d.ts.map +1 -0
  41. package/lib/deviceSDK/commands/toggleOnboardingEarlyCheck.js +37 -0
  42. package/lib/deviceSDK/commands/toggleOnboardingEarlyCheck.js.map +1 -0
  43. package/lib/deviceSDK/commands/toggleOnboardingEarlyCheck.test.d.ts +2 -0
  44. package/lib/deviceSDK/commands/toggleOnboardingEarlyCheck.test.d.ts.map +1 -0
  45. package/lib/deviceSDK/commands/toggleOnboardingEarlyCheck.test.js +81 -0
  46. package/lib/deviceSDK/commands/toggleOnboardingEarlyCheck.test.js.map +1 -0
  47. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts +33 -0
  48. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts.map +1 -0
  49. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js +53 -0
  50. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js.map +1 -0
  51. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.d.ts +2 -0
  52. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.d.ts.map +1 -0
  53. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.js +93 -0
  54. package/lib/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.js.map +1 -0
  55. package/lib/deviceSDK/tasks/core.js.map +1 -1
  56. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts +30 -0
  57. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts.map +1 -0
  58. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.js +64 -0
  59. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.js.map +1 -0
  60. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.d.ts +2 -0
  61. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.d.ts.map +1 -0
  62. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.js +100 -0
  63. package/lib/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.js.map +1 -0
  64. package/lib/families/bitcoin/descriptor.d.ts.map +1 -1
  65. package/lib/families/bitcoin/descriptor.js.map +1 -1
  66. package/lib/families/bitcoin/satstack.d.ts +1 -0
  67. package/lib/families/bitcoin/satstack.d.ts.map +1 -1
  68. package/lib/families/bitcoin/satstack.js.map +1 -1
  69. package/lib/families/bitcoin/walletApiAdapter.js +4 -4
  70. package/lib/families/bitcoin/walletApiAdapter.js.map +1 -1
  71. package/lib/families/bitcoin/walletApiAdapter.test.js +9 -2
  72. package/lib/families/bitcoin/walletApiAdapter.test.js.map +1 -1
  73. package/lib/families/cosmos/api/Cosmos.d.ts +2 -0
  74. package/lib/families/cosmos/api/Cosmos.d.ts.map +1 -1
  75. package/lib/families/cosmos/api/Cosmos.js +34 -10
  76. package/lib/families/cosmos/api/Cosmos.js.map +1 -1
  77. package/lib/families/cosmos/helpers.d.ts +2 -8
  78. package/lib/families/cosmos/helpers.d.ts.map +1 -1
  79. package/lib/families/cosmos/helpers.js.map +1 -1
  80. package/lib/families/cosmos/helpers.unit.test.js +8 -8
  81. package/lib/families/cosmos/js-synchronisation.d.ts.map +1 -1
  82. package/lib/families/cosmos/js-synchronisation.js +40 -22
  83. package/lib/families/cosmos/js-synchronisation.js.map +1 -1
  84. package/lib/families/cosmos/js-synchronisation.unit.test.d.ts +2 -0
  85. package/lib/families/cosmos/js-synchronisation.unit.test.d.ts.map +1 -0
  86. package/lib/families/cosmos/js-synchronisation.unit.test.js +309 -0
  87. package/lib/families/cosmos/js-synchronisation.unit.test.js.map +1 -0
  88. package/lib/families/cosmos/react.d.ts +1 -1
  89. package/lib/families/cosmos/react.d.ts.map +1 -1
  90. package/lib/families/cosmos/react.js +7 -3
  91. package/lib/families/cosmos/react.js.map +1 -1
  92. package/lib/families/cosmos/types.d.ts +9 -8
  93. package/lib/families/cosmos/types.d.ts.map +1 -1
  94. package/lib/families/ethereum/walletApiAdapter.d.ts +3 -1
  95. package/lib/families/ethereum/walletApiAdapter.d.ts.map +1 -1
  96. package/lib/families/ethereum/walletApiAdapter.js +24 -6
  97. package/lib/families/ethereum/walletApiAdapter.js.map +1 -1
  98. package/lib/families/ethereum/walletApiAdapter.test.js +10 -3
  99. package/lib/families/ethereum/walletApiAdapter.test.js.map +1 -1
  100. package/lib/families/near/api/archive-node-sdk.d.ts.map +1 -1
  101. package/lib/families/near/api/archive-node-sdk.js +1 -2
  102. package/lib/families/near/api/archive-node-sdk.js.map +1 -1
  103. package/lib/families/polkadot/walletApiAdapter.js +3 -3
  104. package/lib/families/polkadot/walletApiAdapter.js.map +1 -1
  105. package/lib/families/polkadot/walletApiAdapter.test.js +10 -3
  106. package/lib/families/polkadot/walletApiAdapter.test.js.map +1 -1
  107. package/lib/families/ripple/walletApiAdapter.d.ts.map +1 -1
  108. package/lib/families/ripple/walletApiAdapter.js +2 -5
  109. package/lib/families/ripple/walletApiAdapter.js.map +1 -1
  110. package/lib/families/ripple/walletApiAdapter.test.js +10 -3
  111. package/lib/families/ripple/walletApiAdapter.test.js.map +1 -1
  112. package/lib/families/solana/api/chain/account/stake.d.ts +0 -1
  113. package/lib/families/solana/api/chain/account/stake.d.ts.map +1 -1
  114. package/lib/families/solana/api/chain/account/token.d.ts +0 -1
  115. package/lib/families/solana/api/chain/account/token.d.ts.map +1 -1
  116. package/lib/families/solana/api/chain/account/vote.d.ts +0 -1
  117. package/lib/families/solana/api/chain/account/vote.d.ts.map +1 -1
  118. package/lib/families/solana/api/chain/index.d.ts +2 -2
  119. package/lib/families/solana/api/chain/index.d.ts.map +1 -1
  120. package/lib/families/solana/api/chain/index.js +5 -1
  121. package/lib/families/solana/api/chain/index.js.map +1 -1
  122. package/lib/families/solana/api/chain/instruction/associated-token-account/types.d.ts +0 -1
  123. package/lib/families/solana/api/chain/instruction/associated-token-account/types.d.ts.map +1 -1
  124. package/lib/families/solana/api/chain/instruction/stake/types.d.ts +0 -1
  125. package/lib/families/solana/api/chain/instruction/stake/types.d.ts.map +1 -1
  126. package/lib/families/solana/api/chain/instruction/system/types.d.ts +0 -1
  127. package/lib/families/solana/api/chain/instruction/system/types.d.ts.map +1 -1
  128. package/lib/families/solana/api/chain/instruction/token/types.d.ts +0 -1
  129. package/lib/families/solana/api/chain/instruction/token/types.d.ts.map +1 -1
  130. package/lib/families/solana/js-buildTransaction.d.ts +1 -1
  131. package/lib/families/solana/js-buildTransaction.d.ts.map +1 -1
  132. package/lib/families/solana/js-buildTransaction.js +4 -3
  133. package/lib/families/solana/js-buildTransaction.js.map +1 -1
  134. package/lib/families/solana/js-signOperation.js +2 -2
  135. package/lib/families/solana/js-signOperation.js.map +1 -1
  136. package/lib/families/solana/tx-fees.js +4 -4
  137. package/lib/families/solana/tx-fees.js.map +1 -1
  138. package/lib/generated/walletApiAdapter.d.ts +1 -1
  139. package/lib/hw/actions/implementations.d.ts.map +1 -1
  140. package/lib/hw/actions/implementations.js +16 -2
  141. package/lib/hw/actions/implementations.js.map +1 -1
  142. package/lib/hw/extractOnboardingState.d.ts +2 -1
  143. package/lib/hw/extractOnboardingState.d.ts.map +1 -1
  144. package/lib/hw/extractOnboardingState.js +3 -1
  145. package/lib/hw/extractOnboardingState.js.map +1 -1
  146. package/lib/hw/extractOnboardingState.test.js +10 -0
  147. package/lib/hw/extractOnboardingState.test.js.map +1 -1
  148. package/lib/hw/staxRemoveImage.d.ts.map +1 -1
  149. package/lib/hw/staxRemoveImage.js +4 -0
  150. package/lib/hw/staxRemoveImage.js.map +1 -1
  151. package/lib/hw/staxRemoveImage.test.js +5 -0
  152. package/lib/hw/staxRemoveImage.test.js.map +1 -1
  153. package/lib/mock/fixtures/cryptoCurrencies.d.ts.map +1 -1
  154. package/lib/mock/fixtures/cryptoCurrencies.js +0 -1
  155. package/lib/mock/fixtures/cryptoCurrencies.js.map +1 -1
  156. package/lib/platform/logic.d.ts +2 -2
  157. package/lib/platform/logic.d.ts.map +1 -1
  158. package/lib/platform/logic.js +2 -1
  159. package/lib/platform/logic.js.map +1 -1
  160. package/lib/wallet-api/converters.d.ts.map +1 -1
  161. package/lib/wallet-api/converters.js +7 -3
  162. package/lib/wallet-api/converters.js.map +1 -1
  163. package/lib/wallet-api/converters.test.d.ts.map +1 -1
  164. package/lib/wallet-api/converters.test.js +3 -2
  165. package/lib/wallet-api/converters.test.js.map +1 -1
  166. package/lib/wallet-api/helpers.d.ts.map +1 -1
  167. package/lib/wallet-api/helpers.js +1 -1
  168. package/lib/wallet-api/helpers.js.map +1 -1
  169. package/lib/wallet-api/logic.d.ts +1 -1
  170. package/lib/wallet-api/logic.d.ts.map +1 -1
  171. package/lib/wallet-api/logic.js +12 -3
  172. package/lib/wallet-api/logic.js.map +1 -1
  173. package/lib/wallet-api/react.js +1 -1
  174. package/lib/wallet-api/react.js.map +1 -1
  175. package/lib/wallet-api/types.d.ts +11 -3
  176. package/lib/wallet-api/types.d.ts.map +1 -1
  177. package/lib-es/countervalues/api/api.d.ts.map +1 -1
  178. package/lib-es/countervalues/api/api.js +13 -19
  179. package/lib-es/countervalues/api/api.js.map +1 -1
  180. package/lib-es/countervalues/helpers.d.ts +2 -0
  181. package/lib-es/countervalues/helpers.d.ts.map +1 -1
  182. package/lib-es/countervalues/helpers.js +16 -4
  183. package/lib-es/countervalues/helpers.js.map +1 -1
  184. package/lib-es/countervalues/logic.d.ts.map +1 -1
  185. package/lib-es/countervalues/logic.integration.test.js.map +1 -1
  186. package/lib-es/countervalues/logic.js +1 -0
  187. package/lib-es/countervalues/logic.js.map +1 -1
  188. package/lib-es/countervalues/react.d.ts.map +1 -1
  189. package/lib-es/countervalues/react.js +10 -8
  190. package/lib-es/countervalues/react.js.map +1 -1
  191. package/lib-es/countervalues/react.test.d.ts +2 -0
  192. package/lib-es/countervalues/react.test.d.ts.map +1 -0
  193. package/lib-es/countervalues/react.test.js +105 -0
  194. package/lib-es/countervalues/react.test.js.map +1 -0
  195. package/lib-es/data/icons/react/euroc.d.ts +8 -0
  196. package/lib-es/data/icons/react/euroc.d.ts.map +1 -0
  197. package/lib-es/data/icons/react/euroc.js +11 -0
  198. package/lib-es/data/icons/react/euroc.js.map +1 -0
  199. package/lib-es/data/icons/react/index.d.ts +1 -0
  200. package/lib-es/data/icons/react/index.d.ts.map +1 -1
  201. package/lib-es/data/icons/react/index.js +1 -0
  202. package/lib-es/data/icons/react/index.js.map +1 -1
  203. package/lib-es/data/icons/reactNative/euroc.d.ts +8 -0
  204. package/lib-es/data/icons/reactNative/euroc.d.ts.map +1 -0
  205. package/lib-es/data/icons/reactNative/euroc.js +12 -0
  206. package/lib-es/data/icons/reactNative/euroc.js.map +1 -0
  207. package/lib-es/data/icons/reactNative/index.d.ts +1 -0
  208. package/lib-es/data/icons/reactNative/index.d.ts.map +1 -1
  209. package/lib-es/data/icons/reactNative/index.js +1 -0
  210. package/lib-es/data/icons/reactNative/index.js.map +1 -1
  211. package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts +32 -0
  212. package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.d.ts.map +1 -0
  213. package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.js +35 -0
  214. package/lib-es/deviceSDK/actions/toggleOnboardingEarlyCheck.js.map +1 -0
  215. package/lib-es/deviceSDK/commands/toggleOnboardingEarlyCheck.d.ts +27 -0
  216. package/lib-es/deviceSDK/commands/toggleOnboardingEarlyCheck.d.ts.map +1 -0
  217. package/lib-es/deviceSDK/commands/toggleOnboardingEarlyCheck.js +33 -0
  218. package/lib-es/deviceSDK/commands/toggleOnboardingEarlyCheck.js.map +1 -0
  219. package/lib-es/deviceSDK/commands/toggleOnboardingEarlyCheck.test.d.ts +2 -0
  220. package/lib-es/deviceSDK/commands/toggleOnboardingEarlyCheck.test.d.ts.map +1 -0
  221. package/lib-es/deviceSDK/commands/toggleOnboardingEarlyCheck.test.js +79 -0
  222. package/lib-es/deviceSDK/commands/toggleOnboardingEarlyCheck.test.js.map +1 -0
  223. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts +33 -0
  224. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.d.ts.map +1 -0
  225. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js +49 -0
  226. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.js.map +1 -0
  227. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.d.ts +2 -0
  228. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.d.ts.map +1 -0
  229. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.js +91 -0
  230. package/lib-es/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.js.map +1 -0
  231. package/lib-es/deviceSDK/tasks/core.js.map +1 -1
  232. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts +30 -0
  233. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.d.ts.map +1 -0
  234. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.js +60 -0
  235. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.js.map +1 -0
  236. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.d.ts +2 -0
  237. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.d.ts.map +1 -0
  238. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.js +98 -0
  239. package/lib-es/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.js.map +1 -0
  240. package/lib-es/families/bitcoin/descriptor.d.ts.map +1 -1
  241. package/lib-es/families/bitcoin/descriptor.js.map +1 -1
  242. package/lib-es/families/bitcoin/satstack.d.ts +1 -0
  243. package/lib-es/families/bitcoin/satstack.d.ts.map +1 -1
  244. package/lib-es/families/bitcoin/satstack.js.map +1 -1
  245. package/lib-es/families/bitcoin/walletApiAdapter.js +4 -4
  246. package/lib-es/families/bitcoin/walletApiAdapter.js.map +1 -1
  247. package/lib-es/families/bitcoin/walletApiAdapter.test.js +9 -2
  248. package/lib-es/families/bitcoin/walletApiAdapter.test.js.map +1 -1
  249. package/lib-es/families/cosmos/api/Cosmos.d.ts +2 -0
  250. package/lib-es/families/cosmos/api/Cosmos.d.ts.map +1 -1
  251. package/lib-es/families/cosmos/api/Cosmos.js +34 -10
  252. package/lib-es/families/cosmos/api/Cosmos.js.map +1 -1
  253. package/lib-es/families/cosmos/helpers.d.ts +2 -8
  254. package/lib-es/families/cosmos/helpers.d.ts.map +1 -1
  255. package/lib-es/families/cosmos/helpers.js.map +1 -1
  256. package/lib-es/families/cosmos/helpers.unit.test.js +8 -8
  257. package/lib-es/families/cosmos/js-synchronisation.d.ts.map +1 -1
  258. package/lib-es/families/cosmos/js-synchronisation.js +40 -22
  259. package/lib-es/families/cosmos/js-synchronisation.js.map +1 -1
  260. package/lib-es/families/cosmos/js-synchronisation.unit.test.d.ts +2 -0
  261. package/lib-es/families/cosmos/js-synchronisation.unit.test.d.ts.map +1 -0
  262. package/lib-es/families/cosmos/js-synchronisation.unit.test.js +281 -0
  263. package/lib-es/families/cosmos/js-synchronisation.unit.test.js.map +1 -0
  264. package/lib-es/families/cosmos/react.d.ts +1 -1
  265. package/lib-es/families/cosmos/react.d.ts.map +1 -1
  266. package/lib-es/families/cosmos/react.js +7 -3
  267. package/lib-es/families/cosmos/react.js.map +1 -1
  268. package/lib-es/families/cosmos/types.d.ts +9 -8
  269. package/lib-es/families/cosmos/types.d.ts.map +1 -1
  270. package/lib-es/families/ethereum/walletApiAdapter.d.ts +3 -1
  271. package/lib-es/families/ethereum/walletApiAdapter.d.ts.map +1 -1
  272. package/lib-es/families/ethereum/walletApiAdapter.js +24 -6
  273. package/lib-es/families/ethereum/walletApiAdapter.js.map +1 -1
  274. package/lib-es/families/ethereum/walletApiAdapter.test.js +10 -3
  275. package/lib-es/families/ethereum/walletApiAdapter.test.js.map +1 -1
  276. package/lib-es/families/near/api/archive-node-sdk.d.ts.map +1 -1
  277. package/lib-es/families/near/api/archive-node-sdk.js +1 -2
  278. package/lib-es/families/near/api/archive-node-sdk.js.map +1 -1
  279. package/lib-es/families/polkadot/walletApiAdapter.js +3 -3
  280. package/lib-es/families/polkadot/walletApiAdapter.js.map +1 -1
  281. package/lib-es/families/polkadot/walletApiAdapter.test.js +10 -3
  282. package/lib-es/families/polkadot/walletApiAdapter.test.js.map +1 -1
  283. package/lib-es/families/ripple/walletApiAdapter.d.ts.map +1 -1
  284. package/lib-es/families/ripple/walletApiAdapter.js +2 -5
  285. package/lib-es/families/ripple/walletApiAdapter.js.map +1 -1
  286. package/lib-es/families/ripple/walletApiAdapter.test.js +10 -3
  287. package/lib-es/families/ripple/walletApiAdapter.test.js.map +1 -1
  288. package/lib-es/families/solana/api/chain/account/stake.d.ts +0 -1
  289. package/lib-es/families/solana/api/chain/account/stake.d.ts.map +1 -1
  290. package/lib-es/families/solana/api/chain/account/token.d.ts +0 -1
  291. package/lib-es/families/solana/api/chain/account/token.d.ts.map +1 -1
  292. package/lib-es/families/solana/api/chain/account/vote.d.ts +0 -1
  293. package/lib-es/families/solana/api/chain/account/vote.d.ts.map +1 -1
  294. package/lib-es/families/solana/api/chain/index.d.ts +2 -2
  295. package/lib-es/families/solana/api/chain/index.d.ts.map +1 -1
  296. package/lib-es/families/solana/api/chain/index.js +5 -1
  297. package/lib-es/families/solana/api/chain/index.js.map +1 -1
  298. package/lib-es/families/solana/api/chain/instruction/associated-token-account/types.d.ts +0 -1
  299. package/lib-es/families/solana/api/chain/instruction/associated-token-account/types.d.ts.map +1 -1
  300. package/lib-es/families/solana/api/chain/instruction/stake/types.d.ts +0 -1
  301. package/lib-es/families/solana/api/chain/instruction/stake/types.d.ts.map +1 -1
  302. package/lib-es/families/solana/api/chain/instruction/system/types.d.ts +0 -1
  303. package/lib-es/families/solana/api/chain/instruction/system/types.d.ts.map +1 -1
  304. package/lib-es/families/solana/api/chain/instruction/token/types.d.ts +0 -1
  305. package/lib-es/families/solana/api/chain/instruction/token/types.d.ts.map +1 -1
  306. package/lib-es/families/solana/js-buildTransaction.d.ts +1 -1
  307. package/lib-es/families/solana/js-buildTransaction.d.ts.map +1 -1
  308. package/lib-es/families/solana/js-buildTransaction.js +5 -4
  309. package/lib-es/families/solana/js-buildTransaction.js.map +1 -1
  310. package/lib-es/families/solana/js-signOperation.js +2 -2
  311. package/lib-es/families/solana/js-signOperation.js.map +1 -1
  312. package/lib-es/families/solana/tx-fees.js +4 -4
  313. package/lib-es/families/solana/tx-fees.js.map +1 -1
  314. package/lib-es/generated/walletApiAdapter.d.ts +1 -1
  315. package/lib-es/hw/actions/implementations.d.ts.map +1 -1
  316. package/lib-es/hw/actions/implementations.js +18 -4
  317. package/lib-es/hw/actions/implementations.js.map +1 -1
  318. package/lib-es/hw/extractOnboardingState.d.ts +2 -1
  319. package/lib-es/hw/extractOnboardingState.d.ts.map +1 -1
  320. package/lib-es/hw/extractOnboardingState.js +3 -1
  321. package/lib-es/hw/extractOnboardingState.js.map +1 -1
  322. package/lib-es/hw/extractOnboardingState.test.js +10 -0
  323. package/lib-es/hw/extractOnboardingState.test.js.map +1 -1
  324. package/lib-es/hw/staxRemoveImage.d.ts.map +1 -1
  325. package/lib-es/hw/staxRemoveImage.js +4 -0
  326. package/lib-es/hw/staxRemoveImage.js.map +1 -1
  327. package/lib-es/hw/staxRemoveImage.test.js +5 -0
  328. package/lib-es/hw/staxRemoveImage.test.js.map +1 -1
  329. package/lib-es/mock/fixtures/cryptoCurrencies.d.ts.map +1 -1
  330. package/lib-es/mock/fixtures/cryptoCurrencies.js +0 -1
  331. package/lib-es/mock/fixtures/cryptoCurrencies.js.map +1 -1
  332. package/lib-es/platform/logic.d.ts +2 -2
  333. package/lib-es/platform/logic.d.ts.map +1 -1
  334. package/lib-es/platform/logic.js +2 -1
  335. package/lib-es/platform/logic.js.map +1 -1
  336. package/lib-es/wallet-api/converters.d.ts.map +1 -1
  337. package/lib-es/wallet-api/converters.js +7 -3
  338. package/lib-es/wallet-api/converters.js.map +1 -1
  339. package/lib-es/wallet-api/converters.test.d.ts.map +1 -1
  340. package/lib-es/wallet-api/converters.test.js +3 -2
  341. package/lib-es/wallet-api/converters.test.js.map +1 -1
  342. package/lib-es/wallet-api/helpers.d.ts.map +1 -1
  343. package/lib-es/wallet-api/helpers.js +1 -1
  344. package/lib-es/wallet-api/helpers.js.map +1 -1
  345. package/lib-es/wallet-api/logic.d.ts +1 -1
  346. package/lib-es/wallet-api/logic.d.ts.map +1 -1
  347. package/lib-es/wallet-api/logic.js +12 -3
  348. package/lib-es/wallet-api/logic.js.map +1 -1
  349. package/lib-es/wallet-api/react.js +1 -1
  350. package/lib-es/wallet-api/react.js.map +1 -1
  351. package/lib-es/wallet-api/types.d.ts +11 -3
  352. package/lib-es/wallet-api/types.d.ts.map +1 -1
  353. package/package.json +14 -14
  354. package/src/countervalues/api/api.ts +25 -23
  355. package/src/countervalues/helpers.ts +21 -3
  356. package/src/countervalues/logic.integration.test.ts +1 -0
  357. package/src/countervalues/logic.ts +1 -0
  358. package/src/countervalues/react.test.ts +120 -0
  359. package/src/countervalues/react.tsx +10 -13
  360. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +44 -4
  361. package/src/data/icons/react/euroc.tsx +12 -0
  362. package/src/data/icons/react/index.tsx +1 -0
  363. package/src/data/icons/reactNative/euroc.tsx +13 -0
  364. package/src/data/icons/reactNative/index.tsx +1 -0
  365. package/src/data/icons/svg/EUROC.svg +5 -0
  366. package/src/deviceSDK/actions/toggleOnboardingEarlyCheck.ts +86 -0
  367. package/src/deviceSDK/commands/toggleOnboardingEarlyCheck.test.ts +85 -0
  368. package/src/deviceSDK/commands/toggleOnboardingEarlyCheck.ts +42 -0
  369. package/src/deviceSDK/hooks/useToggleOnboardingEarlyChecks.test.ts +125 -0
  370. package/src/deviceSDK/hooks/useToggleOnboardingEarlyChecks.ts +71 -0
  371. package/src/deviceSDK/tasks/core.ts +1 -1
  372. package/src/deviceSDK/tasks/toggleOnboardingEarlyCheck.test.ts +111 -0
  373. package/src/deviceSDK/tasks/toggleOnboardingEarlyCheck.ts +92 -0
  374. package/src/families/bitcoin/descriptor.ts +5 -2
  375. package/src/families/bitcoin/satstack.ts +1 -0
  376. package/src/families/bitcoin/walletApiAdapter.test.ts +11 -2
  377. package/src/families/bitcoin/walletApiAdapter.ts +4 -4
  378. package/src/families/cosmos/__snapshots__/bridge.integration.test.ts.snap +664 -19
  379. package/src/families/cosmos/api/Cosmos.ts +34 -6
  380. package/src/families/cosmos/helpers.ts +2 -5
  381. package/src/families/cosmos/helpers.unit.test.ts +8 -8
  382. package/src/families/cosmos/js-synchronisation.ts +74 -27
  383. package/src/families/cosmos/js-synchronisation.unit.test.ts +339 -0
  384. package/src/families/cosmos/react.ts +8 -6
  385. package/src/families/cosmos/types.ts +6 -4
  386. package/src/families/ethereum/walletApiAdapter.test.ts +12 -3
  387. package/src/families/ethereum/walletApiAdapter.ts +44 -13
  388. package/src/families/near/api/archive-node-sdk.ts +2 -3
  389. package/src/families/polkadot/walletApiAdapter.test.ts +13 -4
  390. package/src/families/polkadot/walletApiAdapter.ts +3 -3
  391. package/src/families/ripple/walletApiAdapter.test.ts +12 -3
  392. package/src/families/ripple/walletApiAdapter.ts +2 -10
  393. package/src/families/solana/api/chain/index.ts +8 -4
  394. package/src/families/solana/js-buildTransaction.ts +6 -4
  395. package/src/families/solana/js-signOperation.ts +2 -2
  396. package/src/families/solana/tx-fees.ts +6 -6
  397. package/src/hw/actions/implementations.ts +20 -0
  398. package/src/hw/extractOnboardingState.test.ts +15 -0
  399. package/src/hw/extractOnboardingState.ts +3 -1
  400. package/src/hw/staxRemoveImage.test.ts +10 -0
  401. package/src/hw/staxRemoveImage.ts +4 -0
  402. package/src/mock/fixtures/cryptoCurrencies.ts +0 -1
  403. package/src/platform/logic.ts +5 -3
  404. package/src/wallet-api/converters.test.ts +5 -2
  405. package/src/wallet-api/converters.ts +8 -3
  406. package/src/wallet-api/helpers.ts +2 -1
  407. package/src/wallet-api/logic.ts +15 -4
  408. package/src/wallet-api/react.ts +1 -1
  409. package/src/wallet-api/types.ts +19 -3
  410. package/lib/countervalues/api/api.legacy.d.ts +0 -4
  411. package/lib/countervalues/api/api.legacy.d.ts.map +0 -1
  412. package/lib/countervalues/api/api.legacy.js +0 -96
  413. package/lib/countervalues/api/api.legacy.js.map +0 -1
  414. package/lib-es/countervalues/api/api.legacy.d.ts +0 -4
  415. package/lib-es/countervalues/api/api.legacy.d.ts.map +0 -1
  416. package/lib-es/countervalues/api/api.legacy.js +0 -91
  417. package/lib-es/countervalues/api/api.legacy.js.map +0 -1
  418. package/src/countervalues/api/api.legacy.ts +0 -91
@@ -247,21 +247,49 @@ export class CosmosAPI {
247
247
  };
248
248
 
249
249
  getTransactions = async (address: string): Promise<CosmosTx[]> => {
250
- const receive = await network({
250
+ let receive;
251
+ let send;
252
+
253
+ try {
254
+ send = await this.getSendingTransactions(address, "ORDER_BY_DESC");
255
+ receive = await this.getReceivingTransactions(address, "ORDER_BY_DESC");
256
+ } catch (e) {
257
+ // FIXME: remove and always orderBy once pagination is implemented or every nodes are upgraded to 0.47
258
+ // See https://github.com/cosmos/cosmos-sdk/issues/15437
259
+ if ((e as Error).message.includes("ORDER_BY_DESC")) {
260
+ send = await this.getSendingTransactions(address);
261
+ receive = await this.getReceivingTransactions(address);
262
+ }
263
+ }
264
+
265
+ return [...receive.data.tx_responses, ...send.data.tx_responses];
266
+ };
267
+
268
+ private async getReceivingTransactions(
269
+ address: string,
270
+ orderBy?: "ORDER_BY_DESC" | "ORDER_BY_ASC"
271
+ ) {
272
+ return await network({
251
273
  method: "GET",
252
274
  url:
253
275
  `${this.defaultEndpoint}/cosmos/tx/${this.version}/txs?events=` +
254
- encodeURI(`transfer.recipient='${address}'`),
276
+ encodeURI(`transfer.recipient='${address}'`) +
277
+ (orderBy ? `&order_by=${orderBy}` : ""),
255
278
  });
279
+ }
256
280
 
257
- const send = await network({
281
+ private async getSendingTransactions(
282
+ address: string,
283
+ orderBy?: "ORDER_BY_DESC" | "ORDER_BY_ASC"
284
+ ) {
285
+ return await network({
258
286
  method: "GET",
259
287
  url:
260
288
  `${this.defaultEndpoint}/cosmos/tx/${this.version}/txs?events=` +
261
- encodeURI(`message.sender='${address}'`),
289
+ encodeURI(`message.sender='${address}'`) +
290
+ (orderBy ? `&order_by=${orderBy}` : ""),
262
291
  });
263
- return [...receive.data.tx_responses, ...send.data.tx_responses];
264
- };
292
+ }
265
293
 
266
294
  broadcast = async ({
267
295
  signedOperation: { operation, signature },
@@ -1,9 +1,6 @@
1
- type Message = {
2
- type: string;
3
- attributes: { [key: string]: any };
4
- };
1
+ import { CosmosMessage } from "./types";
5
2
 
6
- export const getMainMessage = (messages: Message[]): Message => {
3
+ export const getMainMessage = (messages: CosmosMessage[]): CosmosMessage => {
7
4
  const messagePriorities: string[] = [
8
5
  "unbond",
9
6
  "redelegate",
@@ -5,11 +5,11 @@ describe("getMainMessage", () => {
5
5
  const exec = getMainMessage([
6
6
  {
7
7
  type: "delegate",
8
- attributes: {},
8
+ attributes: [],
9
9
  },
10
10
  {
11
11
  type: "withdraw_rewards",
12
- attributes: {},
12
+ attributes: [],
13
13
  },
14
14
  ]);
15
15
  expect(exec.type).toEqual("delegate");
@@ -20,11 +20,11 @@ describe("getMainMessage", () => {
20
20
  getMainMessage([
21
21
  {
22
22
  type: "unbond",
23
- attributes: {},
23
+ attributes: [],
24
24
  },
25
25
  {
26
26
  type: "transfer",
27
- attributes: {},
27
+ attributes: [],
28
28
  },
29
29
  ]).type
30
30
  ).toEqual("unbond");
@@ -33,14 +33,14 @@ describe("getMainMessage", () => {
33
33
  it("should return first transfer message with multiple transfer messages", () => {
34
34
  const firstTransfer = {
35
35
  type: "transfer",
36
- attributes: {},
36
+ attributes: [],
37
37
  };
38
38
  expect(
39
39
  getMainMessage([
40
40
  firstTransfer,
41
41
  {
42
42
  type: "transfer",
43
- attributes: {},
43
+ attributes: [],
44
44
  },
45
45
  ])
46
46
  ).toEqual(firstTransfer);
@@ -51,11 +51,11 @@ describe("getMainMessage", () => {
51
51
  getMainMessage([
52
52
  {
53
53
  type: "delegate",
54
- attributes: {},
54
+ attributes: [],
55
55
  },
56
56
  {
57
57
  type: "redelegate",
58
- attributes: {},
58
+ attributes: [],
59
59
  },
60
60
  ]).type
61
61
  ).toEqual("redelegate");
@@ -4,11 +4,12 @@ import {
4
4
  makeScanAccounts,
5
5
  GetAccountShape,
6
6
  mergeOps,
7
+ AccountShapeInfo,
7
8
  } from "../../bridge/jsHelpers";
8
9
  import { encodeAccountId } from "../../account";
9
10
  import { CosmosAPI } from "./api/Cosmos";
10
11
  import { encodeOperationId } from "../../operation";
11
- import { CosmosDelegationInfo } from "./types";
12
+ import { CosmosDelegationInfo, CosmosMessage, CosmosTx } from "./types";
12
13
  import type { Operation, OperationType } from "@ledgerhq/types-live";
13
14
  import { getMainMessage } from "./helpers";
14
15
 
@@ -30,10 +31,13 @@ const getBlankOperation = (tx, fees, id) => ({
30
31
  transactionSequenceNumber: parseInt(tx.tx.auth_info.signer_infos[0].sequence),
31
32
  });
32
33
 
33
- const txToOps = (info: any, id: string, txs: any): Operation[] => {
34
+ const txToOps = (
35
+ info: AccountShapeInfo,
36
+ accountId: string,
37
+ txs: CosmosTx[]
38
+ ): Operation[] => {
34
39
  const { address, currency } = info;
35
40
  const ops: Operation[] = [];
36
-
37
41
  for (const tx of txs) {
38
42
  let fees = new BigNumber(0);
39
43
 
@@ -41,22 +45,33 @@ const txToOps = (info: any, id: string, txs: any): Operation[] => {
41
45
  if (elem.denom === currency.units[1].code) fees = fees.plus(elem.amount);
42
46
  });
43
47
 
44
- const op: Operation = getBlankOperation(tx, fees, id);
48
+ const op: Operation = getBlankOperation(tx, fees, accountId);
45
49
 
46
- const messages = tx.logs.map((log) => log.events).flat(1);
50
+ const messages: CosmosMessage[] = tx.logs.map((log) => log.events).flat(1);
47
51
 
48
- const message = getMainMessage(messages);
52
+ const mainMessage = getMainMessage(messages);
49
53
 
50
- if (message == null) {
54
+ if (mainMessage === undefined) {
55
+ // happens when we don't know this message type in our implementation, example : proposal_vote
51
56
  continue;
52
57
  }
53
58
 
54
- // parse attributes as key:value
59
+ const correspondingMessages = messages.filter(
60
+ (m) => m.type === mainMessage.type
61
+ );
62
+
63
+ if (correspondingMessages.length === 0) {
64
+ continue;
65
+ }
66
+
67
+ // TODO: This mechanism should be removed
55
68
  const attributes: { [id: string]: any } = {};
56
- message.attributes.forEach((item) => (attributes[item.key] = item.value));
69
+ mainMessage.attributes.forEach(
70
+ (item) => (attributes[item.key] = item.value)
71
+ );
57
72
 
58
73
  // https://docs.cosmos.network/v0.42/modules/staking/07_events.html
59
- switch (message.type) {
74
+ switch (mainMessage.type) {
60
75
  case "transfer":
61
76
  if (attributes.sender && attributes.recipient && attributes.amount) {
62
77
  op.senders.push(attributes.sender);
@@ -77,25 +92,52 @@ const txToOps = (info: any, id: string, txs: any): Operation[] => {
77
92
  }
78
93
  break;
79
94
 
80
- case "withdraw_rewards":
81
- if (
82
- (attributes.amount &&
83
- attributes.amount.indexOf(currency.units[1].code) != -1) ||
84
- // handle specifc case with empty amount value like
85
- // tx DF458FE6A82C310837D7A33735FA5298BCF71B0BFF7A4134641AAE30F6F1050
86
- attributes.amount === ""
87
- ) {
88
- op.type = "REWARD";
89
- const reward = message.attributes
90
- .find((attr) => attr.key === "amount")
91
- .value.replace("uatom", "");
92
- op.value = new BigNumber(reward || 0);
93
- op.extra.validators.push({
94
- address: attributes.validator,
95
- amount: attributes.amount.replace(currency.units[1].code, "") || 0,
95
+ case "withdraw_rewards": {
96
+ op.type = "REWARD";
97
+
98
+ const rewardShards: { amount: BigNumber; address: string }[] = [];
99
+
100
+ let txRewardValue = new BigNumber(0);
101
+
102
+ for (const message of correspondingMessages) {
103
+ const validatorAttribute = message.attributes.find(
104
+ (attr) => attr.key === "validator"
105
+ );
106
+
107
+ if (validatorAttribute == null) {
108
+ continue;
109
+ }
110
+
111
+ const validatorAddress = validatorAttribute.value;
112
+
113
+ let messageRewardValue = new BigNumber(0);
114
+ const amountAttributes = message.attributes.filter(
115
+ (attribute) =>
116
+ attribute.key === "amount" &&
117
+ attribute.value.includes(currency.units[1].code)
118
+ );
119
+
120
+ amountAttributes.forEach((amountAttribute) => {
121
+ messageRewardValue = messageRewardValue.plus(
122
+ new BigNumber(
123
+ amountAttribute.value.replace(currency.units[1].code, "")
124
+ )
125
+ );
96
126
  });
127
+
128
+ rewardShards.push({
129
+ amount: messageRewardValue,
130
+ address: validatorAddress,
131
+ });
132
+
133
+ txRewardValue = txRewardValue.plus(messageRewardValue);
97
134
  }
135
+
136
+ op.value = txRewardValue;
137
+ op.extra.validators = rewardShards;
138
+
98
139
  break;
140
+ }
99
141
 
100
142
  case "delegate":
101
143
  if (
@@ -144,12 +186,17 @@ const txToOps = (info: any, id: string, txs: any): Operation[] => {
144
186
  break;
145
187
  }
146
188
 
189
+ if (tx.tx.body.memo != null) {
190
+ op.extra.memo = tx.tx.body.memo;
191
+ }
192
+
193
+ // Dirty, to remove after attributes map is gone
147
194
  if (!["IN", "OUT"].includes(op.type)) {
148
195
  op.senders = [];
149
196
  op.recipients = [];
150
197
  }
151
198
 
152
- op.id = encodeOperationId(id, tx.txhash, op.type);
199
+ op.id = encodeOperationId(accountId, tx.txhash, op.type);
153
200
 
154
201
  if (op.type) {
155
202
  ops.push(op);
@@ -0,0 +1,339 @@
1
+ import { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
2
+ import { Operation, SyncConfig } from "@ledgerhq/types-live";
3
+ import BigNumber from "bignumber.js";
4
+ import { AccountShapeInfo } from "../../bridge/jsHelpers";
5
+ import { CosmosAPI } from "./api/Cosmos";
6
+ import { getAccountShape } from "./js-synchronisation";
7
+ import { CosmosAccount, CosmosTx } from "./types";
8
+ import * as jsHelpers from "../../bridge/jsHelpers";
9
+
10
+ jest.mock("./api/Cosmos");
11
+ jest.mock("../../account");
12
+ jest.mock("../../bridge/jsHelpers");
13
+
14
+ const infoMock = {
15
+ currency: {
16
+ units: [{}, { code: "uatom" }],
17
+ } as CryptoCurrency,
18
+ address: "address",
19
+ index: 0,
20
+ } as AccountShapeInfo;
21
+
22
+ const baseAccountInfoMock = {
23
+ txs: [],
24
+ delegations: [],
25
+ unbondings: [],
26
+ balances: new BigNumber(0),
27
+ };
28
+
29
+ const baseTxMock = {
30
+ logs: [],
31
+ txhash: "2",
32
+ tx: {
33
+ auth_info: {
34
+ signer_infos: [{ sequence: "seq" }],
35
+ fee: { amount: [{ denom: "uatom", amount: new BigNumber(0) }] },
36
+ },
37
+ },
38
+ };
39
+
40
+ const syncConfig = {} as SyncConfig;
41
+
42
+ function mockAccountInfo(
43
+ partialMock: Partial<{
44
+ delegations: any;
45
+ unbondings: any;
46
+ balances: BigNumber;
47
+ txs: any[];
48
+ }>
49
+ ) {
50
+ // @ts-expect-error mocked
51
+ CosmosAPI.mockReturnValueOnce({
52
+ getAccountInfo: jest
53
+ .fn()
54
+ .mockResolvedValue({ ...baseAccountInfoMock, ...partialMock }),
55
+ });
56
+ }
57
+
58
+ function mockCosmosTx(tx: Partial<CosmosTx>) {
59
+ return {
60
+ logs: [
61
+ {
62
+ type: "withdraw_rewards",
63
+ events: [
64
+ {
65
+ type: "withdraw_rewards",
66
+ attributes: [
67
+ {
68
+ key: "amount",
69
+ value: "10uatom",
70
+ },
71
+ {
72
+ key: "validator",
73
+ value: "validatorAddressHehe",
74
+ },
75
+ ],
76
+ },
77
+ ],
78
+ attributes: [],
79
+ },
80
+ ],
81
+ txhash: "2",
82
+ tx: {
83
+ auth_info: {
84
+ signer_infos: [{ sequence: "seq" }],
85
+ fee: { amount: [{ denom: "uatom", amount: new BigNumber(0) }] },
86
+ },
87
+ body: {},
88
+ },
89
+ ...tx,
90
+ } as unknown as CosmosTx;
91
+ }
92
+
93
+ describe("getAccountShape", () => {
94
+ let mergeOpsSpy: jest.SpyInstance;
95
+ beforeEach(() => {
96
+ // @ts-expect-error mocked
97
+ CosmosAPI.mockClear();
98
+ mergeOpsSpy = jest
99
+ .spyOn(jsHelpers, "mergeOps")
100
+ .mockImplementation(
101
+ (existing: Operation[], newlyFetched: Operation[]): Operation[] => [
102
+ ...existing,
103
+ ...newlyFetched,
104
+ ]
105
+ );
106
+ });
107
+
108
+ afterEach(() => {
109
+ mergeOpsSpy.mockReset();
110
+ });
111
+
112
+ it("should sum up delegations to balance", async () => {
113
+ mockAccountInfo({
114
+ balances: new BigNumber(1),
115
+ delegations: [{ amount: new BigNumber(2) }],
116
+ });
117
+ const account = await getAccountShape(infoMock, syncConfig);
118
+ expect(account.balance).toEqual(new BigNumber(3));
119
+ });
120
+
121
+ it("should sum up delegation balances and assign it in cosmosResources delegatedBalances", async () => {
122
+ mockAccountInfo({
123
+ delegations: [{ amount: new BigNumber(1) }, { amount: new BigNumber(2) }],
124
+ });
125
+ const account = await getAccountShape(infoMock, syncConfig);
126
+ expect((account as CosmosAccount).cosmosResources.delegatedBalance).toEqual(
127
+ new BigNumber(3)
128
+ );
129
+ });
130
+
131
+ it("should sum up unbondings to balance", async () => {
132
+ mockAccountInfo({
133
+ balances: new BigNumber(2),
134
+ unbondings: [{ amount: new BigNumber(3) }],
135
+ });
136
+ const account = await getAccountShape(infoMock, syncConfig);
137
+ expect(account.balance).toEqual(new BigNumber(5));
138
+ });
139
+
140
+ it("estimate spendable balance correctly", async () => {
141
+ // Shouldn't it be 97 ?
142
+ mockAccountInfo({
143
+ balances: new BigNumber(100),
144
+ unbondings: [{ amount: new BigNumber(1) }],
145
+ delegations: [{ amount: new BigNumber(2) }],
146
+ });
147
+ const account = await getAccountShape(infoMock, syncConfig);
148
+ expect(account.spendableBalance).toEqual(new BigNumber(100));
149
+ });
150
+
151
+ it("should reduce balance to 0 if spendable balance is negative", async () => {
152
+ mockAccountInfo({
153
+ balances: new BigNumber(-10),
154
+ });
155
+ const account = await getAccountShape(infoMock, syncConfig);
156
+ expect(account.spendableBalance).toEqual(new BigNumber(0));
157
+ });
158
+
159
+ it("should sum up pendingRewards and insert it in cosmosResources", async () => {
160
+ mockAccountInfo({
161
+ delegations: [
162
+ {
163
+ pendingRewards: new BigNumber(1),
164
+ },
165
+ {
166
+ pendingRewards: new BigNumber(2),
167
+ },
168
+ ],
169
+ });
170
+ const account = await getAccountShape(infoMock, syncConfig);
171
+ expect(
172
+ (account as CosmosAccount).cosmosResources.pendingRewardsBalance
173
+ ).toEqual(new BigNumber(3));
174
+ });
175
+
176
+ it("set spendable balance to 0 if spendable balance is negative in initial account", async () => {
177
+ mockAccountInfo({});
178
+ const account = await getAccountShape(
179
+ {
180
+ ...infoMock,
181
+ initialAccount: {
182
+ spendableBalance: new BigNumber(-10),
183
+ } as CosmosAccount,
184
+ },
185
+ syncConfig
186
+ );
187
+ expect(account.spendableBalance).toEqual(new BigNumber(0));
188
+ });
189
+
190
+ it("should estimate operations count correctly", async () => {
191
+ mockAccountInfo({});
192
+ const account = await getAccountShape(
193
+ {
194
+ ...infoMock,
195
+ initialAccount: {
196
+ operations: [{}, {}],
197
+ } as CosmosAccount,
198
+ },
199
+ syncConfig
200
+ );
201
+ expect(account.operationsCount).toEqual(2);
202
+ });
203
+
204
+ it("should merge old operations with newly fetched ones", async () => {
205
+ const existingOperations = [{ hash: "3", id: "3" }];
206
+ mockAccountInfo({});
207
+ await getAccountShape(
208
+ {
209
+ ...infoMock,
210
+ initialAccount: {
211
+ operations: existingOperations,
212
+ } as CosmosAccount,
213
+ },
214
+ syncConfig
215
+ );
216
+ expect(mergeOpsSpy.mock.calls[0][0]).toEqual(existingOperations);
217
+ });
218
+
219
+ it("should add newly fetched operations", async () => {
220
+ mockAccountInfo({ txs: [mockCosmosTx({})] });
221
+ await getAccountShape(infoMock, syncConfig);
222
+ expect(mergeOpsSpy.mock.calls[0][1]).toBeTruthy();
223
+ });
224
+
225
+ it("should assign memo correctly", async () => {
226
+ const memo = "i am a memo :)";
227
+ mockAccountInfo({
228
+ txs: [
229
+ mockCosmosTx({
230
+ tx: {
231
+ body: { memo },
232
+ auth_info: baseTxMock.tx.auth_info,
233
+ },
234
+ } as Partial<CosmosTx>),
235
+ ],
236
+ });
237
+ const account = await getAccountShape(infoMock, syncConfig);
238
+ expect((account.operations as Operation[])[0].extra.memo).toEqual(memo);
239
+ });
240
+
241
+ it("should list claim reward operations correctly with multiple delegations", async () => {
242
+ mockAccountInfo({
243
+ txs: [
244
+ mockCosmosTx({
245
+ logs: [
246
+ {
247
+ type: "withdraw_rewards",
248
+ events: [
249
+ {
250
+ type: "withdraw_rewards",
251
+ attributes: [
252
+ {
253
+ key: "amount",
254
+ value: "3uatom",
255
+ },
256
+ {
257
+ key: "validator",
258
+ value: "validatorAddressNumeroUno",
259
+ },
260
+ ],
261
+ },
262
+ ],
263
+ attributes: [],
264
+ },
265
+ ],
266
+ } as Partial<CosmosTx>),
267
+ ],
268
+ });
269
+
270
+ const account = await getAccountShape(infoMock, syncConfig);
271
+ expect((account.operations as Operation[])[0].value).toEqual(
272
+ new BigNumber(3)
273
+ );
274
+ expect((account.operations as Operation[])[0].extra.validators).toEqual([
275
+ {
276
+ address: "validatorAddressNumeroUno",
277
+ amount: new BigNumber(3),
278
+ },
279
+ ]);
280
+ });
281
+
282
+ it("should list claim reward operations correctly with multiple delegations", async () => {
283
+ mockAccountInfo({
284
+ txs: [
285
+ mockCosmosTx({
286
+ logs: [
287
+ {
288
+ type: "withdraw_rewards",
289
+ events: [
290
+ {
291
+ type: "withdraw_rewards",
292
+ attributes: [
293
+ {
294
+ key: "amount",
295
+ value: "10uatom",
296
+ },
297
+ {
298
+ key: "validator",
299
+ value: "validatorAddressHehe",
300
+ },
301
+ ],
302
+ },
303
+ {
304
+ type: "withdraw_rewards",
305
+ attributes: [
306
+ {
307
+ key: "amount",
308
+ value: "5uatom",
309
+ },
310
+ {
311
+ key: "validator",
312
+ value: "validatorAddressTwo",
313
+ },
314
+ ],
315
+ },
316
+ ],
317
+ attributes: [],
318
+ },
319
+ ],
320
+ } as Partial<CosmosTx>),
321
+ ],
322
+ });
323
+
324
+ const account = await getAccountShape(infoMock, syncConfig);
325
+ expect((account.operations as Operation[])[0].value).toEqual(
326
+ new BigNumber(15)
327
+ );
328
+ expect((account.operations as Operation[])[0].extra.validators).toEqual([
329
+ {
330
+ address: "validatorAddressHehe",
331
+ amount: new BigNumber(10),
332
+ },
333
+ {
334
+ address: "validatorAddressTwo",
335
+ amount: new BigNumber(5),
336
+ },
337
+ ]);
338
+ });
339
+ });
@@ -26,7 +26,7 @@ import useMemoOnce from "../../hooks/useMemoOnce";
26
26
  import cryptoFactory from "./chain/chain";
27
27
 
28
28
  export function useCosmosFamilyPreloadData(
29
- currencyId: string
29
+ currencyId?: string
30
30
  ): CosmosPreloadData {
31
31
  const getCurrent = getCurrentCosmosPreloadData;
32
32
  const getUpdates = getCosmosPreloadDataUpdates;
@@ -36,11 +36,13 @@ export function useCosmosFamilyPreloadData(
36
36
  const sub = getUpdates().subscribe(setState);
37
37
  return () => sub.unsubscribe();
38
38
  }, [getCurrent, getUpdates]);
39
- return (
40
- state[currencyId] ?? {
41
- validators: [], // NB initial state because UI need to work even if it's currently "loading", typically after clear cache
42
- }
43
- );
39
+ return currencyId
40
+ ? state[currencyId] ?? {
41
+ validators: [], // NB initial state because UI need to work even if it's currently "loading", typically after clear cache
42
+ }
43
+ : {
44
+ validators: [], // NB initial state because UI need to work even if it's currently "loading", typically after clear cache
45
+ };
44
46
  }
45
47
 
46
48
  export function useCosmosFamilyMappedDelegations(
@@ -37,10 +37,7 @@ export type CosmosTx = {
37
37
  code: number;
38
38
  codespace: string;
39
39
  data: string;
40
- events: {
41
- type: string;
42
- attributes: { index: boolean; key: string; value: string }[];
43
- }[];
40
+ events: CosmosMessage[];
44
41
  gas_used: string;
45
42
  gas_wanted: string;
46
43
  height: string;
@@ -52,6 +49,11 @@ export type CosmosTx = {
52
49
  txhash: string;
53
50
  };
54
51
 
52
+ export type CosmosMessage = {
53
+ type: string;
54
+ attributes: { key: string; value: string; index?: boolean }[];
55
+ };
56
+
55
57
  export type CosmosResources = {
56
58
  delegations: CosmosDelegation[];
57
59
  redelegations: CosmosRedelegation[];