@ledgerhq/coin-hedera 1.13.0-nightly.2 → 1.13.0-nightly.20251031023756

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 (386) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.unimportedrc.json +1 -1
  3. package/CHANGELOG.md +16 -22
  4. package/jest.config.js +1 -1
  5. package/jest.integ.config.js +8 -0
  6. package/lib/api/index.d.ts +4 -0
  7. package/lib/api/index.d.ts.map +1 -0
  8. package/lib/api/index.js +119 -0
  9. package/lib/api/index.js.map +1 -0
  10. package/lib/bridge/broadcast.d.ts +1 -1
  11. package/lib/bridge/broadcast.d.ts.map +1 -1
  12. package/lib/bridge/broadcast.js +6 -9
  13. package/lib/bridge/broadcast.js.map +1 -1
  14. package/lib/bridge/buildOptimisticOperation.d.ts.map +1 -1
  15. package/lib/bridge/buildOptimisticOperation.js +14 -11
  16. package/lib/bridge/buildOptimisticOperation.js.map +1 -1
  17. package/lib/bridge/createTransaction.d.ts +1 -1
  18. package/lib/bridge/createTransaction.d.ts.map +1 -1
  19. package/lib/bridge/createTransaction.js +2 -0
  20. package/lib/bridge/createTransaction.js.map +1 -1
  21. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -1
  22. package/lib/bridge/estimateMaxSpendable.js +2 -2
  23. package/lib/bridge/estimateMaxSpendable.js.map +1 -1
  24. package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
  25. package/lib/bridge/getTransactionStatus.js +11 -10
  26. package/lib/bridge/getTransactionStatus.js.map +1 -1
  27. package/lib/bridge/prepareTransaction.d.ts.map +1 -1
  28. package/lib/bridge/prepareTransaction.js +6 -5
  29. package/lib/bridge/prepareTransaction.js.map +1 -1
  30. package/lib/bridge/signOperation.d.ts +1 -1
  31. package/lib/bridge/signOperation.d.ts.map +1 -1
  32. package/lib/bridge/signOperation.js +53 -14
  33. package/lib/bridge/signOperation.js.map +1 -1
  34. package/lib/bridge/synchronisation.d.ts.map +1 -1
  35. package/lib/bridge/synchronisation.js +25 -12
  36. package/lib/bridge/synchronisation.js.map +1 -1
  37. package/lib/bridge/utils.d.ts +2 -14
  38. package/lib/bridge/utils.d.ts.map +1 -1
  39. package/lib/bridge/utils.js +26 -148
  40. package/lib/bridge/utils.js.map +1 -1
  41. package/lib/config.d.ts +8 -0
  42. package/lib/config.d.ts.map +1 -0
  43. package/lib/config.js +9 -0
  44. package/lib/config.js.map +1 -0
  45. package/lib/constants.d.ts +11 -8
  46. package/lib/constants.d.ts.map +1 -1
  47. package/lib/constants.js +17 -13
  48. package/lib/constants.js.map +1 -1
  49. package/lib/deviceTransactionConfig.d.ts +1 -1
  50. package/lib/deviceTransactionConfig.d.ts.map +1 -1
  51. package/lib/deviceTransactionConfig.js +3 -3
  52. package/lib/deviceTransactionConfig.js.map +1 -1
  53. package/lib/logic/broadcast.d.ts +3 -0
  54. package/lib/logic/broadcast.d.ts.map +1 -0
  55. package/lib/logic/broadcast.js +11 -0
  56. package/lib/logic/broadcast.js.map +1 -0
  57. package/lib/logic/combine.d.ts +2 -0
  58. package/lib/logic/combine.d.ts.map +1 -0
  59. package/lib/logic/combine.js +19 -0
  60. package/lib/logic/combine.js.map +1 -0
  61. package/lib/logic/craftTransaction.d.ts +8 -0
  62. package/lib/logic/craftTransaction.d.ts.map +1 -0
  63. package/lib/logic/craftTransaction.js +107 -0
  64. package/lib/logic/craftTransaction.js.map +1 -0
  65. package/lib/logic/estimateFees.d.ts +5 -0
  66. package/lib/logic/estimateFees.d.ts.map +1 -0
  67. package/lib/logic/estimateFees.js +25 -0
  68. package/lib/logic/estimateFees.js.map +1 -0
  69. package/lib/logic/getAssetFromToken.d.ts +4 -0
  70. package/lib/logic/getAssetFromToken.d.ts.map +1 -0
  71. package/lib/logic/getAssetFromToken.js +14 -0
  72. package/lib/logic/getAssetFromToken.js.map +1 -0
  73. package/lib/logic/getBalance.d.ts +4 -0
  74. package/lib/logic/getBalance.d.ts.map +1 -0
  75. package/lib/logic/getBalance.js +36 -0
  76. package/lib/logic/getBalance.js.map +1 -0
  77. package/lib/logic/getTokenFromAsset.d.ts +4 -0
  78. package/lib/logic/getTokenFromAsset.d.ts.map +1 -0
  79. package/lib/logic/getTokenFromAsset.js +13 -0
  80. package/lib/logic/getTokenFromAsset.js.map +1 -0
  81. package/lib/logic/index.d.ts +10 -0
  82. package/lib/logic/index.d.ts.map +1 -0
  83. package/lib/logic/index.js +22 -0
  84. package/lib/logic/index.js.map +1 -0
  85. package/lib/logic/lastBlock.d.ts +12 -0
  86. package/lib/logic/lastBlock.d.ts.map +1 -0
  87. package/lib/logic/lastBlock.js +25 -0
  88. package/lib/logic/lastBlock.js.map +1 -0
  89. package/lib/logic/listOperations.d.ts +19 -0
  90. package/lib/logic/listOperations.d.ts.map +1 -0
  91. package/lib/logic/listOperations.js +179 -0
  92. package/lib/logic/listOperations.js.map +1 -0
  93. package/lib/logic/utils.d.ts +55 -0
  94. package/lib/logic/utils.d.ts.map +1 -0
  95. package/lib/logic/utils.js +197 -0
  96. package/lib/logic/utils.js.map +1 -0
  97. package/lib/network/api.d.ts +24 -0
  98. package/lib/network/api.d.ts.map +1 -0
  99. package/lib/network/api.js +119 -0
  100. package/lib/network/api.js.map +1 -0
  101. package/lib/network/rpc.d.ts +12 -0
  102. package/lib/network/rpc.d.ts.map +1 -0
  103. package/lib/network/rpc.js +22 -0
  104. package/lib/network/rpc.js.map +1 -0
  105. package/lib/{api → network}/utils.d.ts +1 -5
  106. package/lib/network/utils.d.ts.map +1 -0
  107. package/lib/network/utils.js +52 -0
  108. package/lib/network/utils.js.map +1 -0
  109. package/lib/test/bridgeDatasetTest.d.ts.map +1 -1
  110. package/lib/test/bridgeDatasetTest.js +5 -1
  111. package/lib/test/bridgeDatasetTest.js.map +1 -1
  112. package/lib/test/fixtures/account.fixture.d.ts +17 -0
  113. package/lib/test/fixtures/account.fixture.d.ts.map +1 -1
  114. package/lib/test/fixtures/account.fixture.js +18 -1
  115. package/lib/test/fixtures/account.fixture.js.map +1 -1
  116. package/lib/test/fixtures/currency.fixture.d.ts.map +1 -1
  117. package/lib/test/fixtures/currency.fixture.js +1 -1
  118. package/lib/test/fixtures/currency.fixture.js.map +1 -1
  119. package/lib/test/fixtures/mirror.fixture.d.ts +1 -1
  120. package/lib/test/fixtures/mirror.fixture.d.ts.map +1 -1
  121. package/lib/test/fixtures/network.fixture.d.ts +3 -0
  122. package/lib/test/fixtures/network.fixture.d.ts.map +1 -0
  123. package/lib/test/fixtures/network.fixture.js +9 -0
  124. package/lib/test/fixtures/network.fixture.js.map +1 -0
  125. package/lib/test/fixtures/transaction.fixture.d.ts.map +1 -1
  126. package/lib/test/fixtures/transaction.fixture.js +3 -0
  127. package/lib/test/fixtures/transaction.fixture.js.map +1 -1
  128. package/lib/transaction.d.ts +1 -1
  129. package/lib/transaction.d.ts.map +1 -1
  130. package/lib/transaction.js +35 -6
  131. package/lib/transaction.js.map +1 -1
  132. package/lib/types/alpaca.d.ts +3 -0
  133. package/lib/types/alpaca.d.ts.map +1 -0
  134. package/lib/{api/types.js → types/alpaca.js} +1 -1
  135. package/lib/types/alpaca.js.map +1 -0
  136. package/lib/types/bridge.d.ts +28 -9
  137. package/lib/types/bridge.d.ts.map +1 -1
  138. package/lib/types/index.d.ts +2 -0
  139. package/lib/types/index.d.ts.map +1 -1
  140. package/lib/types/index.js +2 -0
  141. package/lib/types/index.js.map +1 -1
  142. package/lib/{api/types.d.ts → types/mirror.d.ts} +21 -2
  143. package/lib/types/mirror.d.ts.map +1 -0
  144. package/lib/types/mirror.js +3 -0
  145. package/lib/types/mirror.js.map +1 -0
  146. package/lib-es/api/index.d.ts +4 -0
  147. package/lib-es/api/index.d.ts.map +1 -0
  148. package/lib-es/api/index.js +112 -0
  149. package/lib-es/api/index.js.map +1 -0
  150. package/lib-es/bridge/broadcast.d.ts +1 -1
  151. package/lib-es/bridge/broadcast.d.ts.map +1 -1
  152. package/lib-es/bridge/broadcast.js +4 -7
  153. package/lib-es/bridge/broadcast.js.map +1 -1
  154. package/lib-es/bridge/buildOptimisticOperation.d.ts.map +1 -1
  155. package/lib-es/bridge/buildOptimisticOperation.js +12 -9
  156. package/lib-es/bridge/buildOptimisticOperation.js.map +1 -1
  157. package/lib-es/bridge/createTransaction.d.ts +1 -1
  158. package/lib-es/bridge/createTransaction.d.ts.map +1 -1
  159. package/lib-es/bridge/createTransaction.js +2 -0
  160. package/lib-es/bridge/createTransaction.js.map +1 -1
  161. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -1
  162. package/lib-es/bridge/estimateMaxSpendable.js +2 -2
  163. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -1
  164. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -1
  165. package/lib-es/bridge/getTransactionStatus.js +7 -6
  166. package/lib-es/bridge/getTransactionStatus.js.map +1 -1
  167. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
  168. package/lib-es/bridge/prepareTransaction.js +4 -3
  169. package/lib-es/bridge/prepareTransaction.js.map +1 -1
  170. package/lib-es/bridge/signOperation.d.ts +1 -1
  171. package/lib-es/bridge/signOperation.d.ts.map +1 -1
  172. package/lib-es/bridge/signOperation.js +53 -14
  173. package/lib-es/bridge/signOperation.js.map +1 -1
  174. package/lib-es/bridge/synchronisation.d.ts.map +1 -1
  175. package/lib-es/bridge/synchronisation.js +27 -14
  176. package/lib-es/bridge/synchronisation.js.map +1 -1
  177. package/lib-es/bridge/utils.d.ts +2 -14
  178. package/lib-es/bridge/utils.d.ts.map +1 -1
  179. package/lib-es/bridge/utils.js +22 -140
  180. package/lib-es/bridge/utils.js.map +1 -1
  181. package/lib-es/config.d.ts +8 -0
  182. package/lib-es/config.d.ts.map +1 -0
  183. package/lib-es/config.js +4 -0
  184. package/lib-es/config.js.map +1 -0
  185. package/lib-es/constants.d.ts +11 -8
  186. package/lib-es/constants.d.ts.map +1 -1
  187. package/lib-es/constants.js +13 -9
  188. package/lib-es/constants.js.map +1 -1
  189. package/lib-es/deviceTransactionConfig.d.ts +1 -1
  190. package/lib-es/deviceTransactionConfig.d.ts.map +1 -1
  191. package/lib-es/deviceTransactionConfig.js +1 -1
  192. package/lib-es/deviceTransactionConfig.js.map +1 -1
  193. package/lib-es/logic/broadcast.d.ts +3 -0
  194. package/lib-es/logic/broadcast.d.ts.map +1 -0
  195. package/lib-es/logic/broadcast.js +7 -0
  196. package/lib-es/logic/broadcast.js.map +1 -0
  197. package/lib-es/logic/combine.d.ts +2 -0
  198. package/lib-es/logic/combine.d.ts.map +1 -0
  199. package/lib-es/logic/combine.js +12 -0
  200. package/lib-es/logic/combine.js.map +1 -0
  201. package/lib-es/logic/craftTransaction.d.ts +8 -0
  202. package/lib-es/logic/craftTransaction.d.ts.map +1 -0
  203. package/lib-es/logic/craftTransaction.js +100 -0
  204. package/lib-es/logic/craftTransaction.js.map +1 -0
  205. package/lib-es/logic/estimateFees.d.ts +5 -0
  206. package/lib-es/logic/estimateFees.d.ts.map +1 -0
  207. package/lib-es/logic/estimateFees.js +18 -0
  208. package/lib-es/logic/estimateFees.js.map +1 -0
  209. package/lib-es/logic/getAssetFromToken.d.ts +4 -0
  210. package/lib-es/logic/getAssetFromToken.d.ts.map +1 -0
  211. package/lib-es/logic/getAssetFromToken.js +10 -0
  212. package/lib-es/logic/getAssetFromToken.js.map +1 -0
  213. package/lib-es/logic/getBalance.d.ts +4 -0
  214. package/lib-es/logic/getBalance.d.ts.map +1 -0
  215. package/lib-es/logic/getBalance.js +32 -0
  216. package/lib-es/logic/getBalance.js.map +1 -0
  217. package/lib-es/logic/getTokenFromAsset.d.ts +4 -0
  218. package/lib-es/logic/getTokenFromAsset.d.ts.map +1 -0
  219. package/lib-es/logic/getTokenFromAsset.js +9 -0
  220. package/lib-es/logic/getTokenFromAsset.js.map +1 -0
  221. package/lib-es/logic/index.d.ts +10 -0
  222. package/lib-es/logic/index.d.ts.map +1 -0
  223. package/lib-es/logic/index.js +10 -0
  224. package/lib-es/logic/index.js.map +1 -0
  225. package/lib-es/logic/lastBlock.d.ts +12 -0
  226. package/lib-es/logic/lastBlock.d.ts.map +1 -0
  227. package/lib-es/logic/lastBlock.js +21 -0
  228. package/lib-es/logic/lastBlock.js.map +1 -0
  229. package/lib-es/logic/listOperations.d.ts +19 -0
  230. package/lib-es/logic/listOperations.d.ts.map +1 -0
  231. package/lib-es/logic/listOperations.js +172 -0
  232. package/lib-es/logic/listOperations.js.map +1 -0
  233. package/lib-es/logic/utils.d.ts +55 -0
  234. package/lib-es/logic/utils.d.ts.map +1 -0
  235. package/lib-es/logic/utils.js +174 -0
  236. package/lib-es/logic/utils.js.map +1 -0
  237. package/lib-es/network/api.d.ts +24 -0
  238. package/lib-es/network/api.d.ts.map +1 -0
  239. package/lib-es/network/api.js +113 -0
  240. package/lib-es/network/api.js.map +1 -0
  241. package/lib-es/network/rpc.d.ts +12 -0
  242. package/lib-es/network/rpc.d.ts.map +1 -0
  243. package/lib-es/network/rpc.js +19 -0
  244. package/lib-es/network/rpc.js.map +1 -0
  245. package/lib-es/{api → network}/utils.d.ts +1 -5
  246. package/lib-es/network/utils.d.ts.map +1 -0
  247. package/lib-es/network/utils.js +45 -0
  248. package/lib-es/network/utils.js.map +1 -0
  249. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -1
  250. package/lib-es/test/bridgeDatasetTest.js +5 -1
  251. package/lib-es/test/bridgeDatasetTest.js.map +1 -1
  252. package/lib-es/test/fixtures/account.fixture.d.ts +17 -0
  253. package/lib-es/test/fixtures/account.fixture.d.ts.map +1 -1
  254. package/lib-es/test/fixtures/account.fixture.js +17 -0
  255. package/lib-es/test/fixtures/account.fixture.js.map +1 -1
  256. package/lib-es/test/fixtures/currency.fixture.d.ts.map +1 -1
  257. package/lib-es/test/fixtures/currency.fixture.js +1 -1
  258. package/lib-es/test/fixtures/currency.fixture.js.map +1 -1
  259. package/lib-es/test/fixtures/mirror.fixture.d.ts +1 -1
  260. package/lib-es/test/fixtures/mirror.fixture.d.ts.map +1 -1
  261. package/lib-es/test/fixtures/network.fixture.d.ts +3 -0
  262. package/lib-es/test/fixtures/network.fixture.d.ts.map +1 -0
  263. package/lib-es/test/fixtures/network.fixture.js +5 -0
  264. package/lib-es/test/fixtures/network.fixture.js.map +1 -0
  265. package/lib-es/test/fixtures/transaction.fixture.d.ts.map +1 -1
  266. package/lib-es/test/fixtures/transaction.fixture.js +3 -0
  267. package/lib-es/test/fixtures/transaction.fixture.js.map +1 -1
  268. package/lib-es/transaction.d.ts +1 -1
  269. package/lib-es/transaction.d.ts.map +1 -1
  270. package/lib-es/transaction.js +35 -6
  271. package/lib-es/transaction.js.map +1 -1
  272. package/lib-es/types/alpaca.d.ts +3 -0
  273. package/lib-es/types/alpaca.d.ts.map +1 -0
  274. package/lib-es/types/alpaca.js +2 -0
  275. package/lib-es/types/alpaca.js.map +1 -0
  276. package/lib-es/types/bridge.d.ts +28 -9
  277. package/lib-es/types/bridge.d.ts.map +1 -1
  278. package/lib-es/types/index.d.ts +2 -0
  279. package/lib-es/types/index.d.ts.map +1 -1
  280. package/lib-es/types/index.js +2 -0
  281. package/lib-es/types/index.js.map +1 -1
  282. package/lib-es/{api/types.d.ts → types/mirror.d.ts} +21 -2
  283. package/lib-es/types/mirror.d.ts.map +1 -0
  284. package/lib-es/types/mirror.js +2 -0
  285. package/lib-es/types/mirror.js.map +1 -0
  286. package/package.json +12 -13
  287. package/src/api/index.integ.test.ts +406 -0
  288. package/src/api/index.test.ts +30 -0
  289. package/src/api/index.ts +149 -0
  290. package/src/bridge/broadcast.ts +5 -10
  291. package/src/bridge/buildOptimisticOperation.integration.test.ts +8 -8
  292. package/src/bridge/buildOptimisticOperation.ts +13 -10
  293. package/src/bridge/createTransaction.ts +3 -1
  294. package/src/bridge/estimateMaxSpendable.ts +6 -3
  295. package/src/bridge/getTransactionStatus.test.ts +11 -10
  296. package/src/bridge/getTransactionStatus.ts +12 -11
  297. package/src/bridge/js-estimateMaxSpendable.integration.test.ts +6 -3
  298. package/src/bridge/prepareTransaction.test.ts +9 -17
  299. package/src/bridge/prepareTransaction.ts +5 -4
  300. package/src/bridge/serialization.test.ts +6 -6
  301. package/src/bridge/signOperation.ts +69 -16
  302. package/src/bridge/synchronisation.ts +26 -23
  303. package/src/bridge/utils.integration.test.ts +23 -269
  304. package/src/bridge/utils.ts +40 -207
  305. package/src/config.ts +7 -0
  306. package/src/constants.ts +15 -9
  307. package/src/deviceTransactionConfig.ts +2 -2
  308. package/src/logic/broadcast.test.ts +58 -0
  309. package/src/logic/broadcast.ts +8 -0
  310. package/src/logic/combine.test.ts +119 -0
  311. package/src/logic/combine.ts +14 -0
  312. package/src/logic/craftTransaction.test.ts +215 -0
  313. package/src/logic/craftTransaction.ts +175 -0
  314. package/src/logic/estimateFees.test.ts +99 -0
  315. package/src/logic/estimateFees.ts +28 -0
  316. package/src/logic/getAssetFromToken.test.ts +27 -0
  317. package/src/logic/getAssetFromToken.ts +12 -0
  318. package/src/logic/getBalance.test.ts +205 -0
  319. package/src/logic/getBalance.ts +42 -0
  320. package/src/logic/getTokenFromAsset.test.ts +33 -0
  321. package/src/logic/getTokenFromAsset.ts +17 -0
  322. package/src/logic/index.ts +9 -0
  323. package/src/logic/lastBlock.test.ts +23 -0
  324. package/src/logic/lastBlock.ts +23 -0
  325. package/src/logic/listOperations.test.ts +392 -0
  326. package/src/logic/listOperations.ts +247 -0
  327. package/src/logic/utils.test.ts +432 -0
  328. package/src/logic/utils.ts +255 -0
  329. package/src/{api/mirror.test.ts → network/api.test.ts} +81 -35
  330. package/src/network/api.ts +159 -0
  331. package/src/network/rpc.test.ts +68 -0
  332. package/src/network/rpc.ts +25 -0
  333. package/src/network/utils.test.ts +175 -0
  334. package/src/network/utils.ts +58 -0
  335. package/src/test/bridgeDatasetTest.ts +6 -2
  336. package/src/test/fixtures/account.fixture.ts +18 -0
  337. package/src/test/fixtures/currency.fixture.ts +1 -1
  338. package/src/test/fixtures/mirror.fixture.ts +1 -1
  339. package/src/test/fixtures/network.fixture.ts +6 -0
  340. package/src/test/fixtures/transaction.fixture.ts +5 -2
  341. package/src/transaction.ts +40 -9
  342. package/src/types/alpaca.ts +3 -0
  343. package/src/types/bridge.ts +36 -10
  344. package/src/types/index.ts +2 -0
  345. package/src/{api/types.ts → types/mirror.ts} +23 -1
  346. package/lib/api/mirror.d.ts +0 -6
  347. package/lib/api/mirror.d.ts.map +0 -1
  348. package/lib/api/mirror.js +0 -84
  349. package/lib/api/mirror.js.map +0 -1
  350. package/lib/api/network.d.ts +0 -11
  351. package/lib/api/network.d.ts.map +0 -1
  352. package/lib/api/network.js +0 -80
  353. package/lib/api/network.js.map +0 -1
  354. package/lib/api/types.d.ts.map +0 -1
  355. package/lib/api/types.js.map +0 -1
  356. package/lib/api/utils.d.ts.map +0 -1
  357. package/lib/api/utils.js +0 -132
  358. package/lib/api/utils.js.map +0 -1
  359. package/lib/logic.d.ts +0 -11
  360. package/lib/logic.d.ts.map +0 -1
  361. package/lib/logic.js +0 -37
  362. package/lib/logic.js.map +0 -1
  363. package/lib-es/api/mirror.d.ts +0 -6
  364. package/lib-es/api/mirror.d.ts.map +0 -1
  365. package/lib-es/api/mirror.js +0 -74
  366. package/lib-es/api/mirror.js.map +0 -1
  367. package/lib-es/api/network.d.ts +0 -11
  368. package/lib-es/api/network.d.ts.map +0 -1
  369. package/lib-es/api/network.js +0 -71
  370. package/lib-es/api/network.js.map +0 -1
  371. package/lib-es/api/types.d.ts.map +0 -1
  372. package/lib-es/api/types.js +0 -2
  373. package/lib-es/api/types.js.map +0 -1
  374. package/lib-es/api/utils.d.ts.map +0 -1
  375. package/lib-es/api/utils.js +0 -124
  376. package/lib-es/api/utils.js.map +0 -1
  377. package/lib-es/logic.d.ts +0 -11
  378. package/lib-es/logic.d.ts.map +0 -1
  379. package/lib-es/logic.js +0 -29
  380. package/lib-es/logic.js.map +0 -1
  381. package/src/api/mirror.ts +0 -91
  382. package/src/api/network.test.ts +0 -49
  383. package/src/api/network.ts +0 -125
  384. package/src/api/utils.ts +0 -150
  385. package/src/logic.test.ts +0 -152
  386. package/src/logic.ts +0 -66
