@ledgerhq/coin-framework 0.3.6 → 0.3.7-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 (428) hide show
  1. package/.eslintrc.js +8 -46
  2. package/.turbo/turbo-build.log +1 -1
  3. package/CHANGELOG.md +27 -1
  4. package/lib/account/accountId.d.ts +16 -0
  5. package/lib/account/accountId.d.ts.map +1 -0
  6. package/lib/account/accountId.js +67 -0
  7. package/lib/account/accountId.js.map +1 -0
  8. package/lib/account/accountName.d.ts +14 -0
  9. package/lib/account/accountName.d.ts.map +1 -0
  10. package/lib/account/accountName.js +14 -0
  11. package/lib/account/accountName.js.map +1 -0
  12. package/lib/account/balanceHistoryCache.d.ts +28 -0
  13. package/lib/account/balanceHistoryCache.d.ts.map +1 -0
  14. package/lib/account/balanceHistoryCache.js +132 -0
  15. package/lib/account/balanceHistoryCache.js.map +1 -0
  16. package/lib/account/balanceHistoryCache.test.d.ts +2 -0
  17. package/lib/account/balanceHistoryCache.test.d.ts.map +1 -0
  18. package/lib/account/balanceHistoryCache.test.js +21 -0
  19. package/lib/account/balanceHistoryCache.test.js.map +1 -0
  20. package/lib/account/groupOperations.d.ts +17 -0
  21. package/lib/account/groupOperations.d.ts.map +1 -0
  22. package/lib/account/groupOperations.js +122 -0
  23. package/lib/account/groupOperations.js.map +1 -0
  24. package/lib/account/helpers.d.ts +46 -0
  25. package/lib/account/helpers.d.ts.map +1 -0
  26. package/lib/account/helpers.js +296 -0
  27. package/lib/account/helpers.js.map +1 -0
  28. package/lib/account/helpers.test.d.ts +2 -0
  29. package/lib/account/helpers.test.d.ts.map +1 -0
  30. package/lib/account/helpers.test.js +409 -0
  31. package/lib/account/helpers.test.js.map +1 -0
  32. package/lib/account/index.d.ts +10 -0
  33. package/lib/account/index.d.ts.map +1 -0
  34. package/lib/account/index.js +26 -0
  35. package/lib/account/index.js.map +1 -0
  36. package/lib/account/ordering.d.ts +10 -0
  37. package/lib/account/ordering.d.ts.map +1 -0
  38. package/lib/account/ordering.js +80 -0
  39. package/lib/account/ordering.js.map +1 -0
  40. package/lib/account/pending.d.ts +4 -0
  41. package/lib/account/pending.d.ts.map +1 -0
  42. package/lib/account/pending.js +53 -0
  43. package/lib/account/pending.js.map +1 -0
  44. package/lib/account/serialization.d.ts +6 -0
  45. package/lib/account/serialization.d.ts.map +1 -0
  46. package/lib/account/serialization.js +108 -0
  47. package/lib/account/serialization.js.map +1 -0
  48. package/lib/account/support.d.ts +7 -0
  49. package/lib/account/support.d.ts.map +1 -0
  50. package/lib/account/support.js +45 -0
  51. package/lib/account/support.js.map +1 -0
  52. package/lib/account.test.d.ts +2 -0
  53. package/lib/account.test.d.ts.map +1 -0
  54. package/lib/account.test.js +180 -0
  55. package/lib/account.test.js.map +1 -0
  56. package/lib/bot/bot-test-context.d.ts +3 -0
  57. package/lib/bot/bot-test-context.d.ts.map +1 -0
  58. package/lib/bot/bot-test-context.js +26 -0
  59. package/lib/bot/bot-test-context.js.map +1 -0
  60. package/lib/bot/bot-test-context.test.d.ts +2 -0
  61. package/lib/bot/bot-test-context.test.d.ts.map +1 -0
  62. package/lib/bot/bot-test-context.test.js +41 -0
  63. package/lib/bot/bot-test-context.test.js.map +1 -0
  64. package/lib/bot/formatters.d.ts +2 -0
  65. package/lib/bot/formatters.d.ts.map +1 -0
  66. package/lib/bot/formatters.js +30 -0
  67. package/lib/bot/formatters.js.map +1 -0
  68. package/lib/bot/specs.d.ts +50 -0
  69. package/lib/bot/specs.d.ts.map +1 -0
  70. package/lib/bot/specs.js +181 -0
  71. package/lib/bot/specs.js.map +1 -0
  72. package/lib/bot/types.d.ts +177 -0
  73. package/lib/bot/types.d.ts.map +1 -0
  74. package/lib/bot/types.js +3 -0
  75. package/lib/bot/types.js.map +1 -0
  76. package/lib/bridge/getAddressWrapper.d.ts +5 -0
  77. package/lib/bridge/getAddressWrapper.d.ts.map +1 -0
  78. package/lib/bridge/getAddressWrapper.js +36 -0
  79. package/lib/bridge/getAddressWrapper.js.map +1 -0
  80. package/lib/bridge/jsHelpers.d.ts +59 -0
  81. package/lib/bridge/jsHelpers.d.ts.map +1 -0
  82. package/lib/bridge/jsHelpers.js +390 -0
  83. package/lib/bridge/jsHelpers.js.map +1 -0
  84. package/lib/cache.d.ts +11 -0
  85. package/lib/cache.d.ts.map +1 -0
  86. package/lib/cache.js +21 -0
  87. package/lib/cache.js.map +1 -0
  88. package/lib/currencies/BigNumberToLocaleString.d.ts +8 -0
  89. package/lib/currencies/BigNumberToLocaleString.d.ts.map +1 -0
  90. package/lib/currencies/BigNumberToLocaleString.js +62 -0
  91. package/lib/currencies/BigNumberToLocaleString.js.map +1 -0
  92. package/lib/currencies/BigNumberToLocaleString.test.d.ts +2 -0
  93. package/lib/currencies/BigNumberToLocaleString.test.d.ts.map +1 -0
  94. package/lib/currencies/BigNumberToLocaleString.test.js +108 -0
  95. package/lib/currencies/BigNumberToLocaleString.test.js.map +1 -0
  96. package/lib/currencies/CurrencyURIScheme.d.ts +13 -0
  97. package/lib/currencies/CurrencyURIScheme.d.ts.map +1 -0
  98. package/lib/currencies/CurrencyURIScheme.js +95 -0
  99. package/lib/currencies/CurrencyURIScheme.js.map +1 -0
  100. package/lib/currencies/chopCurrencyUnitDecimals.d.ts +3 -0
  101. package/lib/currencies/chopCurrencyUnitDecimals.d.ts.map +1 -0
  102. package/lib/currencies/chopCurrencyUnitDecimals.js +29 -0
  103. package/lib/currencies/chopCurrencyUnitDecimals.js.map +1 -0
  104. package/lib/currencies/formatCurrencyUnit.d.ts +33 -0
  105. package/lib/currencies/formatCurrencyUnit.d.ts.map +1 -0
  106. package/lib/currencies/formatCurrencyUnit.js +109 -0
  107. package/lib/currencies/formatCurrencyUnit.js.map +1 -0
  108. package/lib/currencies/formatShort.d.ts +8 -0
  109. package/lib/currencies/formatShort.d.ts.map +1 -0
  110. package/lib/currencies/formatShort.js +27 -0
  111. package/lib/currencies/formatShort.js.map +1 -0
  112. package/lib/currencies/index.d.ts +13 -0
  113. package/lib/currencies/index.d.ts.map +1 -0
  114. package/lib/currencies/index.js +62 -0
  115. package/lib/currencies/index.js.map +1 -0
  116. package/lib/currencies/localeUtility.d.ts +8 -0
  117. package/lib/currencies/localeUtility.d.ts.map +1 -0
  118. package/lib/currencies/localeUtility.js +45 -0
  119. package/lib/currencies/localeUtility.js.map +1 -0
  120. package/lib/currencies/parseCurrencyUnit.d.ts +4 -0
  121. package/lib/currencies/parseCurrencyUnit.d.ts.map +1 -0
  122. package/lib/currencies/parseCurrencyUnit.js +18 -0
  123. package/lib/currencies/parseCurrencyUnit.js.map +1 -0
  124. package/lib/currencies/sanitizeValueString.d.ts +6 -0
  125. package/lib/currencies/sanitizeValueString.d.ts.map +1 -0
  126. package/lib/currencies/sanitizeValueString.js +56 -0
  127. package/lib/currencies/sanitizeValueString.js.map +1 -0
  128. package/lib/currencies/support.d.ts +8 -0
  129. package/lib/currencies/support.d.ts.map +1 -0
  130. package/lib/currencies/support.js +98 -0
  131. package/lib/currencies/support.js.map +1 -0
  132. package/lib/currencies/valueFromUnit.d.ts +9 -0
  133. package/lib/currencies/valueFromUnit.d.ts.map +1 -0
  134. package/lib/currencies/valueFromUnit.js +12 -0
  135. package/lib/currencies/valueFromUnit.js.map +1 -0
  136. package/lib/derivation.d.ts +232 -0
  137. package/lib/derivation.d.ts.map +1 -0
  138. package/lib/derivation.js +416 -0
  139. package/lib/derivation.js.map +1 -0
  140. package/lib/derivation.test.d.ts +2 -0
  141. package/lib/derivation.test.d.ts.map +1 -0
  142. package/lib/derivation.test.js +35 -0
  143. package/lib/derivation.test.js.map +1 -0
  144. package/lib/errors.d.ts +7 -0
  145. package/lib/errors.d.ts.map +1 -0
  146. package/lib/errors.js +7 -0
  147. package/lib/errors.js.map +1 -0
  148. package/lib/errors.test.d.ts +2 -0
  149. package/lib/errors.test.d.ts.map +1 -0
  150. package/lib/errors.test.js +20 -0
  151. package/lib/errors.test.js.map +1 -0
  152. package/lib/mocks/account.d.ts +26 -0
  153. package/lib/mocks/account.d.ts.map +1 -0
  154. package/lib/mocks/account.js +334 -0
  155. package/lib/mocks/account.js.map +1 -0
  156. package/lib/mocks/fixtures/nfts.d.ts +36 -0
  157. package/lib/mocks/fixtures/nfts.d.ts.map +1 -0
  158. package/lib/mocks/fixtures/nfts.js +401 -0
  159. package/lib/mocks/fixtures/nfts.js.map +1 -0
  160. package/lib/mocks/fixtures/nfts.test.d.ts +2 -0
  161. package/lib/mocks/fixtures/nfts.test.d.ts.map +1 -0
  162. package/lib/mocks/fixtures/nfts.test.js +20 -0
  163. package/lib/mocks/fixtures/nfts.test.js.map +1 -0
  164. package/lib/mocks/helpers.d.ts +15 -0
  165. package/lib/mocks/helpers.d.ts.map +1 -0
  166. package/lib/mocks/helpers.js +32 -0
  167. package/lib/mocks/helpers.js.map +1 -0
  168. package/lib/network.d.ts +9 -0
  169. package/lib/network.d.ts.map +1 -0
  170. package/lib/network.js +3 -0
  171. package/lib/network.js.map +1 -0
  172. package/lib/nft/nftId.d.ts +8 -0
  173. package/lib/nft/nftId.d.ts.map +1 -0
  174. package/lib/nft/nftId.js +18 -0
  175. package/lib/nft/nftId.js.map +1 -0
  176. package/lib/operation.d.ts +31 -0
  177. package/lib/operation.d.ts.map +1 -0
  178. package/lib/operation.js +211 -0
  179. package/lib/operation.js.map +1 -0
  180. package/lib/operation.test.d.ts +2 -0
  181. package/lib/operation.test.d.ts.map +1 -0
  182. package/lib/operation.test.js +116 -0
  183. package/lib/operation.test.js.map +1 -0
  184. package/lib/signer.d.ts +3 -0
  185. package/lib/signer.d.ts.map +1 -0
  186. package/lib/signer.js +3 -0
  187. package/lib/signer.js.map +1 -0
  188. package/lib/test-helpers/staticTime.d.ts +2 -0
  189. package/lib/test-helpers/staticTime.d.ts.map +1 -0
  190. package/lib/test-helpers/staticTime.js +10 -0
  191. package/lib/test-helpers/staticTime.js.map +1 -0
  192. package/lib/transaction/common.d.ts +26 -0
  193. package/lib/transaction/common.d.ts.map +1 -0
  194. package/lib/transaction/common.js +101 -0
  195. package/lib/transaction/common.js.map +1 -0
  196. package/lib-es/account/accountId.d.ts +16 -0
  197. package/lib-es/account/accountId.d.ts.map +1 -0
  198. package/lib-es/account/accountId.js +56 -0
  199. package/lib-es/account/accountId.js.map +1 -0
  200. package/lib-es/account/accountName.d.ts +14 -0
  201. package/lib-es/account/accountName.d.ts.map +1 -0
  202. package/lib-es/account/accountName.js +9 -0
  203. package/lib-es/account/accountName.js.map +1 -0
  204. package/lib-es/account/balanceHistoryCache.d.ts +28 -0
  205. package/lib-es/account/balanceHistoryCache.d.ts.map +1 -0
  206. package/lib-es/account/balanceHistoryCache.js +123 -0
  207. package/lib-es/account/balanceHistoryCache.js.map +1 -0
  208. package/lib-es/account/balanceHistoryCache.test.d.ts +2 -0
  209. package/lib-es/account/balanceHistoryCache.test.d.ts.map +1 -0
  210. package/lib-es/account/balanceHistoryCache.test.js +19 -0
  211. package/lib-es/account/balanceHistoryCache.test.js.map +1 -0
  212. package/lib-es/account/groupOperations.d.ts +17 -0
  213. package/lib-es/account/groupOperations.d.ts.map +1 -0
  214. package/lib-es/account/groupOperations.js +117 -0
  215. package/lib-es/account/groupOperations.js.map +1 -0
  216. package/lib-es/account/helpers.d.ts +46 -0
  217. package/lib-es/account/helpers.d.ts.map +1 -0
  218. package/lib-es/account/helpers.js +264 -0
  219. package/lib-es/account/helpers.js.map +1 -0
  220. package/lib-es/account/helpers.test.d.ts +2 -0
  221. package/lib-es/account/helpers.test.d.ts.map +1 -0
  222. package/lib-es/account/helpers.test.js +404 -0
  223. package/lib-es/account/helpers.test.js.map +1 -0
  224. package/lib-es/account/index.d.ts +10 -0
  225. package/lib-es/account/index.d.ts.map +1 -0
  226. package/lib-es/account/index.js +10 -0
  227. package/lib-es/account/index.js.map +1 -0
  228. package/lib-es/account/ordering.d.ts +10 -0
  229. package/lib-es/account/ordering.d.ts.map +1 -0
  230. package/lib-es/account/ordering.js +73 -0
  231. package/lib-es/account/ordering.js.map +1 -0
  232. package/lib-es/account/pending.d.ts +4 -0
  233. package/lib-es/account/pending.d.ts.map +1 -0
  234. package/lib-es/account/pending.js +48 -0
  235. package/lib-es/account/pending.js.map +1 -0
  236. package/lib-es/account/serialization.d.ts +6 -0
  237. package/lib-es/account/serialization.d.ts.map +1 -0
  238. package/lib-es/account/serialization.js +102 -0
  239. package/lib-es/account/serialization.js.map +1 -0
  240. package/lib-es/account/support.d.ts +7 -0
  241. package/lib-es/account/support.d.ts.map +1 -0
  242. package/lib-es/account/support.js +39 -0
  243. package/lib-es/account/support.js.map +1 -0
  244. package/lib-es/account.test.d.ts +2 -0
  245. package/lib-es/account.test.d.ts.map +1 -0
  246. package/lib-es/account.test.js +175 -0
  247. package/lib-es/account.test.js.map +1 -0
  248. package/lib-es/bot/bot-test-context.d.ts +3 -0
  249. package/lib-es/bot/bot-test-context.d.ts.map +1 -0
  250. package/lib-es/bot/bot-test-context.js +21 -0
  251. package/lib-es/bot/bot-test-context.js.map +1 -0
  252. package/lib-es/bot/bot-test-context.test.d.ts +2 -0
  253. package/lib-es/bot/bot-test-context.test.d.ts.map +1 -0
  254. package/lib-es/bot/bot-test-context.test.js +39 -0
  255. package/lib-es/bot/bot-test-context.test.js.map +1 -0
  256. package/lib-es/bot/formatters.d.ts +2 -0
  257. package/lib-es/bot/formatters.d.ts.map +1 -0
  258. package/lib-es/bot/formatters.js +26 -0
  259. package/lib-es/bot/formatters.js.map +1 -0
  260. package/lib-es/bot/specs.d.ts +50 -0
  261. package/lib-es/bot/specs.d.ts.map +1 -0
  262. package/lib-es/bot/specs.js +170 -0
  263. package/lib-es/bot/specs.js.map +1 -0
  264. package/lib-es/bot/types.d.ts +177 -0
  265. package/lib-es/bot/types.d.ts.map +1 -0
  266. package/lib-es/bot/types.js +2 -0
  267. package/lib-es/bot/types.js.map +1 -0
  268. package/lib-es/bridge/getAddressWrapper.d.ts +5 -0
  269. package/lib-es/bridge/getAddressWrapper.d.ts.map +1 -0
  270. package/lib-es/bridge/getAddressWrapper.js +34 -0
  271. package/lib-es/bridge/getAddressWrapper.js.map +1 -0
  272. package/lib-es/bridge/jsHelpers.d.ts +59 -0
  273. package/lib-es/bridge/jsHelpers.d.ts.map +1 -0
  274. package/lib-es/bridge/jsHelpers.js +378 -0
  275. package/lib-es/bridge/jsHelpers.js.map +1 -0
  276. package/lib-es/cache.d.ts +11 -0
  277. package/lib-es/cache.d.ts.map +1 -0
  278. package/lib-es/cache.js +17 -0
  279. package/lib-es/cache.js.map +1 -0
  280. package/lib-es/currencies/BigNumberToLocaleString.d.ts +8 -0
  281. package/lib-es/currencies/BigNumberToLocaleString.d.ts.map +1 -0
  282. package/lib-es/currencies/BigNumberToLocaleString.js +58 -0
  283. package/lib-es/currencies/BigNumberToLocaleString.js.map +1 -0
  284. package/lib-es/currencies/BigNumberToLocaleString.test.d.ts +2 -0
  285. package/lib-es/currencies/BigNumberToLocaleString.test.d.ts.map +1 -0
  286. package/lib-es/currencies/BigNumberToLocaleString.test.js +106 -0
  287. package/lib-es/currencies/BigNumberToLocaleString.test.js.map +1 -0
  288. package/lib-es/currencies/CurrencyURIScheme.d.ts +13 -0
  289. package/lib-es/currencies/CurrencyURIScheme.d.ts.map +1 -0
  290. package/lib-es/currencies/CurrencyURIScheme.js +87 -0
  291. package/lib-es/currencies/CurrencyURIScheme.js.map +1 -0
  292. package/lib-es/currencies/chopCurrencyUnitDecimals.d.ts +3 -0
  293. package/lib-es/currencies/chopCurrencyUnitDecimals.d.ts.map +1 -0
  294. package/lib-es/currencies/chopCurrencyUnitDecimals.js +25 -0
  295. package/lib-es/currencies/chopCurrencyUnitDecimals.js.map +1 -0
  296. package/lib-es/currencies/formatCurrencyUnit.d.ts +33 -0
  297. package/lib-es/currencies/formatCurrencyUnit.d.ts.map +1 -0
  298. package/lib-es/currencies/formatCurrencyUnit.js +104 -0
  299. package/lib-es/currencies/formatCurrencyUnit.js.map +1 -0
  300. package/lib-es/currencies/formatShort.d.ts +8 -0
  301. package/lib-es/currencies/formatShort.d.ts.map +1 -0
  302. package/lib-es/currencies/formatShort.js +20 -0
  303. package/lib-es/currencies/formatShort.js.map +1 -0
  304. package/lib-es/currencies/index.d.ts +13 -0
  305. package/lib-es/currencies/index.d.ts.map +1 -0
  306. package/lib-es/currencies/index.js +14 -0
  307. package/lib-es/currencies/index.js.map +1 -0
  308. package/lib-es/currencies/localeUtility.d.ts +8 -0
  309. package/lib-es/currencies/localeUtility.d.ts.map +1 -0
  310. package/lib-es/currencies/localeUtility.js +39 -0
  311. package/lib-es/currencies/localeUtility.js.map +1 -0
  312. package/lib-es/currencies/parseCurrencyUnit.d.ts +4 -0
  313. package/lib-es/currencies/parseCurrencyUnit.d.ts.map +1 -0
  314. package/lib-es/currencies/parseCurrencyUnit.js +14 -0
  315. package/lib-es/currencies/parseCurrencyUnit.js.map +1 -0
  316. package/lib-es/currencies/sanitizeValueString.d.ts +6 -0
  317. package/lib-es/currencies/sanitizeValueString.d.ts.map +1 -0
  318. package/lib-es/currencies/sanitizeValueString.js +52 -0
  319. package/lib-es/currencies/sanitizeValueString.js.map +1 -0
  320. package/lib-es/currencies/support.d.ts +8 -0
  321. package/lib-es/currencies/support.d.ts.map +1 -0
  322. package/lib-es/currencies/support.js +89 -0
  323. package/lib-es/currencies/support.js.map +1 -0
  324. package/lib-es/currencies/valueFromUnit.d.ts +9 -0
  325. package/lib-es/currencies/valueFromUnit.d.ts.map +1 -0
  326. package/lib-es/currencies/valueFromUnit.js +8 -0
  327. package/lib-es/currencies/valueFromUnit.js.map +1 -0
  328. package/lib-es/derivation.d.ts +232 -0
  329. package/lib-es/derivation.d.ts.map +1 -0
  330. package/lib-es/derivation.js +388 -0
  331. package/lib-es/derivation.js.map +1 -0
  332. package/lib-es/derivation.test.d.ts +2 -0
  333. package/lib-es/derivation.test.d.ts.map +1 -0
  334. package/lib-es/derivation.test.js +33 -0
  335. package/lib-es/derivation.test.js.map +1 -0
  336. package/lib-es/errors.d.ts +7 -0
  337. package/lib-es/errors.d.ts.map +1 -0
  338. package/lib-es/errors.js +4 -0
  339. package/lib-es/errors.js.map +1 -0
  340. package/lib-es/errors.test.d.ts +2 -0
  341. package/lib-es/errors.test.d.ts.map +1 -0
  342. package/lib-es/errors.test.js +18 -0
  343. package/lib-es/errors.test.js.map +1 -0
  344. package/lib-es/mocks/account.d.ts +26 -0
  345. package/lib-es/mocks/account.d.ts.map +1 -0
  346. package/lib-es/mocks/account.js +324 -0
  347. package/lib-es/mocks/account.js.map +1 -0
  348. package/lib-es/mocks/fixtures/nfts.d.ts +36 -0
  349. package/lib-es/mocks/fixtures/nfts.d.ts.map +1 -0
  350. package/lib-es/mocks/fixtures/nfts.js +393 -0
  351. package/lib-es/mocks/fixtures/nfts.js.map +1 -0
  352. package/lib-es/mocks/fixtures/nfts.test.d.ts +2 -0
  353. package/lib-es/mocks/fixtures/nfts.test.d.ts.map +1 -0
  354. package/lib-es/mocks/fixtures/nfts.test.js +18 -0
  355. package/lib-es/mocks/fixtures/nfts.test.js.map +1 -0
  356. package/lib-es/mocks/helpers.d.ts +15 -0
  357. package/lib-es/mocks/helpers.d.ts.map +1 -0
  358. package/lib-es/mocks/helpers.js +26 -0
  359. package/lib-es/mocks/helpers.js.map +1 -0
  360. package/lib-es/network.d.ts +9 -0
  361. package/lib-es/network.d.ts.map +1 -0
  362. package/lib-es/network.js +2 -0
  363. package/lib-es/network.js.map +1 -0
  364. package/lib-es/nft/nftId.d.ts +8 -0
  365. package/lib-es/nft/nftId.d.ts.map +1 -0
  366. package/lib-es/nft/nftId.js +13 -0
  367. package/lib-es/nft/nftId.js.map +1 -0
  368. package/lib-es/operation.d.ts +31 -0
  369. package/lib-es/operation.d.ts.map +1 -0
  370. package/lib-es/operation.js +190 -0
  371. package/lib-es/operation.js.map +1 -0
  372. package/lib-es/operation.test.d.ts +2 -0
  373. package/lib-es/operation.test.d.ts.map +1 -0
  374. package/lib-es/operation.test.js +111 -0
  375. package/lib-es/operation.test.js.map +1 -0
  376. package/lib-es/signer.d.ts +3 -0
  377. package/lib-es/signer.d.ts.map +1 -0
  378. package/lib-es/signer.js +2 -0
  379. package/lib-es/signer.js.map +1 -0
  380. package/lib-es/test-helpers/staticTime.d.ts +2 -0
  381. package/lib-es/test-helpers/staticTime.d.ts.map +1 -0
  382. package/lib-es/test-helpers/staticTime.js +5 -0
  383. package/lib-es/test-helpers/staticTime.js.map +1 -0
  384. package/lib-es/transaction/common.d.ts +26 -0
  385. package/lib-es/transaction/common.d.ts.map +1 -0
  386. package/lib-es/transaction/common.js +93 -0
  387. package/lib-es/transaction/common.js.map +1 -0
  388. package/package.json +8 -21
  389. package/src/account/accountId.ts +20 -30
  390. package/src/account/accountName.ts +1 -4
  391. package/src/account/balanceHistoryCache.test.ts +19 -0
  392. package/src/account/balanceHistoryCache.ts +52 -38
  393. package/src/account/groupOperations.ts +4 -6
  394. package/src/account/helpers.test.ts +6 -26
  395. package/src/account/helpers.ts +28 -60
  396. package/src/account/ordering.ts +10 -18
  397. package/src/account/pending.ts +6 -15
  398. package/src/account/serialization.ts +8 -19
  399. package/src/account/support.ts +8 -18
  400. package/src/account.test.ts +25 -40
  401. package/src/bot/specs.ts +24 -43
  402. package/src/bot/types.ts +2 -3
  403. package/src/bridge/getAddressWrapper.ts +7 -15
  404. package/src/bridge/jsHelpers.ts +228 -293
  405. package/src/cache.ts +4 -4
  406. package/src/currencies/BigNumberToLocaleString.test.ts +25 -33
  407. package/src/currencies/BigNumberToLocaleString.ts +3 -8
  408. package/src/currencies/CurrencyURIScheme.ts +1 -3
  409. package/src/currencies/chopCurrencyUnitDecimals.ts +1 -4
  410. package/src/currencies/formatCurrencyUnit.ts +11 -21
  411. package/src/currencies/index.ts +1 -4
  412. package/src/currencies/localeUtility.ts +2 -4
  413. package/src/currencies/parseCurrencyUnit.ts +1 -4
  414. package/src/currencies/sanitizeValueString.ts +1 -1
  415. package/src/currencies/support.ts +3 -9
  416. package/src/derivation.test.ts +1 -4
  417. package/src/derivation.ts +45 -95
  418. package/src/errors.test.ts +1 -1
  419. package/src/errors.ts +2 -6
  420. package/src/mocks/account.ts +27 -80
  421. package/src/mocks/fixtures/nfts.test.ts +2 -6
  422. package/src/mocks/fixtures/nfts.ts +12 -38
  423. package/src/mocks/helpers.ts +2 -8
  424. package/src/nft/nftId.ts +2 -2
  425. package/src/operation.test.ts +119 -32
  426. package/src/operation.ts +74 -26
  427. package/src/signer.ts +5 -0
  428. package/src/transaction/common.ts +9 -22
