@ledgerhq/coin-evm 0.3.0 → 0.4.0-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 (582) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/jest.config.js +4 -0
  3. package/lib/__tests__/fixtures/common.fixtures.d.ts +9 -0
  4. package/lib/__tests__/fixtures/common.fixtures.d.ts.map +1 -0
  5. package/lib/{testUtils.js → __tests__/fixtures/common.fixtures.js} +40 -9
  6. package/lib/__tests__/fixtures/common.fixtures.js.map +1 -0
  7. package/lib/__tests__/fixtures/etherscan.fixtures.d.ts +86 -0
  8. package/lib/__tests__/fixtures/etherscan.fixtures.d.ts.map +1 -0
  9. package/lib/__tests__/fixtures/etherscan.fixtures.js +267 -0
  10. package/lib/__tests__/fixtures/etherscan.fixtures.js.map +1 -0
  11. package/lib/__tests__/fixtures/prepareTransaction.fixtures.d.ts +10 -0
  12. package/lib/__tests__/fixtures/prepareTransaction.fixtures.d.ts.map +1 -0
  13. package/lib/__tests__/fixtures/prepareTransaction.fixtures.js +69 -0
  14. package/lib/__tests__/fixtures/prepareTransaction.fixtures.js.map +1 -0
  15. package/lib/__tests__/fixtures/synchronization.fixtures.d.ts +44 -0
  16. package/lib/__tests__/fixtures/synchronization.fixtures.d.ts.map +1 -0
  17. package/lib/__tests__/fixtures/synchronization.fixtures.js +219 -0
  18. package/lib/__tests__/fixtures/synchronization.fixtures.js.map +1 -0
  19. package/lib/__tests__/fixtures/transaction.fixtures.d.ts +47 -0
  20. package/lib/__tests__/fixtures/transaction.fixtures.d.ts.map +1 -0
  21. package/lib/__tests__/fixtures/transaction.fixtures.js +182 -0
  22. package/lib/__tests__/fixtures/transaction.fixtures.js.map +1 -0
  23. package/lib/__tests__/integration/bridge.integration.test.d.ts +7 -0
  24. package/lib/__tests__/integration/bridge.integration.test.d.ts.map +1 -0
  25. package/lib/__tests__/integration/bridge.integration.test.js +74 -0
  26. package/lib/__tests__/integration/bridge.integration.test.js.map +1 -0
  27. package/lib/__tests__/unit/adapters.unit.test.d.ts.map +1 -0
  28. package/lib/__tests__/unit/adapters.unit.test.js +989 -0
  29. package/lib/__tests__/unit/adapters.unit.test.js.map +1 -0
  30. package/lib/__tests__/unit/api/explorer/etherscan.unit.test.d.ts +2 -0
  31. package/lib/__tests__/unit/api/explorer/etherscan.unit.test.d.ts.map +1 -0
  32. package/lib/__tests__/unit/api/explorer/etherscan.unit.test.js +430 -0
  33. package/lib/__tests__/unit/api/explorer/etherscan.unit.test.js.map +1 -0
  34. package/lib/__tests__/unit/api/explorer/index.unit.test.d.ts +2 -0
  35. package/lib/__tests__/unit/api/explorer/index.unit.test.d.ts.map +1 -0
  36. package/lib/__tests__/unit/api/explorer/index.unit.test.js +49 -0
  37. package/lib/__tests__/unit/api/explorer/index.unit.test.js.map +1 -0
  38. package/lib/__tests__/unit/api/gasTracker/index.unit.test.d.ts +2 -0
  39. package/lib/__tests__/unit/api/gasTracker/index.unit.test.d.ts.map +1 -0
  40. package/lib/__tests__/{gasTracker → unit/api/gasTracker}/index.unit.test.js +3 -3
  41. package/lib/__tests__/unit/api/gasTracker/index.unit.test.js.map +1 -0
  42. package/lib/__tests__/unit/api/gasTracker/ledger.unit.test.d.ts.map +1 -0
  43. package/lib/__tests__/{gasTracker → unit/api/gasTracker}/ledger.unit.test.js +2 -2
  44. package/lib/__tests__/unit/api/gasTracker/ledger.unit.test.js.map +1 -0
  45. package/lib/__tests__/unit/api/rpc/rpc.unit.test.d.ts.map +1 -0
  46. package/lib/__tests__/{rpc.unit.test.js → unit/api/rpc/rpc.unit.test.js} +14 -14
  47. package/lib/__tests__/unit/api/rpc/rpc.unit.test.js.map +1 -0
  48. package/lib/__tests__/unit/broadcast.unit.test.d.ts.map +1 -0
  49. package/lib/__tests__/unit/broadcast.unit.test.js +335 -0
  50. package/lib/__tests__/unit/broadcast.unit.test.js.map +1 -0
  51. package/lib/__tests__/unit/buildOptimisticOperation.unit.test.d.ts.map +1 -0
  52. package/lib/__tests__/{buildOptimisticOperation.unit.test.js → unit/buildOptimisticOperation.unit.test.js} +132 -6
  53. package/lib/__tests__/unit/buildOptimisticOperation.unit.test.js.map +1 -0
  54. package/lib/__tests__/unit/createTransaction.unit.test.d.ts.map +1 -0
  55. package/lib/__tests__/{createTransaction.unit.test.js → unit/createTransaction.unit.test.js} +5 -5
  56. package/lib/__tests__/unit/createTransaction.unit.test.js.map +1 -0
  57. package/lib/__tests__/unit/deviceTransactionConfig.unit.test.d.ts.map +1 -0
  58. package/lib/__tests__/{deviceTransactionConfig.unit.test.js → unit/deviceTransactionConfig.unit.test.js} +123 -6
  59. package/lib/__tests__/unit/deviceTransactionConfig.unit.test.js.map +1 -0
  60. package/lib/__tests__/unit/estimateMaxSpendable.unit.test.d.ts.map +1 -0
  61. package/lib/__tests__/{estimateMaxSpendable.unit.test.js → unit/estimateMaxSpendable.unit.test.js} +6 -6
  62. package/lib/__tests__/unit/estimateMaxSpendable.unit.test.js.map +1 -0
  63. package/lib/__tests__/unit/getTransactionStatus.unit.test.d.ts.map +1 -0
  64. package/lib/__tests__/{getTransactionStatus.unit.test.js → unit/getTransactionStatus.unit.test.js} +76 -6
  65. package/lib/__tests__/unit/getTransactionStatus.unit.test.js.map +1 -0
  66. package/lib/__tests__/unit/hw-getAddress.unit.test.d.ts.map +1 -0
  67. package/lib/__tests__/{hw-getAddress.unit.test.js → unit/hw-getAddress.unit.test.js} +5 -1
  68. package/lib/__tests__/unit/hw-getAddress.unit.test.js.map +1 -0
  69. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts +2 -0
  70. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts.map +1 -0
  71. package/lib/__tests__/unit/hw-signMessage.unit.test.js +188 -0
  72. package/lib/__tests__/unit/hw-signMessage.unit.test.js.map +1 -0
  73. package/lib/__tests__/unit/logic.unit.test.d.ts.map +1 -0
  74. package/lib/__tests__/{logic.unit.test.js → unit/logic.unit.test.js} +111 -20
  75. package/lib/__tests__/unit/logic.unit.test.js.map +1 -0
  76. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts +2 -0
  77. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts.map +1 -0
  78. package/lib/__tests__/unit/nftResolvers.unit.test.js +163 -0
  79. package/lib/__tests__/unit/nftResolvers.unit.test.js.map +1 -0
  80. package/lib/__tests__/unit/preload.unit.test.d.ts.map +1 -0
  81. package/lib/__tests__/{preload.unit.test.js → unit/preload.unit.test.js} +3 -3
  82. package/lib/__tests__/unit/preload.unit.test.js.map +1 -0
  83. package/lib/__tests__/unit/prepareTransaction.unit.test.d.ts.map +1 -0
  84. package/lib/__tests__/unit/prepareTransaction.unit.test.js +300 -0
  85. package/lib/__tests__/unit/prepareTransaction.unit.test.js.map +1 -0
  86. package/lib/__tests__/unit/signOperation.unit.test.d.ts.map +1 -0
  87. package/lib/__tests__/{signOperation.unit.test.js → unit/signOperation.unit.test.js} +14 -17
  88. package/lib/__tests__/unit/signOperation.unit.test.js.map +1 -0
  89. package/lib/__tests__/unit/synchronization.unit.test.d.ts.map +1 -0
  90. package/lib/__tests__/{synchronization.unit.test.js → unit/synchronization.unit.test.js} +139 -231
  91. package/lib/__tests__/unit/synchronization.unit.test.js.map +1 -0
  92. package/lib/__tests__/unit/transaction.unit.test.d.ts.map +1 -0
  93. package/lib/__tests__/{transaction.unit.test.js → unit/transaction.unit.test.js} +48 -80
  94. package/lib/__tests__/unit/transaction.unit.test.js.map +1 -0
  95. package/lib/abis/erc1155.abi.json +314 -0
  96. package/lib/abis/erc721.abi.json +346 -0
  97. package/lib/adapters.d.ts +18 -7
  98. package/lib/adapters.d.ts.map +1 -1
  99. package/lib/adapters.js +131 -46
  100. package/lib/adapters.js.map +1 -1
  101. package/lib/api/explorer/etherscan.d.ts +39 -11
  102. package/lib/api/explorer/etherscan.d.ts.map +1 -1
  103. package/lib/api/explorer/etherscan.js +151 -9
  104. package/lib/api/explorer/etherscan.js.map +1 -1
  105. package/lib/api/explorer/index.d.ts +7 -16
  106. package/lib/api/explorer/index.d.ts.map +1 -1
  107. package/lib/api/explorer/index.js.map +1 -1
  108. package/lib/api/nft/index.d.ts +24 -0
  109. package/lib/api/nft/index.d.ts.map +1 -0
  110. package/lib/api/nft/index.js +54 -0
  111. package/lib/api/nft/index.js.map +1 -0
  112. package/lib/api/rpc/index.native.d.ts.map +1 -1
  113. package/lib/api/rpc/index.native.js +1 -0
  114. package/lib/api/rpc/index.native.js.map +1 -1
  115. package/lib/api/rpc/rpc.common.d.ts +2 -2
  116. package/lib/api/rpc/rpc.common.d.ts.map +1 -1
  117. package/lib/api/rpc/rpc.common.js +3 -3
  118. package/lib/api/rpc/rpc.common.js.map +1 -1
  119. package/lib/bridge/js.d.ts +1 -1
  120. package/lib/bridge/js.d.ts.map +1 -1
  121. package/lib/bridge/js.js +10 -10
  122. package/lib/bridge/js.js.map +1 -1
  123. package/lib/broadcast.d.ts.map +1 -1
  124. package/lib/broadcast.js +9 -2
  125. package/lib/broadcast.js.map +1 -1
  126. package/lib/buildOptimisticOperation.d.ts +5 -1
  127. package/lib/buildOptimisticOperation.d.ts.map +1 -1
  128. package/lib/buildOptimisticOperation.js +46 -4
  129. package/lib/buildOptimisticOperation.js.map +1 -1
  130. package/lib/cli-transaction.d.ts.map +1 -1
  131. package/lib/cli-transaction.js +1 -0
  132. package/lib/cli-transaction.js.map +1 -1
  133. package/lib/datasets/ethereum1.d.ts.map +1 -1
  134. package/lib/datasets/ethereum1.js +3 -2
  135. package/lib/datasets/ethereum1.js.map +1 -1
  136. package/lib/deviceTransactionConfig.d.ts.map +1 -1
  137. package/lib/deviceTransactionConfig.js +50 -0
  138. package/lib/deviceTransactionConfig.js.map +1 -1
  139. package/lib/errors.d.ts +9 -0
  140. package/lib/errors.d.ts.map +1 -1
  141. package/lib/errors.js +7 -1
  142. package/lib/errors.js.map +1 -1
  143. package/lib/getTransactionStatus.d.ts +1 -0
  144. package/lib/getTransactionStatus.d.ts.map +1 -1
  145. package/lib/getTransactionStatus.js +25 -3
  146. package/lib/getTransactionStatus.js.map +1 -1
  147. package/lib/hw-signMessage.d.ts +15 -0
  148. package/lib/hw-signMessage.d.ts.map +1 -0
  149. package/lib/hw-signMessage.js +86 -0
  150. package/lib/hw-signMessage.js.map +1 -0
  151. package/lib/logic.d.ts +63 -1
  152. package/lib/logic.d.ts.map +1 -1
  153. package/lib/logic.js +98 -2
  154. package/lib/logic.js.map +1 -1
  155. package/lib/nftResolvers.d.ts +19 -0
  156. package/lib/nftResolvers.d.ts.map +1 -0
  157. package/lib/nftResolvers.js +58 -0
  158. package/lib/nftResolvers.js.map +1 -0
  159. package/lib/preload.d.ts.map +1 -1
  160. package/lib/preload.js +7 -3
  161. package/lib/preload.js.map +1 -1
  162. package/lib/prepareTransaction.d.ts +6 -1
  163. package/lib/prepareTransaction.d.ts.map +1 -1
  164. package/lib/prepareTransaction.js +69 -18
  165. package/lib/prepareTransaction.js.map +1 -1
  166. package/lib/signOperation.d.ts +1 -1
  167. package/lib/signOperation.d.ts.map +1 -1
  168. package/lib/signOperation.js +17 -6
  169. package/lib/signOperation.js.map +1 -1
  170. package/lib/signer.d.ts +24 -1
  171. package/lib/signer.d.ts.map +1 -1
  172. package/lib/specs.d.ts +3 -1
  173. package/lib/specs.d.ts.map +1 -1
  174. package/lib/specs.js +3 -3
  175. package/lib/specs.js.map +1 -1
  176. package/lib/speculos-deviceActions.d.ts.map +1 -1
  177. package/lib/speculos-deviceActions.js +2 -1
  178. package/lib/speculos-deviceActions.js.map +1 -1
  179. package/lib/synchronization.d.ts +7 -2
  180. package/lib/synchronization.d.ts.map +1 -1
  181. package/lib/synchronization.js +45 -45
  182. package/lib/synchronization.js.map +1 -1
  183. package/lib/transaction.d.ts +3 -4
  184. package/lib/transaction.d.ts.map +1 -1
  185. package/lib/transaction.js +58 -12
  186. package/lib/transaction.js.map +1 -1
  187. package/lib/types.d.ts +85 -10
  188. package/lib/types.d.ts.map +1 -1
  189. package/lib-es/__tests__/fixtures/common.fixtures.d.ts +9 -0
  190. package/lib-es/__tests__/fixtures/common.fixtures.d.ts.map +1 -0
  191. package/lib-es/{testUtils.js → __tests__/fixtures/common.fixtures.js} +36 -8
  192. package/lib-es/__tests__/fixtures/common.fixtures.js.map +1 -0
  193. package/lib-es/__tests__/fixtures/etherscan.fixtures.d.ts +86 -0
  194. package/lib-es/__tests__/fixtures/etherscan.fixtures.d.ts.map +1 -0
  195. package/lib-es/__tests__/fixtures/etherscan.fixtures.js +264 -0
  196. package/lib-es/__tests__/fixtures/etherscan.fixtures.js.map +1 -0
  197. package/lib-es/__tests__/fixtures/prepareTransaction.fixtures.d.ts +10 -0
  198. package/lib-es/__tests__/fixtures/prepareTransaction.fixtures.d.ts.map +1 -0
  199. package/lib-es/__tests__/fixtures/prepareTransaction.fixtures.js +62 -0
  200. package/lib-es/__tests__/fixtures/prepareTransaction.fixtures.js.map +1 -0
  201. package/lib-es/__tests__/fixtures/synchronization.fixtures.d.ts +44 -0
  202. package/lib-es/__tests__/fixtures/synchronization.fixtures.d.ts.map +1 -0
  203. package/lib-es/__tests__/fixtures/synchronization.fixtures.js +190 -0
  204. package/lib-es/__tests__/fixtures/synchronization.fixtures.js.map +1 -0
  205. package/lib-es/__tests__/fixtures/transaction.fixtures.d.ts +47 -0
  206. package/lib-es/__tests__/fixtures/transaction.fixtures.d.ts.map +1 -0
  207. package/lib-es/__tests__/fixtures/transaction.fixtures.js +176 -0
  208. package/lib-es/__tests__/fixtures/transaction.fixtures.js.map +1 -0
  209. package/lib-es/__tests__/integration/bridge.integration.test.d.ts +7 -0
  210. package/lib-es/__tests__/integration/bridge.integration.test.d.ts.map +1 -0
  211. package/lib-es/__tests__/integration/bridge.integration.test.js +71 -0
  212. package/lib-es/__tests__/integration/bridge.integration.test.js.map +1 -0
  213. package/lib-es/__tests__/unit/adapters.unit.test.d.ts.map +1 -0
  214. package/lib-es/__tests__/unit/adapters.unit.test.js +984 -0
  215. package/lib-es/__tests__/unit/adapters.unit.test.js.map +1 -0
  216. package/lib-es/__tests__/unit/api/explorer/etherscan.unit.test.d.ts +2 -0
  217. package/lib-es/__tests__/unit/api/explorer/etherscan.unit.test.d.ts.map +1 -0
  218. package/lib-es/__tests__/unit/api/explorer/etherscan.unit.test.js +402 -0
  219. package/lib-es/__tests__/unit/api/explorer/etherscan.unit.test.js.map +1 -0
  220. package/lib-es/__tests__/unit/api/explorer/index.unit.test.d.ts.map +1 -0
  221. package/lib-es/__tests__/unit/api/explorer/index.unit.test.js +44 -0
  222. package/lib-es/__tests__/unit/api/explorer/index.unit.test.js.map +1 -0
  223. package/lib-es/__tests__/unit/api/gasTracker/index.unit.test.d.ts.map +1 -0
  224. package/lib-es/__tests__/{gasTracker → unit/api/gasTracker}/index.unit.test.js +3 -3
  225. package/lib-es/__tests__/unit/api/gasTracker/index.unit.test.js.map +1 -0
  226. package/lib-es/__tests__/unit/api/gasTracker/ledger.unit.test.d.ts.map +1 -0
  227. package/lib-es/__tests__/{gasTracker → unit/api/gasTracker}/ledger.unit.test.js +2 -2
  228. package/lib-es/__tests__/unit/api/gasTracker/ledger.unit.test.js.map +1 -0
  229. package/lib-es/__tests__/unit/api/rpc/rpc.unit.test.d.ts.map +1 -0
  230. package/lib-es/__tests__/{rpc.unit.test.js → unit/api/rpc/rpc.unit.test.js} +13 -13
  231. package/lib-es/__tests__/unit/api/rpc/rpc.unit.test.js.map +1 -0
  232. package/lib-es/__tests__/unit/broadcast.unit.test.d.ts.map +1 -0
  233. package/lib-es/__tests__/unit/broadcast.unit.test.js +307 -0
  234. package/lib-es/__tests__/unit/broadcast.unit.test.js.map +1 -0
  235. package/lib-es/__tests__/unit/buildOptimisticOperation.unit.test.d.ts.map +1 -0
  236. package/lib-es/__tests__/{buildOptimisticOperation.unit.test.js → unit/buildOptimisticOperation.unit.test.js} +130 -4
  237. package/lib-es/__tests__/unit/buildOptimisticOperation.unit.test.js.map +1 -0
  238. package/lib-es/__tests__/unit/createTransaction.unit.test.d.ts.map +1 -0
  239. package/lib-es/__tests__/{createTransaction.unit.test.js → unit/createTransaction.unit.test.js} +3 -3
  240. package/lib-es/__tests__/unit/createTransaction.unit.test.js.map +1 -0
  241. package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.d.ts.map +1 -0
  242. package/lib-es/__tests__/{deviceTransactionConfig.unit.test.js → unit/deviceTransactionConfig.unit.test.js} +121 -4
  243. package/lib-es/__tests__/unit/deviceTransactionConfig.unit.test.js.map +1 -0
  244. package/lib-es/__tests__/unit/estimateMaxSpendable.unit.test.d.ts.map +1 -0
  245. package/lib-es/__tests__/{estimateMaxSpendable.unit.test.js → unit/estimateMaxSpendable.unit.test.js} +4 -4
  246. package/lib-es/__tests__/unit/estimateMaxSpendable.unit.test.js.map +1 -0
  247. package/lib-es/__tests__/unit/getTransactionStatus.unit.test.d.ts.map +1 -0
  248. package/lib-es/__tests__/{getTransactionStatus.unit.test.js → unit/getTransactionStatus.unit.test.js} +74 -4
  249. package/lib-es/__tests__/unit/getTransactionStatus.unit.test.js.map +1 -0
  250. package/lib-es/__tests__/unit/hw-getAddress.unit.test.d.ts.map +1 -0
  251. package/lib-es/__tests__/{hw-getAddress.unit.test.js → unit/hw-getAddress.unit.test.js} +5 -1
  252. package/lib-es/__tests__/unit/hw-getAddress.unit.test.js.map +1 -0
  253. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts +2 -0
  254. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts.map +1 -0
  255. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js +186 -0
  256. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js.map +1 -0
  257. package/lib-es/__tests__/unit/logic.unit.test.d.ts.map +1 -0
  258. package/lib-es/__tests__/{logic.unit.test.js → unit/logic.unit.test.js} +97 -6
  259. package/lib-es/__tests__/unit/logic.unit.test.js.map +1 -0
  260. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts +2 -0
  261. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts.map +1 -0
  262. package/lib-es/__tests__/unit/nftResolvers.unit.test.js +158 -0
  263. package/lib-es/__tests__/unit/nftResolvers.unit.test.js.map +1 -0
  264. package/lib-es/__tests__/unit/preload.unit.test.d.ts.map +1 -0
  265. package/lib-es/__tests__/{preload.unit.test.js → unit/preload.unit.test.js} +3 -3
  266. package/lib-es/__tests__/unit/preload.unit.test.js.map +1 -0
  267. package/lib-es/__tests__/unit/prepareTransaction.unit.test.d.ts.map +1 -0
  268. package/lib-es/__tests__/{prepareTransaction.unit.test.js → unit/prepareTransaction.unit.test.js} +134 -82
  269. package/lib-es/__tests__/unit/prepareTransaction.unit.test.js.map +1 -0
  270. package/lib-es/__tests__/unit/signOperation.unit.test.d.ts.map +1 -0
  271. package/lib-es/__tests__/{signOperation.unit.test.js → unit/signOperation.unit.test.js} +13 -16
  272. package/lib-es/__tests__/unit/signOperation.unit.test.js.map +1 -0
  273. package/lib-es/__tests__/unit/synchronization.unit.test.d.ts.map +1 -0
  274. package/lib-es/__tests__/{synchronization.unit.test.js → unit/synchronization.unit.test.js} +115 -207
  275. package/lib-es/__tests__/unit/synchronization.unit.test.js.map +1 -0
  276. package/lib-es/__tests__/unit/transaction.unit.test.d.ts.map +1 -0
  277. package/lib-es/__tests__/{transaction.unit.test.js → unit/transaction.unit.test.js} +40 -72
  278. package/lib-es/__tests__/unit/transaction.unit.test.js.map +1 -0
  279. package/lib-es/abis/erc1155.abi.json +314 -0
  280. package/lib-es/abis/erc721.abi.json +346 -0
  281. package/lib-es/adapters.d.ts +18 -7
  282. package/lib-es/adapters.d.ts.map +1 -1
  283. package/lib-es/adapters.js +127 -44
  284. package/lib-es/adapters.js.map +1 -1
  285. package/lib-es/api/explorer/etherscan.d.ts +39 -11
  286. package/lib-es/api/explorer/etherscan.d.ts.map +1 -1
  287. package/lib-es/api/explorer/etherscan.js +146 -10
  288. package/lib-es/api/explorer/etherscan.js.map +1 -1
  289. package/lib-es/api/explorer/index.d.ts +7 -16
  290. package/lib-es/api/explorer/index.d.ts.map +1 -1
  291. package/lib-es/api/explorer/index.js.map +1 -1
  292. package/lib-es/api/nft/index.d.ts +24 -0
  293. package/lib-es/api/nft/index.d.ts.map +1 -0
  294. package/lib-es/api/nft/index.js +46 -0
  295. package/lib-es/api/nft/index.js.map +1 -0
  296. package/lib-es/api/rpc/index.native.d.ts.map +1 -1
  297. package/lib-es/api/rpc/index.native.js +1 -0
  298. package/lib-es/api/rpc/index.native.js.map +1 -1
  299. package/lib-es/api/rpc/rpc.common.d.ts +2 -2
  300. package/lib-es/api/rpc/rpc.common.d.ts.map +1 -1
  301. package/lib-es/api/rpc/rpc.common.js +3 -3
  302. package/lib-es/api/rpc/rpc.common.js.map +1 -1
  303. package/lib-es/bridge/js.d.ts +1 -1
  304. package/lib-es/bridge/js.d.ts.map +1 -1
  305. package/lib-es/bridge/js.js +10 -10
  306. package/lib-es/bridge/js.js.map +1 -1
  307. package/lib-es/broadcast.d.ts.map +1 -1
  308. package/lib-es/broadcast.js +9 -2
  309. package/lib-es/broadcast.js.map +1 -1
  310. package/lib-es/buildOptimisticOperation.d.ts +5 -1
  311. package/lib-es/buildOptimisticOperation.d.ts.map +1 -1
  312. package/lib-es/buildOptimisticOperation.js +45 -4
  313. package/lib-es/buildOptimisticOperation.js.map +1 -1
  314. package/lib-es/cli-transaction.d.ts.map +1 -1
  315. package/lib-es/cli-transaction.js +1 -0
  316. package/lib-es/cli-transaction.js.map +1 -1
  317. package/lib-es/datasets/ethereum1.d.ts.map +1 -1
  318. package/lib-es/datasets/ethereum1.js +3 -2
  319. package/lib-es/datasets/ethereum1.js.map +1 -1
  320. package/lib-es/deviceTransactionConfig.d.ts.map +1 -1
  321. package/lib-es/deviceTransactionConfig.js +50 -0
  322. package/lib-es/deviceTransactionConfig.js.map +1 -1
  323. package/lib-es/errors.d.ts +9 -0
  324. package/lib-es/errors.d.ts.map +1 -1
  325. package/lib-es/errors.js +6 -0
  326. package/lib-es/errors.js.map +1 -1
  327. package/lib-es/getTransactionStatus.d.ts +1 -0
  328. package/lib-es/getTransactionStatus.d.ts.map +1 -1
  329. package/lib-es/getTransactionStatus.js +23 -2
  330. package/lib-es/getTransactionStatus.js.map +1 -1
  331. package/lib-es/hw-signMessage.d.ts +15 -0
  332. package/lib-es/hw-signMessage.d.ts.map +1 -0
  333. package/lib-es/hw-signMessage.js +81 -0
  334. package/lib-es/hw-signMessage.js.map +1 -0
  335. package/lib-es/logic.d.ts +63 -1
  336. package/lib-es/logic.d.ts.map +1 -1
  337. package/lib-es/logic.js +95 -1
  338. package/lib-es/logic.js.map +1 -1
  339. package/lib-es/nftResolvers.d.ts +19 -0
  340. package/lib-es/nftResolvers.d.ts.map +1 -0
  341. package/lib-es/nftResolvers.js +50 -0
  342. package/lib-es/nftResolvers.js.map +1 -0
  343. package/lib-es/preload.d.ts.map +1 -1
  344. package/lib-es/preload.js +7 -3
  345. package/lib-es/preload.js.map +1 -1
  346. package/lib-es/prepareTransaction.d.ts +6 -1
  347. package/lib-es/prepareTransaction.d.ts.map +1 -1
  348. package/lib-es/prepareTransaction.js +68 -18
  349. package/lib-es/prepareTransaction.js.map +1 -1
  350. package/lib-es/signOperation.d.ts +1 -1
  351. package/lib-es/signOperation.d.ts.map +1 -1
  352. package/lib-es/signOperation.js +17 -6
  353. package/lib-es/signOperation.js.map +1 -1
  354. package/lib-es/signer.d.ts +24 -1
  355. package/lib-es/signer.d.ts.map +1 -1
  356. package/lib-es/specs.d.ts +3 -1
  357. package/lib-es/specs.d.ts.map +1 -1
  358. package/lib-es/specs.js +3 -3
  359. package/lib-es/specs.js.map +1 -1
  360. package/lib-es/speculos-deviceActions.d.ts.map +1 -1
  361. package/lib-es/speculos-deviceActions.js +2 -1
  362. package/lib-es/speculos-deviceActions.js.map +1 -1
  363. package/lib-es/synchronization.d.ts +7 -2
  364. package/lib-es/synchronization.d.ts.map +1 -1
  365. package/lib-es/synchronization.js +46 -46
  366. package/lib-es/synchronization.js.map +1 -1
  367. package/lib-es/transaction.d.ts +3 -4
  368. package/lib-es/transaction.d.ts.map +1 -1
  369. package/lib-es/transaction.js +58 -12
  370. package/lib-es/transaction.js.map +1 -1
  371. package/lib-es/types.d.ts +85 -10
  372. package/lib-es/types.d.ts.map +1 -1
  373. package/package.json +13 -12
  374. package/src/{testUtils.ts → __tests__/fixtures/common.fixtures.ts} +78 -11
  375. package/src/__tests__/fixtures/etherscan.fixtures.ts +266 -0
  376. package/src/__tests__/fixtures/prepareTransaction.fixtures.ts +86 -0
  377. package/src/__tests__/fixtures/synchronization.fixtures.ts +229 -0
  378. package/src/__tests__/fixtures/transaction.fixtures.ts +229 -0
  379. package/src/__tests__/integration/bridge.integration.test.ts +74 -0
  380. package/src/__tests__/unit/adapters.unit.test.ts +1076 -0
  381. package/src/__tests__/unit/api/explorer/etherscan.unit.test.ts +563 -0
  382. package/src/__tests__/unit/api/explorer/index.unit.test.ts +36 -0
  383. package/src/__tests__/{gasTracker → unit/api/gasTracker}/index.unit.test.ts +3 -3
  384. package/src/__tests__/{gasTracker → unit/api/gasTracker}/ledger.unit.test.ts +3 -3
  385. package/src/__tests__/{rpc.unit.test.ts → unit/api/rpc/rpc.unit.test.ts} +17 -14
  386. package/src/__tests__/unit/broadcast.unit.test.ts +332 -0
  387. package/src/__tests__/{buildOptimisticOperation.unit.test.ts → unit/buildOptimisticOperation.unit.test.ts} +144 -5
  388. package/src/__tests__/{createTransaction.unit.test.ts → unit/createTransaction.unit.test.ts} +4 -4
  389. package/src/__tests__/{deviceTransactionConfig.unit.test.ts → unit/deviceTransactionConfig.unit.test.ts} +130 -5
  390. package/src/__tests__/{estimateMaxSpendable.unit.test.ts → unit/estimateMaxSpendable.unit.test.ts} +5 -5
  391. package/src/__tests__/{getTransactionStatus.unit.test.ts → unit/getTransactionStatus.unit.test.ts} +121 -5
  392. package/src/__tests__/{hw-getAddress.unit.test.ts → unit/hw-getAddress.unit.test.ts} +6 -2
  393. package/src/__tests__/unit/hw-signMessage.unit.test.ts +192 -0
  394. package/src/__tests__/{logic.unit.test.ts → unit/logic.unit.test.ts} +143 -8
  395. package/src/__tests__/unit/nftResolvers.unit.test.ts +179 -0
  396. package/src/__tests__/{preload.unit.test.ts → unit/preload.unit.test.ts} +4 -4
  397. package/src/__tests__/{prepareTransaction.unit.test.ts → unit/prepareTransaction.unit.test.ts} +284 -109
  398. package/src/__tests__/{signOperation.unit.test.ts → unit/signOperation.unit.test.ts} +18 -20
  399. package/src/__tests__/{synchronization.unit.test.ts → unit/synchronization.unit.test.ts} +202 -280
  400. package/src/__tests__/unit/transaction.unit.test.ts +198 -0
  401. package/src/abis/erc1155.abi.json +314 -0
  402. package/src/abis/erc20.abi.json +4 -12
  403. package/src/abis/erc721.abi.json +346 -0
  404. package/src/adapters.ts +177 -64
  405. package/src/api/explorer/etherscan.ts +265 -49
  406. package/src/api/explorer/index.ts +24 -10
  407. package/src/api/nft/index.ts +49 -0
  408. package/src/api/rpc/index.native.ts +2 -0
  409. package/src/api/rpc/rpc.common.ts +3 -3
  410. package/src/bridge/js.ts +13 -16
  411. package/src/broadcast.ts +29 -2
  412. package/src/buildOptimisticOperation.ts +71 -6
  413. package/src/cli-transaction.ts +2 -0
  414. package/src/datasets/ethereum1.ts +4 -2
  415. package/src/deviceTransactionConfig.ts +65 -0
  416. package/src/errors.ts +8 -0
  417. package/src/getTransactionStatus.ts +26 -0
  418. package/src/hw-signMessage.ts +92 -0
  419. package/src/logic.ts +118 -2
  420. package/src/nftResolvers.ts +71 -0
  421. package/src/preload.ts +9 -3
  422. package/src/prepareTransaction.ts +102 -24
  423. package/src/signOperation.ts +21 -8
  424. package/src/signer.ts +44 -1
  425. package/src/specs.ts +11 -6
  426. package/src/speculos-deviceActions.ts +3 -1
  427. package/src/synchronization.ts +73 -59
  428. package/src/transaction.ts +68 -15
  429. package/src/types.ts +108 -10
  430. package/.eslintrc.js +0 -22
  431. package/lib/__tests__/adapters.unit.test.d.ts.map +0 -1
  432. package/lib/__tests__/adapters.unit.test.js +0 -455
  433. package/lib/__tests__/adapters.unit.test.js.map +0 -1
  434. package/lib/__tests__/broadcast.unit.test.d.ts.map +0 -1
  435. package/lib/__tests__/broadcast.unit.test.js +0 -181
  436. package/lib/__tests__/broadcast.unit.test.js.map +0 -1
  437. package/lib/__tests__/buildOptimisticOperation.unit.test.d.ts.map +0 -1
  438. package/lib/__tests__/buildOptimisticOperation.unit.test.js.map +0 -1
  439. package/lib/__tests__/createTransaction.unit.test.d.ts.map +0 -1
  440. package/lib/__tests__/createTransaction.unit.test.js.map +0 -1
  441. package/lib/__tests__/deviceTransactionConfig.unit.test.d.ts.map +0 -1
  442. package/lib/__tests__/deviceTransactionConfig.unit.test.js.map +0 -1
  443. package/lib/__tests__/estimateMaxSpendable.unit.test.d.ts.map +0 -1
  444. package/lib/__tests__/estimateMaxSpendable.unit.test.js.map +0 -1
  445. package/lib/__tests__/gasTracker/index.unit.test.d.ts.map +0 -1
  446. package/lib/__tests__/gasTracker/index.unit.test.js.map +0 -1
  447. package/lib/__tests__/gasTracker/ledger.unit.test.d.ts.map +0 -1
  448. package/lib/__tests__/gasTracker/ledger.unit.test.js.map +0 -1
  449. package/lib/__tests__/getTransactionStatus.unit.test.d.ts.map +0 -1
  450. package/lib/__tests__/getTransactionStatus.unit.test.js.map +0 -1
  451. package/lib/__tests__/hw-getAddress.unit.test.d.ts.map +0 -1
  452. package/lib/__tests__/hw-getAddress.unit.test.js.map +0 -1
  453. package/lib/__tests__/logic.unit.test.d.ts.map +0 -1
  454. package/lib/__tests__/logic.unit.test.js.map +0 -1
  455. package/lib/__tests__/preload.unit.test.d.ts.map +0 -1
  456. package/lib/__tests__/preload.unit.test.js.map +0 -1
  457. package/lib/__tests__/prepareTransaction.unit.test.d.ts.map +0 -1
  458. package/lib/__tests__/prepareTransaction.unit.test.js +0 -248
  459. package/lib/__tests__/prepareTransaction.unit.test.js.map +0 -1
  460. package/lib/__tests__/rpc.unit.test.d.ts.map +0 -1
  461. package/lib/__tests__/rpc.unit.test.js.map +0 -1
  462. package/lib/__tests__/signOperation.unit.test.d.ts.map +0 -1
  463. package/lib/__tests__/signOperation.unit.test.js.map +0 -1
  464. package/lib/__tests__/synchronization.unit.test.d.ts.map +0 -1
  465. package/lib/__tests__/synchronization.unit.test.js.map +0 -1
  466. package/lib/__tests__/transaction.unit.test.d.ts.map +0 -1
  467. package/lib/__tests__/transaction.unit.test.js.map +0 -1
  468. package/lib/bridge.integration.test.d.ts +0 -14
  469. package/lib/bridge.integration.test.d.ts.map +0 -1
  470. package/lib/bridge.integration.test.js +0 -85
  471. package/lib/bridge.integration.test.js.map +0 -1
  472. package/lib/datasets/ethereum.scanAccounts.1.d.ts +0 -7
  473. package/lib/datasets/ethereum.scanAccounts.1.d.ts.map +0 -1
  474. package/lib/datasets/ethereum.scanAccounts.1.js +0 -51
  475. package/lib/datasets/ethereum.scanAccounts.1.js.map +0 -1
  476. package/lib/datasets/ethereum2.d.ts +0 -3
  477. package/lib/datasets/ethereum2.d.ts.map +0 -1
  478. package/lib/datasets/ethereum2.js +0 -22
  479. package/lib/datasets/ethereum2.js.map +0 -1
  480. package/lib/datasets/ethereum_classic.d.ts +0 -5
  481. package/lib/datasets/ethereum_classic.d.ts.map +0 -1
  482. package/lib/datasets/ethereum_classic.js +0 -69
  483. package/lib/datasets/ethereum_classic.js.map +0 -1
  484. package/lib/testUtils.d.ts +0 -6
  485. package/lib/testUtils.d.ts.map +0 -1
  486. package/lib/testUtils.js.map +0 -1
  487. package/lib-es/__tests__/adapters.unit.test.d.ts.map +0 -1
  488. package/lib-es/__tests__/adapters.unit.test.js +0 -450
  489. package/lib-es/__tests__/adapters.unit.test.js.map +0 -1
  490. package/lib-es/__tests__/broadcast.unit.test.d.ts.map +0 -1
  491. package/lib-es/__tests__/broadcast.unit.test.js +0 -153
  492. package/lib-es/__tests__/broadcast.unit.test.js.map +0 -1
  493. package/lib-es/__tests__/buildOptimisticOperation.unit.test.d.ts.map +0 -1
  494. package/lib-es/__tests__/buildOptimisticOperation.unit.test.js.map +0 -1
  495. package/lib-es/__tests__/createTransaction.unit.test.d.ts.map +0 -1
  496. package/lib-es/__tests__/createTransaction.unit.test.js.map +0 -1
  497. package/lib-es/__tests__/deviceTransactionConfig.unit.test.d.ts.map +0 -1
  498. package/lib-es/__tests__/deviceTransactionConfig.unit.test.js.map +0 -1
  499. package/lib-es/__tests__/estimateMaxSpendable.unit.test.d.ts.map +0 -1
  500. package/lib-es/__tests__/estimateMaxSpendable.unit.test.js.map +0 -1
  501. package/lib-es/__tests__/gasTracker/index.unit.test.d.ts.map +0 -1
  502. package/lib-es/__tests__/gasTracker/index.unit.test.js.map +0 -1
  503. package/lib-es/__tests__/gasTracker/ledger.unit.test.d.ts.map +0 -1
  504. package/lib-es/__tests__/gasTracker/ledger.unit.test.js.map +0 -1
  505. package/lib-es/__tests__/getTransactionStatus.unit.test.d.ts.map +0 -1
  506. package/lib-es/__tests__/getTransactionStatus.unit.test.js.map +0 -1
  507. package/lib-es/__tests__/hw-getAddress.unit.test.d.ts.map +0 -1
  508. package/lib-es/__tests__/hw-getAddress.unit.test.js.map +0 -1
  509. package/lib-es/__tests__/logic.unit.test.d.ts.map +0 -1
  510. package/lib-es/__tests__/logic.unit.test.js.map +0 -1
  511. package/lib-es/__tests__/preload.unit.test.d.ts.map +0 -1
  512. package/lib-es/__tests__/preload.unit.test.js.map +0 -1
  513. package/lib-es/__tests__/prepareTransaction.unit.test.d.ts.map +0 -1
  514. package/lib-es/__tests__/prepareTransaction.unit.test.js.map +0 -1
  515. package/lib-es/__tests__/rpc.unit.test.d.ts.map +0 -1
  516. package/lib-es/__tests__/rpc.unit.test.js.map +0 -1
  517. package/lib-es/__tests__/signOperation.unit.test.d.ts.map +0 -1
  518. package/lib-es/__tests__/signOperation.unit.test.js.map +0 -1
  519. package/lib-es/__tests__/synchronization.unit.test.d.ts.map +0 -1
  520. package/lib-es/__tests__/synchronization.unit.test.js.map +0 -1
  521. package/lib-es/__tests__/transaction.unit.test.d.ts.map +0 -1
  522. package/lib-es/__tests__/transaction.unit.test.js.map +0 -1
  523. package/lib-es/bridge.integration.test.d.ts +0 -14
  524. package/lib-es/bridge.integration.test.d.ts.map +0 -1
  525. package/lib-es/bridge.integration.test.js +0 -79
  526. package/lib-es/bridge.integration.test.js.map +0 -1
  527. package/lib-es/datasets/ethereum.scanAccounts.1.d.ts +0 -7
  528. package/lib-es/datasets/ethereum.scanAccounts.1.d.ts.map +0 -1
  529. package/lib-es/datasets/ethereum.scanAccounts.1.js +0 -49
  530. package/lib-es/datasets/ethereum.scanAccounts.1.js.map +0 -1
  531. package/lib-es/datasets/ethereum2.d.ts +0 -3
  532. package/lib-es/datasets/ethereum2.d.ts.map +0 -1
  533. package/lib-es/datasets/ethereum2.js +0 -19
  534. package/lib-es/datasets/ethereum2.js.map +0 -1
  535. package/lib-es/datasets/ethereum_classic.d.ts +0 -5
  536. package/lib-es/datasets/ethereum_classic.d.ts.map +0 -1
  537. package/lib-es/datasets/ethereum_classic.js +0 -67
  538. package/lib-es/datasets/ethereum_classic.js.map +0 -1
  539. package/lib-es/testUtils.d.ts +0 -6
  540. package/lib-es/testUtils.d.ts.map +0 -1
  541. package/lib-es/testUtils.js.map +0 -1
  542. package/src/__tests__/adapters.unit.test.ts +0 -497
  543. package/src/__tests__/broadcast.unit.test.ts +0 -163
  544. package/src/__tests__/transaction.unit.test.ts +0 -188
  545. package/src/bridge.integration.test.ts +0 -86
  546. package/src/datasets/ethereum.scanAccounts.1.ts +0 -48
  547. package/src/datasets/ethereum2.ts +0 -20
  548. package/src/datasets/ethereum_classic.ts +0 -68
  549. /package/lib/__tests__/{adapters.unit.test.d.ts → unit/adapters.unit.test.d.ts} +0 -0
  550. /package/lib/__tests__/{gasTracker → unit/api/gasTracker}/ledger.unit.test.d.ts +0 -0
  551. /package/lib/__tests__/{rpc.unit.test.d.ts → unit/api/rpc/rpc.unit.test.d.ts} +0 -0
  552. /package/lib/__tests__/{broadcast.unit.test.d.ts → unit/broadcast.unit.test.d.ts} +0 -0
  553. /package/lib/__tests__/{buildOptimisticOperation.unit.test.d.ts → unit/buildOptimisticOperation.unit.test.d.ts} +0 -0
  554. /package/lib/__tests__/{createTransaction.unit.test.d.ts → unit/createTransaction.unit.test.d.ts} +0 -0
  555. /package/lib/__tests__/{deviceTransactionConfig.unit.test.d.ts → unit/deviceTransactionConfig.unit.test.d.ts} +0 -0
  556. /package/lib/__tests__/{estimateMaxSpendable.unit.test.d.ts → unit/estimateMaxSpendable.unit.test.d.ts} +0 -0
  557. /package/lib/__tests__/{getTransactionStatus.unit.test.d.ts → unit/getTransactionStatus.unit.test.d.ts} +0 -0
  558. /package/lib/__tests__/{hw-getAddress.unit.test.d.ts → unit/hw-getAddress.unit.test.d.ts} +0 -0
  559. /package/lib/__tests__/{logic.unit.test.d.ts → unit/logic.unit.test.d.ts} +0 -0
  560. /package/lib/__tests__/{preload.unit.test.d.ts → unit/preload.unit.test.d.ts} +0 -0
  561. /package/lib/__tests__/{prepareTransaction.unit.test.d.ts → unit/prepareTransaction.unit.test.d.ts} +0 -0
  562. /package/lib/__tests__/{signOperation.unit.test.d.ts → unit/signOperation.unit.test.d.ts} +0 -0
  563. /package/lib/__tests__/{synchronization.unit.test.d.ts → unit/synchronization.unit.test.d.ts} +0 -0
  564. /package/lib/__tests__/{transaction.unit.test.d.ts → unit/transaction.unit.test.d.ts} +0 -0
  565. /package/lib-es/__tests__/{adapters.unit.test.d.ts → unit/adapters.unit.test.d.ts} +0 -0
  566. /package/lib-es/__tests__/{gasTracker → unit/api/explorer}/index.unit.test.d.ts +0 -0
  567. /package/{lib/__tests__ → lib-es/__tests__/unit/api}/gasTracker/index.unit.test.d.ts +0 -0
  568. /package/lib-es/__tests__/{gasTracker → unit/api/gasTracker}/ledger.unit.test.d.ts +0 -0
  569. /package/lib-es/__tests__/{rpc.unit.test.d.ts → unit/api/rpc/rpc.unit.test.d.ts} +0 -0
  570. /package/lib-es/__tests__/{broadcast.unit.test.d.ts → unit/broadcast.unit.test.d.ts} +0 -0
  571. /package/lib-es/__tests__/{buildOptimisticOperation.unit.test.d.ts → unit/buildOptimisticOperation.unit.test.d.ts} +0 -0
  572. /package/lib-es/__tests__/{createTransaction.unit.test.d.ts → unit/createTransaction.unit.test.d.ts} +0 -0
  573. /package/lib-es/__tests__/{deviceTransactionConfig.unit.test.d.ts → unit/deviceTransactionConfig.unit.test.d.ts} +0 -0
  574. /package/lib-es/__tests__/{estimateMaxSpendable.unit.test.d.ts → unit/estimateMaxSpendable.unit.test.d.ts} +0 -0
  575. /package/lib-es/__tests__/{getTransactionStatus.unit.test.d.ts → unit/getTransactionStatus.unit.test.d.ts} +0 -0
  576. /package/lib-es/__tests__/{hw-getAddress.unit.test.d.ts → unit/hw-getAddress.unit.test.d.ts} +0 -0
  577. /package/lib-es/__tests__/{logic.unit.test.d.ts → unit/logic.unit.test.d.ts} +0 -0
  578. /package/lib-es/__tests__/{preload.unit.test.d.ts → unit/preload.unit.test.d.ts} +0 -0
  579. /package/lib-es/__tests__/{prepareTransaction.unit.test.d.ts → unit/prepareTransaction.unit.test.d.ts} +0 -0
  580. /package/lib-es/__tests__/{signOperation.unit.test.d.ts → unit/signOperation.unit.test.d.ts} +0 -0
  581. /package/lib-es/__tests__/{synchronization.unit.test.d.ts → unit/synchronization.unit.test.d.ts} +0 -0
  582. /package/lib-es/__tests__/{transaction.unit.test.d.ts → unit/transaction.unit.test.d.ts} +0 -0
