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

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 +14 -0
  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 +24 -11
  36. package/lib/bridge/synchronisation.js.map +1 -1
  37. package/lib/bridge/utils.d.ts +3 -13
  38. package/lib/bridge/utils.d.ts.map +1 -1
  39. package/lib/bridge/utils.js +10 -119
  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 +24 -11
  176. package/lib-es/bridge/synchronisation.js.map +1 -1
  177. package/lib-es/bridge/utils.d.ts +3 -13
  178. package/lib-es/bridge/utils.d.ts.map +1 -1
  179. package/lib-es/bridge/utils.js +7 -113
  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 +4 -3
  287. package/src/api/index.integ.test.ts +401 -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 +22 -14
  303. package/src/bridge/utils.integration.test.ts +19 -248
  304. package/src/bridge/utils.ts +14 -160
  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 +200 -0
  319. package/src/logic/getBalance.ts +39 -0
  320. package/src/logic/getTokenFromAsset.test.ts +22 -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 +388 -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
@@ -2,10 +2,10 @@ import invariant from "invariant";
2
2
  import type { Account, Operation, OperationType, TokenAccount } from "@ledgerhq/types-live";
3
3
  import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
4
4
  import { findSubAccountById, isTokenAccount } from "@ledgerhq/coin-framework/account/helpers";
5
- import type { HederaOperationExtra, Transaction } from "../types";
6
- import { getEstimatedFees, safeParseAccountId } from "./utils";
7
- import { isTokenAssociateTransaction } from "../logic";
8
5
  import { HEDERA_OPERATION_TYPES } from "../constants";
6
+ import { estimateFees } from "../logic/estimateFees";
7
+ import { isTokenAssociateTransaction, safeParseAccountId } from "../logic/utils";
8
+ import type { HederaOperationExtra, Transaction } from "../types";
9
9
 
