@ledgerhq/live-common 29.1.0 → 29.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/lib/account/serialization.d.ts +0 -6
  2. package/lib/account/serialization.d.ts.map +1 -1
  3. package/lib/account/serialization.js +11 -50
  4. package/lib/account/serialization.js.map +1 -1
  5. package/lib/apps/hw.js +1 -1
  6. package/lib/apps/hw.js.map +1 -1
  7. package/lib/countervalues/react.d.ts.map +1 -1
  8. package/lib/countervalues/react.js +1 -1
  9. package/lib/countervalues/react.js.map +1 -1
  10. package/lib/data/icons/react/gm.d.ts +8 -0
  11. package/lib/data/icons/react/gm.d.ts.map +1 -0
  12. package/lib/data/icons/react/gm.js +36 -0
  13. package/lib/data/icons/react/gm.js.map +1 -0
  14. package/lib/data/icons/react/index.d.ts +1 -0
  15. package/lib/data/icons/react/index.d.ts.map +1 -1
  16. package/lib/data/icons/react/index.js +9 -7
  17. package/lib/data/icons/react/index.js.map +1 -1
  18. package/lib/data/icons/reactNative/gm.d.ts +8 -0
  19. package/lib/data/icons/reactNative/gm.d.ts.map +1 -0
  20. package/lib/data/icons/reactNative/gm.js +37 -0
  21. package/lib/data/icons/reactNative/gm.js.map +1 -0
  22. package/lib/data/icons/reactNative/index.d.ts +1 -0
  23. package/lib/data/icons/reactNative/index.d.ts.map +1 -1
  24. package/lib/data/icons/reactNative/index.js +9 -7
  25. package/lib/data/icons/reactNative/index.js.map +1 -1
  26. package/lib/families/algorand/bridge/js.d.ts.map +1 -1
  27. package/lib/families/algorand/bridge/js.js +0 -1
  28. package/lib/families/algorand/bridge/js.js.map +1 -1
  29. package/lib/families/algorand/bridge/mock.d.ts.map +1 -1
  30. package/lib/families/algorand/bridge/mock.js +0 -1
  31. package/lib/families/algorand/bridge/mock.js.map +1 -1
  32. package/lib/families/algorand/serialization.d.ts +0 -1
  33. package/lib/families/algorand/serialization.d.ts.map +1 -1
  34. package/lib/families/algorand/serialization.js +1 -16
  35. package/lib/families/algorand/serialization.js.map +1 -1
  36. package/lib/families/bitcoin/bridge/js.d.ts.map +1 -1
  37. package/lib/families/bitcoin/bridge/js.js +4 -1
  38. package/lib/families/bitcoin/bridge/js.js.map +1 -1
  39. package/lib/families/bitcoin/descriptor.test.js +2 -0
  40. package/lib/families/bitcoin/descriptor.test.js.map +1 -1
  41. package/lib/families/bitcoin/satstack.test.js +2 -0
  42. package/lib/families/bitcoin/satstack.test.js.map +1 -1
  43. package/lib/families/bitcoin/serialization.d.ts +3 -0
  44. package/lib/families/bitcoin/serialization.d.ts.map +1 -1
  45. package/lib/families/bitcoin/serialization.js +16 -1
  46. package/lib/families/bitcoin/serialization.js.map +1 -1
  47. package/lib/families/bitcoin/serialization.test.d.ts +2 -0
  48. package/lib/families/bitcoin/serialization.test.d.ts.map +1 -0
  49. package/lib/families/bitcoin/serialization.test.js +110 -0
  50. package/lib/families/bitcoin/serialization.test.js.map +1 -0
  51. package/lib/families/cardano/bridge/js.d.ts.map +1 -1
  52. package/lib/families/cardano/bridge/js.js +0 -1
  53. package/lib/families/cardano/bridge/js.js.map +1 -1
  54. package/lib/families/cardano/serialization.d.ts +0 -1
  55. package/lib/families/cardano/serialization.d.ts.map +1 -1
  56. package/lib/families/cardano/serialization.js +1 -18
  57. package/lib/families/cardano/serialization.js.map +1 -1
  58. package/lib/families/celo/bridge/js.d.ts.map +1 -1
  59. package/lib/families/celo/bridge/js.js +0 -1
  60. package/lib/families/celo/bridge/js.js.map +1 -1
  61. package/lib/families/celo/serialization.d.ts +0 -1
  62. package/lib/families/celo/serialization.d.ts.map +1 -1
  63. package/lib/families/celo/serialization.js +1 -15
  64. package/lib/families/celo/serialization.js.map +1 -1
  65. package/lib/families/cosmos/bridge/js.d.ts.map +1 -1
  66. package/lib/families/cosmos/bridge/js.js +0 -2
  67. package/lib/families/cosmos/bridge/js.js.map +1 -1
  68. package/lib/families/cosmos/js-synchronisation.d.ts +1 -3
  69. package/lib/families/cosmos/js-synchronisation.d.ts.map +1 -1
  70. package/lib/families/cosmos/js-synchronisation.js +1 -16
  71. package/lib/families/cosmos/js-synchronisation.js.map +1 -1
  72. package/lib/families/crypto_org/api/sdk.d.ts.map +1 -1
  73. package/lib/families/crypto_org/api/sdk.js +6 -9
  74. package/lib/families/crypto_org/api/sdk.js.map +1 -1
  75. package/lib/families/crypto_org/js-buildTransaction.d.ts.map +1 -1
  76. package/lib/families/crypto_org/js-buildTransaction.js +3 -2
  77. package/lib/families/crypto_org/js-buildTransaction.js.map +1 -1
  78. package/lib/families/crypto_org/js-signOperation.js +1 -1
  79. package/lib/families/crypto_org/js-signOperation.js.map +1 -1
  80. package/lib/families/crypto_org/logic.d.ts +0 -16
  81. package/lib/families/crypto_org/logic.d.ts.map +1 -1
  82. package/lib/families/crypto_org/logic.js +6 -20
  83. package/lib/families/crypto_org/logic.js.map +1 -1
  84. package/lib/families/elrond/bridge/js.d.ts.map +1 -1
  85. package/lib/families/elrond/bridge/js.js +0 -2
  86. package/lib/families/elrond/bridge/js.js.map +1 -1
  87. package/lib/families/elrond/js-synchronisation.d.ts +1 -3
  88. package/lib/families/elrond/js-synchronisation.d.ts.map +1 -1
  89. package/lib/families/elrond/js-synchronisation.js +1 -16
  90. package/lib/families/elrond/js-synchronisation.js.map +1 -1
  91. package/lib/families/ethereum/__tests__/nft.integration.test.js +0 -7
  92. package/lib/families/ethereum/__tests__/nft.integration.test.js.map +1 -1
  93. package/lib/families/hedera/api/mirror.d.ts.map +1 -1
  94. package/lib/families/hedera/api/mirror.js +40 -16
  95. package/lib/families/hedera/api/mirror.js.map +1 -1
  96. package/lib/families/hedera/api/network.js +6 -1
  97. package/lib/families/hedera/api/network.js.map +1 -1
  98. package/lib/families/hedera/bridge.integration.test.js +1 -2
  99. package/lib/families/hedera/bridge.integration.test.js.map +1 -1
  100. package/lib/families/hedera/js-estimateMaxSpendable.d.ts.map +1 -1
  101. package/lib/families/hedera/js-estimateMaxSpendable.js +55 -11
  102. package/lib/families/hedera/js-estimateMaxSpendable.js.map +1 -1
  103. package/lib/families/hedera/js-getTransactionStatus.d.ts.map +1 -1
  104. package/lib/families/hedera/js-getTransactionStatus.js +5 -2
  105. package/lib/families/hedera/js-getTransactionStatus.js.map +1 -1
  106. package/lib/families/hedera/js-signOperation.js +23 -16
  107. package/lib/families/hedera/js-signOperation.js.map +1 -1
  108. package/lib/families/hedera/tests/js-estimateMaxSpendable.integration.test.d.ts +2 -0
  109. package/lib/families/hedera/tests/js-estimateMaxSpendable.integration.test.d.ts.map +1 -0
  110. package/lib/families/hedera/tests/{js-estimateMaxSpendable.test.js → js-estimateMaxSpendable.integration.test.js} +27 -3
  111. package/lib/families/hedera/tests/js-estimateMaxSpendable.integration.test.js.map +1 -0
  112. package/lib/families/hedera/tests/utils.integration.test.d.ts +2 -0
  113. package/lib/families/hedera/tests/utils.integration.test.d.ts.map +1 -0
  114. package/lib/families/hedera/tests/{utils.test.js → utils.integration.test.js} +28 -4
  115. package/lib/families/hedera/tests/utils.integration.test.js.map +1 -0
  116. package/lib/families/hedera/utils.d.ts +1 -1
  117. package/lib/families/hedera/utils.d.ts.map +1 -1
  118. package/lib/families/hedera/utils.js +40 -14
  119. package/lib/families/hedera/utils.js.map +1 -1
  120. package/lib/families/near/bridge/js.d.ts.map +1 -1
  121. package/lib/families/near/bridge/js.js +1 -2
  122. package/lib/families/near/bridge/js.js.map +1 -1
  123. package/lib/families/near/serialization.d.ts +0 -1
  124. package/lib/families/near/serialization.d.ts.map +1 -1
  125. package/lib/families/near/serialization.js +1 -15
  126. package/lib/families/near/serialization.js.map +1 -1
  127. package/lib/families/solana/api/chain/web3.d.ts +1 -0
  128. package/lib/families/solana/api/chain/web3.d.ts.map +1 -1
  129. package/lib/families/solana/api/chain/web3.js +16 -1
  130. package/lib/families/solana/api/chain/web3.js.map +1 -1
  131. package/lib/families/solana/bridge/bridge.d.ts.map +1 -1
  132. package/lib/families/solana/bridge/bridge.js +0 -1
  133. package/lib/families/solana/bridge/bridge.js.map +1 -1
  134. package/lib/families/solana/bridge.integration.test.js +7 -4
  135. package/lib/families/solana/bridge.integration.test.js.map +1 -1
  136. package/lib/families/solana/js-estimateMaxSpendable.d.ts.map +1 -1
  137. package/lib/families/solana/js-estimateMaxSpendable.js +9 -6
  138. package/lib/families/solana/js-estimateMaxSpendable.js.map +1 -1
  139. package/lib/families/solana/js-prepareTransaction.d.ts.map +1 -1
  140. package/lib/families/solana/js-prepareTransaction.js +15 -8
  141. package/lib/families/solana/js-prepareTransaction.js.map +1 -1
  142. package/lib/families/solana/logic.d.ts +0 -1
  143. package/lib/families/solana/logic.d.ts.map +1 -1
  144. package/lib/families/solana/logic.js +1 -4
  145. package/lib/families/solana/logic.js.map +1 -1
  146. package/lib/families/solana/serialization.d.ts +0 -1
  147. package/lib/families/solana/serialization.d.ts.map +1 -1
  148. package/lib/families/solana/serialization.js +1 -15
  149. package/lib/families/solana/serialization.js.map +1 -1
  150. package/lib/families/tezos/bridge/js.d.ts.map +1 -1
  151. package/lib/families/tezos/bridge/js.js +0 -1
  152. package/lib/families/tezos/bridge/js.js.map +1 -1
  153. package/lib/families/tezos/serialization.d.ts +0 -1
  154. package/lib/families/tezos/serialization.d.ts.map +1 -1
  155. package/lib/families/tezos/serialization.js +1 -18
  156. package/lib/families/tezos/serialization.js.map +1 -1
  157. package/lib/families/tron/bridge/js.d.ts.map +1 -1
  158. package/lib/families/tron/bridge/js.js +0 -1
  159. package/lib/families/tron/bridge/js.js.map +1 -1
  160. package/lib/families/tron/serialization.d.ts +0 -1
  161. package/lib/families/tron/serialization.d.ts.map +1 -1
  162. package/lib/families/tron/serialization.js +1 -15
  163. package/lib/families/tron/serialization.js.map +1 -1
  164. package/lib/hw/deviceAccess.d.ts.map +1 -1
  165. package/lib/hw/deviceAccess.js +4 -2
  166. package/lib/hw/deviceAccess.js.map +1 -1
  167. package/lib/hw/extractOnboardingState.d.ts +5 -3
  168. package/lib/hw/extractOnboardingState.d.ts.map +1 -1
  169. package/lib/hw/extractOnboardingState.js +6 -2
  170. package/lib/hw/extractOnboardingState.js.map +1 -1
  171. package/lib/hw/extractOnboardingState.test.js +46 -16
  172. package/lib/hw/extractOnboardingState.test.js.map +1 -1
  173. package/lib/hw/getDeviceName.d.ts.map +1 -1
  174. package/lib/hw/getDeviceName.js +2 -0
  175. package/lib/hw/getDeviceName.js.map +1 -1
  176. package/lib/hw/getDeviceName.test.js +16 -0
  177. package/lib/hw/getDeviceName.test.js.map +1 -1
  178. package/lib/hw/getOnboardingStatePolling.d.ts.map +1 -1
  179. package/lib/hw/getOnboardingStatePolling.js +38 -58
  180. package/lib/hw/getOnboardingStatePolling.js.map +1 -1
  181. package/lib/hw/getOnboardingStatePolling.test.js +1 -1
  182. package/lib/hw/getOnboardingStatePolling.test.js.map +1 -1
  183. package/lib/hw/hooks/useGenuineCheck.d.ts.map +1 -1
  184. package/lib/hw/hooks/useGenuineCheck.js +1 -0
  185. package/lib/hw/hooks/useGenuineCheck.js.map +1 -1
  186. package/lib/migrations/accounts-dataset.js +1 -1
  187. package/lib/migrations/accounts-dataset.js.map +1 -1
  188. package/lib/platform/providers/RemoteLiveAppProvider/index.d.ts +1 -0
  189. package/lib/platform/providers/RemoteLiveAppProvider/index.d.ts.map +1 -1
  190. package/lib/platform/providers/RemoteLiveAppProvider/index.js +6 -1
  191. package/lib/platform/providers/RemoteLiveAppProvider/index.js.map +1 -1
  192. package/lib/platform/types.d.ts +1 -0
  193. package/lib/platform/types.d.ts.map +1 -1
  194. package/lib-es/account/serialization.d.ts +0 -6
  195. package/lib-es/account/serialization.d.ts.map +1 -1
  196. package/lib-es/account/serialization.js +0 -36
  197. package/lib-es/account/serialization.js.map +1 -1
  198. package/lib-es/apps/hw.js +1 -1
  199. package/lib-es/apps/hw.js.map +1 -1
  200. package/lib-es/countervalues/react.d.ts.map +1 -1
  201. package/lib-es/countervalues/react.js +1 -1
  202. package/lib-es/countervalues/react.js.map +1 -1
  203. package/lib-es/data/icons/react/gm.d.ts +8 -0
  204. package/lib-es/data/icons/react/gm.d.ts.map +1 -0
  205. package/lib-es/data/icons/react/gm.js +11 -0
  206. package/lib-es/data/icons/react/gm.js.map +1 -0
  207. package/lib-es/data/icons/react/index.d.ts +1 -0
  208. package/lib-es/data/icons/react/index.d.ts.map +1 -1
  209. package/lib-es/data/icons/react/index.js +1 -0
  210. package/lib-es/data/icons/react/index.js.map +1 -1
  211. package/lib-es/data/icons/reactNative/gm.d.ts +8 -0
  212. package/lib-es/data/icons/reactNative/gm.d.ts.map +1 -0
  213. package/lib-es/data/icons/reactNative/gm.js +12 -0
  214. package/lib-es/data/icons/reactNative/gm.js.map +1 -0
  215. package/lib-es/data/icons/reactNative/index.d.ts +1 -0
  216. package/lib-es/data/icons/reactNative/index.d.ts.map +1 -1
  217. package/lib-es/data/icons/reactNative/index.js +1 -0
  218. package/lib-es/data/icons/reactNative/index.js.map +1 -1
  219. package/lib-es/families/algorand/bridge/js.d.ts.map +1 -1
  220. package/lib-es/families/algorand/bridge/js.js +1 -2
  221. package/lib-es/families/algorand/bridge/js.js.map +1 -1
  222. package/lib-es/families/algorand/bridge/mock.d.ts.map +1 -1
  223. package/lib-es/families/algorand/bridge/mock.js +1 -2
  224. package/lib-es/families/algorand/bridge/mock.js.map +1 -1
  225. package/lib-es/families/algorand/serialization.d.ts +0 -1
  226. package/lib-es/families/algorand/serialization.d.ts.map +1 -1
  227. package/lib-es/families/algorand/serialization.js +0 -11
  228. package/lib-es/families/algorand/serialization.js.map +1 -1
  229. package/lib-es/families/bitcoin/bridge/js.d.ts.map +1 -1
  230. package/lib-es/families/bitcoin/bridge/js.js +4 -1
  231. package/lib-es/families/bitcoin/bridge/js.js.map +1 -1
  232. package/lib-es/families/bitcoin/descriptor.test.js +2 -0
  233. package/lib-es/families/bitcoin/descriptor.test.js.map +1 -1
  234. package/lib-es/families/bitcoin/satstack.test.js +2 -0
  235. package/lib-es/families/bitcoin/satstack.test.js.map +1 -1
  236. package/lib-es/families/bitcoin/serialization.d.ts +3 -0
  237. package/lib-es/families/bitcoin/serialization.d.ts.map +1 -1
  238. package/lib-es/families/bitcoin/serialization.js +13 -0
  239. package/lib-es/families/bitcoin/serialization.js.map +1 -1
  240. package/lib-es/families/bitcoin/serialization.test.d.ts +2 -0
  241. package/lib-es/families/bitcoin/serialization.test.d.ts.map +1 -0
  242. package/lib-es/families/bitcoin/serialization.test.js +105 -0
  243. package/lib-es/families/bitcoin/serialization.test.js.map +1 -0
  244. package/lib-es/families/cardano/bridge/js.d.ts.map +1 -1
  245. package/lib-es/families/cardano/bridge/js.js +1 -2
  246. package/lib-es/families/cardano/bridge/js.js.map +1 -1
  247. package/lib-es/families/cardano/serialization.d.ts +0 -1
  248. package/lib-es/families/cardano/serialization.d.ts.map +1 -1
  249. package/lib-es/families/cardano/serialization.js +0 -13
  250. package/lib-es/families/cardano/serialization.js.map +1 -1
  251. package/lib-es/families/celo/bridge/js.d.ts.map +1 -1
  252. package/lib-es/families/celo/bridge/js.js +1 -2
  253. package/lib-es/families/celo/bridge/js.js.map +1 -1
  254. package/lib-es/families/celo/serialization.d.ts +0 -1
  255. package/lib-es/families/celo/serialization.d.ts.map +1 -1
  256. package/lib-es/families/celo/serialization.js +0 -13
  257. package/lib-es/families/celo/serialization.js.map +1 -1
  258. package/lib-es/families/cosmos/bridge/js.d.ts.map +1 -1
  259. package/lib-es/families/cosmos/bridge/js.js +0 -2
  260. package/lib-es/families/cosmos/bridge/js.js.map +1 -1
  261. package/lib-es/families/cosmos/js-synchronisation.d.ts +1 -3
  262. package/lib-es/families/cosmos/js-synchronisation.d.ts.map +1 -1
  263. package/lib-es/families/cosmos/js-synchronisation.js +0 -14
  264. package/lib-es/families/cosmos/js-synchronisation.js.map +1 -1
  265. package/lib-es/families/crypto_org/api/sdk.d.ts.map +1 -1
  266. package/lib-es/families/crypto_org/api/sdk.js +6 -9
  267. package/lib-es/families/crypto_org/api/sdk.js.map +1 -1
  268. package/lib-es/families/crypto_org/js-buildTransaction.d.ts.map +1 -1
  269. package/lib-es/families/crypto_org/js-buildTransaction.js +3 -2
  270. package/lib-es/families/crypto_org/js-buildTransaction.js.map +1 -1
  271. package/lib-es/families/crypto_org/js-signOperation.js +1 -1
  272. package/lib-es/families/crypto_org/js-signOperation.js.map +1 -1
  273. package/lib-es/families/crypto_org/logic.d.ts +0 -16
  274. package/lib-es/families/crypto_org/logic.d.ts.map +1 -1
  275. package/lib-es/families/crypto_org/logic.js +5 -19
  276. package/lib-es/families/crypto_org/logic.js.map +1 -1
  277. package/lib-es/families/elrond/bridge/js.d.ts.map +1 -1
  278. package/lib-es/families/elrond/bridge/js.js +0 -2
  279. package/lib-es/families/elrond/bridge/js.js.map +1 -1
  280. package/lib-es/families/elrond/js-synchronisation.d.ts +1 -3
  281. package/lib-es/families/elrond/js-synchronisation.d.ts.map +1 -1
  282. package/lib-es/families/elrond/js-synchronisation.js +0 -14
  283. package/lib-es/families/elrond/js-synchronisation.js.map +1 -1
  284. package/lib-es/families/ethereum/__tests__/nft.integration.test.js +1 -8
  285. package/lib-es/families/ethereum/__tests__/nft.integration.test.js.map +1 -1
  286. package/lib-es/families/hedera/api/mirror.d.ts.map +1 -1
  287. package/lib-es/families/hedera/api/mirror.js +40 -16
  288. package/lib-es/families/hedera/api/mirror.js.map +1 -1
  289. package/lib-es/families/hedera/api/network.js +6 -1
  290. package/lib-es/families/hedera/api/network.js.map +1 -1
  291. package/lib-es/families/hedera/bridge.integration.test.js +1 -2
  292. package/lib-es/families/hedera/bridge.integration.test.js.map +1 -1
  293. package/lib-es/families/hedera/js-estimateMaxSpendable.d.ts.map +1 -1
  294. package/lib-es/families/hedera/js-estimateMaxSpendable.js +56 -12
  295. package/lib-es/families/hedera/js-estimateMaxSpendable.js.map +1 -1
  296. package/lib-es/families/hedera/js-getTransactionStatus.d.ts.map +1 -1
  297. package/lib-es/families/hedera/js-getTransactionStatus.js +5 -2
  298. package/lib-es/families/hedera/js-getTransactionStatus.js.map +1 -1
  299. package/lib-es/families/hedera/js-signOperation.js +24 -17
  300. package/lib-es/families/hedera/js-signOperation.js.map +1 -1
  301. package/lib-es/families/hedera/tests/js-estimateMaxSpendable.integration.test.d.ts +2 -0
  302. package/lib-es/families/hedera/tests/js-estimateMaxSpendable.integration.test.d.ts.map +1 -0
  303. package/lib-es/families/hedera/tests/{js-estimateMaxSpendable.test.js → js-estimateMaxSpendable.integration.test.js} +27 -3
  304. package/lib-es/families/hedera/tests/js-estimateMaxSpendable.integration.test.js.map +1 -0
  305. package/lib-es/families/hedera/tests/utils.integration.test.d.ts +2 -0
  306. package/lib-es/families/hedera/tests/utils.integration.test.d.ts.map +1 -0
  307. package/lib-es/families/hedera/tests/{utils.test.js → utils.integration.test.js} +28 -4
  308. package/lib-es/families/hedera/tests/utils.integration.test.js.map +1 -0
  309. package/lib-es/families/hedera/utils.d.ts +1 -1
  310. package/lib-es/families/hedera/utils.d.ts.map +1 -1
  311. package/lib-es/families/hedera/utils.js +38 -13
  312. package/lib-es/families/hedera/utils.js.map +1 -1
  313. package/lib-es/families/near/bridge/js.d.ts.map +1 -1
  314. package/lib-es/families/near/bridge/js.js +2 -3
  315. package/lib-es/families/near/bridge/js.js.map +1 -1
  316. package/lib-es/families/near/serialization.d.ts +0 -1
  317. package/lib-es/families/near/serialization.d.ts.map +1 -1
  318. package/lib-es/families/near/serialization.js +0 -13
  319. package/lib-es/families/near/serialization.js.map +1 -1
  320. package/lib-es/families/solana/api/chain/web3.d.ts +1 -0
  321. package/lib-es/families/solana/api/chain/web3.d.ts.map +1 -1
  322. package/lib-es/families/solana/api/chain/web3.js +14 -0
  323. package/lib-es/families/solana/api/chain/web3.js.map +1 -1
  324. package/lib-es/families/solana/bridge/bridge.d.ts.map +1 -1
  325. package/lib-es/families/solana/bridge/bridge.js +1 -2
  326. package/lib-es/families/solana/bridge/bridge.js.map +1 -1
  327. package/lib-es/families/solana/bridge.integration.test.js +8 -5
  328. package/lib-es/families/solana/bridge.integration.test.js.map +1 -1
  329. package/lib-es/families/solana/js-estimateMaxSpendable.d.ts.map +1 -1
  330. package/lib-es/families/solana/js-estimateMaxSpendable.js +10 -7
  331. package/lib-es/families/solana/js-estimateMaxSpendable.js.map +1 -1
  332. package/lib-es/families/solana/js-prepareTransaction.d.ts.map +1 -1
  333. package/lib-es/families/solana/js-prepareTransaction.js +17 -10
  334. package/lib-es/families/solana/js-prepareTransaction.js.map +1 -1
  335. package/lib-es/families/solana/logic.d.ts +0 -1
  336. package/lib-es/families/solana/logic.d.ts.map +1 -1
  337. package/lib-es/families/solana/logic.js +1 -4
  338. package/lib-es/families/solana/logic.js.map +1 -1
  339. package/lib-es/families/solana/serialization.d.ts +0 -1
  340. package/lib-es/families/solana/serialization.d.ts.map +1 -1
  341. package/lib-es/families/solana/serialization.js +0 -13
  342. package/lib-es/families/solana/serialization.js.map +1 -1
  343. package/lib-es/families/tezos/bridge/js.d.ts.map +1 -1
  344. package/lib-es/families/tezos/bridge/js.js +1 -2
  345. package/lib-es/families/tezos/bridge/js.js.map +1 -1
  346. package/lib-es/families/tezos/serialization.d.ts +0 -1
  347. package/lib-es/families/tezos/serialization.d.ts.map +1 -1
  348. package/lib-es/families/tezos/serialization.js +0 -13
  349. package/lib-es/families/tezos/serialization.js.map +1 -1
  350. package/lib-es/families/tron/bridge/js.d.ts.map +1 -1
  351. package/lib-es/families/tron/bridge/js.js +1 -2
  352. package/lib-es/families/tron/bridge/js.js.map +1 -1
  353. package/lib-es/families/tron/serialization.d.ts +0 -1
  354. package/lib-es/families/tron/serialization.d.ts.map +1 -1
  355. package/lib-es/families/tron/serialization.js +0 -13
  356. package/lib-es/families/tron/serialization.js.map +1 -1
  357. package/lib-es/hw/deviceAccess.d.ts.map +1 -1
  358. package/lib-es/hw/deviceAccess.js +4 -2
  359. package/lib-es/hw/deviceAccess.js.map +1 -1
  360. package/lib-es/hw/extractOnboardingState.d.ts +5 -3
  361. package/lib-es/hw/extractOnboardingState.d.ts.map +1 -1
  362. package/lib-es/hw/extractOnboardingState.js +6 -2
  363. package/lib-es/hw/extractOnboardingState.js.map +1 -1
  364. package/lib-es/hw/extractOnboardingState.test.js +46 -16
  365. package/lib-es/hw/extractOnboardingState.test.js.map +1 -1
  366. package/lib-es/hw/getDeviceName.d.ts.map +1 -1
  367. package/lib-es/hw/getDeviceName.js +2 -0
  368. package/lib-es/hw/getDeviceName.js.map +1 -1
  369. package/lib-es/hw/getDeviceName.test.js +16 -0
  370. package/lib-es/hw/getDeviceName.test.js.map +1 -1
  371. package/lib-es/hw/getOnboardingStatePolling.d.ts.map +1 -1
  372. package/lib-es/hw/getOnboardingStatePolling.js +39 -59
  373. package/lib-es/hw/getOnboardingStatePolling.js.map +1 -1
  374. package/lib-es/hw/getOnboardingStatePolling.test.js +1 -1
  375. package/lib-es/hw/getOnboardingStatePolling.test.js.map +1 -1
  376. package/lib-es/hw/hooks/useGenuineCheck.d.ts.map +1 -1
  377. package/lib-es/hw/hooks/useGenuineCheck.js +1 -0
  378. package/lib-es/hw/hooks/useGenuineCheck.js.map +1 -1
  379. package/lib-es/migrations/accounts-dataset.js +1 -1
  380. package/lib-es/migrations/accounts-dataset.js.map +1 -1
  381. package/lib-es/platform/providers/RemoteLiveAppProvider/index.d.ts +1 -0
  382. package/lib-es/platform/providers/RemoteLiveAppProvider/index.d.ts.map +1 -1
  383. package/lib-es/platform/providers/RemoteLiveAppProvider/index.js +4 -0
  384. package/lib-es/platform/providers/RemoteLiveAppProvider/index.js.map +1 -1
  385. package/lib-es/platform/types.d.ts +1 -0
  386. package/lib-es/platform/types.d.ts.map +1 -1
  387. package/package.json +21 -21
  388. package/src/account/serialization.ts +0 -55
  389. package/src/apps/hw.ts +1 -1
  390. package/src/bot/portfolio/__snapshots__/formatter.test.ts.snap +1 -1
  391. package/src/countervalues/react.tsx +2 -2
  392. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +34 -2
  393. package/src/data/icons/react/gm.tsx +14 -0
  394. package/src/data/icons/react/index.tsx +1 -0
  395. package/src/data/icons/reactNative/gm.tsx +15 -0
  396. package/src/data/icons/reactNative/index.tsx +1 -0
  397. package/src/data/icons/svg/GM.svg +4 -0
  398. package/src/families/algorand/bridge/js.ts +1 -6
  399. package/src/families/algorand/bridge/mock.ts +1 -6
  400. package/src/families/algorand/serialization.ts +0 -23
  401. package/src/families/bitcoin/bridge/js.ts +3 -0
  402. package/src/families/bitcoin/descriptor.test.ts +3 -0
  403. package/src/families/bitcoin/satstack.test.ts +3 -0
  404. package/src/families/bitcoin/serialization.test.ts +150 -0
  405. package/src/families/bitcoin/serialization.ts +22 -0
  406. package/src/families/cardano/bridge/js.ts +1 -6
  407. package/src/families/cardano/serialization.ts +0 -25
  408. package/src/families/celo/bridge/js.ts +1 -6
  409. package/src/families/celo/serialization.ts +0 -25
  410. package/src/families/cosmos/bridge/js.ts +0 -2
  411. package/src/families/cosmos/js-synchronisation.ts +1 -28
  412. package/src/families/crypto_org/api/sdk.ts +14 -18
  413. package/src/families/crypto_org/js-buildTransaction.ts +3 -2
  414. package/src/families/crypto_org/js-signOperation.ts +1 -1
  415. package/src/families/crypto_org/logic.ts +5 -19
  416. package/src/families/elrond/bridge/js.ts +0 -2
  417. package/src/families/elrond/js-synchronisation.ts +0 -28
  418. package/src/families/ethereum/__tests__/nft.integration.test.ts +1 -12
  419. package/src/families/hedera/api/mirror.ts +16 -15
  420. package/src/families/hedera/api/network.ts +9 -1
  421. package/src/families/hedera/bridge.integration.test.ts +1 -4
  422. package/src/families/hedera/js-estimateMaxSpendable.ts +4 -6
  423. package/src/families/hedera/js-getTransactionStatus.ts +3 -1
  424. package/src/families/hedera/js-signOperation.ts +2 -2
  425. package/src/families/hedera/tests/{js-estimateMaxSpendable.test.ts → js-estimateMaxSpendable.integration.test.ts} +17 -2
  426. package/src/families/hedera/tests/{utils.test.ts → utils.integration.test.ts} +18 -3
  427. package/src/families/hedera/utils.ts +17 -5
  428. package/src/families/near/bridge/js.ts +1 -6
  429. package/src/families/near/serialization.ts +0 -25
  430. package/src/families/solana/api/chain/web3.ts +11 -0
  431. package/src/families/solana/bridge/bridge.ts +1 -6
  432. package/src/families/solana/bridge.integration.test.ts +11 -5
  433. package/src/families/solana/js-estimateMaxSpendable.ts +14 -3
  434. package/src/families/solana/js-prepareTransaction.ts +23 -5
  435. package/src/families/solana/logic.ts +1 -6
  436. package/src/families/solana/serialization.ts +0 -26
  437. package/src/families/tezos/bridge/js.ts +1 -6
  438. package/src/families/tezos/serialization.ts +0 -25
  439. package/src/families/tron/bridge/js.ts +1 -6
  440. package/src/families/tron/serialization.ts +0 -25
  441. package/src/hw/deviceAccess.ts +6 -2
  442. package/src/hw/extractOnboardingState.test.ts +63 -16
  443. package/src/hw/extractOnboardingState.ts +6 -2
  444. package/src/hw/getDeviceName.test.ts +10 -0
  445. package/src/hw/getDeviceName.ts +2 -0
  446. package/src/hw/getOnboardingStatePolling.test.ts +1 -1
  447. package/src/hw/getOnboardingStatePolling.ts +13 -40
  448. package/src/hw/hooks/useGenuineCheck.ts +1 -0
  449. package/src/migrations/accounts-dataset.ts +1 -1
  450. package/src/platform/providers/RemoteLiveAppProvider/index.tsx +4 -0
  451. package/src/platform/types.ts +1 -0
  452. package/lib/__tests__/reconciliation.d.ts +0 -2
  453. package/lib/__tests__/reconciliation.d.ts.map +0 -1
  454. package/lib/__tests__/reconciliation.js +0 -51
  455. package/lib/__tests__/reconciliation.js.map +0 -1
  456. package/lib/families/hedera/tests/js-estimateMaxSpendable.test.d.ts +0 -2
  457. package/lib/families/hedera/tests/js-estimateMaxSpendable.test.d.ts.map +0 -1
  458. package/lib/families/hedera/tests/js-estimateMaxSpendable.test.js.map +0 -1
  459. package/lib/families/hedera/tests/utils.test.d.ts +0 -2
  460. package/lib/families/hedera/tests/utils.test.d.ts.map +0 -1
  461. package/lib/families/hedera/tests/utils.test.js.map +0 -1
  462. package/lib/reconciliation.d.ts +0 -9
  463. package/lib/reconciliation.d.ts.map +0 -1
  464. package/lib/reconciliation.js +0 -450
  465. package/lib/reconciliation.js.map +0 -1
  466. package/lib-es/__tests__/reconciliation.d.ts +0 -2
  467. package/lib-es/__tests__/reconciliation.d.ts.map +0 -1
  468. package/lib-es/__tests__/reconciliation.js +0 -49
  469. package/lib-es/__tests__/reconciliation.js.map +0 -1
  470. package/lib-es/families/hedera/tests/js-estimateMaxSpendable.test.d.ts +0 -2
  471. package/lib-es/families/hedera/tests/js-estimateMaxSpendable.test.d.ts.map +0 -1
  472. package/lib-es/families/hedera/tests/js-estimateMaxSpendable.test.js.map +0 -1
  473. package/lib-es/families/hedera/tests/utils.test.d.ts +0 -2
  474. package/lib-es/families/hedera/tests/utils.test.d.ts.map +0 -1
  475. package/lib-es/families/hedera/tests/utils.test.js.map +0 -1
  476. package/lib-es/reconciliation.d.ts +0 -9
  477. package/lib-es/reconciliation.d.ts.map +0 -1
  478. package/lib-es/reconciliation.js +0 -438
  479. package/lib-es/reconciliation.js.map +0 -1
  480. package/src/__tests__/reconciliation.ts +0 -40
  481. package/src/reconciliation.ts +0 -536