@@ -35,110 +35,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
35
35
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- const index_1 = require("@ledgerhq/coin-framework/account/index");
39
- const cryptoassets_1 = require("@ledgerhq/cryptoassets");
40
- const assert_1 = require("assert");
41
38
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
42
- const env_1 = require("../../../env");
43
- const etherscanAPI = __importStar(require("../api/explorer/etherscan"));
44
- const rpcAPI = __importStar(require("../api/rpc/rpc.common"));
45
- const logic = __importStar(require("../logic"));
46
- const synchronization = __importStar(require("../synchronization"));
47
- const testUtils_1 = require("../testUtils");
39
+ const assert_1 = require("assert");
40
+ const accountId_1 = require("@ledgerhq/coin-framework/account/accountId");
41
+ const common_fixtures_1 = require("../fixtures/common.fixtures");
42
+ const etherscanAPI = __importStar(require("../../api/explorer/etherscan"));
43
+ const synchronization = __importStar(require("../../synchronization"));
44
+ const rpcAPI = __importStar(require("../../api/rpc/rpc.common"));
45
+ const env_1 = require("../../../../env");
46
+ const logic = __importStar(require("../../logic"));
47
+ const synchronization_fixtures_1 = require("../fixtures/synchronization.fixtures");
48
+ jest.mock("../../api/rpc/rpc.common");
48
49
  jest.useFakeTimers().setSystemTime(new Date("2014-04-21"));