10
10
  const buildOptimisticTokenAssociateOperation = async ({
11
11
  account,
@@ -16,15 +16,14 @@ const buildOptimisticTokenAssociateOperation = async ({
16
16
  }): Promise<Operation> => {
17
17
  invariant(isTokenAssociateTransaction(transaction), "invalid transaction properties");
18
18
 
19
- const estimatedFee = await getEstimatedFees(account, HEDERA_OPERATION_TYPES.TokenAssociate);
20
- const value = transaction.amount;
19
+ const estimatedFee = await estimateFees(account.currency, HEDERA_OPERATION_TYPES.TokenAssociate);
21
20
  const type: OperationType = "ASSOCIATE_TOKEN";
22
21
 
23
22
  const operation: Operation = {
24
23
  id: encodeOperationId(account.id, "", type),
25
24
  hash: "",
26
25
  type,
27
- value,
26
+ value: estimatedFee,
28
27
  fee: estimatedFee,
29
28
  blockHash: null,
30
29
  blockHeight: null,
@@ -52,7 +51,7 @@ const buildOptimisticCoinOperation = async ({
52
51
  const estimatedFee =
53
52
  transactionType === "FEES"
54
53
  ? transaction.amount
55
- : await getEstimatedFees(account, HEDERA_OPERATION_TYPES.CryptoTransfer);
54
+ : await estimateFees(account.currency, HEDERA_OPERATION_TYPES.CryptoTransfer);
56
55
  const value = transaction.amount;
57
56
  const type: OperationType = transactionType ?? "OUT";
58
57
  const [_, recipientAddress] = safeParseAccountId(transaction.recipient);
@@ -70,7 +69,9 @@ const buildOptimisticCoinOperation = async ({
70
69
  recipients: [recipientWithoutChecksum],
71
70
  accountId: account.id,
72
71
  date: new Date(),
73
- extra: {},
72
+ extra: {
73
+ ...(!!transaction.memo && { memo: transaction.memo }),
74
+ },
74
75
  };
75
76
 
76
77
  return operation;
@@ -85,7 +86,7 @@ const buildOptimisticTokenOperation = async ({
85
86
  tokenAccount: TokenAccount;
86
87
  transaction: Transaction;
87
88
  }): Promise<Operation> => {
88
- const estimatedFee = await getEstimatedFees(account, HEDERA_OPERATION_TYPES.TokenTransfer);
89
+ const estimatedFee = await estimateFees(account.currency, HEDERA_OPERATION_TYPES.TokenTransfer);
89
90
  const value = transaction.amount;
90
91
  const type: OperationType = "OUT";
91
92
  const [_, recipientAddress] = safeParseAccountId(transaction.recipient);
@@ -116,7 +117,9 @@ const buildOptimisticTokenOperation = async ({
116
117
  recipients: [recipientWithoutChecksum],
117
118
  accountId: tokenAccount.id,
118
119
  date: new Date(),
119
- extra: {},
120
+ extra: {
121
+ ...(!!transaction.memo && { memo: transaction.memo }),
122
+ },
120
123
  },
121
124
  ],
122
125
  };
@@ -1,6 +1,7 @@
1
1
  import BigNumber from "bignumber.js";
2
2
  import { AccountBridge } from "@ledgerhq/types-live";
3
- import { Transaction } from "../types";
3
+ import { HEDERA_TRANSACTION_MODES } from "../constants";
4
+ import type { Transaction } from "../types";
4
5
 
5
6
  /**
6
7
  * Creates an empty transaction.
@@ -8,6 +9,7 @@ import { Transaction } from "../types";
8
9
  * @returns {Transaction}
9
10
  */
10
11
  export const createTransaction: AccountBridge<Transaction>["createTransaction"] = () => ({
12
+ mode: HEDERA_TRANSACTION_MODES.Send,
11
13
  family: "hedera",
12
14
  amount: new BigNumber(0),
13
15
  recipient: "",
@@ -2,9 +2,9 @@ import BigNumber from "bignumber.js";
2
2
  import type { AccountBridge } from "@ledgerhq/types-live";
3
3
  import { getMainAccount } from "@ledgerhq/coin-framework/account/index";
4
4
  import { isTokenAccount } from "@ledgerhq/coin-framework/account/helpers";
5
- import type { Transaction } from "../types";
6
- import { getEstimatedFees } from "./utils";
7
5
  import { HEDERA_OPERATION_TYPES } from "../constants";
6
+ import { estimateFees } from "../logic/estimateFees";
7
+ import type { Transaction } from "../types";
8
8
 
9
9
  export const estimateMaxSpendable: AccountBridge<Transaction>["estimateMaxSpendable"] = async ({
10
10
  account,
@@ -18,7 +18,10 @@ export const estimateMaxSpendable: AccountBridge<Transaction>["estimateMaxSpenda
18
18
  return Promise.resolve(balance);
19
19
  }
20
20
 
21
- const estimatedFees = await getEstimatedFees(mainAccount, HEDERA_OPERATION_TYPES.CryptoTransfer);
21
+ const estimatedFees = await estimateFees(
22
+ mainAccount.currency,
23
+ HEDERA_OPERATION_TYPES.CryptoTransfer,
24
+ );
22
25
  let maxSpendable = balance.minus(estimatedFees);
23
26
 
24
27
  // set max spendable to 0 if negative
@@ -5,18 +5,19 @@ import {
5
5
  AmountRequired,
6
6
  NotEnoughBalance,
7
7
  } from "@ledgerhq/errors";
8
+ import { HEDERA_TRANSACTION_MODES } from "../constants";
8
9
  import {
9
10
  HederaRecipientInvalidChecksum,
10
11
  HederaInsufficientFundsForAssociation,
11
12
  HederaRecipientTokenAssociationRequired,
12
13
  HederaRecipientTokenAssociationUnverified,
13
14
  } from "../errors";
15
+ import { getTransactionStatus } from "./getTransactionStatus";
16
+ import * as estimateFees from "../logic/estimateFees";
17
+ import * as logicUtils from "../logic/utils";
14
18
  import { getMockedAccount, getMockedTokenAccount } from "../test/fixtures/account.fixture";
15
19
  import { getMockedTokenCurrency } from "../test/fixtures/currency.fixture";
16
20
  import { getMockedTransaction } from "../test/fixtures/transaction.fixture";
17
- import { getTransactionStatus } from "./getTransactionStatus";
18
- import * as utils from "./utils";
19
- import { HEDERA_TRANSACTION_KINDS } from "../constants";
20
21
 
21
22
  describe("getTransactionStatus", () => {
22
23
  const mockedEstimatedFee = new BigNumber(1);
@@ -27,8 +28,8 @@ describe("getTransactionStatus", () => {
27
28
  beforeEach(() => {
28
29
  jest.clearAllMocks();
29
30
 
30
- jest.spyOn(utils, "getCurrencyToUSDRate").mockResolvedValueOnce(mockedUsdRate);
31
- jest.spyOn(utils, "getEstimatedFees").mockResolvedValueOnce(mockedEstimatedFee);
31
+ jest.spyOn(logicUtils, "getCurrencyToUSDRate").mockResolvedValueOnce(mockedUsdRate);
32
+ jest.spyOn(estimateFees, "estimateFees").mockResolvedValueOnce(mockedEstimatedFee);
32
33
  });
33
34
 
34
35
  test("coin transfer with valid recipient and sufficient balance completes successfully", async () => {
@@ -47,7 +48,7 @@ describe("getTransactionStatus", () => {
47
48
  });
48
49
 
49
50
  test("token transfer with valid recipient and sufficient balance completes successfully", async () => {
50
- jest.spyOn(utils, "checkAccountTokenAssociationStatus").mockResolvedValueOnce(true);
51
+ jest.spyOn(logicUtils, "checkAccountTokenAssociationStatus").mockResolvedValueOnce(true);
51
52
 
52
53
  const tokenCurrency = getMockedTokenCurrency();
53
54
  const tokenAccount = getMockedTokenAccount(tokenCurrency, { balance: new BigNumber(500) });
@@ -69,8 +70,8 @@ describe("getTransactionStatus", () => {
69
70
  const mockedTokenCurrency = getMockedTokenCurrency();
70
71
  const mockedAccount = getMockedAccount();
71
72
  const mockedTransaction = getMockedTransaction({
73
+ mode: HEDERA_TRANSACTION_MODES.TokenAssociate,
72
74
  properties: {
73
- name: HEDERA_TRANSACTION_KINDS.TokenAssociate.name,
74
75
  token: mockedTokenCurrency,
75
76
  },
76
77
  });
@@ -139,8 +140,8 @@ describe("getTransactionStatus", () => {
139
140
  const mockedTokenCurrency = getMockedTokenCurrency();
140
141
  const mockedAccount = getMockedAccount({ balance: new BigNumber(0) });
141
142
  const mockedTransaction = getMockedTransaction({
143
+ mode: HEDERA_TRANSACTION_MODES.TokenAssociate,
142
144
  properties: {
143
- name: HEDERA_TRANSACTION_KINDS.TokenAssociate.name,
144
145
  token: mockedTokenCurrency,
145
146
  },
146
147
  });
@@ -153,7 +154,7 @@ describe("getTransactionStatus", () => {
153
154
  });
154
155
 
155
156
  test("adds warning during token transfer if recipient has no token associated", async () => {
156
- jest.spyOn(utils, "checkAccountTokenAssociationStatus").mockResolvedValueOnce(false);
157
+ jest.spyOn(logicUtils, "checkAccountTokenAssociationStatus").mockResolvedValueOnce(false);
157
158
 
158
159
  const mockedTokenCurrency = getMockedTokenCurrency();
159
160
  const mockedTokenAccount = getMockedTokenAccount(mockedTokenCurrency);
@@ -172,7 +173,7 @@ describe("getTransactionStatus", () => {
172
173
 
173
174
  test("adds warning if token association status can't be verified", async () => {
174
175
  jest
175
- .spyOn(utils, "checkAccountTokenAssociationStatus")
176
+ .spyOn(logicUtils, "checkAccountTokenAssociationStatus")
176
177
  .mockRejectedValueOnce(new HederaRecipientTokenAssociationUnverified());
177
178
 
178
179
  const mockedTokenCurrency = getMockedTokenCurrency();
@@ -8,21 +8,22 @@ import {
8
8
  import type { Account, AccountBridge, TokenAccount } from "@ledgerhq/types-live";
9
9
  import { findSubAccountById, isTokenAccount } from "@ledgerhq/coin-framework/account";
10
10
  import { getEnv } from "@ledgerhq/live-env";
11
+ import { HEDERA_OPERATION_TYPES } from "../constants";
11
12
  import {
12
13
  HederaInsufficientFundsForAssociation,
13
14
  HederaRecipientTokenAssociationRequired,
14
15
  HederaRecipientTokenAssociationUnverified,
15
16
  } from "../errors";
16
- import { isTokenAssociateTransaction, isTokenAssociationRequired } from "../logic";
17
- import type { TokenAssociateProperties, Transaction, TransactionStatus } from "../types";
17
+ import { estimateFees } from "../logic/estimateFees";
18
18
  import {
19
- calculateAmount,
20
- checkAccountTokenAssociationStatus,
19
+ isTokenAssociateTransaction,
20
+ isTokenAssociationRequired,
21
21
  getCurrencyToUSDRate,
22
- getEstimatedFees,
22
+ checkAccountTokenAssociationStatus,
23
23
  safeParseAccountId,
24
- } from "./utils";
25
- import { HEDERA_OPERATION_TYPES } from "../constants";
24
+ } from "../logic/utils";
25
+ import type { Transaction, TransactionStatus, TransactionTokenAssociate } from "../types";
26
+ import { calculateAmount } from "./utils";
26
27
 
27
28
  type Errors = Record<string, Error>;
28
29
  type Warnings = Record<string, Error>;
@@ -49,14 +50,14 @@ function validateRecipient(account: Account, recipient: string): Error | null {
49
50
 
50
51
  async function handleTokenAssociateTransaction(
51
52
  account: Account,
52
- transaction: Extract<Required<Transaction>, { properties: TokenAssociateProperties }>,
53
+ transaction: TransactionTokenAssociate,
53
54
  ): Promise<TransactionStatus> {
54
55
  const errors: Errors = {};
55
56
  const warnings: Warnings = {};
56
57
 
57
58
  const [usdRate, estimatedFees] = await Promise.all([
58
59
  getCurrencyToUSDRate(account.currency),
59
- getEstimatedFees(account, HEDERA_OPERATION_TYPES.TokenAssociate),
60
+ estimateFees(account.currency, HEDERA_OPERATION_TYPES.TokenAssociate),
60
61
  ]);
61
62
 
62
63
  const amount = BigNumber(0);
@@ -93,7 +94,7 @@ async function handleTokenTransaction(
93
94
  const warnings: Warnings = {};
94
95
  const [calculatedAmount, estimatedFees] = await Promise.all([
95
96
  calculateAmount({ transaction, account }),
96
- getEstimatedFees(account, HEDERA_OPERATION_TYPES.TokenTransfer),
97
+ estimateFees(account.currency, HEDERA_OPERATION_TYPES.TokenTransfer),
97
98
  ]);
98
99
 
99
100
  const recipientError = validateRecipient(account, transaction.recipient);
@@ -146,7 +147,7 @@ async function handleCoinTransaction(
146
147
  const warnings: Warnings = {};
147
148
  const [calculatedAmount, estimatedFees] = await Promise.all([
148
149
  calculateAmount({ transaction, account }),
149
- getEstimatedFees(account, HEDERA_OPERATION_TYPES.CryptoTransfer),
150
+ estimateFees(account.currency, HEDERA_OPERATION_TYPES.CryptoTransfer),
150
151
  ]);
151
152
 
152
153
  const recipientError = validateRecipient(account, transaction.recipient);
@@ -1,9 +1,9 @@
1
1
  import BigNumber from "bignumber.js";
2
2
  import { createBridges } from ".";
3
- import { getEstimatedFees } from "./utils";
3
+ import { HEDERA_OPERATION_TYPES } from "../constants";
4
+ import { estimateFees } from "../logic/estimateFees";
4
5
  import { getMockedAccount, getMockedTokenAccount } from "../test/fixtures/account.fixture";
5
6
  import { getMockedTokenCurrency } from "../test/fixtures/currency.fixture";
6
- import { HEDERA_OPERATION_TYPES } from "../constants";
7
7
 
8
8
  describe("js-estimateMaxSpendable", () => {
9
9
  let bridge: ReturnType<typeof createBridges>;
@@ -14,7 +14,10 @@ describe("js-estimateMaxSpendable", () => {
14
14
  bridge = createBridges(signer);
15
15
 
16
16
  const mockedAccount = getMockedAccount();
17
- const crypto = await getEstimatedFees(mockedAccount, HEDERA_OPERATION_TYPES.CryptoTransfer);
17
+ const crypto = await estimateFees(
18
+ mockedAccount.currency,
19
+ HEDERA_OPERATION_TYPES.CryptoTransfer,
20
+ );
18
21
 
19
22
  estimatedFees = { crypto };
20
23
  });
@@ -1,28 +1,20 @@
1
1
  import BigNumber from "bignumber.js";
2
- import type { Account } from "@ledgerhq/types-live";
3
- import * as utils from "./utils";
2
+ import { estimateFees } from "../logic/estimateFees";
4
3
  import { prepareTransaction } from "./prepareTransaction";
5
- import { Transaction } from "../types";
4
+ import { getMockedAccount } from "../test/fixtures/account.fixture";
5
+ import { getMockedTransaction } from "../test/fixtures/transaction.fixture";
6
+ import * as utils from "./utils";
6
7
 
7
- describe("prepareTransaction", () => {
8
- const mockAccount = {
9
- id: "hedera:0:testAccount",
10
- freshAddress: "0.0.123",
11
- spendableBalance: new BigNumber(1000000),
12
- currency: { id: "hedera" },
13
- } as Account;
8
+ jest.mock("../logic/estimateFees");
14
9
 
15
- const mockTx = {
16
- family: "hedera",
17
- amount: new BigNumber(0),
18
- recipient: "",
19
- useAllAmount: false,
20
- } as Transaction;
10
+ describe("prepareTransaction", () => {
11
+ const mockAccount = getMockedAccount();
12
+ const mockTx = getMockedTransaction();
21
13
 
22
14
  beforeEach(() => {
23
15
  jest.clearAllMocks();
24
16
 
25
- jest.spyOn(utils, "getEstimatedFees").mockResolvedValue(Promise.resolve(new BigNumber(10)));
17
+ (estimateFees as jest.Mock).mockResolvedValue(Promise.resolve(new BigNumber(10)));
26
18
  jest
27
19
  .spyOn(utils, "calculateAmount")
28
20
  .mockResolvedValue(
@@ -1,9 +1,10 @@
1
1
  import { findSubAccountById, isTokenAccount } from "@ledgerhq/coin-framework/account/helpers";
2
2
  import type { AccountBridge } from "@ledgerhq/types-live";
3
- import type { Transaction } from "../types";
4
- import { calculateAmount, getEstimatedFees } from "./utils";
5
3
  import { HEDERA_OPERATION_TYPES } from "../constants";
6
- import { isTokenAssociateTransaction } from "../logic";
4
+ import { estimateFees } from "../logic/estimateFees";
5
+ import { isTokenAssociateTransaction } from "../logic/utils";
6
+ import type { Transaction } from "../types";
7
+ import { calculateAmount } from "./utils";
7
8
 
8
9
  /**
9
10
  * Gather any more neccessary information for a transaction,
@@ -33,7 +34,7 @@ export const prepareTransaction: AccountBridge<Transaction>["prepareTransaction"
33
34
  // i.e. if `useAllAmount` has been toggled to true, this is where it will update the transaction to reflect that action
34
35
  const [{ amount }, estimatedFees] = await Promise.all([
35
36
  calculateAmount({ account, transaction }),
36
- getEstimatedFees(account, operationType),
37
+ estimateFees(account.currency, operationType),
37
38
  ]);
38
39
 
39
40
  // `maxFee` must be explicitly set to avoid the @hashgraph/sdk default fallback
@@ -1,15 +1,15 @@
1
- import {
2
- getMockedAccount,
3
- getMockedAccountRaw,
4
- mockHederaResources,
5
- mockHederaResourcesRaw,
6
- } from "../test/fixtures/account.fixture";
7
1
  import {
8
2
  assignFromAccountRaw,
9
3
  assignToAccountRaw,
10
4
  fromHederaResourcesRaw,
11
5
  toHederaResourcesRaw,
12
6
  } from "./serialization";
7
+ import {
8
+ getMockedAccount,
9
+ getMockedAccountRaw,
10
+ mockHederaResources,
11
+ mockHederaResourcesRaw,
12
+ } from "../test/fixtures/account.fixture";
13
13
 
14
14
  const mockedAccount = getMockedAccount();
15
15
  const mockedAccountRaw = getMockedAccountRaw();
@@ -1,10 +1,19 @@
1
1
  import { Observable } from "rxjs";
2
- import { PublicKey } from "@hashgraph/sdk";
3
2
  import { Account, AccountBridge } from "@ledgerhq/types-live";
4
- import { buildOptimisticOperation } from "./buildOptimisticOperation";
5
- import { buildUnsignedTransaction } from "../api/network";
3
+ import { AssetInfo, FeeEstimation } from "@ledgerhq/coin-framework/api/types";
6
4
  import { SignerContext } from "@ledgerhq/coin-framework/signer";
7
- import { Transaction, HederaSigner } from "../types";
5
+ import { findSubAccountById, isTokenAccount } from "@ledgerhq/coin-framework/account/helpers";
6
+ import { buildOptimisticOperation } from "./buildOptimisticOperation";
7
+ import { HEDERA_TRANSACTION_MODES } from "../constants";
8
+ import { combine } from "../logic/combine";
9
+ import { craftTransaction } from "../logic/craftTransaction";
10
+ import {
11
+ serializeSignature,
12
+ serializeTransaction,
13
+ getHederaTransactionBodyBytes,
14
+ isTokenAssociateTransaction,
15
+ } from "../logic/utils";
16
+ import type { Transaction, HederaSigner } from "../types";
8
17
 
9
18
  export const buildSignOperation =
10
19
  (
@@ -18,18 +27,63 @@ export const buildSignOperation =
18
27
  type: "device-signature-requested",
19
28
  });
20
29
 
21
- const hederaTransaction = await buildUnsignedTransaction({
22
- account,
23
- transaction,
24
- });
30
+ let type: Transaction["mode"];
31
+ let asset: AssetInfo;
32
+ const accountAddress = account.freshAddress;
33
+ const accountPublicKey = account.seedIdentifier;
34
+ const subAccount = findSubAccountById(account, transaction.subAccountId || "");
35
+ const isTokenTransaction = isTokenAccount(subAccount);
36
+
37
+ if (isTokenAssociateTransaction(transaction)) {
38
+ type = HEDERA_TRANSACTION_MODES.TokenAssociate;
39
+ asset = {
40
+ type: transaction.properties.token.tokenType,
41
+ assetReference: transaction.properties.token.contractAddress,
42
+ };
43
+ } else if (isTokenTransaction) {
44
+ type = HEDERA_TRANSACTION_MODES.Send;
45
+ asset = {
46
+ type: subAccount.token.tokenType,
47
+ assetReference: subAccount.token.contractAddress,
48
+ assetOwner: accountAddress,
49
+ };
50
+ } else {
51
+ type = HEDERA_TRANSACTION_MODES.Send;
52
+ asset = {
53
+ type: "native",
54
+ };
55
+ }
56
+
57
+ const customFees: FeeEstimation | undefined = transaction.maxFee
58
+ ? { value: BigInt(transaction.maxFee.toString()) }
59
+ : undefined;
60
+
61
+ const signedTx = await signerContext(deviceId, async signer => {
62
+ const { tx } = await craftTransaction(
63
+ {
64
+ intentType: "transaction",
65
+ type,
66
+ asset,
67
+ amount: BigInt(transaction.amount.toString()),
68
+ sender: accountAddress,
69
+ recipient: transaction.recipient,
70
+ memo: {
71
+ kind: "text",
72
+ type: "string",
73
+ value: transaction.memo ?? "",
74
+ },
75
+ },
76
+ customFees,
77
+ );
25
78
 
26
- const accountPublicKey = PublicKey.fromString(account.seedIdentifier);
79
+ const txBodyBytes = getHederaTransactionBodyBytes(tx);
80
+ const signatureBytes = await signer.signTransaction(txBodyBytes);
27
81
 
28
- const res = await signerContext(deviceId, async signer => {
29
- await hederaTransaction.signWith(accountPublicKey, async bodyBytes => {
30
- return await signer.signTransaction(bodyBytes);
31
- });
32
- return hederaTransaction.toBytes();
82
+ return combine(
83
+ serializeTransaction(tx),
84
+ serializeSignature(signatureBytes),
85
+ accountPublicKey,
86
+ );
33
87
  });
34
88
 
35
89
  o.next({
@@ -45,8 +99,7 @@ export const buildSignOperation =
45
99
  type: "signed",
46
100
  signedOperation: {
47
101
  operation,
48
- // NOTE: this needs to match the inverse operation in js-broadcast
49
- signature: Buffer.from(res).toString("base64"),
102
+ signature: signedTx,
50
103
  },
51
104
  });
52
105
 
@@ -8,7 +8,9 @@ import type {
8
8
  } from "@ledgerhq/coin-framework/bridge/jsHelpers";
9
9
  import { mergeOps } from "@ledgerhq/coin-framework/bridge/jsHelpers";
10
10
  import { encodeAccountId } from "@ledgerhq/coin-framework/account";
11
- import { getAccount, getAccountsForPublicKey, getAccountTokens } from "../api/mirror";
11
+ import { listOperations } from "../logic/listOperations";
12
+ import { apiClient } from "../network/api";
13
+ import type { HederaAccount } from "../types";
12
14
  import {
13
15
  getSubAccounts,
14
16
  prepareOperations,
@@ -16,8 +18,6 @@ import {
16
18
  mergeSubAccounts,
17
19
  getSyncHash,
18
20
  } from "./utils";
19
- import type { HederaAccount } from "../types";
20
- import { getOperationsForAccount } from "../api/utils";
21
21
 
22
22
  export const getAccountShape: GetAccountShape<HederaAccount> = async (
23
23
  info,
@@ -39,8 +39,8 @@ export const getAccountShape: GetAccountShape<HederaAccount> = async (
39
39
  // tokens are fetched with separate requests to get "created_timestamp" for each token
40
40
  // based on this, ASSOCIATE_TOKEN operations can be connected with tokens
41
41
  const [mirrorAccount, mirrorTokens] = await Promise.all([
42
- getAccount(address),
43
- getAccountTokens(address),
42
+ apiClient.getAccount(address),
43
+ apiClient.getAccountTokens(address),
44
44
  ]);
45
45
 
46
46
  const accountBalance = new BigNumber(mirrorAccount.balance.balance);
@@ -53,15 +53,24 @@ export const getAccountShape: GetAccountShape<HederaAccount> = async (
53
53
  const pendingOperations = initialAccount?.pendingOperations ?? [];
54
54
 
55
55
  // grab latest operation's consensus timestamp for incremental sync
56
+ const latestOperation = oldOperations[0];
56
57
  const latestOperationTimestamp =
57
- !shouldSyncFromScratch && oldOperations[0]
58
- ? new BigNumber(Math.floor(oldOperations[0].date.getTime() / 1000))
58
+ !shouldSyncFromScratch && latestOperation
59
+ ? new BigNumber(Math.floor(latestOperation.date.getTime() / 1000))
59
60
  : null;
60
- const latestAccountOperations = await getOperationsForAccount(
61
- liveAccountId,
61
+ const latestAccountOperations = await listOperations({
62
+ currency,
62
63
  address,
63
- latestOperationTimestamp ? latestOperationTimestamp.toString() : null,
64
- );
64
+ mirrorTokens,
65
+ pagination: {
66
+ minHeight: 0,
67
+ ...(latestOperationTimestamp && { lastPagingToken: latestOperationTimestamp.toString() }),
68
+ },
69
+ fetchAllPages: true,
70
+ skipFeesForTokenOperations: false,
71
+ useEncodedHash: true,
72
+ useSyntheticBlocks: false,
73
+ });
65
74
 
66
75
  const newSubAccounts = await getSubAccounts(
67
76
  liveAccountId,
@@ -72,7 +81,6 @@ export const getAccountShape: GetAccountShape<HederaAccount> = async (
72
81
  const newOperations = prepareOperations(
73
82
  latestAccountOperations.coinOperations,
74
83
  latestAccountOperations.tokenOperations,
75
- mirrorTokens,
76
84
  );
77
85
  const enrichedNewOperations = applyPendingExtras(newOperations, pendingOperations);
78
86
  const operations = shouldSyncFromScratch
@@ -100,7 +108,7 @@ export const getAccountShape: GetAccountShape<HederaAccount> = async (
100
108
  };
101
109
 
102
110
  export const buildIterateResult: IterateResultBuilder = async ({ result: rootResult }) => {
103
- const mirrorAccounts = await getAccountsForPublicKey(rootResult.publicKey);
111
+ const mirrorAccounts = await apiClient.getAccountsForPublicKey(rootResult.publicKey);
104
112
  const addresses = mirrorAccounts.map(a => a.account);
105
113
 
106
114
  return async ({ currency, derivationMode, index }) => {
@@ -117,7 +125,7 @@ export const buildIterateResult: IterateResultBuilder = async ({ result: rootRes
117
125
  address: addresses[index],
118
126
  publicKey: addresses[index],
119
127
  path: freshAddressPath,
120
- } as Result)
128
+ } satisfies Result)
121
129
  : null;
122
130
  };
123
131
  };