@@ -1,536 +0,0 @@
1
- // reconciliation by the React definition. https://reactjs.org/docs/reconciliation.html
2
- import isEqual from "lodash/isEqual";
3
- import { BigNumber } from "bignumber.js";
4
- import { sameOp } from "./bridge/jsHelpers";
5
- import type {
6
- Operation,
7
- OperationRaw,
8
- Account,
9
- AccountLike,
10
- AccountRaw,
11
- SubAccount,
12
- SubAccountRaw,
13
- BalanceHistoryCache,
14
- } from "@ledgerhq/types-live";
15
- import {
16
- fromAccountRaw,
17
- fromOperationRaw,
18
- fromSubAccountRaw,
19
- fromBitcoinResourcesRaw,
20
- fromPolkadotResourcesRaw,
21
- fromCryptoOrgResourcesRaw,
22
- fromNFTRaw,
23
- toPolkadotResourcesRaw,
24
- toCryptoOrgResourcesRaw,
25
- } from "./account";
26
- import consoleWarnExpectToEqual from "./consoleWarnExpectToEqual";
27
- import { BitcoinAccount, BitcoinAccountRaw } from "./families/bitcoin/types";
28
- import {
29
- CryptoOrgAccount,
30
- CryptoOrgAccountRaw,
31
- } from "./families/crypto_org/types";
32
- import { PolkadotAccount, PolkadotAccountRaw } from "./families/polkadot/types";
33
- import { getAccountBridge } from "./bridge";
34
-
35
- // aim to build operations with the minimal diff & call to coin implementation possible
36
- export async function minimalOperationsBuilder<CO>(
37
- existingOperations: Operation[],
38
- coreOperations: CO[],
39
- buildOp: (coreOperation: CO) => Promise<Operation | null | undefined>, // if defined, allows to merge some consecutive operation that have same hash
40
- mergeSameHashOps?: (arg0: Operation[]) => Operation
41
- ): Promise<Operation[]> {
42
- if (existingOperations.length === 0 && coreOperations.length === 0) {
43
- return existingOperations;
44
- }
45
-
46
- const state: StepBuilderState = {
47
- finished: false,
48
- operations: [],
49
- existingOps: existingOperations || [],
50
- immutableOpCmpDoneOnce: false,
51
- };
52
- let operationWithSameHash: Operation[] = [];
53
-
54
- for (let i = coreOperations.length - 1; i >= 0; i--) {
55
- const coreOperation = coreOperations[i];
56
- const op = await buildOp(coreOperation);
57
- if (!op) continue; // some operation can be skipped by implementation
58
-
59
- let newOp;
60
-
61
- if (mergeSameHashOps) {
62
- if (
63
- operationWithSameHash.length === 0 ||
64
- operationWithSameHash[0].hash === op.hash
65
- ) {
66
- // we accumulate consecutive op of same hash in operationWithSameHash
67
- operationWithSameHash.push(op);
68
- continue;
69
- }
70
-
71
- // when the new op no longer matches the one accumulated,
72
- // we can "release" one operation resulting of merging the accumulation
73
- newOp = mergeSameHashOps(operationWithSameHash);
74
- operationWithSameHash = [op];
75
- } else {
76
- // mergeSameHashOps not used = normal iteration
77
- newOp = op;
78
- }
79
-
80
- stepBuilder(state, newOp, i);
81
-
82
- if (state.finished) {
83
- return state.operations;
84
- }
85
- }
86
-
87
- if (mergeSameHashOps && operationWithSameHash.length) {
88
- stepBuilder(state, mergeSameHashOps(operationWithSameHash), 0);
89
- }
90
-
91
- return state.operations;
92
- }
93
- export function minimalOperationsBuilderSync<CO>(
94
- existingOperations: Operation[],
95
- coreOperations: CO[],
96
- buildOp: (coreOperation: CO) => Operation | null | undefined
97
- ): Operation[] {
98
- if (existingOperations.length === 0 && coreOperations.length === 0) {
99
- return existingOperations;
100
- }
101
-
102
- const state: StepBuilderState = {
103
- finished: false,
104
- operations: [],
105
- existingOps: existingOperations || [],
106
- immutableOpCmpDoneOnce: false,
107
- };
108
-
109
- for (let i = coreOperations.length - 1; i >= 0; i--) {
110
- const coreOperation = coreOperations[i];
111
- const newOp = buildOp(coreOperation);
112
- if (!newOp) continue;
113
- stepBuilder(state, newOp, i);
114
-
115
- if (state.finished) {
116
- return state.operations;
117
- }
118
- }
119
-
120
- return state.operations;
121
- }
122
-
123
- const shouldRefreshBalanceHistoryCache = (
124
- balanceHistoryCache: BalanceHistoryCache,
125
- account: AccountLike
126
- ): boolean => {
127
- const oldH = account.balanceHistoryCache.HOUR;
128
- const newH = balanceHistoryCache.HOUR;
129
- if (oldH.latestDate !== newH.latestDate) return true; // date have changed, need to refresh the array
130
-
131
- if (oldH.balances.length !== newH.balances.length) return true; // balances length changes (new ops for instance)
132
-
133
- const length = newH.balances.length;
134
- if (length === 0) return false;
135
- if (oldH.balances[length - 1] !== newH.balances[length - 1]) return true; // latest datapoint changes.
136
-
137
- return false;
138
- };
139
-
140
- function shouldRefreshBitcoinResources(
141
- updatedRaw: AccountRaw,
142
- account: Account
143
- ) {
144
- if (!(updatedRaw as BitcoinAccountRaw).bitcoinResources) return false;
145
- if (!(account as BitcoinAccount).bitcoinResources) return true;
146
- if (updatedRaw.blockHeight !== account.blockHeight) return true;
147
- if (updatedRaw.operations.length !== account.operations.length) return true;
148
- const { bitcoinResources: existing } = account as BitcoinAccount;
149
- const { bitcoinResources: raw } = updatedRaw as BitcoinAccountRaw;
150
- // FIXME Need more typing in wallet-btc to have a meaningful comparison
151
- //if (!isEqual(raw.walletAccount?.xpub?.data, existing.walletAccount?.xpub?.data)) return true;
152
- if (raw.utxos.length !== existing.utxos.length) return true;
153
- return !isEqual(raw.utxos, existing.utxos);
154
- }
155
-
156
- export function patchAccount(
157
- account: Account,
158
- updatedRaw: AccountRaw
159
- ): Account {
160
- // id can change after a sync typically if changing the version or filling more info. in that case we consider all changes.
161
- if (account.id !== updatedRaw.id) return fromAccountRaw(updatedRaw);
162
- let subAccounts;
163
-
164
- if (updatedRaw.subAccounts) {
165
- const existingSubAccounts = account.subAccounts || [];
166
- let subAccountsChanged =
167
- updatedRaw.subAccounts.length !== existingSubAccounts.length;
168
- subAccounts = updatedRaw.subAccounts.map((ta) => {
169
- const existing = existingSubAccounts.find((t) => t.id === ta.id);
170
- const patched = patchSubAccount(existing, ta);
171
-
172
- if (patched !== existing) {
173
- subAccountsChanged = true;
174
- }
175
-
176
- return patched;
177
- });
178
-
179
- if (!subAccountsChanged) {
180
- subAccounts = existingSubAccounts;
181
- }
182
- }
183
-
184
- const operations = patchOperations(
185
- account.operations,
186
- updatedRaw.operations,
187
- updatedRaw.id,
188
- subAccounts
189
- );
190
- const pendingOperations = patchOperations(
191
- account.pendingOperations,
192
- updatedRaw.pendingOperations,
193
- updatedRaw.id,
194
- subAccounts
195
- );
196
- const next: Account = { ...account };
197
- let changed = false;
198
-
199
- if (subAccounts && account.subAccounts !== subAccounts) {
200
- next.subAccounts = subAccounts;
201
- changed = true;
202
- }
203
-
204
- if (account.operations !== operations) {
205
- next.operations = operations;
206
- changed = true;
207
- }
208
-
209
- if (
210
- account.operationsCount !== updatedRaw.operationsCount &&
211
- updatedRaw.operationsCount
212
- ) {
213
- next.operationsCount = updatedRaw.operationsCount;
214
- changed = true;
215
- }
216
-
217
- if (account.pendingOperations !== pendingOperations) {
218
- next.pendingOperations = pendingOperations;
219
- changed = true;
220
- }
221
-
222
- if (updatedRaw.balance !== account.balance.toString()) {
223
- next.balance = new BigNumber(updatedRaw.balance);
224
- changed = true;
225
- }
226
-
227
- if (updatedRaw.spendableBalance !== account.spendableBalance.toString()) {
228
- next.spendableBalance = new BigNumber(
229
- updatedRaw.spendableBalance || updatedRaw.balance
230
- );
231
- changed = true;
232
- }
233
-
234
- if (updatedRaw.lastSyncDate !== account.lastSyncDate.toISOString()) {
235
- next.lastSyncDate = new Date(updatedRaw.lastSyncDate);
236
- changed = true;
237
- }
238
-
239
- if (
240
- updatedRaw.creationDate &&
241
- updatedRaw.creationDate !== account.creationDate.toISOString()
242
- ) {
243
- next.creationDate = new Date(updatedRaw.creationDate);
244
- changed = true;
245
- }
246
-
247
- if (account.freshAddress !== updatedRaw.freshAddress) {
248
- next.freshAddress = updatedRaw.freshAddress;
249
- changed = true;
250
- }
251
-
252
- if (account.freshAddressPath !== updatedRaw.freshAddressPath) {
253
- next.freshAddressPath = updatedRaw.freshAddressPath;
254
- changed = true;
255
- }
256
-
257
- if (account.blockHeight !== updatedRaw.blockHeight) {
258
- next.blockHeight = updatedRaw.blockHeight;
259
- changed = true;
260
- }
261
-
262
- if (account.syncHash !== updatedRaw.syncHash) {
263
- next.syncHash = updatedRaw.syncHash;
264
- changed = true;
265
- }
266
-
267
- const { balanceHistoryCache } = updatedRaw;
268
-
269
- if (balanceHistoryCache) {
270
- if (shouldRefreshBalanceHistoryCache(balanceHistoryCache, account)) {
271
- next.balanceHistoryCache = balanceHistoryCache;
272
- changed = true;
273
- }
274
- }
275
-
276
- // TODO This will be reworked to belong in each coin family
277
- // Temporary logic to patch resources for each coin is:
278
- // - there is raw data to patch from
279
- // AND
280
- // - there is no current account data
281
- // OR
282
- // - current account data is different
283
- switch (account.currency.family) {
284
- case "bitcoin": {
285
- if (shouldRefreshBitcoinResources(updatedRaw, account)) {
286
- (next as BitcoinAccount).bitcoinResources = fromBitcoinResourcesRaw(
287
- (updatedRaw as BitcoinAccountRaw).bitcoinResources
288
- );
289
- }
290
- break;
291
- }
292
- case "polkadot": {
293
- const polkadotAcc = account as PolkadotAccount;
294
- const polkadotUpdatedRaw = updatedRaw as PolkadotAccountRaw;
295
- if (
296
- polkadotUpdatedRaw.polkadotResources &&
297
- (!polkadotAcc.polkadotResources ||
298
- !areSameResources(
299
- toPolkadotResourcesRaw(polkadotAcc.polkadotResources),
300
- polkadotUpdatedRaw.polkadotResources
301
- ))
302
- ) {
303
- (next as PolkadotAccount).polkadotResources = fromPolkadotResourcesRaw(
304
- polkadotUpdatedRaw.polkadotResources
305
- );
306
- changed = true;
307
- }
308
- break;
309
- }
310
- case "crypto_org": {
311
- const cryptoOrgAcc = account as CryptoOrgAccount;
312
- const cryptoOrgUpdatedRaw = updatedRaw as CryptoOrgAccountRaw;
313
- if (
314
- cryptoOrgUpdatedRaw.cryptoOrgResources &&
315
- (!cryptoOrgAcc.cryptoOrgResources ||
316
- !areSameResources(
317
- toCryptoOrgResourcesRaw(cryptoOrgAcc.cryptoOrgResources),
318
- cryptoOrgUpdatedRaw.cryptoOrgResources
319
- ))
320
- ) {
321
- (next as CryptoOrgAccount).cryptoOrgResources =
322
- fromCryptoOrgResourcesRaw(cryptoOrgUpdatedRaw.cryptoOrgResources);
323
- changed = true;
324
- }
325
- break;
326
- }
327
- default: {
328
- const bridge = getAccountBridge(account);
329
- const applyReconciliation = bridge.applyReconciliation;
330
- if (applyReconciliation) {
331
- changed = changed || applyReconciliation(account, updatedRaw, next);
332
- }
333
- }
334
- }
335
-
336
- const nfts = updatedRaw?.nfts?.map(fromNFTRaw);
337
- if (!updatedRaw.nfts && account.nfts) {
338
- delete next.nfts;
339
- changed = true;
340
- } else if (!isEqual(account.nfts, nfts)) {
341
- next.nfts = nfts;
342
- changed = true;
343
- }
344
-
345
- if (!changed) return account; // nothing changed at all
346
-
347
- return next;
348
- }
349
- export function patchSubAccount(
350
- account: SubAccount | null | undefined,
351
- updatedRaw: SubAccountRaw
352
- ): SubAccount {
353
- // id can change after a sync typically if changing the version or filling more info. in that case we consider all changes.
354
- if (
355
- !account ||
356
- account.id !== updatedRaw.id ||
357
- account.parentId !== updatedRaw.parentId
358
- ) {
359
- return fromSubAccountRaw(updatedRaw);
360
- }
361
-
362
- const operations = patchOperations(
363
- account.operations,
364
- updatedRaw.operations,
365
- updatedRaw.id,
366
- undefined
367
- );
368
- const pendingOperations = patchOperations(
369
- account.pendingOperations,
370
- updatedRaw.pendingOperations,
371
- updatedRaw.id,
372
- undefined
373
- );
374
- // $FlowFixMe destructing union type?
375
- const next: SubAccount = { ...account };
376
- let changed = false;
377
-
378
- if (
379
- account.operationsCount !== updatedRaw.operationsCount &&
380
- updatedRaw.operationsCount
381
- ) {
382
- next.operationsCount = updatedRaw.operationsCount;
383
- changed = true;
384
- }
385
-
386
- if (
387
- updatedRaw.creationDate &&
388
- updatedRaw.creationDate !== account.creationDate.toISOString()
389
- ) {
390
- next.creationDate = new Date(updatedRaw.creationDate);
391
- changed = true;
392
- }
393
-
394
- if (account.operations !== operations) {
395
- next.operations = operations;
396
- changed = true;
397
- }
398
-
399
- if (account.pendingOperations !== pendingOperations) {
400
- next.pendingOperations = pendingOperations;
401
- changed = true;
402
- }
403
-
404
- if (updatedRaw.balance !== account.balance.toString()) {
405
- next.balance = new BigNumber(updatedRaw.balance);
406
- changed = true;
407
- }
408
-
409
- if (
410
- next.type === "TokenAccount" &&
411
- account.type === "TokenAccount" &&
412
- updatedRaw.type === "TokenAccountRaw"
413
- ) {
414
- if (updatedRaw.spendableBalance !== account.spendableBalance.toString()) {
415
- next.spendableBalance = new BigNumber(
416
- updatedRaw.spendableBalance || updatedRaw.balance
417
- );
418
- changed = true;
419
- }
420
-
421
- if (updatedRaw.compoundBalance !== account.compoundBalance?.toString()) {
422
- next.compoundBalance = updatedRaw.compoundBalance
423
- ? new BigNumber(updatedRaw.compoundBalance)
424
- : undefined;
425
- changed = true;
426
- }
427
-
428
- if (
429
- updatedRaw.approvals &&
430
- !isEqual(updatedRaw.approvals, account.approvals)
431
- ) {
432
- next.approvals = updatedRaw.approvals;
433
- changed = true;
434
- }
435
- }
436
-
437
- const { balanceHistoryCache } = updatedRaw;
438
-
439
- if (balanceHistoryCache) {
440
- if (shouldRefreshBalanceHistoryCache(balanceHistoryCache, account)) {
441
- next.balanceHistoryCache = balanceHistoryCache;
442
- changed = true;
443
- }
444
- }
445
-
446
- if (!changed) return account; // nothing changed at all
447
-
448
- return next;
449
- }
450
- export function patchOperations(
451
- operations: Operation[],
452
- updated: OperationRaw[],
453
- accountId: string,
454
- subAccounts: SubAccount[] | null | undefined
455
- ): Operation[] {
456
- return minimalOperationsBuilderSync(
457
- operations,
458
- updated.slice(0).reverse(),
459
- (raw) => fromOperationRaw(raw, accountId, subAccounts)
460
- );
461
- }
462
-
463
- function findExistingOp(ops, op) {
464
- return ops.find((o) => o.id === op.id);
465
- }
466
-
467
- type StepBuilderState = {
468
- operations: Operation[];
469
- existingOps: Operation[];
470
- immutableOpCmpDoneOnce: boolean;
471
- finished: boolean;
472
- };
473
-
474
- // This is one step of the logic of minimalOperationsBuilder
475
- // it implements an heuristic to skip prematurely the operations loop
476
- // as soon as we find an existing operation that matches newOp
477
- function stepBuilder(state, newOp, i) {
478
- const existingOp = findExistingOp(state.existingOps, newOp);
479
-
480
- if (existingOp && !state.immutableOpCmpDoneOnce) {
481
- // an Operation is supposedly immutable.
482
- if (existingOp.blockHeight !== newOp.blockHeight) {
483
- // except for blockHeight that can temporarily be null
484
- state.operations.push(newOp);
485
- return;
486
- } else {
487
- state.immutableOpCmpDoneOnce = true;
488
-
489
- // we still check the first existing op we meet...
490
- if (!sameOp(existingOp, newOp)) {
491
- // this implement a failsafe in case an op changes (when we fix bugs)
492
- // trade-off: in such case, we assume all existingOps are to trash
493
- consoleWarnExpectToEqual(
494
- newOp,
495
- existingOp,
496
- "op mismatch. doing a full clear cache."
497
- );
498
- state.existingOps = [];
499
- state.operations.push(newOp);
500
- return;
501
- }
502
- }
503
- }
504
-
505
- if (existingOp) {
506
- // as soon as we've found a first matching op in old op list,
507
- const j = state.existingOps.indexOf(existingOp);
508
- const rest = state.existingOps.slice(j);
509
-
510
- if (rest.length > i + 1) {
511
- // if coin implementation happen to have less ops that what we had,
512
- // we actually need to continue because we don't know where hole will be,
513
- // but we can keep existingOp
514
- state.operations.push(existingOp);
515
- } else {
516
- // otherwise we stop the coin implementation iteration and continue with previous data
517
- // and we're done on the iteration
518
- if (state.operations.length === 0 && j === 0) {
519
- // special case: we preserve the operations array as much as possible
520
- state.operations = state.existingOps;
521
- } else {
522
- state.operations = state.operations.concat(rest);
523
- }
524
-
525
- state.finished = true;
526
- return;
527
- }
528
- } else {
529
- // otherwise it's a new op
530
- state.operations.push(newOp);
531
- }
532
- }
533
-
534
- export function areSameResources(a: any, b: any) {
535
- return isEqual(a, b);
536
- }