49
- const currency = Object.assign(Object.assign({}, (0, cryptoassets_1.getCryptoCurrencyById)("ethereum")), { ethereumLikeInfo: {
50
- chainId: 1,
51
- rpc: "https://my-rpc.com",
52
- explorer: {
53
- uri: "https://api.com",
54
- type: "etherscan",
55
- },
56
- } });
57
50
  const getAccountShapeParameters = {
58
51
  address: "0xkvn",
59
- currency,
52
+ currency: synchronization_fixtures_1.currency,
60
53
  derivationMode: "",
61
54
  derivationPath: "44'/60'/0'/0/0",
62
55
  index: 0,
63
56
  };
64
- const tokenCurrency1 = (0, cryptoassets_1.getTokenById)("ethereum/erc20/usd__coin");
65
- const tokenCurrency2 = (0, cryptoassets_1.getTokenById)("ethereum/erc20/usd_tether__erc20_");
66
- const tokenAccount = (0, testUtils_1.makeTokenAccount)("0xkvn", tokenCurrency1);
67
- const account = Object.assign(Object.assign({}, (0, testUtils_1.makeAccount)("0xkvn", currency, [tokenAccount])), { syncHash: logic.getSyncHash(currency) });
68
- const coinOperation1 = (0, testUtils_1.makeOperation)({
69
- hash: "0xH4sH",
70
- accountId: "js:2:ethereum:0xkvn:",
71
- blockHash: "0x8df71a12a8c06b36c06c26bf6248857dd2a2b75b6edbb4e33e9477078897b282",
72
- senders: ["0xd48f2332Eeed88243Cb6b1D0d65a10368A5370f0"],
73
- transactionSequenceNumber: 1,
74
- date: new Date(),
75
- blockHeight: 1,
76
- });
77
- const coinOperation2 = (0, testUtils_1.makeOperation)({
78
- hash: "0xOtherHash",
79
- accountId: "js:2:ethereum:0xkvn:",
80
- transactionSequenceNumber: 2,
81
- date: new Date(Date.now() + 1),
82
- blockHeight: 100,
83
- });
84
- const coinOperation3 = (0, testUtils_1.makeOperation)({
85
- hash: "0xYeTAnOtherHash",
86
- accountId: "js:2:ethereum:0xkvn:",
87
- transactionSequenceNumber: 5,
88
- date: new Date(Date.now() + 2),
89
- blockHeight: 1000,
90
- });
91
- const tokenOperation1 = (0, testUtils_1.makeOperation)({
92
- hash: "0xH4sHT0k3n",
93
- accountId: "js:2:ethereum:0xkvn:+ethereum%2Ferc20%2Fusd__coin",
94
- blockHash: "0x95dc138a02c1b0e3fd49305f785e8e27e88a885004af13a9b4c62ad94eed07dd",
95
- recipients: ["0xB0B"],
96
- senders: ["0x9b744C0451D73C0958d8aA566dAd33022E4Ee797"],
97
- contract: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
98
- value: new bignumber_js_1.default(152021496),
99
- fee: new bignumber_js_1.default(1935663357068271),
100
- type: "OUT",
101
- date: new Date(),
102
- blockHeight: 10,
103
- });
104
- const tokenOperation2 = (0, testUtils_1.makeOperation)({
105
- hash: "0xTokenHashAga1n",
106
- accountId: "js:2:ethereum:0xkvn:+ethereum%2Ferc20%2Fusd__coin",
107
- contract: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
108
- date: new Date(Date.now() + 1),
109
- blockHeight: 1000,
110
- });
111
- const tokenOperation3 = (0, testUtils_1.makeOperation)({
112
- hash: "0xTokenHashAga1n",
113
- accountId: "js:2:ethereum:0xkvn:+ethereum%2Ferc20%2Fusd__coin",
114
- contract: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
115
- date: new Date(Date.now() + 2),
116
- blockHeight: 10000,
117
- });
118
- const tokenOperation4 = (0, testUtils_1.makeOperation)({
119
- hash: "0xTokenHashOtherToken",
120
- accountId: "js:2:ethereum:0xkvn:+ethereum%2Ferc20%2Fusd_tether__erc20_",
121
- contract: "0xdac17f958d2ee523a2206206994597c13d831ec7",
122
- date: new Date(Date.now() + 3),
123
- blockHeight: 11000,
124
- });
125
- const ignoredTokenOperation = (0, testUtils_1.makeOperation)({
126
- hash: "0xigN0r3Me",
127
- accountId: "js:2:ethereum:0xkvn:+ethereum%2Ferc20%2Fusd_tether__erc20_",
128
- contract: "0xUnknownContract",
129
- date: new Date(Date.now() + 4),
130
- blockHeight: 12000,
131
- });
132
- const pendingOperation = (0, testUtils_1.makeOperation)({
133
- hash: "123",
134
- });
135
57
  describe("EVM Family", () => {
136
58
  describe("synchronization.ts", () => {
137
59
  describe("getAccountShape", () => {
138
60
  beforeEach(() => {
139
61
  // Mocking getAccount to prevent network calls
140
62
  jest.spyOn(rpcAPI, "getBalanceAndBlock").mockImplementation(() => Promise.resolve({
141
- blockHeight: 10,
63
+ blockHeight: 6969,
142
64
  balance: new bignumber_js_1.default(100),
143
65
  }));
144
66
  jest.spyOn(rpcAPI, "getSubAccount").mockImplementation(() => Promise.resolve({
@@ -152,7 +74,7 @@ describe("EVM Family", () => {
152
74
  });
153
75
  it("should throw for currency without ethereumLikeInfo", () => __awaiter(void 0, void 0, void 0, function* () {
154
76
  try {
155
- yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { currency: Object.assign(Object.assign({}, currency), { ethereumLikeInfo: undefined }) }), {});
77
+ yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { currency: Object.assign(Object.assign({}, synchronization_fixtures_1.currency), { ethereumLikeInfo: undefined }) }), {});
156
78
  (0, assert_1.fail)("Promise should have been rejected");
157
79
  }
158
80
  catch (e) {
@@ -164,7 +86,7 @@ describe("EVM Family", () => {
164
86
  }));
165
87
  it("should throw for currency with unsupported explorer", () => __awaiter(void 0, void 0, void 0, function* () {
166
88
  try {
167
- yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { currency: Object.assign(Object.assign({}, currency), { ethereumLikeInfo: {
89
+ yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { currency: Object.assign(Object.assign({}, synchronization_fixtures_1.currency), { ethereumLikeInfo: {
168
90
  chainId: 1,
169
91
  explorer: {
170
92
  uri: "http://nope.com",
@@ -182,28 +104,26 @@ describe("EVM Family", () => {
182
104
  }));
183
105
  describe("With no transactions fetched", () => {
184
106
  beforeAll(() => {
185
- jest
186
- .spyOn(etherscanAPI, "getLastCoinOperations")
187
- .mockImplementation(() => Promise.resolve([]));
188
- jest
189
- .spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastCoinOperations")
190
- .mockImplementation(() => Promise.resolve([]));
191
- jest
192
- .spyOn(etherscanAPI, "getLastTokenOperations")
193
- .mockImplementation(() => Promise.resolve([]));
194
- jest
195
- .spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastTokenOperations")
196
- .mockImplementation(() => Promise.resolve([]));
107
+ jest.spyOn(etherscanAPI, "getLastOperations").mockImplementation(() => Promise.resolve({
108
+ lastCoinOperations: [],
109
+ lastTokenOperations: [],
110
+ lastNftOperations: [],
111
+ }));
112
+ jest.spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastOperations").mockImplementation(() => Promise.resolve({
113
+ lastCoinOperations: [],
114
+ lastTokenOperations: [],
115
+ lastNftOperations: [],
116
+ }));
197
117
  });
198
118
  afterAll(() => {
199
119
  jest.restoreAllMocks();
200
120
  });
201
121
  it("should return an account with a valid id", () => __awaiter(void 0, void 0, void 0, function* () {
202
122
  const account = yield synchronization.getAccountShape(getAccountShapeParameters, {});
203
- expect((0, index_1.decodeAccountId)(account.id || "")).toEqual({
123
+ expect((0, accountId_1.decodeAccountId)(account.id || "")).toEqual({
204
124
  type: "js",
205
125
  version: "2",
206
- currencyId: currency.id,
126
+ currencyId: synchronization_fixtures_1.currency.id,
207
127
  xpubOrAddress: "0xkvn",
208
128
  derivationMode: "",
209
129
  });
@@ -219,47 +139,47 @@ describe("EVM Family", () => {
219
139
  }));
220
140
  it("should return an account with the correct block height", () => __awaiter(void 0, void 0, void 0, function* () {
221
141
  const account = yield synchronization.getAccountShape(getAccountShapeParameters, {});
222
- expect(account.blockHeight).toBe(10);
142
+ expect(account.blockHeight).toBe(6969);
223
143
  }));
224
144
  it("should keep the operations from a sync to another", () => __awaiter(void 0, void 0, void 0, function* () {
225
145
  var _b;
226
- const operations = [coinOperation1];
227
- const tokenOperations = [tokenOperation1];
228
- const accountWithSubAccount = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, account), { operations, subAccounts: [Object.assign(Object.assign({}, tokenAccount), { operations: tokenOperations })] }) }), {});
146
+ const operations = [synchronization_fixtures_1.coinOperations[0]];
147
+ const tokenOps = [synchronization_fixtures_1.tokenOperations[0]];
148
+ const accountWithSubAccount = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, synchronization_fixtures_1.account), { operations, subAccounts: [Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { operations: tokenOps })] }) }), {});
229
149
  expect(accountWithSubAccount.operations).toBe(operations);
230
- expect((_b = accountWithSubAccount === null || accountWithSubAccount === void 0 ? void 0 : accountWithSubAccount.subAccounts) === null || _b === void 0 ? void 0 : _b[0].operations).toBe(tokenOperations);
150
+ expect((_b = accountWithSubAccount === null || accountWithSubAccount === void 0 ? void 0 : accountWithSubAccount.subAccounts) === null || _b === void 0 ? void 0 : _b[0].operations).toBe(tokenOps);
231
151
  }));
232
152
  it("should do a full sync when syncHash changes", () => __awaiter(void 0, void 0, void 0, function* () {
233
153
  jest.spyOn(logic, "getSyncHash").mockImplementationOnce(() => "0xNope");
234
- yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, account), { operations: [coinOperation1], subAccounts: [Object.assign(Object.assign({}, tokenAccount), { operations: [tokenOperation1] })] }) }), {});
235
- expect(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default.getLastCoinOperations).toHaveBeenCalledWith(getAccountShapeParameters.currency, getAccountShapeParameters.address, account.id, 0);
236
- expect(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default.getLastTokenOperations).toHaveBeenCalledWith(getAccountShapeParameters.currency, getAccountShapeParameters.address, account.id, 0);
154
+ yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, synchronization_fixtures_1.account), { operations: [synchronization_fixtures_1.coinOperations[0]], subAccounts: [Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { operations: [synchronization_fixtures_1.tokenOperations[0]] })] }) }), {});
155
+ expect(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default.getLastOperations).toHaveBeenCalledWith(getAccountShapeParameters.currency, getAccountShapeParameters.address, synchronization_fixtures_1.account.id, 0, 6969);
237
156
  }));
238
- it("should do a full sync when syncHash changes", () => __awaiter(void 0, void 0, void 0, function* () {
239
- yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, account), { operations: [coinOperation1], subAccounts: [Object.assign(Object.assign({}, tokenAccount), { operations: [tokenOperation1] })] }) }), {});
240
- expect(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default.getLastCoinOperations).toHaveBeenCalledWith(getAccountShapeParameters.currency, getAccountShapeParameters.address, account.id, coinOperation1.blockHeight);
241
- expect(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default.getLastTokenOperations).toHaveBeenCalledWith(getAccountShapeParameters.currency, getAccountShapeParameters.address, account.id, tokenOperation1.blockHeight);
157
+ it("should do an incremental sync when syncHash is identical", () => __awaiter(void 0, void 0, void 0, function* () {
158
+ yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, synchronization_fixtures_1.account), { operations: [synchronization_fixtures_1.coinOperations[2]], subAccounts: [Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { operations: [synchronization_fixtures_1.tokenOperations[0]] })] }) }), {});
159
+ expect(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default.getLastOperations).toHaveBeenCalledWith(getAccountShapeParameters.currency, getAccountShapeParameters.address, synchronization_fixtures_1.account.id, synchronization_fixtures_1.coinOperations[2].blockHeight - synchronization.SAFE_REORG_THRESHOLD, 6969);
242
160
  }));