@@ -1,50 +1,37 @@
1
1
  import BigNumber from "bignumber.js";
2
- import { InvalidAddress } from "@ledgerhq/errors";
3
- import cvsApi from "@ledgerhq/live-countervalues/api/index";
4
2
  import { encodeTokenAccountId } from "@ledgerhq/coin-framework/account";
3
+ import { setCryptoAssetsStore } from "@ledgerhq/coin-framework/crypto-assets/index";
4
+ import { legacyCryptoAssetsStore } from "@ledgerhq/cryptoassets/legacy/legacy-store";
5
+ import { HEDERA_OPERATION_TYPES, HEDERA_TRANSACTION_MODES } from "../constants";
6
+ import { estimateFees } from "../logic/estimateFees";
5
7
  import { getMockedAccount, getMockedTokenAccount } from "../test/fixtures/account.fixture";
8
+ import { getMockedTokenCurrency, getTokenCurrencyFromCAL } from "../test/fixtures/currency.fixture";
6
9
  import { getMockedTransaction } from "../test/fixtures/transaction.fixture";
10
+ import { getMockedOperation } from "../test/fixtures/operation.fixture";
11
+ import { getMockedMirrorToken } from "../test/fixtures/mirror.fixture";
12
+ import type { HederaOperationExtra } from "../types";
7
13
  import {
8
14
  applyPendingExtras,
9
15
  calculateAmount,
10
- checkAccountTokenAssociationStatus,
11
- getCurrencyToUSDRate,
12
- getEstimatedFees,
13
16
  getSubAccounts,
14
- getSyncHash,
15
17
  mergeSubAccounts,
16
- safeParseAccountId,
17
18
  patchOperationWithExtra,
18
19
  prepareOperations,
19
20
  } from "./utils";
