@ledgerhq/coin-framework 0.0.2

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 (471) hide show
  1. package/lib/account/accountId.d.ts +16 -0
  2. package/lib/account/accountId.d.ts.map +1 -0
  3. package/lib/account/accountId.js +85 -0
  4. package/lib/account/accountId.js.map +1 -0
  5. package/lib/account/accountName.d.ts +14 -0
  6. package/lib/account/accountName.d.ts.map +1 -0
  7. package/lib/account/accountName.js +17 -0
  8. package/lib/account/accountName.js.map +1 -0
  9. package/lib/account/addAccounts.d.ts +35 -0
  10. package/lib/account/addAccounts.d.ts.map +1 -0
  11. package/lib/account/addAccounts.js +209 -0
  12. package/lib/account/addAccounts.js.map +1 -0
  13. package/lib/account/balanceHistoryCache.d.ts +25 -0
  14. package/lib/account/balanceHistoryCache.d.ts.map +1 -0
  15. package/lib/account/balanceHistoryCache.js +115 -0
  16. package/lib/account/balanceHistoryCache.js.map +1 -0
  17. package/lib/account/groupOperations.d.ts +17 -0
  18. package/lib/account/groupOperations.d.ts.map +1 -0
  19. package/lib/account/groupOperations.js +127 -0
  20. package/lib/account/groupOperations.js.map +1 -0
  21. package/lib/account/helpers.d.ts +44 -0
  22. package/lib/account/helpers.d.ts.map +1 -0
  23. package/lib/account/helpers.js +333 -0
  24. package/lib/account/helpers.js.map +1 -0
  25. package/lib/account/helpers.test.d.ts +2 -0
  26. package/lib/account/helpers.test.d.ts.map +1 -0
  27. package/lib/account/helpers.test.js +366 -0
  28. package/lib/account/helpers.test.js.map +1 -0
  29. package/lib/account/index.d.ts +11 -0
  30. package/lib/account/index.d.ts.map +1 -0
  31. package/lib/account/index.js +27 -0
  32. package/lib/account/index.js.map +1 -0
  33. package/lib/account/ordering.d.ts +10 -0
  34. package/lib/account/ordering.d.ts.map +1 -0
  35. package/lib/account/ordering.js +110 -0
  36. package/lib/account/ordering.js.map +1 -0
  37. package/lib/account/pending.d.ts +33 -0
  38. package/lib/account/pending.d.ts.map +1 -0
  39. package/lib/account/pending.js +64 -0
  40. package/lib/account/pending.js.map +1 -0
  41. package/lib/account/serialization.d.ts +6 -0
  42. package/lib/account/serialization.d.ts.map +1 -0
  43. package/lib/account/serialization.js +118 -0
  44. package/lib/account/serialization.js.map +1 -0
  45. package/lib/account/support.d.ts +9 -0
  46. package/lib/account/support.d.ts.map +1 -0
  47. package/lib/account/support.js +72 -0
  48. package/lib/account/support.js.map +1 -0
  49. package/lib/account.test.d.ts +2 -0
  50. package/lib/account.test.d.ts.map +1 -0
  51. package/lib/account.test.js +257 -0
  52. package/lib/account.test.js.map +1 -0
  53. package/lib/bot/bot-test-context.d.ts +3 -0
  54. package/lib/bot/bot-test-context.d.ts.map +1 -0
  55. package/lib/bot/bot-test-context.js +26 -0
  56. package/lib/bot/bot-test-context.js.map +1 -0
  57. package/lib/bot/bot-test-context.test.d.ts +2 -0
  58. package/lib/bot/bot-test-context.test.d.ts.map +1 -0
  59. package/lib/bot/bot-test-context.test.js +41 -0
  60. package/lib/bot/bot-test-context.test.js.map +1 -0
  61. package/lib/bot/formatters.d.ts +2 -0
  62. package/lib/bot/formatters.d.ts.map +1 -0
  63. package/lib/bot/formatters.js +31 -0
  64. package/lib/bot/formatters.js.map +1 -0
  65. package/lib/bot/specs.d.ts +50 -0
  66. package/lib/bot/specs.d.ts.map +1 -0
  67. package/lib/bot/specs.js +204 -0
  68. package/lib/bot/specs.js.map +1 -0
  69. package/lib/bot/types.d.ts +178 -0
  70. package/lib/bot/types.d.ts.map +1 -0
  71. package/lib/bot/types.js +3 -0
  72. package/lib/bot/types.js.map +1 -0
  73. package/lib/bridge/getAddressWrapper.d.ts +6 -0
  74. package/lib/bridge/getAddressWrapper.d.ts.map +1 -0
  75. package/lib/bridge/getAddressWrapper.js +27 -0
  76. package/lib/bridge/getAddressWrapper.js.map +1 -0
  77. package/lib/bridge/jsHelpers.d.ts +63 -0
  78. package/lib/bridge/jsHelpers.d.ts.map +1 -0
  79. package/lib/bridge/jsHelpers.js +574 -0
  80. package/lib/bridge/jsHelpers.js.map +1 -0
  81. package/lib/cache.d.ts +10 -0
  82. package/lib/cache.d.ts.map +1 -0
  83. package/lib/cache.js +100 -0
  84. package/lib/cache.js.map +1 -0
  85. package/lib/cross.d.ts +42 -0
  86. package/lib/cross.d.ts.map +1 -0
  87. package/lib/cross.js +254 -0
  88. package/lib/cross.js.map +1 -0
  89. package/lib/cross.test.d.ts +2 -0
  90. package/lib/cross.test.d.ts.map +1 -0
  91. package/lib/cross.test.js +99 -0
  92. package/lib/cross.test.js.map +1 -0
  93. package/lib/currencies/BigNumberToLocaleString.d.ts +8 -0
  94. package/lib/currencies/BigNumberToLocaleString.d.ts.map +1 -0
  95. package/lib/currencies/BigNumberToLocaleString.js +65 -0
  96. package/lib/currencies/BigNumberToLocaleString.js.map +1 -0
  97. package/lib/currencies/BigNumberToLocaleString.test.d.ts +2 -0
  98. package/lib/currencies/BigNumberToLocaleString.test.d.ts.map +1 -0
  99. package/lib/currencies/BigNumberToLocaleString.test.js +108 -0
  100. package/lib/currencies/BigNumberToLocaleString.test.js.map +1 -0
  101. package/lib/currencies/CurrencyURIScheme.d.ts +13 -0
  102. package/lib/currencies/CurrencyURIScheme.d.ts.map +1 -0
  103. package/lib/currencies/CurrencyURIScheme.js +124 -0
  104. package/lib/currencies/CurrencyURIScheme.js.map +1 -0
  105. package/lib/currencies/chopCurrencyUnitDecimals.d.ts +3 -0
  106. package/lib/currencies/chopCurrencyUnitDecimals.d.ts.map +1 -0
  107. package/lib/currencies/chopCurrencyUnitDecimals.js +29 -0
  108. package/lib/currencies/chopCurrencyUnitDecimals.js.map +1 -0
  109. package/lib/currencies/formatCurrencyUnit.d.ts +33 -0
  110. package/lib/currencies/formatCurrencyUnit.d.ts.map +1 -0
  111. package/lib/currencies/formatCurrencyUnit.js +126 -0
  112. package/lib/currencies/formatCurrencyUnit.js.map +1 -0
  113. package/lib/currencies/formatShort.d.ts +8 -0
  114. package/lib/currencies/formatShort.d.ts.map +1 -0
  115. package/lib/currencies/formatShort.js +27 -0
  116. package/lib/currencies/formatShort.js.map +1 -0
  117. package/lib/currencies/index.d.ts +13 -0
  118. package/lib/currencies/index.d.ts.map +1 -0
  119. package/lib/currencies/index.js +65 -0
  120. package/lib/currencies/index.js.map +1 -0
  121. package/lib/currencies/localeUtility.d.ts +8 -0
  122. package/lib/currencies/localeUtility.d.ts.map +1 -0
  123. package/lib/currencies/localeUtility.js +49 -0
  124. package/lib/currencies/localeUtility.js.map +1 -0
  125. package/lib/currencies/parseCurrencyUnit.d.ts +4 -0
  126. package/lib/currencies/parseCurrencyUnit.d.ts.map +1 -0
  127. package/lib/currencies/parseCurrencyUnit.js +18 -0
  128. package/lib/currencies/parseCurrencyUnit.js.map +1 -0
  129. package/lib/currencies/sanitizeValueString.d.ts +6 -0
  130. package/lib/currencies/sanitizeValueString.d.ts.map +1 -0
  131. package/lib/currencies/sanitizeValueString.js +56 -0
  132. package/lib/currencies/sanitizeValueString.js.map +1 -0
  133. package/lib/currencies/support.d.ts +8 -0
  134. package/lib/currencies/support.d.ts.map +1 -0
  135. package/lib/currencies/support.js +101 -0
  136. package/lib/currencies/support.js.map +1 -0
  137. package/lib/currencies/valueFromUnit.d.ts +9 -0
  138. package/lib/currencies/valueFromUnit.d.ts.map +1 -0
  139. package/lib/currencies/valueFromUnit.js +14 -0
  140. package/lib/currencies/valueFromUnit.js.map +1 -0
  141. package/lib/derivation.d.ts +232 -0
  142. package/lib/derivation.d.ts.map +1 -0
  143. package/lib/derivation.js +501 -0
  144. package/lib/derivation.js.map +1 -0
  145. package/lib/env.d.ts +30 -0
  146. package/lib/env.d.ts.map +1 -0
  147. package/lib/env.js +773 -0
  148. package/lib/env.js.map +1 -0
  149. package/lib/errors.d.ts +7 -0
  150. package/lib/errors.d.ts.map +1 -0
  151. package/lib/errors.js +7 -0
  152. package/lib/errors.js.map +1 -0
  153. package/lib/errors.test.d.ts +2 -0
  154. package/lib/errors.test.d.ts.map +1 -0
  155. package/lib/errors.test.js +20 -0
  156. package/lib/errors.test.js.map +1 -0
  157. package/lib/mocks/account.d.ts +25 -0
  158. package/lib/mocks/account.d.ts.map +1 -0
  159. package/lib/mocks/account.js +368 -0
  160. package/lib/mocks/account.js.map +1 -0
  161. package/lib/mocks/fixtures/nfts.d.ts +27 -0
  162. package/lib/mocks/fixtures/nfts.d.ts.map +1 -0
  163. package/lib/mocks/fixtures/nfts.js +398 -0
  164. package/lib/mocks/fixtures/nfts.js.map +1 -0
  165. package/lib/mocks/fixtures/nfts.test.d.ts +2 -0
  166. package/lib/mocks/fixtures/nfts.test.d.ts.map +1 -0
  167. package/lib/mocks/fixtures/nfts.test.js +20 -0
  168. package/lib/mocks/fixtures/nfts.test.js.map +1 -0
  169. package/lib/mocks/helpers.d.ts +15 -0
  170. package/lib/mocks/helpers.d.ts.map +1 -0
  171. package/lib/mocks/helpers.js +32 -0
  172. package/lib/mocks/helpers.js.map +1 -0
  173. package/lib/network.d.ts +5 -0
  174. package/lib/network.d.ts.map +1 -0
  175. package/lib/network.js +125 -0
  176. package/lib/network.js.map +1 -0
  177. package/lib/nft/nftId.d.ts +8 -0
  178. package/lib/nft/nftId.d.ts.map +1 -0
  179. package/lib/nft/nftId.js +34 -0
  180. package/lib/nft/nftId.js.map +1 -0
  181. package/lib/operation.d.ts +24 -0
  182. package/lib/operation.d.ts.map +1 -0
  183. package/lib/operation.js +183 -0
  184. package/lib/operation.js.map +1 -0
  185. package/lib/promise.d.ts +21 -0
  186. package/lib/promise.d.ts.map +1 -0
  187. package/lib/promise.js +187 -0
  188. package/lib/promise.js.map +1 -0
  189. package/lib/promise.test.d.ts +2 -0
  190. package/lib/promise.test.d.ts.map +1 -0
  191. package/lib/promise.test.js +72 -0
  192. package/lib/promise.test.js.map +1 -0
  193. package/lib/rangeDates.d.ts +29 -0
  194. package/lib/rangeDates.d.ts.map +1 -0
  195. package/lib/rangeDates.js +94 -0
  196. package/lib/rangeDates.js.map +1 -0
  197. package/lib/rangeDates.test.d.ts +2 -0
  198. package/lib/rangeDates.test.d.ts.map +1 -0
  199. package/lib/rangeDates.test.js +51 -0
  200. package/lib/rangeDates.test.js.map +1 -0
  201. package/lib/test-helpers/staticTime.d.ts +2 -0
  202. package/lib/test-helpers/staticTime.d.ts.map +1 -0
  203. package/lib/test-helpers/staticTime.js +10 -0
  204. package/lib/test-helpers/staticTime.js.map +1 -0
  205. package/lib/transaction/common.d.ts +26 -0
  206. package/lib/transaction/common.d.ts.map +1 -0
  207. package/lib/transaction/common.js +123 -0
  208. package/lib/transaction/common.js.map +1 -0
  209. package/lib-es/account/accountId.d.ts +16 -0
  210. package/lib-es/account/accountId.d.ts.map +1 -0
  211. package/lib-es/account/accountId.js +74 -0
  212. package/lib-es/account/accountId.js.map +1 -0
  213. package/lib-es/account/accountName.d.ts +14 -0
  214. package/lib-es/account/accountName.d.ts.map +1 -0
  215. package/lib-es/account/accountName.js +12 -0
  216. package/lib-es/account/accountName.js.map +1 -0
  217. package/lib-es/account/addAccounts.d.ts +35 -0
  218. package/lib-es/account/addAccounts.d.ts.map +1 -0
  219. package/lib-es/account/addAccounts.js +200 -0
  220. package/lib-es/account/addAccounts.js.map +1 -0
  221. package/lib-es/account/balanceHistoryCache.d.ts +25 -0
  222. package/lib-es/account/balanceHistoryCache.d.ts.map +1 -0
  223. package/lib-es/account/balanceHistoryCache.js +109 -0
  224. package/lib-es/account/balanceHistoryCache.js.map +1 -0
  225. package/lib-es/account/groupOperations.d.ts +17 -0
  226. package/lib-es/account/groupOperations.d.ts.map +1 -0
  227. package/lib-es/account/groupOperations.js +122 -0
  228. package/lib-es/account/groupOperations.js.map +1 -0
  229. package/lib-es/account/helpers.d.ts +44 -0
  230. package/lib-es/account/helpers.d.ts.map +1 -0
  231. package/lib-es/account/helpers.js +303 -0
  232. package/lib-es/account/helpers.js.map +1 -0
  233. package/lib-es/account/helpers.test.d.ts +2 -0
  234. package/lib-es/account/helpers.test.d.ts.map +1 -0
  235. package/lib-es/account/helpers.test.js +361 -0
  236. package/lib-es/account/helpers.test.js.map +1 -0
  237. package/lib-es/account/index.d.ts +11 -0
  238. package/lib-es/account/index.d.ts.map +1 -0
  239. package/lib-es/account/index.js +11 -0
  240. package/lib-es/account/index.js.map +1 -0
  241. package/lib-es/account/ordering.d.ts +10 -0
  242. package/lib-es/account/ordering.d.ts.map +1 -0
  243. package/lib-es/account/ordering.js +103 -0
  244. package/lib-es/account/ordering.js.map +1 -0
  245. package/lib-es/account/pending.d.ts +33 -0
  246. package/lib-es/account/pending.d.ts.map +1 -0
  247. package/lib-es/account/pending.js +59 -0
  248. package/lib-es/account/pending.js.map +1 -0
  249. package/lib-es/account/serialization.d.ts +6 -0
  250. package/lib-es/account/serialization.d.ts.map +1 -0
  251. package/lib-es/account/serialization.js +112 -0
  252. package/lib-es/account/serialization.js.map +1 -0
  253. package/lib-es/account/support.d.ts +9 -0
  254. package/lib-es/account/support.d.ts.map +1 -0
  255. package/lib-es/account/support.js +64 -0
  256. package/lib-es/account/support.js.map +1 -0
  257. package/lib-es/account.test.d.ts +2 -0
  258. package/lib-es/account.test.d.ts.map +1 -0
  259. package/lib-es/account.test.js +252 -0
  260. package/lib-es/account.test.js.map +1 -0
  261. package/lib-es/bot/bot-test-context.d.ts +3 -0
  262. package/lib-es/bot/bot-test-context.d.ts.map +1 -0
  263. package/lib-es/bot/bot-test-context.js +21 -0
  264. package/lib-es/bot/bot-test-context.js.map +1 -0
  265. package/lib-es/bot/bot-test-context.test.d.ts +2 -0
  266. package/lib-es/bot/bot-test-context.test.d.ts.map +1 -0
  267. package/lib-es/bot/bot-test-context.test.js +39 -0
  268. package/lib-es/bot/bot-test-context.test.js.map +1 -0
  269. package/lib-es/bot/formatters.d.ts +2 -0
  270. package/lib-es/bot/formatters.d.ts.map +1 -0
  271. package/lib-es/bot/formatters.js +27 -0
  272. package/lib-es/bot/formatters.js.map +1 -0
  273. package/lib-es/bot/specs.d.ts +50 -0
  274. package/lib-es/bot/specs.d.ts.map +1 -0
  275. package/lib-es/bot/specs.js +193 -0
  276. package/lib-es/bot/specs.js.map +1 -0
  277. package/lib-es/bot/types.d.ts +178 -0
  278. package/lib-es/bot/types.d.ts.map +1 -0
  279. package/lib-es/bot/types.js +2 -0
  280. package/lib-es/bot/types.js.map +1 -0
  281. package/lib-es/bridge/getAddressWrapper.d.ts +6 -0
  282. package/lib-es/bridge/getAddressWrapper.d.ts.map +1 -0
  283. package/lib-es/bridge/getAddressWrapper.js +25 -0
  284. package/lib-es/bridge/getAddressWrapper.js.map +1 -0
  285. package/lib-es/bridge/jsHelpers.d.ts +63 -0
  286. package/lib-es/bridge/jsHelpers.d.ts.map +1 -0
  287. package/lib-es/bridge/jsHelpers.js +562 -0
  288. package/lib-es/bridge/jsHelpers.js.map +1 -0
  289. package/lib-es/cache.d.ts +10 -0
  290. package/lib-es/cache.d.ts.map +1 -0
  291. package/lib-es/cache.js +93 -0
  292. package/lib-es/cache.js.map +1 -0
  293. package/lib-es/cross.d.ts +42 -0
  294. package/lib-es/cross.d.ts.map +1 -0
  295. package/lib-es/cross.js +244 -0
  296. package/lib-es/cross.js.map +1 -0
  297. package/lib-es/cross.test.d.ts +2 -0
  298. package/lib-es/cross.test.d.ts.map +1 -0
  299. package/lib-es/cross.test.js +97 -0
  300. package/lib-es/cross.test.js.map +1 -0
  301. package/lib-es/currencies/BigNumberToLocaleString.d.ts +8 -0
  302. package/lib-es/currencies/BigNumberToLocaleString.d.ts.map +1 -0
  303. package/lib-es/currencies/BigNumberToLocaleString.js +61 -0
  304. package/lib-es/currencies/BigNumberToLocaleString.js.map +1 -0
  305. package/lib-es/currencies/BigNumberToLocaleString.test.d.ts +2 -0
  306. package/lib-es/currencies/BigNumberToLocaleString.test.d.ts.map +1 -0
  307. package/lib-es/currencies/BigNumberToLocaleString.test.js +106 -0
  308. package/lib-es/currencies/BigNumberToLocaleString.test.js.map +1 -0
  309. package/lib-es/currencies/CurrencyURIScheme.d.ts +13 -0
  310. package/lib-es/currencies/CurrencyURIScheme.d.ts.map +1 -0
  311. package/lib-es/currencies/CurrencyURIScheme.js +116 -0
  312. package/lib-es/currencies/CurrencyURIScheme.js.map +1 -0
  313. package/lib-es/currencies/chopCurrencyUnitDecimals.d.ts +3 -0
  314. package/lib-es/currencies/chopCurrencyUnitDecimals.d.ts.map +1 -0
  315. package/lib-es/currencies/chopCurrencyUnitDecimals.js +25 -0
  316. package/lib-es/currencies/chopCurrencyUnitDecimals.js.map +1 -0
  317. package/lib-es/currencies/formatCurrencyUnit.d.ts +33 -0
  318. package/lib-es/currencies/formatCurrencyUnit.d.ts.map +1 -0
  319. package/lib-es/currencies/formatCurrencyUnit.js +121 -0
  320. package/lib-es/currencies/formatCurrencyUnit.js.map +1 -0
  321. package/lib-es/currencies/formatShort.d.ts +8 -0
  322. package/lib-es/currencies/formatShort.d.ts.map +1 -0
  323. package/lib-es/currencies/formatShort.js +20 -0
  324. package/lib-es/currencies/formatShort.js.map +1 -0
  325. package/lib-es/currencies/index.d.ts +13 -0
  326. package/lib-es/currencies/index.d.ts.map +1 -0
  327. package/lib-es/currencies/index.js +16 -0
  328. package/lib-es/currencies/index.js.map +1 -0
  329. package/lib-es/currencies/localeUtility.d.ts +8 -0
  330. package/lib-es/currencies/localeUtility.d.ts.map +1 -0
  331. package/lib-es/currencies/localeUtility.js +43 -0
  332. package/lib-es/currencies/localeUtility.js.map +1 -0
  333. package/lib-es/currencies/parseCurrencyUnit.d.ts +4 -0
  334. package/lib-es/currencies/parseCurrencyUnit.d.ts.map +1 -0
  335. package/lib-es/currencies/parseCurrencyUnit.js +14 -0
  336. package/lib-es/currencies/parseCurrencyUnit.js.map +1 -0
  337. package/lib-es/currencies/sanitizeValueString.d.ts +6 -0
  338. package/lib-es/currencies/sanitizeValueString.d.ts.map +1 -0
  339. package/lib-es/currencies/sanitizeValueString.js +52 -0
  340. package/lib-es/currencies/sanitizeValueString.js.map +1 -0
  341. package/lib-es/currencies/support.d.ts +8 -0
  342. package/lib-es/currencies/support.d.ts.map +1 -0
  343. package/lib-es/currencies/support.js +92 -0
  344. package/lib-es/currencies/support.js.map +1 -0
  345. package/lib-es/currencies/valueFromUnit.d.ts +9 -0
  346. package/lib-es/currencies/valueFromUnit.d.ts.map +1 -0
  347. package/lib-es/currencies/valueFromUnit.js +10 -0
  348. package/lib-es/currencies/valueFromUnit.js.map +1 -0
  349. package/lib-es/derivation.d.ts +232 -0
  350. package/lib-es/derivation.d.ts.map +1 -0
  351. package/lib-es/derivation.js +473 -0
  352. package/lib-es/derivation.js.map +1 -0
  353. package/lib-es/env.d.ts +30 -0
  354. package/lib-es/env.d.ts.map +1 -0
  355. package/lib-es/env.js +758 -0
  356. package/lib-es/env.js.map +1 -0
  357. package/lib-es/errors.d.ts +7 -0
  358. package/lib-es/errors.d.ts.map +1 -0
  359. package/lib-es/errors.js +4 -0
  360. package/lib-es/errors.js.map +1 -0
  361. package/lib-es/errors.test.d.ts +2 -0
  362. package/lib-es/errors.test.d.ts.map +1 -0
  363. package/lib-es/errors.test.js +18 -0
  364. package/lib-es/errors.test.js.map +1 -0
  365. package/lib-es/mocks/account.d.ts +25 -0
  366. package/lib-es/mocks/account.d.ts.map +1 -0
  367. package/lib-es/mocks/account.js +358 -0
  368. package/lib-es/mocks/account.js.map +1 -0
  369. package/lib-es/mocks/fixtures/nfts.d.ts +27 -0
  370. package/lib-es/mocks/fixtures/nfts.d.ts.map +1 -0
  371. package/lib-es/mocks/fixtures/nfts.js +390 -0
  372. package/lib-es/mocks/fixtures/nfts.js.map +1 -0
  373. package/lib-es/mocks/fixtures/nfts.test.d.ts +2 -0
  374. package/lib-es/mocks/fixtures/nfts.test.d.ts.map +1 -0
  375. package/lib-es/mocks/fixtures/nfts.test.js +18 -0
  376. package/lib-es/mocks/fixtures/nfts.test.js.map +1 -0
  377. package/lib-es/mocks/helpers.d.ts +15 -0
  378. package/lib-es/mocks/helpers.d.ts.map +1 -0
  379. package/lib-es/mocks/helpers.js +26 -0
  380. package/lib-es/mocks/helpers.js.map +1 -0
  381. package/lib-es/network.d.ts +5 -0
  382. package/lib-es/network.d.ts.map +1 -0
  383. package/lib-es/network.js +118 -0
  384. package/lib-es/network.js.map +1 -0
  385. package/lib-es/nft/nftId.d.ts +8 -0
  386. package/lib-es/nft/nftId.d.ts.map +1 -0
  387. package/lib-es/nft/nftId.js +29 -0
  388. package/lib-es/nft/nftId.js.map +1 -0
  389. package/lib-es/operation.d.ts +24 -0
  390. package/lib-es/operation.d.ts.map +1 -0
  391. package/lib-es/operation.js +168 -0
  392. package/lib-es/operation.js.map +1 -0
  393. package/lib-es/promise.d.ts +21 -0
  394. package/lib-es/promise.d.ts.map +1 -0
  395. package/lib-es/promise.js +179 -0
  396. package/lib-es/promise.js.map +1 -0
  397. package/lib-es/promise.test.d.ts +2 -0
  398. package/lib-es/promise.test.d.ts.map +1 -0
  399. package/lib-es/promise.test.js +70 -0
  400. package/lib-es/promise.test.js.map +1 -0
  401. package/lib-es/rangeDates.d.ts +29 -0
  402. package/lib-es/rangeDates.d.ts.map +1 -0
  403. package/lib-es/rangeDates.js +84 -0
  404. package/lib-es/rangeDates.js.map +1 -0
  405. package/lib-es/rangeDates.test.d.ts +2 -0
  406. package/lib-es/rangeDates.test.d.ts.map +1 -0
  407. package/lib-es/rangeDates.test.js +49 -0
  408. package/lib-es/rangeDates.test.js.map +1 -0
  409. package/lib-es/test-helpers/staticTime.d.ts +2 -0
  410. package/lib-es/test-helpers/staticTime.d.ts.map +1 -0
  411. package/lib-es/test-helpers/staticTime.js +5 -0
  412. package/lib-es/test-helpers/staticTime.js.map +1 -0
  413. package/lib-es/transaction/common.d.ts +26 -0
  414. package/lib-es/transaction/common.d.ts.map +1 -0
  415. package/lib-es/transaction/common.js +115 -0
  416. package/lib-es/transaction/common.js.map +1 -0
  417. package/package.json +113 -0
  418. package/src/__snapshots__/account.test.ts.snap +2065 -0
  419. package/src/__snapshots__/cross.test.ts.snap +57 -0
  420. package/src/account/accountId.ts +93 -0
  421. package/src/account/accountName.ts +25 -0
  422. package/src/account/addAccounts.ts +236 -0
  423. package/src/account/balanceHistoryCache.ts +146 -0
  424. package/src/account/groupOperations.ts +164 -0
  425. package/src/account/helpers.test.ts +441 -0
  426. package/src/account/helpers.ts +380 -0
  427. package/src/account/index.ts +10 -0
  428. package/src/account/ordering.ts +109 -0
  429. package/src/account/pending.ts +66 -0
  430. package/src/account/serialization.ts +189 -0
  431. package/src/account/support.ts +96 -0
  432. package/src/account.test.ts +237 -0
  433. package/src/bot/bot-test-context.test.ts +37 -0
  434. package/src/bot/bot-test-context.ts +24 -0
  435. package/src/bot/formatters.ts +22 -0
  436. package/src/bot/specs.ts +275 -0
  437. package/src/bot/types.ts +224 -0
  438. package/src/bridge/getAddressWrapper.ts +40 -0
  439. package/src/bridge/jsHelpers.ts +645 -0
  440. package/src/cache.ts +65 -0
  441. package/src/cross.test.ts +112 -0
  442. package/src/cross.ts +366 -0
  443. package/src/currencies/BigNumberToLocaleString.test.ts +155 -0
  444. package/src/currencies/BigNumberToLocaleString.ts +80 -0
  445. package/src/currencies/CurrencyURIScheme.ts +114 -0
  446. package/src/currencies/chopCurrencyUnitDecimals.ts +34 -0
  447. package/src/currencies/formatCurrencyUnit.ts +167 -0
  448. package/src/currencies/formatShort.ts +24 -0
  449. package/src/currencies/index.ts +78 -0
  450. package/src/currencies/localeUtility.ts +50 -0
  451. package/src/currencies/parseCurrencyUnit.ts +16 -0
  452. package/src/currencies/sanitizeValueString.ts +58 -0
  453. package/src/currencies/support.ts +107 -0
  454. package/src/currencies/valueFromUnit.ts +10 -0
  455. package/src/derivation.ts +595 -0
  456. package/src/env.ts +780 -0
  457. package/src/errors.test.ts +21 -0
  458. package/src/errors.ts +9 -0
  459. package/src/mocks/account.ts +476 -0
  460. package/src/mocks/fixtures/nfts.test.ts +25 -0
  461. package/src/mocks/fixtures/nfts.ts +432 -0
  462. package/src/mocks/helpers.ts +38 -0
  463. package/src/network.ts +135 -0
  464. package/src/nft/nftId.ts +26 -0
  465. package/src/operation.ts +212 -0
  466. package/src/promise.test.ts +20 -0
  467. package/src/promise.ts +101 -0
  468. package/src/rangeDates.test.ts +66 -0
  469. package/src/rangeDates.ts +96 -0
  470. package/src/test-helpers/staticTime.ts +4 -0
  471. package/src/transaction/common.ts +157 -0