243
161
  });
244
162
  describe("With transactions fetched", () => {
245
163
  beforeAll(() => {
246
164
  jest
247
- .spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastCoinOperations")
248
- .mockImplementation(() => Promise.resolve([coinOperation1, coinOperation2]));
249
- jest.spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastTokenOperations").mockImplementation(() => Promise.resolve([
250
- {
251
- tokenCurrency: tokenCurrency1,
252
- operation: tokenOperation1,
253
- },
254
- {
255
- tokenCurrency: tokenCurrency1,
256
- operation: tokenOperation2,
257
- },
165
+ .spyOn(etherscanAPI, "getLastCoinOperations")
166
+ .mockImplementation(() => Promise.resolve([Object.assign({}, synchronization_fixtures_1.coinOperations[0]), Object.assign({}, synchronization_fixtures_1.coinOperations[1])]));
167
+ jest
168
+ .spyOn(etherscanAPI, "getLastTokenOperations")
169
+ .mockImplementation(() => Promise.resolve([Object.assign({}, synchronization_fixtures_1.tokenOperations[0]), Object.assign({}, synchronization_fixtures_1.tokenOperations[1])]));
170
+ jest
171
+ .spyOn(etherscanAPI, "getLastNftOperations")
172
+ .mockImplementation(() => Promise.resolve([
173
+ Object.assign({}, synchronization_fixtures_1.erc721Operations[0]),
174
+ Object.assign({}, synchronization_fixtures_1.erc721Operations[1]),
175
+ Object.assign({}, synchronization_fixtures_1.erc721Operations[2]),
176
+ Object.assign({}, synchronization_fixtures_1.erc1155Operations[0]),
177
+ Object.assign({}, synchronization_fixtures_1.erc1155Operations[1]),
258
178
  ]));
259
179
  jest
260
180
  .spyOn(rpcAPI, "getTokenBalance")
261
181
  .mockImplementation((a, b, contractAddress) => __awaiter(void 0, void 0, void 0, function* () {
262
- if (contractAddress === tokenCurrency1.contractAddress) {
182
+ if (contractAddress === synchronization_fixtures_1.tokenCurrencies[0].contractAddress) {
263
183
  return new bignumber_js_1.default(10000);
264
184
  }
265
185
  throw new Error("Shouldn't be trying to fetch this token balance");
@@ -270,64 +190,71 @@ describe("EVM Family", () => {
270
190
  });
271
191
  it("should add the fetched transactions to the operations", () => __awaiter(void 0, void 0, void 0, function* () {
272
192
  var _a, _b;
273
- const accountShape = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: account }), {});
274
- expect(accountShape.operations).toEqual([coinOperation2, coinOperation1]);
193
+ const accountShape = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: synchronization_fixtures_1.account }), {});
194
+ expect(accountShape.operations).toEqual([
195
+ Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[1]), { nftOperations: [synchronization_fixtures_1.erc721Operations[1], synchronization_fixtures_1.erc721Operations[2], synchronization_fixtures_1.erc1155Operations[1]] }),
196
+ Object.assign(Object.assign({}, synchronization_fixtures_1.tokenOperations[1]), { id: `js:2:ethereum:0xkvn:-${synchronization_fixtures_1.tokenOperations[1].hash}-NONE`, type: "NONE", value: new bignumber_js_1.default(0), fee: new bignumber_js_1.default(0), senders: [], recipients: [], subOperations: [synchronization_fixtures_1.tokenOperations[1]], accountId: "", contract: undefined }),
197
+ Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[0]), { subOperations: [synchronization_fixtures_1.tokenOperations[0]], nftOperations: [synchronization_fixtures_1.erc721Operations[0], synchronization_fixtures_1.erc1155Operations[0]] }),
198
+ ]);
275
199
  expect((_b = (_a = accountShape === null || accountShape === void 0 ? void 0 : accountShape.subAccounts) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.operations).toEqual([
276
- tokenOperation2,
277
- tokenOperation1,
200
+ synchronization_fixtures_1.tokenOperations[1],
201
+ synchronization_fixtures_1.tokenOperations[0],
278
202
  ]);
279
203
  }));