package/.eslintrc.js CHANGED
@@ -1,57 +1,19 @@
1
1
  module.exports = {
2
- parser: "@typescript-eslint/parser",
3
2
  env: {
4
3
  browser: true,
5
4
  es6: true,
6
- node: true,
7
- jest: true,
8
5
  },
9
- extends: [
10
- "eslint:recommended",
11
- "plugin:@typescript-eslint/eslint-recommended",
12
- "plugin:@typescript-eslint/recommended",
13
- "prettier",
6
+ overrides: [
7
+ {
8
+ files: ["src/**/*.test.{ts,tsx}"],
9
+ env: {
10
+ "jest/globals": true,
11
+ },
12
+ plugins: ["jest"],
13
+ },
14
14
  ],
15
- globals: {
16
- Atomics: "readonly",
17
- SharedArrayBuffer: "readonly",
18
- },
19
- plugins: ["@typescript-eslint", "prettier"],
20
15
  rules: {
21
16
  "no-console": ["error", { allow: ["warn", "error"] }],
22
- "linebreak-style": ["error", "unix"],
23
- semi: ["error", "always"],
24
- "no-unused-vars": "off",
25
- "import/prefer-default-export": 0,
26
- "no-plusplus": 0,
27
- "no-underscore-dangle": 0,
28
- "prefer-template": 0,
29
- "no-await-in-loop": 0,
30
- "no-restricted-syntax": 0,
31
- "consistent-return": 0,
32
- "no-lonely-if": 0,
33
- "no-use-before-define": 0,
34
- "no-nested-ternary": 0,
35
- "import/no-cycle": 0,
36
- "no-multi-assign": 0,
37
- "guard-for-in": 0,
38
- "no-continue": 0,
39
- "lines-between-class-members": 0,
40
- "prefer-destructuring": 0,
41
- "prettier/prettier": "error",
42
- "@typescript-eslint/no-use-before-define": "off",
43
- "@typescript-eslint/no-unused-vars": ["error", { argsIgnorePattern: "^_" }],
44
17
  "@typescript-eslint/no-empty-function": "off",
45
- "@typescript-eslint/no-namespace": ["error", { allowDeclarations: true }],
46
- "@typescript-eslint/no-explicit-any": 0,
47
- "@typescript-eslint/ban-types": [
48
- "error",
49
- {
50
- extendDefaults: true,
51
- types: {
52
- "{}": false,
53
- },
54
- },
55
- ],
56
18
  },
57
19
  };
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/coin-framework@0.3.5 build /home/runner/work/ledger-live/ledger-live/libs/coin-framework
2
+ > @ledgerhq/coin-framework@0.3.6 build /home/runner/work/ledger-live/ledger-live/libs/coin-framework
3
3
  > tsc && tsc -m ES6 --outDir lib-es
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,15 +1,41 @@
1
1
  # @ledgerhq/coin-framework
2
2
 
3
+ ## 0.3.7-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`44192f2ab2`](https://github.com/LedgerHQ/ledger-live/commit/44192f2ab2857cbae2ef4a81ee9608d395dcd2b9), [`cb95f72c24`](https://github.com/LedgerHQ/ledger-live/commit/cb95f72c2415876ef88ca83fd2c4363a57669b92), [`be5f56b233`](https://github.com/LedgerHQ/ledger-live/commit/be5f56b2330c166323914b79fef37a3c05e0e13a), [`092cb8d317`](https://github.com/LedgerHQ/ledger-live/commit/092cb8d317fa7971e0f790b77f900ae3864d96c2), [`5af41b6fa1`](https://github.com/LedgerHQ/ledger-live/commit/5af41b6fa1e43037ccdb2df279c82e12ef3d2b1a)]:
8
+ - @ledgerhq/types-live@6.36.0-next.0
9
+ - @ledgerhq/cryptoassets@9.9.0-next.0
10
+ - @ledgerhq/types-cryptoassets@7.3.0-next.0
11
+ - @ledgerhq/live-env@0.3.1-next.0
12
+
3
13
  ## 0.3.6
4
14
 
5
15
  ### Patch Changes
6
16
 
7
- - Updated dependencies [[`4a1454beb3`](https://github.com/LedgerHQ/ledger-live/commit/4a1454beb3f86405ba2686e07879c12a7d35ad8e), [`809065c571`](https://github.com/LedgerHQ/ledger-live/commit/809065c57198646a49adea112b9d799e35a57d25), [`ebe5b07afe`](https://github.com/LedgerHQ/ledger-live/commit/ebe5b07afec441ea3e2d9103da9e1175972add47)]:
17
+ - Updated dependencies [[`9adc1862dd`](https://github.com/LedgerHQ/ledger-live/commit/9adc1862dda605a722d19f3b6895bd324834c914), [`4a1454beb3`](https://github.com/LedgerHQ/ledger-live/commit/4a1454beb3f86405ba2686e07879c12a7d35ad8e), [`809065c571`](https://github.com/LedgerHQ/ledger-live/commit/809065c57198646a49adea112b9d799e35a57d25), [`d1aa522db7`](https://github.com/LedgerHQ/ledger-live/commit/d1aa522db75f7ea850efe412abaa4dc7d37af6b7), [`ebe5b07afe`](https://github.com/LedgerHQ/ledger-live/commit/ebe5b07afec441ea3e2d9103da9e1175972add47)]:
18
+ - @ledgerhq/errors@6.12.7
8
19
  - @ledgerhq/cryptoassets@9.8.0
9
20
  - @ledgerhq/types-cryptoassets@7.2.1
10
21
  - @ledgerhq/types-live@6.35.1
22
+ - @ledgerhq/devices@8.0.4
23
+ - @ledgerhq/hw-transport@6.28.5
11
24
  - @ledgerhq/live-portfolio@0.0.8
12
25
 
26
+ ## 0.3.6-next.0
27
+
28
+ ### Patch Changes
29
+
30
+ - Updated dependencies [[`9adc1862dd`](https://github.com/LedgerHQ/ledger-live/commit/9adc1862dda605a722d19f3b6895bd324834c914), [`4a1454beb3`](https://github.com/LedgerHQ/ledger-live/commit/4a1454beb3f86405ba2686e07879c12a7d35ad8e), [`809065c571`](https://github.com/LedgerHQ/ledger-live/commit/809065c57198646a49adea112b9d799e35a57d25), [`d1aa522db7`](https://github.com/LedgerHQ/ledger-live/commit/d1aa522db75f7ea850efe412abaa4dc7d37af6b7), [`ebe5b07afe`](https://github.com/LedgerHQ/ledger-live/commit/ebe5b07afec441ea3e2d9103da9e1175972add47)]:
31
+ - @ledgerhq/errors@6.12.7-next.0
32
+ - @ledgerhq/cryptoassets@9.8.0-next.0
33
+ - @ledgerhq/types-cryptoassets@7.2.1-next.0
34
+ - @ledgerhq/types-live@6.35.1-next.0
35
+ - @ledgerhq/devices@8.0.4-next.0
36
+ - @ledgerhq/hw-transport@6.28.5-next.0
37
+ - @ledgerhq/live-portfolio@0.0.8-next.0
38
+
13
39
  ## 0.3.5
14
40
 
15
41
  ### Patch Changes
@@ -0,0 +1,16 @@
1
+ import type { AccountIdParams, DerivationMode } from "@ledgerhq/types-live";
2
+ import type { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets";
3
+ export declare function encodeAccountId({ type, version, currencyId, xpubOrAddress, derivationMode, }: AccountIdParams): string;
4
+ export declare function encodeTokenAccountId(accountId: string, token: TokenCurrency): string;
5
+ export declare function decodeTokenAccountId(id: string): {
6
+ accountId: string;
7
+ token: TokenCurrency | null | undefined;
8
+ };
9
+ export declare function decodeAccountId(accountId: string): AccountIdParams;
10
+ export declare function getWalletName({ seedIdentifier, derivationMode, currency, }: {
11
+ seedIdentifier: string;
12
+ derivationMode: DerivationMode;
13
+ currency: CryptoCurrency;
14
+ }): string;
15
+ export declare const inferFamilyFromAccountId: (accountId: string) => string | null | undefined;
16
+ //# sourceMappingURL=accountId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountId.d.ts","sourceRoot":"","sources":["../../src/account/accountId.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAOlF,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,OAAO,EACP,UAAU,EACV,aAAa,EACb,cAAc,GACf,EAAE,eAAe,GAAG,MAAM,CAQ1B;AACD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAEpF;AACD,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,CAYA;AACD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAYlE;AAGD,wBAAgB,aAAa,CAAC,EAC5B,cAAc,EACd,cAAc,EACd,QAAQ,GACT,EAAE;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;CAC1B,GAAG,MAAM,CAET;AACD,eAAO,MAAM,wBAAwB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAS7E,CAAC"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.inferFamilyFromAccountId = exports.getWalletName = exports.decodeAccountId = exports.decodeTokenAccountId = exports.encodeTokenAccountId = exports.encodeAccountId = void 0;
7
+ const memoize_1 = __importDefault(require("lodash/memoize"));
8
+ const invariant_1 = __importDefault(require("invariant"));
9
+ const derivation_1 = require("../derivation");
10
+ const currencies_1 = require("../currencies");
11
+ const cryptoassets_1 = require("@ledgerhq/cryptoassets");
12
+ function ensureNoColon(value, ctx) {
13
+ (0, invariant_1.default)(!value.includes(":"), "AccountId '%s' component must not use colon", ctx);
14
+ return value;
15
+ }
16
+ function encodeAccountId({ type, version, currencyId, xpubOrAddress, derivationMode, }) {
17
+ return `${ensureNoColon(type, "type")}:${ensureNoColon(version, "version")}:${ensureNoColon(currencyId, "currencyId")}:${ensureNoColon(xpubOrAddress, "xpubOrAddress")}:${ensureNoColon(derivationMode, "derivationMode")}`;
18
+ }
19
+ exports.encodeAccountId = encodeAccountId;
20
+ function encodeTokenAccountId(accountId, token) {
21
+ return accountId + "+" + encodeURIComponent(token.id);
22
+ }
23
+ exports.encodeTokenAccountId = encodeTokenAccountId;
24
+ function decodeTokenAccountId(id) {
25
+ const [accountId, tokenId] = id.split("+");
26
+ const decodedTokenId = decodeURIComponent(tokenId);
27
+ let token = (0, currencies_1.findTokenById)(decodedTokenId);
28
+ if (!token) {
29
+ const { currencyId } = decodeAccountId(accountId);
30
+ token = (0, cryptoassets_1.findTokenByAddressInCurrency)(decodedTokenId, currencyId);
31
+ }
32
+ return {
33
+ accountId,
34
+ token,
35
+ };
36
+ }
37
+ exports.decodeTokenAccountId = decodeTokenAccountId;
38
+ function decodeAccountId(accountId) {
39
+ (0, invariant_1.default)(typeof accountId === "string", "accountId is not a string");
40
+ const splitted = accountId.split(":");
41
+ (0, invariant_1.default)(splitted.length === 5, "invalid size for accountId");
42
+ const [type, version, currencyId, xpubOrAddress, derivationMode] = splitted;
43
+ return {
44
+ type,
45
+ version,
46
+ currencyId,
47
+ xpubOrAddress,
48
+ derivationMode: (0, derivation_1.asDerivationMode)(derivationMode),
49
+ };
50
+ }
51
+ exports.decodeAccountId = decodeAccountId;
52
+ // you can pass account because type is shape of Account
53
+ // wallet name is a lib-core concept that usually identify a pool of accounts with the same (seed, cointype, derivation scheme) config.
54
+ function getWalletName({ seedIdentifier, derivationMode, currency, }) {
55
+ return `${seedIdentifier}_${currency.id}_${derivationMode}`;
56
+ }
57
+ exports.getWalletName = getWalletName;
58
+ exports.inferFamilyFromAccountId = (0, memoize_1.default)(accountId => {
59
+ try {
60
+ const { currencyId } = decodeAccountId(accountId);
61
+ return (0, currencies_1.getCryptoCurrencyById)(currencyId).family;
62
+ }
63
+ catch (e) {
64
+ return null;
65
+ }
66
+ });
67
+ //# sourceMappingURL=accountId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountId.js","sourceRoot":"","sources":["../../src/account/accountId.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAqC;AACrC,0DAAkC;AAClC,8CAAiD;AACjD,8CAAqE;AACrE,yDAAsE;AAItE,SAAS,aAAa,CAAC,KAAa,EAAE,GAAW;IAC/C,IAAA,mBAAS,EAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,6CAA6C,EAAE,GAAG,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,OAAO,EACP,UAAU,EACV,aAAa,EACb,cAAc,GACE;IAChB,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,aAAa,CACzF,UAAU,EACV,YAAY,CACb,IAAI,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,aAAa,CACjE,cAAc,EACd,gBAAgB,CACjB,EAAE,CAAC;AACN,CAAC;AAdD,0CAcC;AACD,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,KAAoB;IAC1E,OAAO,SAAS,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC;AAFD,oDAEC;AACD,SAAgB,oBAAoB,CAAC,EAAU;IAI7C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,GAAG,IAAA,0BAAa,EAAC,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAClD,KAAK,GAAG,IAAA,2CAA4B,EAAC,cAAc,EAAE,UAAU,CAAC,CAAC;KAClE;IACD,OAAO;QACL,SAAS;QACT,KAAK;KACN,CAAC;AACJ,CAAC;AAfD,oDAeC;AACD,SAAgB,eAAe,CAAC,SAAiB;IAC/C,IAAA,mBAAS,EAAC,OAAO,SAAS,KAAK,QAAQ,EAAE,2BAA2B,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAA,mBAAS,EAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAC;IAC/D,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC;IAC5E,OAAO;QACL,IAAI;QACJ,OAAO;QACP,UAAU;QACV,aAAa;QACb,cAAc,EAAE,IAAA,6BAAgB,EAAC,cAAc,CAAC;KACjD,CAAC;AACJ,CAAC;AAZD,0CAYC;AACD,wDAAwD;AACxD,uIAAuI;AACvI,SAAgB,aAAa,CAAC,EAC5B,cAAc,EACd,cAAc,EACd,QAAQ,GAKT;IACC,OAAO,GAAG,cAAc,IAAI,QAAQ,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC;AAC9D,CAAC;AAVD,sCAUC;AACY,QAAA,wBAAwB,GAAqD,IAAA,iBAAO,EAC/F,SAAS,CAAC,EAAE;IACV,IAAI;QACF,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,IAAA,kCAAqB,EAAC,UAAU,CAAC,CAAC,MAAM,CAAC;KACjD;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
2
+ import { Account, DerivationMode } from "@ledgerhq/types-live";
3
+ export declare const getAccountPlaceholderName: ({ currency, index, }: {
4
+ currency: CryptoCurrency;
5
+ index: number;
6
+ derivationMode: DerivationMode;
7
+ }) => string;
8
+ export declare const getNewAccountPlaceholderName: ({ currency, index, }: {
9
+ currency: CryptoCurrency;
10
+ index: number;
11
+ derivationMode: DerivationMode;
12
+ }) => string;
13
+ export declare const validateNameEdition: (account: Account, name?: string | null | undefined) => string;
14
+ //# sourceMappingURL=accountName.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountName.d.ts","sourceRoot":"","sources":["../../src/account/accountName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG/D,eAAO,MAAM,yBAAyB;cAI1B,cAAc;WACjB,MAAM;oBACG,cAAc;MAC5B,MAEH,CAAC;AACF,eAAO,MAAM,4BAA4B;cAN7B,cAAc;WACjB,MAAM;oBACG,cAAc;MAC5B,MAGiE,CAAC;AAEtE,eAAO,MAAM,mBAAmB,YAAa,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAKtD,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateNameEdition = exports.getNewAccountPlaceholderName = exports.getAccountPlaceholderName = void 0;
4
+ const MAX_ACCOUNT_NAME_SIZE = 50;
5
+ const getAccountPlaceholderName = ({ currency, index, }) => {
6
+ return `${currency.name} ${index + 1}`;
7
+ };
8
+ exports.getAccountPlaceholderName = getAccountPlaceholderName;
9
+ exports.getNewAccountPlaceholderName = exports.getAccountPlaceholderName; // same naming
10
+ const validateNameEdition = (account, name) => ((name || account.name || "").replace(/\s+/g, " ").trim() ||
11
+ account.name ||
12
+ (0, exports.getAccountPlaceholderName)(account)).slice(0, MAX_ACCOUNT_NAME_SIZE);
13
+ exports.validateNameEdition = validateNameEdition;
14
+ //# sourceMappingURL=accountName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountName.js","sourceRoot":"","sources":["../../src/account/accountName.ts"],"names":[],"mappings":";;;AAGA,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAC1B,MAAM,yBAAyB,GAAG,CAAC,EACxC,QAAQ,EACR,KAAK,GAKN,EAAU,EAAE;IACX,OAAO,GAAG,QAAQ,CAAC,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;AACzC,CAAC,CAAC;AATW,QAAA,yBAAyB,6BASpC;AACW,QAAA,4BAA4B,GAAG,iCAAyB,CAAC,CAAC,cAAc;AAE9E,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,IAAgC,EAAU,EAAE,CAChG,CACE,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;IACxD,OAAO,CAAC,IAAI;IACZ,IAAA,iCAAyB,EAAC,OAAO,CAAC,CACnC,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;AALvB,QAAA,mBAAmB,uBAKI"}
@@ -0,0 +1,28 @@
1
+ import type { GranularityId, BalanceHistoryCache, AccountLike, Account } from "@ledgerhq/types-live";
2
+ export declare const emptyHistoryCache: {
3
+ HOUR: {
4
+ latestDate: null;
5
+ balances: never[];
6
+ };
7
+ DAY: {
8
+ latestDate: null;
9
+ balances: never[];
10
+ };
11
+ WEEK: {
12
+ latestDate: null;
13
+ balances: never[];
14
+ };
15
+ };
16
+ export declare function startOfHour(t: Date): Date;
17
+ export declare function startOfDay(t: Date): Date;
18
+ export declare function startOfWeek(t: Date): Date;
19
+ export declare function generateHistoryFromOperations(account: AccountLike): BalanceHistoryCache;
20
+ /**
21
+ * get the current balance history of the account. if possible from the cache.
22
+ */
23
+ export declare function getAccountHistoryBalances(account: AccountLike, g: GranularityId): number[];
24
+ /**
25
+ * utility used at the end of an account synchronisation to recalculate the balance history if necessary
26
+ */
27
+ export declare function recalculateAccountBalanceHistories(res: Account, prev: Account): Account;
28
+ //# sourceMappingURL=balanceHistoryCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balanceHistoryCache.d.ts","sourceRoot":"","sources":["../../src/account/balanceHistoryCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EAEnB,WAAW,EACX,OAAO,EAER,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAa7B,CAAC;AAMF,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAEzC;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAExC;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAGzC;AAkED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,WAAW,GAAG,mBAAmB,CAMvF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,CAW1F;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CA4BvF"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recalculateAccountBalanceHistories = exports.getAccountHistoryBalances = exports.generateHistoryFromOperations = exports.startOfWeek = exports.startOfDay = exports.startOfHour = exports.emptyHistoryCache = void 0;
4
+ const operation_1 = require("../operation");
5
+ exports.emptyHistoryCache = {
6
+ HOUR: {
7
+ latestDate: null,
8
+ balances: [],
9
+ },
10
+ DAY: {
11
+ latestDate: null,
12
+ balances: [],
13
+ },
14
+ WEEK: {
15
+ latestDate: null,
16
+ balances: [],
17
+ },
18
+ };
19
+ const hourIncrement = 60 * 60 * 1000;
20
+ const dayIncrement = 24 * hourIncrement;
21
+ const weekIncrement = 7 * dayIncrement;
22
+ function startOfHour(t) {
23
+ return new Date(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours());
24
+ }
25
+ exports.startOfHour = startOfHour;
26
+ function startOfDay(t) {
27
+ return new Date(t.getFullYear(), t.getMonth(), t.getDate());
28
+ }
29
+ exports.startOfDay = startOfDay;
30
+ function startOfWeek(t) {
31
+ const d = startOfDay(t);
32
+ return new Date(d.getTime() - d.getDay() * dayIncrement);
33
+ }
34
+ exports.startOfWeek = startOfWeek;
35
+ const granularities = {
36
+ WEEK: {
37
+ increment: weekIncrement,
38
+ startOf: startOfWeek,
39
+ maxDatapoints: 1000, // (essentially no limit)
40
+ },
41
+ DAY: {
42
+ increment: dayIncrement,
43
+ startOf: startOfDay,
44
+ maxDatapoints: 400, // we only need a year
45
+ },
46
+ HOUR: {
47
+ increment: hourIncrement,
48
+ startOf: startOfHour,
49
+ maxDatapoints: 8 * 24, // we only need a week
50
+ },
51
+ };
52
+ function generateHistoryFromOperationsG(account, g, // partial=true allows a faster implementation that only recompose the last part of the history
53
+ // to only use when we do not recalculate the history but we just want to access it
54
+ partial = false) {
55
+ const { increment, startOf, maxDatapoints } = granularities[g];
56
+ const latestDate = startOf(new Date()).getTime();
57
+ let balances = [];
58
+ let { balance } = account;
59
+ const operationsLength = account.operations.length;
60
+ let date = latestDate;
61
+ const reference = account.balanceHistoryCache[g];
62
+ for (let i = 0; i < operationsLength;) {
63
+ if ((partial && reference.latestDate && date < reference.latestDate) ||
64
+ balances.length > maxDatapoints) {
65
+ break;
66
+ }
67
+ // accumulate operations after time t
68
+ while (i < operationsLength &&
69
+ // FIXME: added valueOf here to make typescript happy
70
+ account.operations[i].date.valueOf() > date) {
71
+ balance = balance.minus((0, operation_1.getOperationAmountNumberWithInternals)(account.operations[i]));
72
+ i++;
73
+ }
74
+ balances.unshift(Math.max(balance.toNumber(), 0));
75
+ date -= increment;
76
+ }
77
+ if (partial) {
78
+ balances = reference.balances.concat(balances);
79
+ }
80
+ return {
81
+ balances,
82
+ latestDate,
83
+ };
84
+ }
85
+ function generateHistoryFromOperations(account) {
86
+ return {
87
+ HOUR: generateHistoryFromOperationsG(account, "HOUR"),
88
+ DAY: generateHistoryFromOperationsG(account, "DAY"),
89
+ WEEK: generateHistoryFromOperationsG(account, "WEEK"),
90
+ };
91
+ }
92
+ exports.generateHistoryFromOperations = generateHistoryFromOperations;
93
+ /**
94
+ * get the current balance history of the account. if possible from the cache.
95
+ */
96
+ function getAccountHistoryBalances(account, g) {
97
+ const { balances, latestDate } = account.balanceHistoryCache[g];
98
+ const { startOf } = granularities[g];
99
+ const now = startOf(new Date()).getTime();
100
+ if (latestDate && latestDate === now) {
101
+ return balances;
102
+ }
103
+ // account cache was not up to date. recalculating on the fly
104
+ return generateHistoryFromOperationsG(account, g, true).balances;
105
+ }
106
+ exports.getAccountHistoryBalances = getAccountHistoryBalances;
107
+ /**
108
+ * utility used at the end of an account synchronisation to recalculate the balance history if necessary
109
+ */
110
+ function recalculateAccountBalanceHistories(res, prev) {
111
+ // recalculate balance history cache
112
+ if (prev.balanceHistoryCache === res.balanceHistoryCache) {
113
+ // we only regenerate if it was not overriden by the implemenetation.
114
+ res = Object.assign(Object.assign({}, res), { balanceHistoryCache: generateHistoryFromOperations(res) });
115
+ }
116
+ const prevSubAccounts = prev.subAccounts;
117
+ const nextSubAccounts = res.subAccounts;
118
+ if (nextSubAccounts && prevSubAccounts && prevSubAccounts !== nextSubAccounts) {
119
+ // when sub accounts changes, we need to recalculate
120
+ res.subAccounts = nextSubAccounts.map((subAccount) => {
121
+ const old = prevSubAccounts.find(a => a.id === subAccount.id);
122
+ if (!old || old.balanceHistoryCache === subAccount.balanceHistoryCache) {
123
+ // we only regenerate if it was not overriden by the implemenetation.
124
+ subAccount = Object.assign(Object.assign({}, subAccount), { balanceHistoryCache: generateHistoryFromOperations(subAccount) });
125
+ }
126
+ return subAccount;
127
+ });
128
+ }
129
+ return res;
130
+ }
131
+ exports.recalculateAccountBalanceHistories = recalculateAccountBalanceHistories;
132
+ //# sourceMappingURL=balanceHistoryCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balanceHistoryCache.js","sourceRoot":"","sources":["../../src/account/balanceHistoryCache.ts"],"names":[],"mappings":";;;AAQA,4CAAqE;AAExD,QAAA,iBAAiB,GAAG;IAC/B,IAAI,EAAE;QACJ,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,EAAE;KACb;IACD,GAAG,EAAE;QACH,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,EAAE;KACb;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC,MAAM,YAAY,GAAG,EAAE,GAAG,aAAa,CAAC;AACxC,MAAM,aAAa,GAAG,CAAC,GAAG,YAAY,CAAC;AAEvC,SAAgB,WAAW,CAAC,CAAO;IACjC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5E,CAAC;AAFD,kCAEC;AACD,SAAgB,UAAU,CAAC,CAAO;IAChC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC;AAFD,gCAEC;AACD,SAAgB,WAAW,CAAC,CAAO;IACjC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC;AAC3D,CAAC;AAHD,kCAGC;AAED,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE;QACJ,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,WAAW;QACpB,aAAa,EAAE,IAAI,EAAE,yBAAyB;KAC/C;IACD,GAAG,EAAE;QACH,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,UAAU;QACnB,aAAa,EAAE,GAAG,EAAE,sBAAsB;KAC3C;IACD,IAAI,EAAE;QACJ,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,WAAW;QACpB,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,sBAAsB;KAC9C;CACF,CAAC;AAEF,SAAS,8BAA8B,CACrC,OAAoB,EACpB,CAAgB,EAAE,+FAA+F;AACjH,mFAAmF;AACnF,OAAO,GAAG,KAAK;IAEf,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACjD,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC1B,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;IACnD,IAAI,IAAI,GAAG,UAAU,CAAC;IACtB,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,GAAI;QACtC,IACE,CAAC,OAAO,IAAI,SAAS,CAAC,UAAU,IAAI,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC;YAChE,QAAQ,CAAC,MAAM,GAAG,aAAa,EAC/B;YACA,MAAM;SACP;QAED,qCAAqC;QACrC,OACE,CAAC,GAAG,gBAAgB;YACpB,qDAAqD;YACrD,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAC3C;YACA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAA,iDAAqC,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC,EAAE,CAAC;SACL;QAED,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,IAAI,SAAS,CAAC;KACnB;IAED,IAAI,OAAO,EAAE;QACX,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAChD;IAED,OAAO;QACL,QAAQ;QACR,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAgB,6BAA6B,CAAC,OAAoB;IAChE,OAAO;QACL,IAAI,EAAE,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC;QACrD,GAAG,EAAE,8BAA8B,CAAC,OAAO,EAAE,KAAK,CAAC;QACnD,IAAI,EAAE,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC;KACtD,CAAC;AACJ,CAAC;AAND,sEAMC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,OAAoB,EAAE,CAAgB;IAC9E,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAE1C,IAAI,UAAU,IAAI,UAAU,KAAK,GAAG,EAAE;QACpC,OAAO,QAAQ,CAAC;KACjB;IAED,6DAA6D;IAC7D,OAAO,8BAA8B,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC;AACnE,CAAC;AAXD,8DAWC;AAED;;GAEG;AACH,SAAgB,kCAAkC,CAAC,GAAY,EAAE,IAAa;IAC5E,oCAAoC;IACpC,IAAI,IAAI,CAAC,mBAAmB,KAAK,GAAG,CAAC,mBAAmB,EAAE;QACxD,qEAAqE;QACrE,GAAG,mCAAQ,GAAG,KAAE,mBAAmB,EAAE,6BAA6B,CAAC,GAAG,CAAC,GAAE,CAAC;KAC3E;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC;IACzC,MAAM,eAAe,GAAG,GAAG,CAAC,WAAW,CAAC;IAExC,IAAI,eAAe,IAAI,eAAe,IAAI,eAAe,KAAK,eAAe,EAAE;QAC7E,oDAAoD;QACpD,GAAG,CAAC,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,UAAsB,EAAc,EAAE;YAC3E,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;YAE9D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,mBAAmB,KAAK,UAAU,CAAC,mBAAmB,EAAE;gBACtE,qEAAqE;gBACrE,UAAU,mCACL,UAAU,KACb,mBAAmB,EAAE,6BAA6B,CAAC,UAAU,CAAC,GAC/D,CAAC;aACH;YAED,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AA5BD,gFA4BC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=balanceHistoryCache.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balanceHistoryCache.test.d.ts","sourceRoot":"","sources":["../../src/account/balanceHistoryCache.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ describe("date utils", () => {
5
+ describe("startOfHour", () => {
6
+ test("basic test", () => {
7
+ expect((0, _1.startOfHour)(new Date(1655827384305)).toISOString()).toBe("2022-06-21T16:00:00.000Z");
8
+ });
9
+ });
10
+ describe("startOfDay", () => {
11
+ test("basic test", () => {
12
+ expect((0, _1.startOfDay)(new Date(1655827384305)).toISOString()).toBe("2022-06-21T04:00:00.000Z");
13
+ });
14
+ });
15
+ describe("startOfWeek", () => {
16
+ test("basic test", () => {
17
+ expect((0, _1.startOfWeek)(new Date(1655827384305)).toISOString()).toBe("2022-06-19T04:00:00.000Z");
18
+ });
19
+ });
20
+ });
21
+ //# sourceMappingURL=balanceHistoryCache.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balanceHistoryCache.test.js","sourceRoot":"","sources":["../../src/account/balanceHistoryCache.test.ts"],"names":[],"mappings":";;AAAA,wBAAyD;AAEzD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,IAAA,cAAW,EAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,IAAA,aAAU,EAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,IAAA,cAAW,EAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { AccountLike, AccountLikeArray, DailyOperations, Operation } from "@ledgerhq/types-live";
2
+ type GroupOpsByDayOpts = {
3
+ count: number;
4
+ withSubAccounts?: boolean;
5
+ filterOperation?: (arg0: Operation, arg1: AccountLike) => boolean;
6
+ };
7
+ /**
8
+ * @memberof account
9
+ */
10
+ export declare function groupAccountsOperationsByDay(inputAccounts: AccountLikeArray, { count, withSubAccounts, filterOperation }: GroupOpsByDayOpts): DailyOperations;
11
+ /**
12
+ * Return a list of `{count}` operations grouped by day.
13
+ * @memberof account
14
+ */
15
+ export declare function groupAccountOperationsByDay(account: AccountLike, arg: GroupOpsByDayOpts): DailyOperations;
16
+ export {};
17
+ //# sourceMappingURL=groupOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupOperations.d.ts","sourceRoot":"","sources":["../../src/account/groupOperations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,SAAS,EACV,MAAM,sBAAsB,CAAC;AAU9B,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC;CACnE,CAAC;AAKF;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,gBAAgB,EAC/B,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,EAAE,iBAAiB,GAC7D,eAAe,CAqHjB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,iBAAiB,GACrB,eAAe,CAGjB"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.groupAccountOperationsByDay = exports.groupAccountsOperationsByDay = void 0;
4
+ const helpers_1 = require("./helpers");
5
+ const operation_1 = require("../operation");
6
+ function startOfDay(t) {
7
+ return new Date(t.getFullYear(), t.getMonth(), t.getDate());
8
+ }
9
+ const emptyDailyOperations = {
10
+ sections: [],
11
+ completed: true,
12
+ };
13
+ const hasStableOperation = (account, hash) => account.operations.some(op => op.hash === hash);
14
+ /**
15
+ * @memberof account
16
+ */
17
+ function groupAccountsOperationsByDay(inputAccounts, { count, withSubAccounts, filterOperation }) {
18
+ const accounts = withSubAccounts ? (0, helpers_1.flattenAccounts)(inputAccounts) : inputAccounts;
19
+ // Track indexes of account.operations[] for each account
20
+ const indexes = Array(accounts.length).fill(0);
21
+ // Track indexes of account.pendingOperations[] for each account
22
+ const indexesPending = Array(accounts.length).fill(0);
23
+ // Returns the next most recent operation from the account with current indexes
24
+ function getNext() {
25
+ let bestOp;
26
+ let bestOpInfo = {
27
+ accountI: 0,
28
+ fromPending: false,
29
+ };
30
+ for (let i = 0; i < accounts.length; i++) {
31
+ const account = accounts[i];
32
+ // look in operations
33
+ let op = account.operations[indexes[i]];
34
+ if (filterOperation) {
35
+ // skip operation we want to filter out
36
+ while (op && !filterOperation(op, account)) {
37
+ op = account.operations[++indexes[i]];
38
+ }
39
+ }
40
+ if (op && (!bestOp || op.date > bestOp.date)) {
41
+ bestOp = op;
42
+ bestOpInfo = {
43
+ accountI: i,
44
+ fromPending: false,
45
+ };
46
+ }
47
+ // look in pending operations
48
+ let opP = account.pendingOperations[indexesPending[i]];
49
+ while (opP && // skip all pending operations that are already in operations
50
+ (hasStableOperation(account, opP.hash) || // but also if we want to filter it
51
+ (filterOperation && !filterOperation(opP, account)))) {
52
+ opP = account.pendingOperations[++indexesPending[i]];
53
+ }
54
+ if (opP && (!bestOp || opP.date > bestOp.date)) {
55
+ bestOp = opP;
56
+ bestOpInfo = {
57
+ accountI: i,
58
+ fromPending: true,
59
+ };
60
+ }
61
+ }
62
+ if (bestOp) {
63
+ if (bestOpInfo.fromPending) {
64
+ indexesPending[bestOpInfo.accountI]++;
65
+ }
66
+ else {
67
+ indexes[bestOpInfo.accountI]++;
68
+ }
69
+ const ops = (0, operation_1.flattenOperationWithInternalsAndNfts)(bestOp);
70
+ return {
71
+ ops,
72
+ date: bestOp.date,
73
+ };
74
+ }
75
+ }
76
+ let next = getNext();
77
+ if (!next)
78
+ return emptyDailyOperations;
79
+ const sections = [];
80
+ let totalOperations = 0;
81
+ let day = startOfDay(next.date);
82
+ let data = [];
83
+ while (totalOperations < count && next) {
84
+ if (next.date < day) {
85
+ if (data.length > 0) {
86
+ const slicedData = data.slice(0, count - totalOperations);
87
+ sections.push({
88
+ day,
89
+ data: slicedData,
90
+ });
91
+ totalOperations += slicedData.length;
92
+ }
93
+ day = startOfDay(next.date);
94
+ data = next.ops;
95
+ }
96
+ else {
97
+ data = data.concat(next.ops);
98
+ }
99
+ next = getNext();
100
+ }
101
+ if (data.length > 0 && totalOperations < count) {
102
+ sections.push({
103
+ day,
104
+ data,
105
+ });
106
+ }
107
+ return {
108
+ sections,
109
+ completed: !next,
110
+ };
111
+ }
112
+ exports.groupAccountsOperationsByDay = groupAccountsOperationsByDay;
113
+ /**
114
+ * Return a list of `{count}` operations grouped by day.
115
+ * @memberof account
116
+ */
117
+ function groupAccountOperationsByDay(account, arg) {
118
+ const accounts = [account];
119
+ return groupAccountsOperationsByDay(accounts, arg);
120
+ }
121
+ exports.groupAccountOperationsByDay = groupAccountOperationsByDay;
122
+ //# sourceMappingURL=groupOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupOperations.js","sourceRoot":"","sources":["../../src/account/groupOperations.ts"],"names":[],"mappings":"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"}