@@ -0,0 +1,57 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`encode/decode 1`] = `
4
+ Object {
5
+ "accounts": Array [
6
+ Object {
7
+ "balance": "12967737976259358331",
8
+ "currencyId": "ethereum",
9
+ "derivationMode": "",
10
+ "freshAddress": "0xF882CE5EF3E667AAFF592AE27793E0CF40356D1E",
11
+ "id": "mock:1:ethereum:export_0:",
12
+ "index": 1,
13
+ "name": "uuwygRL0AmMrs9riAlv1",
14
+ "seedIdentifier": "mock",
15
+ },
16
+ Object {
17
+ "balance": "2614205810671014878",
18
+ "currencyId": "ethereum",
19
+ "derivationMode": "",
20
+ "freshAddress": "0x22FF1149E5C7585F99647784C2D2A8D6415979F3",
21
+ "id": "mock:1:ethereum:export_1:",
22
+ "index": 1,
23
+ "name": "4GEb2iRQXlUt6X1jviKzSz4umwWj",
24
+ "seedIdentifier": "mock",
25
+ },
26
+ Object {
27
+ "balance": "288566332368580450524",
28
+ "currencyId": "ethereum_classic",
29
+ "derivationMode": "",
30
+ "freshAddress": "0x96B35855C525CA59FEEC9F1F88B6A59645C0034D",
31
+ "id": "mock:0:ethereum_classic:export_2:",
32
+ "index": 1,
33
+ "name": "tzPbPqv6XS7BabfsuJff",
34
+ "seedIdentifier": "mock",
35
+ },
36
+ ],
37
+ "meta": Object {
38
+ "exporterName": "test",
39
+ "exporterVersion": "0.0.0",
40
+ },
41
+ "settings": Object {
42
+ "blacklistedTokenIds": Array [
43
+ "tokenid1",
44
+ "tokenid2",
45
+ ],
46
+ "counterValue": "USD",
47
+ "currenciesSettings": Object {
48
+ "bitcoin": Object {
49
+ "confirmationsNb": 3,
50
+ },
51
+ },
52
+ "pairExchanges": Object {
53
+ "BTC_USD": "KRAKEN",
54
+ },
55
+ },
56
+ }
57
+ `;
@@ -0,0 +1,93 @@
1
+ import memoize from "lodash/memoize";
2
+ import invariant from "invariant";
3
+ import { asDerivationMode } from "../derivation";
4
+ import { getCryptoCurrencyById, findTokenById } from "../currencies";
5
+ import { findTokenByAddressInCurrency } from "@ledgerhq/cryptoassets";
6
+ import type { AccountIdParams, DerivationMode } from "@ledgerhq/types-live";
7
+ import type {
8
+ CryptoCurrency,
9
+ TokenCurrency,
10
+ } from "@ledgerhq/types-cryptoassets";
11
+
12
+ function ensureNoColon(value: string, ctx: string): string {
13
+ invariant(
14
+ !value.includes(":"),
15
+ "AccountId '%s' component must not use colon",
16
+ ctx
17
+ );
18
+ return value;
19
+ }
20
+
21
+ export function encodeAccountId({
22
+ type,
23
+ version,
24
+ currencyId,
25
+ xpubOrAddress,
26
+ derivationMode,
27
+ }: AccountIdParams): string {
28
+ return `${ensureNoColon(type, "type")}:${ensureNoColon(
29
+ version,
30
+ "version"
31
+ )}:${ensureNoColon(currencyId, "currencyId")}:${ensureNoColon(
32
+ xpubOrAddress,
33
+ "xpubOrAddress"
34
+ )}:${ensureNoColon(derivationMode, "derivationMode")}`;
35
+ }
36
+ export function encodeTokenAccountId(
37
+ accountId: string,
38
+ token: TokenCurrency
39
+ ): string {
40
+ return accountId + "+" + encodeURIComponent(token.id);
41
+ }
42
+ export function decodeTokenAccountId(id: string): {
43
+ accountId: string;
44
+ token: TokenCurrency | null | undefined;
45
+ } {
46
+ const [accountId, tokenId] = id.split("+");
47
+ const decodedTokenId = decodeURIComponent(tokenId);
48
+ let token = findTokenById(decodedTokenId);
49
+ if (!token) {
50
+ const { currencyId } = decodeAccountId(accountId);
51
+ token = findTokenByAddressInCurrency(decodedTokenId, currencyId);
52
+ }
53
+ return {
54
+ accountId,
55
+ token,
56
+ };
57
+ }
58
+ export function decodeAccountId(accountId: string): AccountIdParams {
59
+ invariant(typeof accountId === "string", "accountId is not a string");
60
+ const splitted = accountId.split(":");
61
+ invariant(splitted.length === 5, "invalid size for accountId");
62
+ const [type, version, currencyId, xpubOrAddress, derivationMode] = splitted;
63
+ return {
64
+ type,
65
+ version,
66
+ currencyId,
67
+ xpubOrAddress,
68
+ derivationMode: asDerivationMode(derivationMode),
69
+ };
70
+ }
71
+ // you can pass account because type is shape of Account
72
+ // wallet name is a lib-core concept that usually identify a pool of accounts with the same (seed, cointype, derivation scheme) config.
73
+ export function getWalletName({
74
+ seedIdentifier,
75
+ derivationMode,
76
+ currency,
77
+ }: {
78
+ seedIdentifier: string;
79
+ derivationMode: DerivationMode;
80
+ currency: CryptoCurrency;
81
+ }): string {
82
+ return `${seedIdentifier}_${currency.id}_${derivationMode}`;
83
+ }
84
+ export const inferFamilyFromAccountId: (
85
+ accountId: string
86
+ ) => string | null | undefined = memoize((accountId) => {
87
+ try {
88
+ const { currencyId } = decodeAccountId(accountId);
89
+ return getCryptoCurrencyById(currencyId).family;
90
+ } catch (e) {
91
+ return null;
92
+ }
93
+ });
@@ -0,0 +1,25 @@
1
+ import { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
2
+ import { Account, DerivationMode } from "@ledgerhq/types-live";
3
+
4
+ const MAX_ACCOUNT_NAME_SIZE = 50;
5
+ export const getAccountPlaceholderName = ({
6
+ currency,
7
+ index,
8
+ }: {
9
+ currency: CryptoCurrency;
10
+ index: number;
11
+ derivationMode: DerivationMode;
12
+ }): string => {
13
+ return `${currency.name} ${index + 1}`;
14
+ };
15
+ export const getNewAccountPlaceholderName = getAccountPlaceholderName; // same naming
16
+
17
+ export const validateNameEdition = (
18
+ account: Account,
19
+ name?: string | null | undefined
20
+ ): string =>
21
+ (
22
+ (name || account.name || "").replace(/\s+/g, " ").trim() ||
23
+ account.name ||
24
+ getAccountPlaceholderName(account)
25
+ ).slice(0, MAX_ACCOUNT_NAME_SIZE);
@@ -0,0 +1,236 @@
1
+ import type { Account, DerivationMode } from "@ledgerhq/types-live";
2
+ import uniqWith from "lodash/uniqWith";
3
+ import { validateNameEdition } from "./accountName";
4
+ import { clearAccount } from "./helpers";
5
+ import { findAccountMigration } from "./support";
6
+ // Reference all possible support link
7
+ // For now we have only one, but we can union type in future
8
+ // We can map .id to a wording.
9
+ export type AddAccountSupportLink = {
10
+ id: "segwit_or_native_segwit";
11
+ url: string;
12
+ };
13
+ export type AddAccountsSection = {
14
+ id: string;
15
+ selectable: boolean;
16
+ defaultSelected: boolean;
17
+ data: Account[];
18
+ supportLink?: AddAccountSupportLink;
19
+ };
20
+ export type AddAccountsSectionResult = {
21
+ sections: AddAccountsSection[];
22
+ alreadyEmptyAccount: Account | null | undefined;
23
+ };
24
+
25
+ function sameAccountIdentity(a: Account, b: Account) {
26
+ return (
27
+ a.id === b.id ||
28
+ (a.freshAddress
29
+ ? a.currency === b.currency && a.freshAddress === b.freshAddress
30
+ : false) ||
31
+ (a.xpub ? a.currency === b.currency && a.xpub === b.xpub : false)
32
+ );
33
+ }
34
+
35
+ /**
36
+ * logic that for the Add Accounts sectioned list
37
+ */
38
+ export function groupAddAccounts(
39
+ existingAccounts: Account[],
40
+ scannedAccounts: Account[],
41
+ context: {
42
+ scanning: boolean;
43
+ preferredNewAccountSchemes?: DerivationMode[];
44
+ }
45
+ ): AddAccountsSectionResult {
46
+ const importedAccounts: Account[] = [];
47
+ const importableAccounts: Account[] = [];
48
+ const creatableAccounts: Account[] = [];
49
+ const migrateAccounts: Account[] = [];
50
+ let alreadyEmptyAccount: Account | null = null;
51
+ const scannedAccountsWithoutMigrate = [...scannedAccounts];
52
+ existingAccounts.forEach((existingAccount) => {
53
+ const migrate = findAccountMigration(
54
+ existingAccount,
55
+ scannedAccountsWithoutMigrate
56
+ );
57
+
58
+ if (migrate) {
59
+ migrateAccounts.push({ ...migrate, name: existingAccount.name });
60
+ const index = scannedAccountsWithoutMigrate.indexOf(migrate);
61
+
62
+ if (index !== -1) {
63
+ scannedAccountsWithoutMigrate[index] =
64
+ scannedAccountsWithoutMigrate[
65
+ scannedAccountsWithoutMigrate.length - 1
66
+ ];
67
+ scannedAccountsWithoutMigrate.pop();
68
+ }
69
+ }
70
+ });
71
+ scannedAccountsWithoutMigrate.forEach((acc) => {
72
+ const existingAccount = existingAccounts.find((a) =>
73
+ sameAccountIdentity(a, acc)
74
+ );
75
+
76
+ if (existingAccount) {
77
+ if (!acc.used && !alreadyEmptyAccount) {
78
+ alreadyEmptyAccount = existingAccount;
79
+ }
80
+
81
+ importedAccounts.push(existingAccount);
82
+ } else if (!acc.used) {
83
+ creatableAccounts.push(acc);
84
+ } else {
85
+ importableAccounts.push(acc);
86
+ }
87
+ });
88
+ const sections: Array<{
89
+ id: string;
90
+ selectable: boolean;
91
+ defaultSelected: boolean;
92
+ data: any;
93
+ }> = [];
94
+
95
+ if (importableAccounts.length) {
96
+ sections.push({
97
+ id: "importable",
98
+ selectable: true,
99
+ defaultSelected: true,
100
+ data: importableAccounts,
101
+ });
102
+ }
103
+
104
+ if (migrateAccounts.length) {
105
+ sections.push({
106
+ id: "migrate",
107
+ selectable: true,
108
+ defaultSelected: true,
109
+ data: migrateAccounts,
110
+ });
111
+ }
112
+
113
+ if (!context.scanning || creatableAccounts.length) {
114
+ // NB if data is empty, need to do custom placeholder that depends on alreadyEmptyAccount
115
+ sections.push({
116
+ id: "creatable",
117
+ selectable: true,
118
+ defaultSelected: false,
119
+ data:
120
+ context.preferredNewAccountSchemes &&
121
+ context.preferredNewAccountSchemes.length > 0
122
+ ? creatableAccounts.filter(
123
+ (a) =>
124
+ context.preferredNewAccountSchemes &&
125
+ // Note: we could use a simple preferredNewAccountScheme param
126
+ a.derivationMode === context.preferredNewAccountSchemes[0]
127
+ )
128
+ : creatableAccounts,
129
+ });
130
+ }
131
+
132
+ if (importedAccounts.length) {
133
+ sections.push({
134
+ id: "imported",
135
+ selectable: false,
136
+ defaultSelected: false,
137
+ data: importedAccounts,
138
+ });
139
+ }
140
+
141
+ return {
142
+ sections,
143
+ alreadyEmptyAccount,
144
+ };
145
+ }
146
+ export type AddAccountsProps = {
147
+ existingAccounts: Account[];
148
+ scannedAccounts: Account[];
149
+ selectedIds: string[];
150
+ renamings: Record<string, string>;
151
+ };
152
+
153
+ const preserveUserData = (update: Account, existing: Account): Account => ({
154
+ ...update,
155
+ name: existing.name,
156
+ });
157
+
158
+ export function migrateAccounts({
159
+ scannedAccounts,
160
+ existingAccounts,
161
+ }: {
162
+ scannedAccounts: Account[];
163
+ existingAccounts: Account[];
164
+ }): Account[] {
165
+ // subset of scannedAccounts that exists to not add them but just do migration part
166
+ const subset: Account[] = [];
167
+ existingAccounts.forEach((existing) => {
168
+ const migration = findAccountMigration(existing, scannedAccounts);
169
+
170
+ if (migration && !subset.some((a) => a.id === migration.id)) {
171
+ subset.push(migration);
172
+ }
173
+ });
174
+ return addAccounts({
175
+ scannedAccounts: subset,
176
+ existingAccounts,
177
+ selectedIds: subset.map((a) => a.id),
178
+ renamings: {},
179
+ });
180
+ }
181
+ export function addAccounts({
182
+ scannedAccounts,
183
+ existingAccounts,
184
+ selectedIds,
185
+ renamings,
186
+ }: AddAccountsProps): Account[] {
187
+ const newAccounts: Account[] = [];
188
+ // scanned accounts that was selected
189
+ const selected = scannedAccounts.filter((a) => selectedIds.includes(a.id));
190
+ // we'll search for potential migration and append to newAccounts
191
+ existingAccounts.forEach((existing) => {
192
+ const migration = findAccountMigration(existing, selected);
193
+
194
+ if (migration) {
195
+ if (!newAccounts.some((a) => a.id === migration.id)) {
196
+ newAccounts.push(preserveUserData(migration, existing));
197
+ const index = selected.indexOf(migration);
198
+
199
+ if (index !== -1) {
200
+ selected[index] = selected[selected.length - 1];
201
+ selected.pop();
202
+ }
203
+ }
204
+ } else {
205
+ // we'll try to find an updated version of the existing account as opportunity to refresh the operations
206
+ const update = selected.find((a) => sameAccountIdentity(a, existing));
207
+
208
+ if (update) {
209
+ // preserve existing name
210
+ let acc = preserveUserData(update, existing);
211
+
212
+ if (update.id !== existing.id) {
213
+ acc = clearAccount(acc);
214
+ }
215
+
216
+ newAccounts.push(acc);
217
+ } else {
218
+ newAccounts.push(existing);
219
+ }
220
+ }
221
+ });
222
+ // append the new accounts
223
+ selected.forEach((acc) => {
224
+ const alreadyThere = newAccounts.find((a) => sameAccountIdentity(a, acc));
225
+
226
+ if (!alreadyThere) {
227
+ newAccounts.push(acc);
228
+ }
229
+ });
230
+ // dedup and apply the renaming
231
+ return uniqWith(newAccounts, sameAccountIdentity).map((a) => {
232
+ const name = validateNameEdition(a, renamings[a.id]);
233
+ if (name) return { ...a, name };
234
+ return a;
235
+ });
236
+ }
@@ -0,0 +1,146 @@
1
+ import type {
2
+ GranularityId,
3
+ BalanceHistoryCache,
4
+ BalanceHistoryDataCache,
5
+ AccountLike,
6
+ Account,
7
+ SubAccount,
8
+ } from "@ledgerhq/types-live";
9
+ import { getOperationAmountNumberWithInternals } from "../operation";
10
+ import { granularities } from "../rangeDates";
11
+ export const emptyHistoryCache = {
12
+ HOUR: {
13
+ latestDate: null,
14
+ balances: [],
15
+ },
16
+ DAY: {
17
+ latestDate: null,
18
+ balances: [],
19
+ },
20
+ WEEK: {
21
+ latestDate: null,
22
+ balances: [],
23
+ },
24
+ };
25
+
26
+ function generateHistoryFromOperationsG(
27
+ account: AccountLike,
28
+ g: GranularityId, // partial=true allows a faster implementation that only recompose the last part of the history
29
+ // to only use when we do not recalculate the history but we just want to access it
30
+ partial = false
31
+ ): BalanceHistoryDataCache {
32
+ const { increment, startOf, maxDatapoints } = granularities[g];
33
+ const latestDate = startOf(new Date()).getTime();
34
+ let balances: number[] = [];
35
+ let { balance } = account;
36
+ const operationsLength = account.operations.length;
37
+ let date = latestDate;
38
+ const reference = account.balanceHistoryCache[g];
39
+
40
+ for (let i = 0; i < operationsLength; ) {
41
+ if (
42
+ (partial && reference.latestDate && date < reference.latestDate) ||
43
+ balances.length > maxDatapoints
44
+ ) {
45
+ break;
46
+ }
47
+
48
+ // accumulate operations after time t
49
+ while (
50
+ i < operationsLength &&
51
+ // FIXME: added valueOf here to make typescript happy
52
+ account.operations[i].date.valueOf() > date
53
+ ) {
54
+ balance = balance.minus(
55
+ getOperationAmountNumberWithInternals(account.operations[i])
56
+ );
57
+ i++;
58
+ }
59
+
60
+ balances.unshift(Math.max(balance.toNumber(), 0));
61
+ date -= increment;
62
+ }
63
+
64
+ if (partial) {
65
+ balances = reference.balances.concat(balances);
66
+ }
67
+
68
+ return {
69
+ balances,
70
+ latestDate,
71
+ };
72
+ }
73
+
74
+ export function generateHistoryFromOperations(
75
+ account: AccountLike
76
+ ): BalanceHistoryCache {
77
+ return {
78
+ HOUR: generateHistoryFromOperationsG(account, "HOUR"),
79
+ DAY: generateHistoryFromOperationsG(account, "DAY"),
80
+ WEEK: generateHistoryFromOperationsG(account, "WEEK"),
81
+ };
82
+ }
83
+
84
+ /**
85
+ * get the current balance history of the account. if possible from the cache.
86
+ */
87
+ export function getAccountHistoryBalances(
88
+ account: AccountLike,
89
+ g: GranularityId
90
+ ): number[] {
91
+ const { balances, latestDate } = account.balanceHistoryCache[g];
92
+ const { startOf } = granularities[g];
93
+ const now = startOf(new Date()).getTime();
94
+
95
+ if (latestDate && latestDate === now) {
96
+ return balances;
97
+ }
98
+
99
+ // account cache was not up to date. recalculating on the fly
100
+ return generateHistoryFromOperationsG(account, g, true).balances;
101
+ }
102
+
103
+ /**
104
+ * utility used at the end of an account synchronisation to recalculate the balance history if necessary
105
+ */
106
+ export function recalculateAccountBalanceHistories(
107
+ res: Account,
108
+ prev: Account
109
+ ): Account {
110
+ // recalculate balance history cache
111
+ if (prev.balanceHistoryCache === res.balanceHistoryCache) {
112
+ // we only regenerate if it was not overriden by the implemenetation.
113
+ res = { ...res, balanceHistoryCache: generateHistoryFromOperations(res) };
114
+ }
115
+
116
+ const prevSubAccounts = prev.subAccounts;
117
+ const nextSubAccounts = res.subAccounts;
118
+
119
+ if (
120
+ nextSubAccounts &&
121
+ prevSubAccounts &&
122
+ prevSubAccounts !== nextSubAccounts
123
+ ) {
124
+ // when sub accounts changes, we need to recalculate
125
+ res.subAccounts = nextSubAccounts.map(
126
+ (subAccount: SubAccount): SubAccount => {
127
+ const old = prevSubAccounts.find((a) => a.id === subAccount.id);
128
+
129
+ if (
130
+ !old ||
131
+ old.balanceHistoryCache === subAccount.balanceHistoryCache
132
+ ) {
133
+ // we only regenerate if it was not overriden by the implemenetation.
134
+ subAccount = {
135
+ ...subAccount,
136
+ balanceHistoryCache: generateHistoryFromOperations(subAccount),
137
+ };
138
+ }
139
+
140
+ return subAccount;
141
+ }
142
+ );
143
+ }
144
+
145
+ return res;
146
+ }