20
- import {
21
- getMockedCurrency,
22
- getMockedTokenCurrency,
23
- getTokenCurrencyFromCAL,
24
- } from "../test/fixtures/currency.fixture";
25
- import { getMockedOperation } from "../test/fixtures/operation.fixture";
26
- import { HederaOperationExtra } from "../types";
27
- import { getAccount } from "../api/mirror";
28
- import { HederaRecipientInvalidChecksum } from "../errors";
29
- import { isValidExtra } from "../logic";
30
- import { getMockedMirrorToken } from "../test/fixtures/mirror.fixture";
31
- import { HEDERA_OPERATION_TYPES, HEDERA_TRANSACTION_KINDS } from "../constants";
32
-
33
- jest.mock("../api/mirror");
34
- jest.mock("@ledgerhq/live-countervalues/api/index");
35
-
36
- const mockedFetchLatest = cvsApi.fetchLatest as jest.MockedFunction<typeof cvsApi.fetchLatest>;
37
- const mockedGetAccount = getAccount as jest.MockedFunction<typeof getAccount>;
38
21
 
39
22
  describe("utils", () => {
23
+ beforeAll(() => {
24
+ setCryptoAssetsStore(legacyCryptoAssetsStore);
25
+ });
26
+
40
27
  describe("calculateAmount", () => {
41
28
  let estimatedFees: Record<"crypto" | "associate", BigNumber>;
42
29
 
43
30
  beforeAll(async () => {
44
31
  const mockedAccount = getMockedAccount();
45
32
  const [crypto, associate] = await Promise.all([
46
- getEstimatedFees(mockedAccount, HEDERA_OPERATION_TYPES.CryptoTransfer),
47
- getEstimatedFees(mockedAccount, HEDERA_OPERATION_TYPES.TokenAssociate),
33
+ estimateFees(mockedAccount.currency, HEDERA_OPERATION_TYPES.CryptoTransfer),
34
+ estimateFees(mockedAccount.currency, HEDERA_OPERATION_TYPES.TokenAssociate),
48
35
  ]);
49
36
 
50
37
  estimatedFees = { crypto, associate };
@@ -131,8 +118,8 @@ describe("utils", () => {
131
118
  const mockedTransaction = getMockedTransaction({
132
119
  useAllAmount: false,
133
120
  amount: new BigNumber(1),
121
+ mode: HEDERA_TRANSACTION_MODES.TokenAssociate,
134
122
  properties: {
135
- name: HEDERA_TRANSACTION_KINDS.TokenAssociate.name,
136
123
  token: mockedTokenCurrency,
137
124
  },
138
125
  });
@@ -149,101 +136,6 @@ describe("utils", () => {
149
136
  });
150
137
  });
151
138
 
152
- describe("getEstimatedFees", () => {
153
- const mockedAccount = getMockedAccount();
154
-
155
- beforeEach(() => {
156
- jest.clearAllMocks();
157
- // reset LRU cache to make sure all tests receive correct mocks from mockedFetchLatest
158
- getCurrencyToUSDRate.clear(mockedAccount.currency.ticker);
159
- });
160
-
161
- test("returns estimated fee based on USD rate for CryptoTransfer", async () => {
162
- // 1 HBAR = 1 USD
163
- const usdRate = 1;
164
- mockedFetchLatest.mockResolvedValueOnce([usdRate]);
165
-
166
- const result = await getEstimatedFees(mockedAccount, HEDERA_OPERATION_TYPES.CryptoTransfer);
167
-
168
- const baseFeeTinybar = 0.0001 * 10 ** 8;
169
- const expectedFee = new BigNumber(baseFeeTinybar)
170
- .div(usdRate)
171
- .integerValue(BigNumber.ROUND_CEIL)
172
- .multipliedBy(2); // safety rate
173
-
174
- expect(result.toFixed()).toBe(expectedFee.toFixed());
175
- });
176
-
177
- test("returns estimated fee based on USD rate for TokenTransfer", async () => {
178
- // 1 HBAR = 0.5 USD
179
- const usdRate = 0.5;
180
- mockedFetchLatest.mockResolvedValueOnce([usdRate]);
181
-
182
- const result = await getEstimatedFees(mockedAccount, HEDERA_OPERATION_TYPES.TokenTransfer);
183
-
184
- const baseFeeTinybar = 0.001 * 10 ** 8;
185
- const expectedFee = new BigNumber(baseFeeTinybar)
186
- .div(usdRate)
187
- .integerValue(BigNumber.ROUND_CEIL)
188
- .multipliedBy(2);
189
-
190
- expect(result.toFixed()).toBe(expectedFee.toFixed());
191
- });
192
-
193
- test("returns estimated fee based on USD rate for TokenAssociate", async () => {
194
- // 1 HBAR = 2 USD
195
- const usdRate = 2;
196
- mockedFetchLatest.mockResolvedValueOnce([usdRate]);
197
-
198
- const result = await getEstimatedFees(mockedAccount, HEDERA_OPERATION_TYPES.TokenAssociate);
199
-
200
- const baseFeeTinybar = 0.05 * 10 ** 8;
201
- const expectedFee = new BigNumber(baseFeeTinybar)
202
- .div(usdRate)
203
- .integerValue(BigNumber.ROUND_CEIL)
204
- .multipliedBy(2);
205
-
206
- expect(result.toFixed()).toBe(expectedFee.toFixed());
207
- });
208
-
209
- test("falls back to default estimate when cvs api returns null", async () => {
210
- const usdRate = null;
211
- mockedFetchLatest.mockResolvedValueOnce([usdRate]);
212
-
213
- const result = await getEstimatedFees(mockedAccount, HEDERA_OPERATION_TYPES.CryptoTransfer);
214
-
215
- const expected = new BigNumber("150200").multipliedBy(2);
216
- expect(result.toFixed()).toBe(expected.toFixed());
217
- });
218
-
219
- test("falls back to default estimate on cvs api failure", async () => {
220
- mockedFetchLatest.mockRejectedValueOnce(new Error("Network error"));
221
-
222
- const result = await getEstimatedFees(mockedAccount, HEDERA_OPERATION_TYPES.CryptoTransfer);
223
-
224
- const expected = new BigNumber("150200").multipliedBy(2);
225
- expect(result.toFixed()).toBe(expected.toFixed());
226
- });
227
- });
228
-
229
- describe("getSyncHash", () => {
230
- const mockedCurrency = getMockedCurrency();
231
-
232
- test("returns a consistent hash for same input", () => {
233
- const hash1 = getSyncHash(mockedCurrency, []);
234
- const hash2 = getSyncHash(mockedCurrency, []);
235
-
236
- expect(hash2).toBe(hash1);
237
- });
238
-
239
- test("produces different hash if blacklistedTokenIds changes", () => {
240
- const hash1 = getSyncHash(mockedCurrency, []);
241
- const hash2 = getSyncHash(mockedCurrency, ["random_token"]);
242
-
243
- expect(hash1).not.toBe(hash2);
244
- });
245
- });
246
-
247
139
  describe("getSubAccounts", () => {
248
140
  test("returns sub account based on operations and mirror tokens", async () => {
249
141
  const firstTokenCurrencyFromCAL = getTokenCurrencyFromCAL(0);
@@ -307,14 +199,14 @@ describe("utils", () => {
307
199
  expect(result).toHaveLength(1);
308
200
  expect(result[0].token).toEqual(tokenCurrencyFromCAL);
309
201
  expect(result[0].operations).toHaveLength(0);
310
- expect(result[0].balance.toString()).toBe("42");
202
+ expect(result[0].balance).toEqual(new BigNumber(42));
311
203
  });
312
204
  });
313
205
 
314
206
  describe("prepareOperations", () => {
315
207
  const tokenCurrencyFromCAL = getTokenCurrencyFromCAL(0);
316
208
 
317
- test("links token operation to existing coin operation with matching hash", () => {
209
+ test("links token operation to existing coin operation with matching hash", async () => {
318
210
  const mockedTokenAccount = getMockedTokenAccount(tokenCurrencyFromCAL);
319
211
  const mockedCoinOperation = getMockedOperation({ hash: "shared" });
320
212
  const mockedTokenOperation = getMockedOperation({
@@ -322,20 +214,20 @@ describe("utils", () => {
322
214
  accountId: encodeTokenAccountId(mockedTokenAccount.parentId, tokenCurrencyFromCAL),
323
215
  });
324
216
 
325
- const result = prepareOperations([mockedCoinOperation], [mockedTokenOperation], []);
217
+ const result = await prepareOperations([mockedCoinOperation], [mockedTokenOperation]);
326
218
 
327
219
  expect(result).toHaveLength(1);
328
220
  expect(result[0].subOperations).toEqual([mockedTokenOperation]);
329
221
  });
330
222
 
331
- test("creates NONE coin operation as parent if no coin op with matching hash exists", () => {
223
+ test("creates NONE coin operation as parent if no coin op with matching hash exists", async () => {
332
224
  const mockedTokenAccount = getMockedTokenAccount(tokenCurrencyFromCAL);
333
225
  const mockedOrphanTokenOperation = getMockedOperation({
334
226
  hash: "unknown-hash",
335
227
  accountId: encodeTokenAccountId(mockedTokenAccount.parentId, tokenCurrencyFromCAL),
336
228
  });
337
229
 
338
- const result = prepareOperations([], [mockedOrphanTokenOperation], []);
230
+ const result = await prepareOperations([], [mockedOrphanTokenOperation]);
339
231
  const noneOp = result.find(op => op.type === "NONE");
340
232
 
341
233
  expect(typeof noneOp).toBe("object");
@@ -343,42 +235,6 @@ describe("utils", () => {
343
235
  expect(noneOp?.subOperations?.[0]).toEqual(mockedOrphanTokenOperation);
344
236
  expect(noneOp?.hash).toBe("unknown-hash");
345
237
  });
346
-
347
- test("adds associatedTokenId to ASSOCIATE_TOKEN coin operation based on consensusTimestamp", () => {
348
- const mockedCoinOperation = getMockedOperation({
349
- type: "ASSOCIATE_TOKEN",
350
- extra: { consensusTimestamp: "123" },
351
- });
352
- const mockedMirrorToken = getMockedMirrorToken({
353
- token_id: "0.0.1001",
354
- created_timestamp: "123",
355
- });
356
-
357
- const result = prepareOperations([mockedCoinOperation], [], [mockedMirrorToken]);
358
- const extra = isValidExtra(result[0].extra) ? result[0].extra : null;
359
-
360
- expect(typeof extra).toBe("object");
361
- expect(extra).not.toBeNull();
362
- expect(extra?.associatedTokenId).toBe("0.0.1001");
363
- });
364
-
365
- test("ignores enrichment of ASSOCIATE_TOKEN operation if consensusTimestamp mismatches", () => {
366
- const mockedCoinOperation = getMockedOperation({
367
- type: "ASSOCIATE_TOKEN",
368
- extra: { consensusTimestamp: "123" },
369
- });
370
- const mockedMirrorToken = getMockedMirrorToken({
371
- token_id: "0.0.1001",
372
- created_timestamp: "999",
373
- });
374
-
375
- const result = prepareOperations([mockedCoinOperation], [], [mockedMirrorToken]);
376
- const extra = isValidExtra(result[0].extra) ? result[0].extra : null;
377
-
378
- expect(typeof extra).toBe("object");
379
- expect(extra).not.toBeNull();
380
- expect(extra?.associatedTokenId).toBeUndefined();
381
- });
382
238
  });
383
239
 
384
240
  describe("mergeSubAccounts", () => {
@@ -450,6 +306,7 @@ describe("utils", () => {
450
306
 
451
307
  const result = applyPendingExtras([mockedOperation1], [mockedPendingOperation1]);
452
308
 
309
+ expect(result).toHaveLength(1);
453
310
  expect(result[0].extra).toEqual({
454
311
  ...mockedOperation1.extra,
455
312
  ...mockedPendingOperation1.extra,
@@ -464,6 +321,7 @@ describe("utils", () => {
464
321
  const mockedPendingOperation = getMockedOperation({ hash: "op1", extra: pendingExtra });
465
322
 
466
323
  const result = applyPendingExtras([mockedOperation], [mockedPendingOperation]);
324
+ expect(result).toHaveLength(1);
467
325
  expect(result[0].extra).toEqual(mockedOperation.extra);
468
326
  });
469
327
  });
@@ -484,112 +342,8 @@ describe("utils", () => {
484
342
  const patched = patchOperationWithExtra(mockedOperation, extra);
485
343
 
486
344
  expect(patched.extra).toEqual(extra);
345
+ expect(patched.subOperations).toHaveLength(1);
487
346
  expect(patched.subOperations?.[0].extra).toEqual(extra);
488
347
  });
489
348
  });
490
-
491
- describe("checkAccountTokenAssociationStatus", () => {
492
- const accountId = "0.0.1234";
493
- const tokenId = "0.0.5678";
494
-
495
- beforeEach(() => {
496
- jest.clearAllMocks();
497
- // reset LRU cache to make sure all tests receive correct mocks from mockedGetAccount
498
- checkAccountTokenAssociationStatus.clear(`${accountId}-${tokenId}`);
499
- });
500
-
501
- test("returns true if max_automatic_token_associations === -1", async () => {
502
- mockedGetAccount.mockResolvedValueOnce({
503
- account: accountId,
504
- max_automatic_token_associations: -1,
505
- balance: {
506
- balance: 0,
507
- timestamp: "",
508
- tokens: [],
509
- },
510
- });
511
-
512
- const result = await checkAccountTokenAssociationStatus(accountId, tokenId);
513
- expect(result).toBe(true);
514
- });
515
-
516
- test("returns true if token is already associated", async () => {
517
- mockedGetAccount.mockResolvedValueOnce({
518
- account: accountId,
519
- max_automatic_token_associations: 0,
520
- balance: {
521
- balance: 1,
522
- timestamp: "",
523
- tokens: [{ token_id: tokenId, balance: 1 }],
524
- },
525
- });
526
-
527
- const result = await checkAccountTokenAssociationStatus(accountId, tokenId);
528
- expect(result).toBe(true);
529
- });
530
-
531
- test("returns false if token is not associated", async () => {
532
- mockedGetAccount.mockResolvedValueOnce({
533
- account: accountId,
534
- max_automatic_token_associations: 0,
535
- balance: {
536
- balance: 1,
537
- timestamp: "",
538
- tokens: [{ token_id: "0.0.9999", balance: 1 }],
539
- },
540
- });
541
-
542
- const result = await checkAccountTokenAssociationStatus(accountId, tokenId);
543
- expect(result).toBe(false);
544
- });
545
-
546
- test("supports addresses with checksum", async () => {
547
- const addressWithChecksum = "0.0.9124531-xrxlv";
548
-
549
- mockedGetAccount.mockResolvedValueOnce({
550
- account: accountId,
551
- max_automatic_token_associations: 0,
552
- balance: {
553
- balance: 1,
554
- timestamp: "",
555
- tokens: [{ token_id: "0.0.9999", balance: 1 }],
556
- },
557
- });
558
-
559
- await checkAccountTokenAssociationStatus(addressWithChecksum, tokenId);
560
- expect(mockedGetAccount).toHaveBeenCalledWith("0.0.9124531");
561
- });
562
- });
563
-
564
- describe("safeParseAccountId", () => {
565
- test("returns account id and no checksum for valid address without checksum", () => {
566
- const [error, result] = safeParseAccountId("0.0.9124531");
567
-
568
- expect(error).toBeNull();
569
- expect(result?.accountId).toBe("0.0.9124531");
570
- expect(result?.checksum).toBeNull();
571
- });
572
-
573
- test("returns account id and checksum for valid address with correct checksum", () => {
574
- const [error, result] = safeParseAccountId("0.0.9124531-xrxlv");
575
-
576
- expect(error).toBeNull();
577
- expect(result?.accountId).toBe("0.0.9124531");
578
- expect(result?.checksum).toBe("xrxlv");
579
- });
580
-
581
- test("returns error for valid address with incorrect checksum", () => {
582
- const [error, accountId] = safeParseAccountId("0.0.9124531-invld");
583
-
584
- expect(error).toBeInstanceOf(HederaRecipientInvalidChecksum);
585
- expect(accountId).toBeNull();
586
- });
587
-
588
- test("returns error for invalid address format", () => {
589
- const [error, accountId] = safeParseAccountId("not-a-valid-address");
590
-
591
- expect(error).toBeInstanceOf(InvalidAddress);
592
- expect(accountId).toBeNull();
593
- });
594
- });
595
349
  });