204
+ it("should add aggregated NFTs to the account", () => __awaiter(void 0, void 0, void 0, function* () {
205
+ const accountShape = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: synchronization_fixtures_1.account }), {});
206
+ expect(accountShape.nfts).toEqual([synchronization_fixtures_1.nfts[0], synchronization_fixtures_1.nfts[1]]);
207
+ }));
280
208
  it("should return a partial account based on blockHeight", () => __awaiter(void 0, void 0, void 0, function* () {
281
- jest
282
- .spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastCoinOperations")
283
- .mockImplementation(() => Promise.resolve([coinOperation3]));
284
- const operations = [coinOperation2, coinOperation1];
285
- const accountShape = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, account), { operations }) }), {});
209
+ jest.spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastOperations").mockImplementation(() => __awaiter(void 0, void 0, void 0, function* () {
210
+ return ({
211
+ lastTokenOperations: [],
212
+ lastNftOperations: [],
213
+ lastCoinOperations: [synchronization_fixtures_1.coinOperations[2]],
214
+ });
215
+ }));
216
+ const operations = [
217
+ Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[1]), { nftOperations: [synchronization_fixtures_1.erc721Operations[1], synchronization_fixtures_1.erc721Operations[2], synchronization_fixtures_1.erc1155Operations[1]] }),
218
+ Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[0]), { nftOperations: [synchronization_fixtures_1.erc721Operations[0], synchronization_fixtures_1.erc1155Operations[0]] }),
219
+ ];
220
+ const accountShape = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, synchronization_fixtures_1.account), { operations }) }), {});
286
221
  expect(accountShape).toEqual({
287
222
  type: "Account",
288
- id: account.id,
223
+ id: synchronization_fixtures_1.account.id,
289
224
  syncHash: expect.stringMatching(/^0x[A-Fa-f0-9]{64}$/),
290
225
  balance: new bignumber_js_1.default(100),
291
226
  spendableBalance: new bignumber_js_1.default(100),
292
- blockHeight: 10,
293
- operations: [coinOperation3, coinOperation2, coinOperation1],
227
+ nfts: [synchronization_fixtures_1.nfts[0], synchronization_fixtures_1.nfts[1]],
228
+ blockHeight: 6969,
229
+ operations: [synchronization_fixtures_1.coinOperations[2], ...operations],
294
230
  operationsCount: 3,
295
- subAccounts: [
296
- Object.assign(Object.assign({}, tokenAccount), { balance: new bignumber_js_1.default(10000), spendableBalance: new bignumber_js_1.default(10000), operations: [tokenOperation2, tokenOperation1], operationsCount: 2 }),
297
- ],
231
+ subAccounts: synchronization_fixtures_1.account.subAccounts,
298
232
  lastSyncDate: new Date("2014-04-21"),
299
233
  });
