@ledgerhq/coin-framework 0.0.2-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 (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 +783 -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 +768 -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 +790 -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,380 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import invariant from "invariant";
3
+ import { getEnv } from "../env";
4
+ import { encodeTokenAccountId } from "./accountId";
5
+ import { emptyHistoryCache } from "./balanceHistoryCache";
6
+ import type {
7
+ Account,
8
+ AccountLike,
9
+ AccountLikeArray,
10
+ SubAccount,
11
+ TokenAccount,
12
+ ChildAccount,
13
+ } from "@ledgerhq/types-live";
14
+ import {
15
+ CryptoCurrency,
16
+ TokenCurrency,
17
+ Unit,
18
+ } from "@ledgerhq/types-cryptoassets";
19
+
20
+ // by convention, a main account is the top level account
21
+ // in case of an Account is the account itself
22
+ // in case of a TokenAccount it's the parentAccount
23
+ export const getMainAccount = (
24
+ account: AccountLike,
25
+ parentAccount?: Account | null | undefined
26
+ ): Account => {
27
+ const mainAccount = account.type === "Account" ? account : parentAccount;
28
+ invariant(mainAccount, "an account is expected");
29
+ return mainAccount as Account;
30
+ };
31
+
32
+ export const getAccountCurrency = (
33
+ account?: AccountLike
34
+ ): TokenCurrency | CryptoCurrency => {
35
+ switch (account?.type) {
36
+ case "Account":
37
+ case "ChildAccount":
38
+ return account.currency;
39
+
40
+ case "TokenAccount":
41
+ return account.token;
42
+
43
+ default:
44
+ throw new Error(
45
+ "invalid account.type=" + (account as unknown as { type: string })?.type
46
+ );
47
+ }
48
+ };
49
+
50
+ export const getAccountUnit = (account: AccountLike): Unit => {
51
+ switch (account.type) {
52
+ case "Account":
53
+ return account.unit;
54
+
55
+ case "TokenAccount":
56
+ return account.token.units[0];
57
+
58
+ case "ChildAccount":
59
+ return account.currency.units[0];
60
+
61
+ default:
62
+ throw new Error("invalid account.type=" + (account as AccountLike).type);
63
+ }
64
+ };
65
+
66
+ export const getAccountName = (account: AccountLike): string => {
67
+ switch (account.type) {
68
+ case "Account":
69
+ case "ChildAccount":
70
+ return account.name;
71
+
72
+ case "TokenAccount":
73
+ return account.token.name;
74
+
75
+ default:
76
+ throw new Error("invalid account.type=" + (account as AccountLike).type);
77
+ }
78
+ };
79
+
80
+ export const getAccountSpendableBalance = (account: AccountLike): BigNumber => {
81
+ switch (account.type) {
82
+ case "Account":
83
+ case "TokenAccount":
84
+ return account.spendableBalance;
85
+
86
+ case "ChildAccount":
87
+ return account.balance;
88
+
89
+ default:
90
+ throw new Error("invalid account.type=" + (account as AccountLike).type);
91
+ }
92
+ };
93
+
94
+ export const isAccountEmpty = (a: AccountLike): boolean => {
95
+ const hasSubAccounts =
96
+ a.type === "Account" && a.subAccounts && a.subAccounts.length;
97
+ return a.operationsCount === 0 && a.balance.isZero() && !hasSubAccounts;
98
+ };
99
+
100
+ export function areAllOperationsLoaded(account: AccountLike): boolean {
101
+ if (account.operationsCount !== account.operations.length) {
102
+ return false;
103
+ }
104
+
105
+ if (account.type === "Account" && account.subAccounts) {
106
+ return account.subAccounts.every(areAllOperationsLoaded);
107
+ }
108
+
109
+ return true;
110
+ }
111
+
112
+ export const isAccountBalanceSignificant = (a: AccountLike): boolean =>
113
+ a.balance.gt(100);
114
+
115
+ // in future, could be a per currency thing
116
+ // clear account to a bare minimal version that can be restored via sync
117
+ // will preserve the balance to avoid user panic
118
+ export function clearAccount<T extends AccountLike>(
119
+ account: T,
120
+ familyClean?: (account: Account) => void
121
+ ): T {
122
+ if (account.type === "TokenAccount") {
123
+ return {
124
+ ...account,
125
+ balanceHistoryCache: emptyHistoryCache,
126
+ operations: [],
127
+ pendingOperations: [],
128
+ };
129
+ }
130
+
131
+ if (account.type === "ChildAccount") {
132
+ return {
133
+ ...account,
134
+ balanceHistoryCache: emptyHistoryCache,
135
+ operations: [],
136
+ pendingOperations: [],
137
+ };
138
+ }
139
+
140
+ const copy: Account = {
141
+ ...account,
142
+ balanceHistoryCache: emptyHistoryCache,
143
+ lastSyncDate: new Date(0),
144
+ operations: [],
145
+ pendingOperations: [],
146
+ subAccounts:
147
+ (account as Account).subAccounts &&
148
+ (account as Account).subAccounts?.map((acc) =>
149
+ clearAccount(acc, familyClean)
150
+ ),
151
+ };
152
+
153
+ familyClean?.(copy);
154
+
155
+ delete copy.nfts;
156
+ return copy as T;
157
+ }
158
+
159
+ export function findSubAccountById(
160
+ account: Account,
161
+ id: string
162
+ ): SubAccount | null | undefined {
163
+ return (account.subAccounts || []).find((a) => a.id === id);
164
+ }
165
+
166
+ // get the token accounts of an account, ignoring those that are zero IF user don't want them
167
+ export function listSubAccounts(account: Account): SubAccount[] {
168
+ const accounts = account.subAccounts || [];
169
+
170
+ if (getEnv("HIDE_EMPTY_TOKEN_ACCOUNTS")) {
171
+ return accounts.filter((a) => !a.balance.isZero());
172
+ }
173
+
174
+ return accounts;
175
+ }
176
+
177
+ export type FlattenAccountsOptions = {
178
+ enforceHideEmptySubAccounts?: boolean;
179
+ };
180
+
181
+ export function flattenAccounts(
182
+ topAccounts: AccountLikeArray,
183
+ o: FlattenAccountsOptions = {}
184
+ ): AccountLike[] {
185
+ const accounts: AccountLike[] = [];
186
+
187
+ for (let i = 0; i < topAccounts.length; i++) {
188
+ const account = topAccounts[i];
189
+ accounts.push(account);
190
+
191
+ if (account.type === "Account") {
192
+ const subAccounts = o.enforceHideEmptySubAccounts
193
+ ? listSubAccounts(account)
194
+ : account.subAccounts || [];
195
+
196
+ for (let j = 0; j < subAccounts.length; j++) {
197
+ accounts.push(subAccounts[j]);
198
+ }
199
+ }
200
+ }
201
+
202
+ return accounts;
203
+ }
204
+
205
+ export const shortAddressPreview = (addr: string, target = 20): string => {
206
+ const slice = Math.floor((target - 3) / 2);
207
+ return addr.length < target - 3
208
+ ? addr
209
+ : `${addr.slice(0, slice)}...${addr.slice(addr.length - slice)}`;
210
+ };
211
+
212
+ export const isAccountBalanceUnconfirmed = (account: AccountLike): boolean =>
213
+ account.pendingOperations.some(
214
+ (op) => !account.operations.find((o) => o.hash === op.hash)
215
+ ) || account.operations.some((op) => !op.blockHeight);
216
+
217
+ export const isUpToDateAccount = (account: Account | null | undefined) => {
218
+ if (!account) return true;
219
+ const { lastSyncDate, currency } = account;
220
+ const { blockAvgTime } = currency;
221
+ if (!blockAvgTime) return true;
222
+ const outdated =
223
+ // FIXME: same here, we need to use valueOf for typescript to compare dates
224
+ Date.now().valueOf() - (lastSyncDate.valueOf() || 0) >
225
+ blockAvgTime * 1000 + getEnv("SYNC_OUTDATED_CONSIDERED_DELAY");
226
+ return !outdated;
227
+ };
228
+
229
+ export const makeEmptyTokenAccount = (
230
+ account: Account,
231
+ token: TokenCurrency
232
+ ): TokenAccount => ({
233
+ type: "TokenAccount",
234
+ id: account.id + "+" + token.contractAddress,
235
+ parentId: account.id,
236
+ token,
237
+ balance: new BigNumber(0),
238
+ spendableBalance: new BigNumber(0),
239
+ operationsCount: 0,
240
+ creationDate: new Date(),
241
+ operations: [],
242
+ pendingOperations: [],
243
+ starred: false,
244
+ swapHistory: [],
245
+ balanceHistoryCache: emptyHistoryCache,
246
+ });
247
+
248
+ /**
249
+ * Enhance an account to force token accounts presence
250
+ */
251
+ export const accountWithMandatoryTokens = (
252
+ account: Account,
253
+ tokenCurrencies: TokenCurrency[]
254
+ ): Account => {
255
+ const { subAccounts } = account;
256
+ if (!subAccounts) return account;
257
+ const existingTokens = subAccounts
258
+ .map((a) => a.type === "TokenAccount" && a.token)
259
+ .filter(Boolean);
260
+ const addition = tokenCurrencies
261
+ .filter(
262
+ (
263
+ t // token of the same currency
264
+ ) => t.parentCurrency === account.currency && !existingTokens.includes(t) // not yet in the sub accounts
265
+ )
266
+ .map<TokenAccount>((token) => ({
267
+ type: "TokenAccount",
268
+ id: encodeTokenAccountId(account.id, token),
269
+ parentId: account.id,
270
+ token,
271
+ balance: new BigNumber(0),
272
+ spendableBalance: new BigNumber(0),
273
+ operationsCount: 0,
274
+ creationDate: new Date(),
275
+ operations: [],
276
+ pendingOperations: [],
277
+ starred: false,
278
+ swapHistory: [],
279
+ balanceHistoryCache: emptyHistoryCache,
280
+ }));
281
+ if (addition.length === 0) return account;
282
+ return { ...account, subAccounts: subAccounts.concat(addition) };
283
+ };
284
+
285
+ /**
286
+ * Patch account to enforce the removal of a blacklisted token
287
+ */
288
+ export const withoutToken = (account: Account, tokenId: string): Account => {
289
+ const { subAccounts } = account;
290
+ if (!subAccounts) return account;
291
+ const tokenAccount = subAccounts.find(
292
+ (a) => a.type === "TokenAccount" && a.token.id === tokenId
293
+ );
294
+ if (!tokenAccount) return account;
295
+ return {
296
+ ...account,
297
+ subAccounts: subAccounts.filter((sa) => sa.id !== tokenAccount.id),
298
+ };
299
+ };
300
+
301
+ /**
302
+ * Find matching pair of subAccount/parentAccount for a given token curency
303
+ * if no subAccount found will return parentAccount or null if no matches found
304
+ */
305
+ export const findTokenAccountByCurrency = (
306
+ tokenCurrency: TokenCurrency,
307
+ accounts: Account[]
308
+ ):
309
+ | {
310
+ account?: SubAccount;
311
+ parentAccount: Account;
312
+ }
313
+ | null
314
+ | undefined => {
315
+ const parentCurrency = tokenCurrency.parentCurrency;
316
+
317
+ for (const parentAccount of accounts) {
318
+ if (parentAccount.subAccounts && parentAccount.subAccounts.length > 0) {
319
+ for (const account of parentAccount.subAccounts) {
320
+ const c = getAccountCurrency(account);
321
+
322
+ if (c.id === tokenCurrency.id) {
323
+ // if token currency matches subAccount return couple account/parentAccount
324
+ return {
325
+ account,
326
+ parentAccount,
327
+ };
328
+ }
329
+ }
330
+ }
331
+
332
+ const parentC = getAccountCurrency(parentAccount);
333
+
334
+ if (parentC.id === parentCurrency.id) {
335
+ // if no token currency matches but parent matches return parentAccount
336
+ return {
337
+ parentAccount,
338
+ };
339
+ }
340
+ }
341
+
342
+ return null; // else return nothing
343
+ };
344
+
345
+ export function isAccount(account?: AccountLike): account is Account {
346
+ return account?.type === "Account";
347
+ }
348
+
349
+ export function isTokenAccount(account?: AccountLike): account is TokenAccount {
350
+ return account?.type === "TokenAccount";
351
+ }
352
+
353
+ export function isChildAccount(account?: AccountLike): account is ChildAccount {
354
+ return account?.type === "ChildAccount";
355
+ }
356
+
357
+ export function isSubAccount(account?: AccountLike): account is SubAccount {
358
+ return isTokenAccount(account) || isChildAccount(account);
359
+ }
360
+
361
+ export function getParentAccount(
362
+ account: AccountLike,
363
+ accounts: AccountLike[]
364
+ ): Account {
365
+ switch (account.type) {
366
+ case "Account":
367
+ return account;
368
+ case "TokenAccount":
369
+ case "ChildAccount": {
370
+ const parentAccount = accounts.find((a) => a.id == account.parentId);
371
+ if (!parentAccount) {
372
+ throw new Error(
373
+ "No 'parentAccount' account provided for token account"
374
+ );
375
+ }
376
+
377
+ return parentAccount as Account;
378
+ }
379
+ }
380
+ }
@@ -0,0 +1,10 @@
1
+ export * from "./accountId";
2
+ export * from "./accountName";
3
+ export * from "./addAccounts";
4
+ export * from "./balanceHistoryCache";
5
+ export * from "./groupOperations";
6
+ export * from "./helpers";
7
+ export * from "./ordering";
8
+ export * from "./pending";
9
+ export * from "./serialization";
10
+ export * from "./support";
@@ -0,0 +1,109 @@
1
+ import { BigNumber } from "bignumber.js";
2
+ import { flattenAccounts, getAccountCurrency } from "./helpers";
3
+ import type { FlattenAccountsOptions } from "./helpers";
4
+ import type { Account, AccountLike } from "@ledgerhq/types-live";
5
+ import type {
6
+ CryptoCurrency,
7
+ TokenCurrency,
8
+ } from "@ledgerhq/types-cryptoassets";
9
+
10
+ export type AccountComparator = (a: AccountLike, b: AccountLike) => number;
11
+
12
+ const sortNameLense = (a: AccountLike): string => {
13
+ switch (a.type) {
14
+ case "Account":
15
+ return a.name;
16
+
17
+ case "TokenAccount":
18
+ return a.token.name;
19
+
20
+ case "ChildAccount":
21
+ return a.currency.name;
22
+
23
+ default:
24
+ return "";
25
+ }
26
+ };
27
+
28
+ export const sortAccountsComparatorFromOrder = (
29
+ orderAccounts: string,
30
+ calculateCountervalue: (
31
+ currency: TokenCurrency | CryptoCurrency,
32
+ value: BigNumber
33
+ ) => BigNumber | null | undefined
34
+ ): AccountComparator => {
35
+ const [order, sort] = orderAccounts.split("|");
36
+ const ascValue = sort === "desc" ? -1 : 1;
37
+
38
+ if (order === "name") {
39
+ return (a, b) =>
40
+ ascValue *
41
+ sortNameLense(a).localeCompare(sortNameLense(b), undefined, {
42
+ numeric: true,
43
+ });
44
+ }
45
+
46
+ const cvCaches: Record<string, BigNumber> = {};
47
+
48
+ const lazyCalcCV = (a: AccountLike) => {
49
+ if (a.id in cvCaches) return cvCaches[a.id];
50
+ const v =
51
+ calculateCountervalue(getAccountCurrency(a), a.balance) ||
52
+ new BigNumber(-1);
53
+ cvCaches[a.id] = v;
54
+ return v;
55
+ };
56
+
57
+ return (a, b) => {
58
+ const diff = ascValue * lazyCalcCV(a).minus(lazyCalcCV(b)).toNumber();
59
+ if (diff === 0) return sortNameLense(a).localeCompare(sortNameLense(b));
60
+ return diff;
61
+ };
62
+ };
63
+ export const comparatorSortAccounts = <TA extends AccountLike>(
64
+ accounts: TA[],
65
+ comparator: AccountComparator
66
+ ): TA[] => {
67
+ const meta = accounts
68
+ .map((ta, index) => ({
69
+ account: ta,
70
+ index,
71
+ }))
72
+ .sort((a, b) => comparator(a.account, b.account));
73
+
74
+ if (meta.every((m, i) => m.index === i)) {
75
+ // account ordering is preserved, we keep the same array reference (this should happen most of the time)
76
+ return accounts;
77
+ }
78
+
79
+ // otherwise, need to reorder
80
+ return meta.map((m) => accounts[m.index]);
81
+ };
82
+ // flatten accounts and sort between them (used for grid mode)
83
+ export const flattenSortAccounts = (
84
+ accounts: Account[],
85
+ comparator: AccountComparator,
86
+ o?: FlattenAccountsOptions
87
+ ): AccountLike[] => {
88
+ return comparatorSortAccounts(flattenAccounts(accounts, o), comparator);
89
+ };
90
+ // sort top level accounts and the inner sub accounts if necessary (used for lists)
91
+ export const nestedSortAccounts = (
92
+ topAccounts: Account[],
93
+ comparator: AccountComparator
94
+ ): Account[] => {
95
+ let oneAccountHaveChanged = false;
96
+ // first of all we sort the inner token accounts
97
+ const accounts = topAccounts.map((a) => {
98
+ if (!a.subAccounts) return a;
99
+ const subAccounts = comparatorSortAccounts(a.subAccounts, comparator);
100
+ if (subAccounts === a.subAccounts) return a;
101
+ oneAccountHaveChanged = true;
102
+ return { ...a, subAccounts };
103
+ });
104
+ // then we sort again between them
105
+ return comparatorSortAccounts(
106
+ oneAccountHaveChanged ? accounts : topAccounts,
107
+ comparator
108
+ );
109
+ };
@@ -0,0 +1,66 @@
1
+ import type { Account, Operation, SubAccount } from "@ledgerhq/types-live";
2
+ import { getEnv } from "../env";
3
+ export function shouldRetainPendingOperation(
4
+ account: Account,
5
+ op: Operation
6
+ ): boolean {
7
+ // FIXME: valueOf to compare dates in typescript
8
+ const delay = new Date().valueOf() - op.date.valueOf();
9
+ const last = account.operations[0];
10
+
11
+ if (
12
+ last &&
13
+ last.transactionSequenceNumber &&
14
+ op.transactionSequenceNumber &&
15
+ op.transactionSequenceNumber <= last.transactionSequenceNumber
16
+ ) {
17
+ return false;
18
+ }
19
+
20
+ return delay < getEnv("OPERATION_OPTIMISTIC_RETENTION");
21
+ }
22
+
23
+ const appendPendingOp = (ops: Operation[], op: Operation) => {
24
+ const filtered: Operation[] = ops.filter(
25
+ (o) => o.transactionSequenceNumber !== op.transactionSequenceNumber
26
+ );
27
+ filtered.unshift(op);
28
+ return filtered;
29
+ };
30
+
31
+ export const addPendingOperation = (account: Account, operation: Operation) => {
32
+ const accountCopy = { ...account };
33
+ const { subOperations } = operation;
34
+ const { subAccounts } = account;
35
+
36
+ function addInSubAccount(subaccounts: SubAccount[], op: Operation) {
37
+ const acc = subaccounts.find((sub) => sub.id === op.accountId);
38
+
39
+ if (acc) {
40
+ const copy: SubAccount = { ...acc };
41
+ copy.pendingOperations = appendPendingOp(acc.pendingOperations, op);
42
+ subaccounts[subaccounts.indexOf(acc)] = copy;
43
+ }
44
+ }
45
+
46
+ if (subOperations && subAccounts) {
47
+ const taCopy: SubAccount[] = subAccounts.slice(0);
48
+ subOperations.forEach((op) => {
49
+ addInSubAccount(taCopy, op);
50
+ });
51
+ accountCopy.subAccounts = taCopy;
52
+ }
53
+
54
+ if (accountCopy.id === operation.accountId) {
55
+ accountCopy.pendingOperations = appendPendingOp(
56
+ accountCopy.pendingOperations,
57
+ operation
58
+ );
59
+ } else if (subAccounts) {
60
+ const taCopy: SubAccount[] = subAccounts.slice(0);
61
+ addInSubAccount(taCopy, operation);
62
+ accountCopy.subAccounts = taCopy;
63
+ }
64
+
65
+ return accountCopy;
66
+ };