300
234
  }));
301
235
  });
302
236
  describe("With pending operations", () => {
303
237
  beforeAll(() => {
304
- jest
305
- .spyOn(etherscanAPI, "getLastCoinOperations")
306
- .mockImplementation(() => Promise.resolve([]));
307
- jest
308
- .spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastCoinOperations")
309
- .mockImplementation(() => Promise.resolve([]));
310
- jest
311
- .spyOn(etherscanAPI, "getLastTokenOperations")
312
- .mockImplementation(() => Promise.resolve([]));
313
- jest
314
- .spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastTokenOperations")
315
- .mockImplementation(() => Promise.resolve([]));
238
+ jest.spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastOperations").mockImplementation(() => Promise.resolve({
239
+ lastCoinOperations: [],
240
+ lastTokenOperations: [],
241
+ lastNftOperations: [],
242
+ }));
316
243
  jest
317
244
  .spyOn(synchronization, "getOperationStatus")
318
- .mockImplementation((currency, op) => Promise.resolve(op.hash === "0xH4sH" ? coinOperation1 : null));
245
+ .mockImplementation((currency, op) => Promise.resolve(op.hash === synchronization_fixtures_1.coinOperations[0].hash ? synchronization_fixtures_1.coinOperations[0] : null));
319
246
  });
320
247
  afterAll(() => {
321
248
  jest.restoreAllMocks();
322
249
  });
323
250
  it("should add the confirmed pending operation to the operations", () => __awaiter(void 0, void 0, void 0, function* () {
324
- const accountShape = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, account), {
251
+ const accountShape = yield synchronization.getAccountShape(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: Object.assign(Object.assign({}, synchronization_fixtures_1.account), {
325
252
  // 2 operations to confirm here, they're differenciated by id
326
253
  pendingOperations: [
327
- coinOperation1,
328
- Object.assign(Object.assign({}, coinOperation1), { hash: "0xN0tH4sH", id: "js:2:ethereum:0xkvn:-0xN0tH4sH-OUT" }),
254
+ synchronization_fixtures_1.coinOperations[0],
255
+ Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[0]), { hash: "0xN0tH4sH", id: "js:2:ethereum:0xkvn:-0xN0tH4sH-OUT" }),
329
256
  ] }) }), {});
330
- expect(accountShape.operations).toEqual([coinOperation1]);
257
+ expect(accountShape.operations).toEqual([synchronization_fixtures_1.coinOperations[0]]);
331
258
  }));
332
259
  });
333
260
  });
@@ -348,56 +275,11 @@ describe("EVM Family", () => {
348
275
  jest.restoreAllMocks();
349
276
  });
350
277
  it("should return the right subAccounts", () => __awaiter(void 0, void 0, void 0, function* () {
351
- jest.spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastTokenOperations").mockImplementation(() => __awaiter(void 0, void 0, void 0, function* () {
352
- return [
353
- { tokenCurrency: tokenCurrency1, operation: tokenOperation1 },
354
- { tokenCurrency: tokenCurrency1, operation: tokenOperation2 },
355
- { tokenCurrency: tokenCurrency2, operation: tokenOperation4 },
356
- {
357
- tokenCurrency: undefined,
358
- operation: ignoredTokenOperation,
359
- },
360
- ];
361
- }));
362
- const tokenAccounts = yield synchronization.getSubAccounts(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: account }), account.id);
363
- const expectedUsdcAccount = Object.assign(Object.assign({}, tokenAccount), { balance: new bignumber_js_1.default(1), spendableBalance: new bignumber_js_1.default(1), operations: [tokenOperation1, tokenOperation2], operationsCount: 2, starred: undefined, swapHistory: [] });
364
- const expectedUsdtAccount = Object.assign(Object.assign({}, (0, testUtils_1.makeTokenAccount)(account.freshAddress, tokenCurrency2)), { balance: new bignumber_js_1.default(2), spendableBalance: new bignumber_js_1.default(2), operations: [tokenOperation4], operationsCount: 1, starred: undefined, swapHistory: [] });
278
+ const tokenAccounts = yield synchronization.getSubAccounts(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: synchronization_fixtures_1.account }), synchronization_fixtures_1.account.id, [synchronization_fixtures_1.tokenOperations[0], synchronization_fixtures_1.tokenOperations[1], synchronization_fixtures_1.tokenOperations[3]]);
279
+ const expectedUsdcAccount = Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { balance: new bignumber_js_1.default(1), spendableBalance: new bignumber_js_1.default(1), operations: [synchronization_fixtures_1.tokenOperations[0], synchronization_fixtures_1.tokenOperations[1]], operationsCount: 2, starred: undefined, swapHistory: [] });
280
+ const expectedUsdtAccount = Object.assign(Object.assign({}, (0, common_fixtures_1.makeTokenAccount)(synchronization_fixtures_1.account.freshAddress, synchronization_fixtures_1.tokenCurrencies[1])), { balance: new bignumber_js_1.default(2), spendableBalance: new bignumber_js_1.default(2), operations: [synchronization_fixtures_1.tokenOperations[3]], operationsCount: 1, starred: undefined, swapHistory: [] });
365
281
  expect(tokenAccounts).toEqual([expectedUsdcAccount, expectedUsdtAccount]);
366
282
  }));
367
- it("should return a partial sub account based on blockHeight", () => __awaiter(void 0, void 0, void 0, function* () {
368
- jest
369
- .spyOn(etherscanAPI === null || etherscanAPI === void 0 ? void 0 : etherscanAPI.default, "getLastTokenOperations")
370
- .mockImplementation(() => __awaiter(void 0, void 0, void 0, function* () {
371
- return [
372
- { tokenCurrency: tokenCurrency1, operation: tokenOperation3 },
373
- ];
374
- }));
375
- const incompleteUsdcAccount = Object.assign(Object.assign({}, tokenAccount), { balance: new bignumber_js_1.default(0), spendableBalance: new bignumber_js_1.default(0), operations: [tokenOperation1, tokenOperation2], operationsCount: 1 });
376
- const accountWithIncompleteSubAccount = Object.assign(Object.assign({}, account), { subAccounts: [incompleteUsdcAccount] });
377
- const tokenAccounts = yield synchronization.getSubAccounts(Object.assign(Object.assign({}, getAccountShapeParameters), { initialAccount: accountWithIncompleteSubAccount }), account.id);
378
- const expectedUsdcAccount = Object.assign(Object.assign({}, incompleteUsdcAccount), { balance: new bignumber_js_1.default(1), spendableBalance: new bignumber_js_1.default(1), operations: [tokenOperation3], operationsCount: 1, starred: undefined, swapHistory: [] });
379
- expect(tokenAccounts).toEqual([expectedUsdcAccount]);
380
- // (currency, address, accountId, fromBlock)
381
- expect(etherscanAPI.default.getLastTokenOperations).toBeCalledWith(currency, account.freshAddress, account.id, tokenOperation2.blockHeight);
382
- }));
383
- it("should throw for currency with unsupported explorer", () => __awaiter(void 0, void 0, void 0, function* () {
384
- try {
385
- yield synchronization.getSubAccounts(Object.assign(Object.assign({}, getAccountShapeParameters), { currency: Object.assign(Object.assign({}, currency), { ethereumLikeInfo: {
386
- chainId: 1,
387
- explorer: {
388
- uri: "http://nope.com",
389
- type: "unsupported",
390
- },
391
- } }) }), account.id);
392
- (0, assert_1.fail)("Promise should have been rejected");
393
- }
394
- catch (e) {
395
- if (e instanceof assert_1.AssertionError) {
396
- throw e;
397
- }
398
- expect(e.message).toMatch("No explorer found for currency");
399
- }
400
- }));
401
283
  });
402
284
  describe("getSubAccountShape", () => {
403
285
  beforeEach(() => {
@@ -416,8 +298,8 @@ describe("EVM Family", () => {
416
298
  jest.restoreAllMocks();
417
299
  });
418
300
  it("should return a correct sub account shape", () => __awaiter(void 0, void 0, void 0, function* () {
419
- const subAccount = yield synchronization.getSubAccountShape(currency, account.id, tokenCurrency1, [tokenOperation1, tokenOperation2, tokenOperation3]);
420
- expect(subAccount).toEqual(Object.assign(Object.assign({}, tokenAccount), { balance: new bignumber_js_1.default(1), spendableBalance: new bignumber_js_1.default(1), operations: [tokenOperation1, tokenOperation2, tokenOperation3], operationsCount: 3, starred: undefined, swapHistory: [] }));
301
+ const subAccount = yield synchronization.getSubAccountShape(synchronization_fixtures_1.currency, synchronization_fixtures_1.account.id, synchronization_fixtures_1.tokenCurrencies[0], [synchronization_fixtures_1.tokenOperations[0], synchronization_fixtures_1.tokenOperations[1], synchronization_fixtures_1.tokenOperations[2]]);
302
+ expect(subAccount).toEqual(Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { balance: new bignumber_js_1.default(1), spendableBalance: new bignumber_js_1.default(1), operations: [synchronization_fixtures_1.tokenOperations[0], synchronization_fixtures_1.tokenOperations[1], synchronization_fixtures_1.tokenOperations[2]], operationsCount: 3, starred: undefined, swapHistory: [] }));
421
303
  }));
422
304
  });
423
305
  describe("getOperationStatus", () => {
@@ -425,7 +307,8 @@ describe("EVM Family", () => {
425
307
  jest.spyOn(rpcAPI, "getTransaction").mockImplementationOnce(() => {
426
308
  throw new Error();
427
309
  });
428
- expect(yield synchronization.getOperationStatus(currency, coinOperation1)).toBe(null);
310
+ const operationStatus = yield synchronization.getOperationStatus(synchronization_fixtures_1.currency, synchronization_fixtures_1.coinOperations[0]);
311
+ expect(operationStatus).toBe(null);
429
312
  }));
430
313
  it("should return null if retrieved transaction has no blockHeight", () => __awaiter(void 0, void 0, void 0, function* () {
431
314
  jest.spyOn(rpcAPI, "getTransaction").mockImplementationOnce(() => __awaiter(void 0, void 0, void 0, function* () {
@@ -435,7 +318,8 @@ describe("EVM Family", () => {
435
318
  nonce: 1,
436
319
  });
437
320
  }));
438
- expect(yield synchronization.getOperationStatus(currency, coinOperation1)).toBe(null);
321
+ const operationStatus = yield synchronization.getOperationStatus(synchronization_fixtures_1.currency, synchronization_fixtures_1.coinOperations[0]);
322
+ expect(operationStatus).toBe(null);
439
323
  }));
440
324
  it("should return the retrieved operation with network properties", () => __awaiter(void 0, void 0, void 0, function* () {
441
325
  jest.spyOn(rpcAPI, "getTransaction").mockImplementationOnce(() => __awaiter(void 0, void 0, void 0, function* () {
@@ -446,7 +330,19 @@ describe("EVM Family", () => {
446
330
  nonce: 123,
447
331
  });
448
332
  }));
449
- expect(yield synchronization.getOperationStatus(currency, coinOperation1)).toEqual(Object.assign(Object.assign({}, coinOperation1), { blockHash: "hash", blockHeight: 10, date: new Date(), transactionSequenceNumber: 123 }));
333
+ const expectedAddition = {
334
+ blockHash: "hash",
335
+ blockHeight: 10,
336
+ date: new Date(),
337
+ transactionSequenceNumber: 123,
338
+ };
339
+ const operationStatus = yield synchronization.getOperationStatus(synchronization_fixtures_1.currency, Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[0]), { subOperations: [synchronization_fixtures_1.tokenOperations[0]], nftOperations: [synchronization_fixtures_1.erc721Operations[0], synchronization_fixtures_1.erc1155Operations[0]] }));
340
+ expect(operationStatus).toEqual(Object.assign(Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[0]), expectedAddition), { subOperations: [
341
+ Object.assign(Object.assign({}, synchronization_fixtures_1.tokenOperations[0]), expectedAddition),
342
+ ], nftOperations: [
343
+ Object.assign(Object.assign({}, synchronization_fixtures_1.erc721Operations[0]), expectedAddition),
344
+ Object.assign(Object.assign({}, synchronization_fixtures_1.erc1155Operations[0]), expectedAddition),
345
+ ] }));
450
346
  }));
451
347
  it("should return the retrieved operation with network properties even if the rpc doesn't return timestamp", () => __awaiter(void 0, void 0, void 0, function* () {
452
348
  jest.spyOn(rpcAPI, "getTransaction").mockImplementationOnce(() => __awaiter(void 0, void 0, void 0, function* () {
@@ -459,39 +355,51 @@ describe("EVM Family", () => {
459
355
  jest
460
356
  .spyOn(rpcAPI, "getBlock")
461
357
  .mockImplementationOnce(() => __awaiter(void 0, void 0, void 0, function* () { return ({ timestamp: Date.now() / 1000 }); }));
462
- expect(yield synchronization.getOperationStatus(currency, coinOperation1)).toEqual(Object.assign(Object.assign({}, coinOperation1), { blockHash: "hash", blockHeight: 10, date: new Date(), transactionSequenceNumber: 123 }));
358
+ const expectedAddition = {
359
+ blockHash: "hash",
360
+ blockHeight: 10,
361
+ date: new Date(),
362
+ transactionSequenceNumber: 123,
363
+ };
364
+ const operationStatus = yield synchronization.getOperationStatus(synchronization_fixtures_1.currency, Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[0]), { subOperations: [synchronization_fixtures_1.tokenOperations[0]], nftOperations: [synchronization_fixtures_1.erc721Operations[0], synchronization_fixtures_1.erc1155Operations[0]] }));
365
+ expect(operationStatus).toEqual(Object.assign(Object.assign(Object.assign({}, synchronization_fixtures_1.coinOperations[0]), expectedAddition), { subOperations: [
366
+ Object.assign(Object.assign({}, synchronization_fixtures_1.tokenOperations[0]), expectedAddition),
367
+ ], nftOperations: [
368
+ Object.assign(Object.assign({}, synchronization_fixtures_1.erc721Operations[0]), expectedAddition),
369
+ Object.assign(Object.assign({}, synchronization_fixtures_1.erc1155Operations[0]), expectedAddition),
370
+ ] }));
463
371
  }));
464
372
  });
465
373
  describe("postSync", () => {
466
374
  it("should return the freshly synced subAccounts", () => {
467
- const tokenAccountWithPending = Object.assign(Object.assign({}, tokenAccount), { pendingOperations: [pendingOperation] });
468
- const accountWithTokenAccount = Object.assign(Object.assign({}, account), { subAccounts: [tokenAccountWithPending] });
469
- expect(synchronization.postSync(Object.assign(Object.assign({}, account), { subAccounts: [] }), accountWithTokenAccount)).toEqual(accountWithTokenAccount);
375
+ const tokenAccountWithPending = Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { pendingOperations: [synchronization_fixtures_1.pendingOperation] });
376
+ const accountWithTokenAccount = Object.assign(Object.assign({}, synchronization_fixtures_1.account), { subAccounts: [tokenAccountWithPending] });
377
+ expect(synchronization.postSync(Object.assign(Object.assign({}, synchronization_fixtures_1.account), { subAccounts: [] }), accountWithTokenAccount)).toEqual(accountWithTokenAccount);
470
378
  });
471
379
  it("should remove pending operations if the main account has removed it", () => {
472
- const tokenAccountWithPending = Object.assign(Object.assign({}, tokenAccount), { pendingOperations: [pendingOperation] });
473
- const accountWithPending = Object.assign(Object.assign({}, account), { subAccounts: [tokenAccountWithPending], pendingOperations: [pendingOperation] });
380
+ const tokenAccountWithPending = Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { pendingOperations: [synchronization_fixtures_1.pendingOperation] });
381
+ const accountWithPending = Object.assign(Object.assign({}, synchronization_fixtures_1.account), { subAccounts: [tokenAccountWithPending], pendingOperations: [synchronization_fixtures_1.pendingOperation] });
474
382
  // should not change anything if we maintain the pending op
475
383
  expect(synchronization.postSync(accountWithPending, accountWithPending)).toEqual(accountWithPending);
476
384
  // Should remove the pending from tokenAccount as well if removed from main account
477
- expect(synchronization.postSync(accountWithPending, Object.assign(Object.assign({}, accountWithPending), { pendingOperations: [] }))).toEqual(account);
385
+ expect(synchronization.postSync(accountWithPending, Object.assign(Object.assign({}, accountWithPending), { pendingOperations: [] }))).toEqual(synchronization_fixtures_1.account);
478
386
  });
479
387
  it("should remove pending operation if the token account has confirmed it", () => {
480
- const tokenAccountWithPending = Object.assign(Object.assign({}, tokenAccount), { pendingOperations: [pendingOperation] });
481
- const accountWithPending = Object.assign(Object.assign({}, account), { subAccounts: [tokenAccountWithPending], pendingOperations: [pendingOperation] });
388
+ const tokenAccountWithPending = Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { pendingOperations: [synchronization_fixtures_1.pendingOperation] });
389
+ const accountWithPending = Object.assign(Object.assign({}, synchronization_fixtures_1.account), { subAccounts: [tokenAccountWithPending], pendingOperations: [synchronization_fixtures_1.pendingOperation] });
482
390
  // Should remove the pending from tokenAccount if it was confirmed in the tokenAccount ops
483
- expect(synchronization.postSync(accountWithPending, Object.assign(Object.assign({}, accountWithPending), { pendingOperations: [pendingOperation], subAccounts: [
484
- Object.assign(Object.assign({}, tokenAccountWithPending), { operations: [pendingOperation] }),
391
+ expect(synchronization.postSync(accountWithPending, Object.assign(Object.assign({}, accountWithPending), { pendingOperations: [synchronization_fixtures_1.pendingOperation], subAccounts: [
392
+ Object.assign(Object.assign({}, tokenAccountWithPending), { operations: [synchronization_fixtures_1.pendingOperation] }),
485
393
  ] }))).toEqual(Object.assign(Object.assign({}, accountWithPending), { subAccounts: [
486
- Object.assign(Object.assign({}, tokenAccountWithPending), { operations: [pendingOperation], pendingOperations: [] }),
394
+ Object.assign(Object.assign({}, tokenAccountWithPending), { operations: [synchronization_fixtures_1.pendingOperation], pendingOperations: [] }),
487
395
  ] }));
488
396
  });
489
397
  it("should remove pending operation if ", () => {
490
- const latePending = Object.assign(Object.assign({}, pendingOperation), { date: new Date() + (0, env_1.getEnv)("OPERATION_OPTIMISTIC_RETENTION") + 1 });
491
- const tokenAccountWithPending = Object.assign(Object.assign({}, tokenAccount), { pendingOperations: [latePending] });
492
- const accountWithTokenAccount = Object.assign(Object.assign({}, account), { subAccounts: [tokenAccountWithPending] });
398
+ const latePending = Object.assign(Object.assign({}, synchronization_fixtures_1.pendingOperation), { date: new Date() + (0, env_1.getEnv)("OPERATION_OPTIMISTIC_RETENTION") + 1 });
399
+ const tokenAccountWithPending = Object.assign(Object.assign({}, synchronization_fixtures_1.tokenAccount), { pendingOperations: [latePending] });
400
+ const accountWithTokenAccount = Object.assign(Object.assign({}, synchronization_fixtures_1.account), { subAccounts: [tokenAccountWithPending] });
493
401
  // Should remove the pending from tokenAccount if it was confirmed in the tokenAccount ops
494
- expect(synchronization.postSync(accountWithTokenAccount, accountWithTokenAccount)).toEqual(account);
402
+ expect(synchronization.postSync(accountWithTokenAccount, accountWithTokenAccount)).toEqual(synchronization_fixtures_1.account);
495
403
  });
496
404
  });
497
405
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synchronization.unit.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/synchronization.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.unit.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/transaction.unit.test.ts"],"names":[],"mappings":""}