@ledgerhq/coin-vechain 2.9.1 → 2.9.2-nightly.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 (474) hide show
  1. package/.unimportedrc.json +16 -4
  2. package/CHANGELOG.md +11 -0
  3. package/lib/bridge/broadcast.d.ts.map +1 -1
  4. package/lib/bridge/broadcast.js +2 -3
  5. package/lib/bridge/broadcast.js.map +1 -1
  6. package/lib/bridge/broadcast.test.d.ts +2 -0
  7. package/lib/bridge/broadcast.test.d.ts.map +1 -0
  8. package/lib/bridge/broadcast.test.js +188 -0
  9. package/lib/bridge/broadcast.test.js.map +1 -0
  10. package/lib/bridge/buildOptimisticOperatioin.test.d.ts +2 -0
  11. package/lib/bridge/buildOptimisticOperatioin.test.d.ts.map +1 -0
  12. package/lib/bridge/buildOptimisticOperatioin.test.js +286 -0
  13. package/lib/bridge/buildOptimisticOperatioin.test.js.map +1 -0
  14. package/lib/bridge/createTransaction.d.ts.map +1 -1
  15. package/lib/bridge/createTransaction.js +2 -1
  16. package/lib/bridge/createTransaction.js.map +1 -1
  17. package/lib/bridge/createTransaction.test.d.ts +2 -0
  18. package/lib/bridge/createTransaction.test.d.ts.map +1 -0
  19. package/lib/bridge/createTransaction.test.js +167 -0
  20. package/lib/bridge/createTransaction.test.js.map +1 -0
  21. package/lib/bridge/estimateMaxSpendable.test.d.ts +2 -0
  22. package/lib/bridge/estimateMaxSpendable.test.d.ts.map +1 -0
  23. package/lib/bridge/estimateMaxSpendable.test.js +269 -0
  24. package/lib/bridge/estimateMaxSpendable.test.js.map +1 -0
  25. package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
  26. package/lib/bridge/getTransactionStatus.js +3 -1
  27. package/lib/bridge/getTransactionStatus.js.map +1 -1
  28. package/lib/bridge/getTransactionStatus.test.d.ts +2 -0
  29. package/lib/bridge/getTransactionStatus.test.d.ts.map +1 -0
  30. package/lib/bridge/getTransactionStatus.test.js +282 -0
  31. package/lib/bridge/getTransactionStatus.test.js.map +1 -0
  32. package/lib/bridge/helpers.test.d.ts +2 -0
  33. package/lib/bridge/helpers.test.d.ts.map +1 -0
  34. package/lib/bridge/helpers.test.js +298 -0
  35. package/lib/bridge/helpers.test.js.map +1 -0
  36. package/lib/bridge/prepareTransaction.d.ts.map +1 -1
  37. package/lib/bridge/prepareTransaction.js +10 -3
  38. package/lib/bridge/prepareTransaction.js.map +1 -1
  39. package/lib/bridge/prepareTransaction.test.d.ts +2 -0
  40. package/lib/bridge/prepareTransaction.test.d.ts.map +1 -0
  41. package/lib/bridge/prepareTransaction.test.js +277 -0
  42. package/lib/bridge/prepareTransaction.test.js.map +1 -0
  43. package/lib/bridge/signOperation.d.ts.map +1 -1
  44. package/lib/bridge/signOperation.js +3 -3
  45. package/lib/bridge/signOperation.js.map +1 -1
  46. package/lib/bridge/signOperation.test.d.ts +2 -0
  47. package/lib/bridge/signOperation.test.d.ts.map +1 -0
  48. package/lib/bridge/signOperation.test.js +295 -0
  49. package/lib/bridge/signOperation.test.js.map +1 -0
  50. package/lib/bridge/synchronisation.d.ts.map +1 -1
  51. package/lib/bridge/synchronisation.js +2 -2
  52. package/lib/bridge/synchronisation.js.map +1 -1
  53. package/lib/bridge/transaction.test.d.ts +2 -0
  54. package/lib/bridge/transaction.test.d.ts.map +1 -0
  55. package/lib/bridge/transaction.test.js +353 -0
  56. package/lib/bridge/transaction.test.js.map +1 -0
  57. package/lib/common-logic/calculateClauses.d.ts +5 -0
  58. package/lib/common-logic/calculateClauses.d.ts.map +1 -0
  59. package/lib/common-logic/{logic.js → calculateClauses.js} +7 -10
  60. package/lib/common-logic/calculateClauses.js.map +1 -0
  61. package/lib/common-logic/calculateClauses.test.d.ts +2 -0
  62. package/lib/common-logic/calculateClauses.test.d.ts.map +1 -0
  63. package/lib/common-logic/calculateClauses.test.js +156 -0
  64. package/lib/common-logic/calculateClauses.test.js.map +1 -0
  65. package/lib/common-logic/calculateGasFees.d.ts +9 -0
  66. package/lib/common-logic/calculateGasFees.d.ts.map +1 -0
  67. package/lib/common-logic/calculateGasFees.js +39 -0
  68. package/lib/common-logic/calculateGasFees.js.map +1 -0
  69. package/lib/common-logic/calculateGasFees.test.d.ts +2 -0
  70. package/lib/common-logic/calculateGasFees.test.d.ts.map +1 -0
  71. package/lib/common-logic/calculateGasFees.test.js +279 -0
  72. package/lib/common-logic/calculateGasFees.test.js.map +1 -0
  73. package/lib/common-logic/calculateTransactionInfo.d.ts +10 -0
  74. package/lib/common-logic/calculateTransactionInfo.d.ts.map +1 -0
  75. package/lib/common-logic/calculateTransactionInfo.js +81 -0
  76. package/lib/common-logic/calculateTransactionInfo.js.map +1 -0
  77. package/lib/common-logic/calculateTransactionInfo.test.d.ts +2 -0
  78. package/lib/common-logic/calculateTransactionInfo.test.d.ts.map +1 -0
  79. package/lib/common-logic/calculateTransactionInfo.test.js +314 -0
  80. package/lib/common-logic/calculateTransactionInfo.test.js.map +1 -0
  81. package/lib/common-logic/estimateGas.d.ts +10 -0
  82. package/lib/common-logic/estimateGas.d.ts.map +1 -0
  83. package/lib/common-logic/estimateGas.js +17 -0
  84. package/lib/common-logic/estimateGas.js.map +1 -0
  85. package/lib/common-logic/estimateGas.test.d.ts +2 -0
  86. package/lib/common-logic/estimateGas.test.d.ts.map +1 -0
  87. package/lib/common-logic/estimateGas.test.js +129 -0
  88. package/lib/common-logic/estimateGas.test.js.map +1 -0
  89. package/lib/common-logic/fixPrefixCase.d.ts +2 -0
  90. package/lib/common-logic/fixPrefixCase.d.ts.map +1 -0
  91. package/lib/common-logic/fixPrefixCase.js +9 -0
  92. package/lib/common-logic/fixPrefixCase.js.map +1 -0
  93. package/lib/common-logic/fixPrefixCase.test.d.ts +2 -0
  94. package/lib/common-logic/fixPrefixCase.test.d.ts.map +1 -0
  95. package/lib/common-logic/fixPrefixCase.test.js +46 -0
  96. package/lib/common-logic/fixPrefixCase.test.js.map +1 -0
  97. package/lib/common-logic/generateNonce.d.ts +6 -0
  98. package/lib/common-logic/generateNonce.d.ts.map +1 -0
  99. package/lib/common-logic/generateNonce.js +13 -0
  100. package/lib/common-logic/generateNonce.js.map +1 -0
  101. package/lib/common-logic/generateNonce.test.d.ts +2 -0
  102. package/lib/common-logic/generateNonce.test.d.ts.map +1 -0
  103. package/lib/common-logic/generateNonce.test.js +59 -0
  104. package/lib/common-logic/generateNonce.test.js.map +1 -0
  105. package/lib/common-logic/getThorClient.d.ts +7 -0
  106. package/lib/common-logic/getThorClient.d.ts.map +1 -0
  107. package/lib/common-logic/getThorClient.js +14 -0
  108. package/lib/common-logic/getThorClient.js.map +1 -0
  109. package/lib/common-logic/getThorClient.test.d.ts +2 -0
  110. package/lib/common-logic/getThorClient.test.d.ts.map +1 -0
  111. package/lib/common-logic/getThorClient.test.js +53 -0
  112. package/lib/common-logic/getThorClient.test.js.map +1 -0
  113. package/lib/common-logic/index.d.ts +8 -6
  114. package/lib/common-logic/index.d.ts.map +1 -1
  115. package/lib/common-logic/index.js +8 -6
  116. package/lib/common-logic/index.js.map +1 -1
  117. package/lib/common-logic/{mapping-utils.d.ts → mapTransfersToOperations.d.ts} +2 -2
  118. package/lib/common-logic/mapTransfersToOperations.d.ts.map +1 -0
  119. package/lib/common-logic/{mapping-utils.js → mapTransfersToOperations.js} +26 -19
  120. package/lib/common-logic/mapTransfersToOperations.js.map +1 -0
  121. package/lib/common-logic/mapTransfersToOperations.test.d.ts +2 -0
  122. package/lib/common-logic/mapTransfersToOperations.test.d.ts.map +1 -0
  123. package/lib/common-logic/mapTransfersToOperations.test.js +274 -0
  124. package/lib/common-logic/mapTransfersToOperations.test.js.map +1 -0
  125. package/lib/common-logic/{pad-address.d.ts → padAddress.d.ts} +1 -1
  126. package/lib/common-logic/padAddress.d.ts.map +1 -0
  127. package/lib/common-logic/{pad-address.js → padAddress.js} +1 -1
  128. package/lib/common-logic/padAddress.js.map +1 -0
  129. package/lib/common-logic/padAddress.test.d.ts +2 -0
  130. package/lib/common-logic/padAddress.test.d.ts.map +1 -0
  131. package/lib/common-logic/padAddress.test.js +59 -0
  132. package/lib/common-logic/padAddress.test.js.map +1 -0
  133. package/lib/common-logic/parseAddress.d.ts +7 -0
  134. package/lib/common-logic/parseAddress.d.ts.map +1 -0
  135. package/lib/common-logic/parseAddress.js +15 -0
  136. package/lib/common-logic/parseAddress.js.map +1 -0
  137. package/lib/common-logic/parseAddress.test.d.ts +2 -0
  138. package/lib/common-logic/parseAddress.test.d.ts.map +1 -0
  139. package/lib/common-logic/parseAddress.test.js +97 -0
  140. package/lib/common-logic/parseAddress.test.js.map +1 -0
  141. package/lib/constants/env.d.ts +2 -0
  142. package/lib/constants/env.d.ts.map +1 -0
  143. package/lib/constants/env.js +6 -0
  144. package/lib/constants/env.js.map +1 -0
  145. package/lib/constants/index.d.ts +2 -0
  146. package/lib/constants/index.d.ts.map +1 -0
  147. package/lib/constants/index.js +18 -0
  148. package/lib/constants/index.js.map +1 -0
  149. package/lib/network/sdk.d.ts +3 -10
  150. package/lib/network/sdk.d.ts.map +1 -1
  151. package/lib/network/sdk.js +15 -30
  152. package/lib/network/sdk.js.map +1 -1
  153. package/lib/signer/getAddress.test.d.ts +2 -0
  154. package/lib/signer/getAddress.test.d.ts.map +1 -0
  155. package/lib/signer/getAddress.test.js +357 -0
  156. package/lib/signer/getAddress.test.js.map +1 -0
  157. package/lib/signer/signMessage.d.ts.map +1 -1
  158. package/lib/signer/signMessage.js +3 -3
  159. package/lib/signer/signMessage.js.map +1 -1
  160. package/lib/signer/signMessage.test.d.ts +2 -0
  161. package/lib/signer/signMessage.test.d.ts.map +1 -0
  162. package/lib/signer/signMessage.test.js +242 -0
  163. package/lib/signer/signMessage.test.js.map +1 -0
  164. package/lib/test/bridgeDatasetTest.d.ts.map +1 -1
  165. package/lib/test/bridgeDatasetTest.js +79 -53
  166. package/lib/test/bridgeDatasetTest.js.map +1 -1
  167. package/lib/test/cli.d.ts.map +1 -1
  168. package/lib/test/cli.js +5 -4
  169. package/lib/test/cli.js.map +1 -1
  170. package/lib/types/bridge.d.ts +11 -3
  171. package/lib/types/bridge.d.ts.map +1 -1
  172. package/lib/types/bridge.js +3 -0
  173. package/lib/types/bridge.js.map +1 -1
  174. package/lib/types/constants.d.ts +0 -3
  175. package/lib/types/constants.d.ts.map +1 -1
  176. package/lib/types/constants.js +1 -4
  177. package/lib/types/constants.js.map +1 -1
  178. package/lib/types/signer.d.ts +0 -2
  179. package/lib/types/signer.d.ts.map +1 -1
  180. package/lib-es/bridge/broadcast.d.ts.map +1 -1
  181. package/lib-es/bridge/broadcast.js +2 -3
  182. package/lib-es/bridge/broadcast.js.map +1 -1
  183. package/lib-es/bridge/broadcast.test.d.ts +2 -0
  184. package/lib-es/bridge/broadcast.test.d.ts.map +1 -0
  185. package/lib-es/bridge/broadcast.test.js +183 -0
  186. package/lib-es/bridge/broadcast.test.js.map +1 -0
  187. package/lib-es/bridge/buildOptimisticOperatioin.test.d.ts +2 -0
  188. package/lib-es/bridge/buildOptimisticOperatioin.test.d.ts.map +1 -0
  189. package/lib-es/bridge/buildOptimisticOperatioin.test.js +281 -0
  190. package/lib-es/bridge/buildOptimisticOperatioin.test.js.map +1 -0
  191. package/lib-es/bridge/createTransaction.d.ts.map +1 -1
  192. package/lib-es/bridge/createTransaction.js +3 -2
  193. package/lib-es/bridge/createTransaction.js.map +1 -1
  194. package/lib-es/bridge/createTransaction.test.d.ts +2 -0
  195. package/lib-es/bridge/createTransaction.test.d.ts.map +1 -0
  196. package/lib-es/bridge/createTransaction.test.js +162 -0
  197. package/lib-es/bridge/createTransaction.test.js.map +1 -0
  198. package/lib-es/bridge/estimateMaxSpendable.test.d.ts +2 -0
  199. package/lib-es/bridge/estimateMaxSpendable.test.d.ts.map +1 -0
  200. package/lib-es/bridge/estimateMaxSpendable.test.js +264 -0
  201. package/lib-es/bridge/estimateMaxSpendable.test.js.map +1 -0
  202. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -1
  203. package/lib-es/bridge/getTransactionStatus.js +4 -2
  204. package/lib-es/bridge/getTransactionStatus.js.map +1 -1
  205. package/lib-es/bridge/getTransactionStatus.test.d.ts +2 -0
  206. package/lib-es/bridge/getTransactionStatus.test.d.ts.map +1 -0
  207. package/lib-es/bridge/getTransactionStatus.test.js +277 -0
  208. package/lib-es/bridge/getTransactionStatus.test.js.map +1 -0
  209. package/lib-es/bridge/helpers.test.d.ts +2 -0
  210. package/lib-es/bridge/helpers.test.d.ts.map +1 -0
  211. package/lib-es/bridge/helpers.test.js +293 -0
  212. package/lib-es/bridge/helpers.test.js.map +1 -0
  213. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -1
  214. package/lib-es/bridge/prepareTransaction.js +11 -4
  215. package/lib-es/bridge/prepareTransaction.js.map +1 -1
  216. package/lib-es/bridge/prepareTransaction.test.d.ts +2 -0
  217. package/lib-es/bridge/prepareTransaction.test.d.ts.map +1 -0
  218. package/lib-es/bridge/prepareTransaction.test.js +272 -0
  219. package/lib-es/bridge/prepareTransaction.test.js.map +1 -0
  220. package/lib-es/bridge/signOperation.d.ts.map +1 -1
  221. package/lib-es/bridge/signOperation.js +3 -3
  222. package/lib-es/bridge/signOperation.js.map +1 -1
  223. package/lib-es/bridge/signOperation.test.d.ts +2 -0
  224. package/lib-es/bridge/signOperation.test.d.ts.map +1 -0
  225. package/lib-es/bridge/signOperation.test.js +290 -0
  226. package/lib-es/bridge/signOperation.test.js.map +1 -0
  227. package/lib-es/bridge/synchronisation.d.ts.map +1 -1
  228. package/lib-es/bridge/synchronisation.js +1 -1
  229. package/lib-es/bridge/synchronisation.js.map +1 -1
  230. package/lib-es/bridge/transaction.test.d.ts +2 -0
  231. package/lib-es/bridge/transaction.test.d.ts.map +1 -0
  232. package/lib-es/bridge/transaction.test.js +347 -0
  233. package/lib-es/bridge/transaction.test.js.map +1 -0
  234. package/lib-es/common-logic/calculateClauses.d.ts +5 -0
  235. package/lib-es/common-logic/calculateClauses.d.ts.map +1 -0
  236. package/lib-es/common-logic/{logic.js → calculateClauses.js} +6 -6
  237. package/lib-es/common-logic/calculateClauses.js.map +1 -0
  238. package/lib-es/common-logic/calculateClauses.test.d.ts +2 -0
  239. package/lib-es/common-logic/calculateClauses.test.d.ts.map +1 -0
  240. package/lib-es/common-logic/calculateClauses.test.js +151 -0
  241. package/lib-es/common-logic/calculateClauses.test.js.map +1 -0
  242. package/lib-es/common-logic/calculateGasFees.d.ts +9 -0
  243. package/lib-es/common-logic/calculateGasFees.d.ts.map +1 -0
  244. package/lib-es/common-logic/calculateGasFees.js +32 -0
  245. package/lib-es/common-logic/calculateGasFees.js.map +1 -0
  246. package/lib-es/common-logic/calculateGasFees.test.d.ts +2 -0
  247. package/lib-es/common-logic/calculateGasFees.test.d.ts.map +1 -0
  248. package/lib-es/common-logic/calculateGasFees.test.js +274 -0
  249. package/lib-es/common-logic/calculateGasFees.test.js.map +1 -0
  250. package/lib-es/common-logic/calculateTransactionInfo.d.ts +10 -0
  251. package/lib-es/common-logic/calculateTransactionInfo.d.ts.map +1 -0
  252. package/lib-es/common-logic/calculateTransactionInfo.js +74 -0
  253. package/lib-es/common-logic/calculateTransactionInfo.js.map +1 -0
  254. package/lib-es/common-logic/calculateTransactionInfo.test.d.ts +2 -0
  255. package/lib-es/common-logic/calculateTransactionInfo.test.d.ts.map +1 -0
  256. package/lib-es/common-logic/calculateTransactionInfo.test.js +309 -0
  257. package/lib-es/common-logic/calculateTransactionInfo.test.js.map +1 -0
  258. package/lib-es/common-logic/estimateGas.d.ts +10 -0
  259. package/lib-es/common-logic/estimateGas.d.ts.map +1 -0
  260. package/lib-es/common-logic/estimateGas.js +13 -0
  261. package/lib-es/common-logic/estimateGas.js.map +1 -0
  262. package/lib-es/common-logic/estimateGas.test.d.ts +2 -0
  263. package/lib-es/common-logic/estimateGas.test.d.ts.map +1 -0
  264. package/lib-es/common-logic/estimateGas.test.js +127 -0
  265. package/lib-es/common-logic/estimateGas.test.js.map +1 -0
  266. package/lib-es/common-logic/fixPrefixCase.d.ts +2 -0
  267. package/lib-es/common-logic/fixPrefixCase.d.ts.map +1 -0
  268. package/lib-es/common-logic/fixPrefixCase.js +5 -0
  269. package/lib-es/common-logic/fixPrefixCase.js.map +1 -0
  270. package/lib-es/common-logic/fixPrefixCase.test.d.ts +2 -0
  271. package/lib-es/common-logic/fixPrefixCase.test.d.ts.map +1 -0
  272. package/lib-es/common-logic/fixPrefixCase.test.js +44 -0
  273. package/lib-es/common-logic/fixPrefixCase.test.js.map +1 -0
  274. package/lib-es/common-logic/generateNonce.d.ts +6 -0
  275. package/lib-es/common-logic/generateNonce.d.ts.map +1 -0
  276. package/lib-es/common-logic/generateNonce.js +9 -0
  277. package/lib-es/common-logic/generateNonce.js.map +1 -0
  278. package/lib-es/common-logic/generateNonce.test.d.ts +2 -0
  279. package/lib-es/common-logic/generateNonce.test.d.ts.map +1 -0
  280. package/lib-es/common-logic/generateNonce.test.js +57 -0
  281. package/lib-es/common-logic/generateNonce.test.js.map +1 -0
  282. package/lib-es/common-logic/getThorClient.d.ts +7 -0
  283. package/lib-es/common-logic/getThorClient.d.ts.map +1 -0
  284. package/lib-es/common-logic/getThorClient.js +10 -0
  285. package/lib-es/common-logic/getThorClient.js.map +1 -0
  286. package/lib-es/common-logic/getThorClient.test.d.ts +2 -0
  287. package/lib-es/common-logic/getThorClient.test.d.ts.map +1 -0
  288. package/lib-es/common-logic/getThorClient.test.js +51 -0
  289. package/lib-es/common-logic/getThorClient.test.js.map +1 -0
  290. package/lib-es/common-logic/index.d.ts +8 -6
  291. package/lib-es/common-logic/index.d.ts.map +1 -1
  292. package/lib-es/common-logic/index.js +8 -6
  293. package/lib-es/common-logic/index.js.map +1 -1
  294. package/lib-es/common-logic/{mapping-utils.d.ts → mapTransfersToOperations.d.ts} +2 -2
  295. package/lib-es/common-logic/mapTransfersToOperations.d.ts.map +1 -0
  296. package/lib-es/common-logic/mapTransfersToOperations.js +51 -0
  297. package/lib-es/common-logic/mapTransfersToOperations.js.map +1 -0
  298. package/lib-es/common-logic/mapTransfersToOperations.test.d.ts +2 -0
  299. package/lib-es/common-logic/mapTransfersToOperations.test.d.ts.map +1 -0
  300. package/lib-es/common-logic/mapTransfersToOperations.test.js +269 -0
  301. package/lib-es/common-logic/mapTransfersToOperations.test.js.map +1 -0
  302. package/lib-es/common-logic/{pad-address.d.ts → padAddress.d.ts} +1 -1
  303. package/lib-es/common-logic/padAddress.d.ts.map +1 -0
  304. package/lib-es/common-logic/{pad-address.js → padAddress.js} +1 -1
  305. package/lib-es/common-logic/padAddress.js.map +1 -0
  306. package/lib-es/common-logic/padAddress.test.d.ts +2 -0
  307. package/lib-es/common-logic/padAddress.test.d.ts.map +1 -0
  308. package/lib-es/common-logic/padAddress.test.js +57 -0
  309. package/lib-es/common-logic/padAddress.test.js.map +1 -0
  310. package/lib-es/common-logic/parseAddress.d.ts +7 -0
  311. package/lib-es/common-logic/parseAddress.d.ts.map +1 -0
  312. package/lib-es/common-logic/parseAddress.js +11 -0
  313. package/lib-es/common-logic/parseAddress.js.map +1 -0
  314. package/lib-es/common-logic/parseAddress.test.d.ts +2 -0
  315. package/lib-es/common-logic/parseAddress.test.d.ts.map +1 -0
  316. package/lib-es/common-logic/parseAddress.test.js +95 -0
  317. package/lib-es/common-logic/parseAddress.test.js.map +1 -0
  318. package/lib-es/constants/env.d.ts +2 -0
  319. package/lib-es/constants/env.d.ts.map +1 -0
  320. package/lib-es/constants/env.js +3 -0
  321. package/lib-es/constants/env.js.map +1 -0
  322. package/lib-es/constants/index.d.ts +2 -0
  323. package/lib-es/constants/index.d.ts.map +1 -0
  324. package/lib-es/constants/index.js +2 -0
  325. package/lib-es/constants/index.js.map +1 -0
  326. package/lib-es/network/sdk.d.ts +3 -10
  327. package/lib-es/network/sdk.d.ts.map +1 -1
  328. package/lib-es/network/sdk.js +5 -19
  329. package/lib-es/network/sdk.js.map +1 -1
  330. package/lib-es/signer/getAddress.test.d.ts +2 -0
  331. package/lib-es/signer/getAddress.test.d.ts.map +1 -0
  332. package/lib-es/signer/getAddress.test.js +352 -0
  333. package/lib-es/signer/getAddress.test.js.map +1 -0
  334. package/lib-es/signer/signMessage.d.ts.map +1 -1
  335. package/lib-es/signer/signMessage.js +3 -3
  336. package/lib-es/signer/signMessage.js.map +1 -1
  337. package/lib-es/signer/signMessage.test.d.ts +2 -0
  338. package/lib-es/signer/signMessage.test.d.ts.map +1 -0
  339. package/lib-es/signer/signMessage.test.js +240 -0
  340. package/lib-es/signer/signMessage.test.js.map +1 -0
  341. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -1
  342. package/lib-es/test/bridgeDatasetTest.js +80 -54
  343. package/lib-es/test/bridgeDatasetTest.js.map +1 -1
  344. package/lib-es/test/cli.d.ts.map +1 -1
  345. package/lib-es/test/cli.js +4 -3
  346. package/lib-es/test/cli.js.map +1 -1
  347. package/lib-es/types/bridge.d.ts +11 -3
  348. package/lib-es/types/bridge.d.ts.map +1 -1
  349. package/lib-es/types/bridge.js +6 -1
  350. package/lib-es/types/bridge.js.map +1 -1
  351. package/lib-es/types/constants.d.ts +0 -3
  352. package/lib-es/types/constants.d.ts.map +1 -1
  353. package/lib-es/types/constants.js +0 -3
  354. package/lib-es/types/constants.js.map +1 -1
  355. package/lib-es/types/signer.d.ts +0 -2
  356. package/lib-es/types/signer.d.ts.map +1 -1
  357. package/package.json +10 -9
  358. package/src/bridge/broadcast.test.ts +236 -0
  359. package/src/bridge/broadcast.ts +4 -5
  360. package/src/bridge/buildOptimisticOperatioin.test.ts +364 -0
  361. package/src/bridge/createTransaction.test.ts +201 -0
  362. package/src/bridge/createTransaction.ts +3 -2
  363. package/src/bridge/estimateMaxSpendable.test.ts +319 -0
  364. package/src/bridge/getTransactionStatus.test.ts +353 -0
  365. package/src/bridge/getTransactionStatus.ts +4 -2
  366. package/src/bridge/helpers.test.ts +356 -0
  367. package/src/bridge/prepareTransaction.test.ts +345 -0
  368. package/src/bridge/prepareTransaction.ts +20 -10
  369. package/src/bridge/signOperation.test.ts +354 -0
  370. package/src/bridge/signOperation.ts +6 -3
  371. package/src/bridge/synchronisation.ts +1 -1
  372. package/src/bridge/transaction.test.ts +440 -0
  373. package/src/common-logic/calculateClauses.test.ts +186 -0
  374. package/src/common-logic/calculateClauses.ts +44 -0
  375. package/src/common-logic/calculateGasFees.test.ts +363 -0
  376. package/src/common-logic/calculateGasFees.ts +45 -0
  377. package/src/common-logic/calculateTransactionInfo.test.ts +396 -0
  378. package/src/common-logic/calculateTransactionInfo.ts +96 -0
  379. package/src/common-logic/estimateGas.test.ts +162 -0
  380. package/src/common-logic/estimateGas.ts +18 -0
  381. package/src/common-logic/fixPrefixCase.test.ts +51 -0
  382. package/src/common-logic/fixPrefixCase.ts +5 -0
  383. package/src/common-logic/generateNonce.test.ts +72 -0
  384. package/src/common-logic/generateNonce.ts +9 -0
  385. package/src/common-logic/getThorClient.test.ts +66 -0
  386. package/src/common-logic/getThorClient.ts +10 -0
  387. package/src/common-logic/index.ts +8 -6
  388. package/src/common-logic/mapTransfersToOperations.test.ts +342 -0
  389. package/src/common-logic/mapTransfersToOperations.ts +77 -0
  390. package/src/common-logic/padAddress.test.ts +65 -0
  391. package/src/common-logic/parseAddress.test.ts +130 -0
  392. package/src/common-logic/parseAddress.ts +11 -0
  393. package/src/constants/env.ts +3 -0
  394. package/src/constants/index.ts +1 -0
  395. package/src/network/sdk.ts +22 -30
  396. package/src/signer/getAddress.test.ts +454 -0
  397. package/src/signer/signMessage.test.ts +329 -0
  398. package/src/signer/signMessage.ts +4 -5
  399. package/src/test/bridgeDatasetTest.ts +86 -58
  400. package/src/test/cli.ts +4 -3
  401. package/src/types/bridge.ts +16 -3
  402. package/src/types/constants.ts +0 -3
  403. package/lib/common-logic/address-utils.d.ts +0 -2
  404. package/lib/common-logic/address-utils.d.ts.map +0 -1
  405. package/lib/common-logic/address-utils.js +0 -19
  406. package/lib/common-logic/address-utils.js.map +0 -1
  407. package/lib/common-logic/hex-utils.d.ts +0 -8
  408. package/lib/common-logic/hex-utils.d.ts.map +0 -1
  409. package/lib/common-logic/hex-utils.js +0 -52
  410. package/lib/common-logic/hex-utils.js.map +0 -1
  411. package/lib/common-logic/logic.d.ts +0 -5
  412. package/lib/common-logic/logic.d.ts.map +0 -1
  413. package/lib/common-logic/logic.js.map +0 -1
  414. package/lib/common-logic/mapping-utils.d.ts.map +0 -1
  415. package/lib/common-logic/mapping-utils.js.map +0 -1
  416. package/lib/common-logic/pad-address.d.ts.map +0 -1
  417. package/lib/common-logic/pad-address.js.map +0 -1
  418. package/lib/common-logic/transaction-utils.d.ts +0 -30
  419. package/lib/common-logic/transaction-utils.d.ts.map +0 -1
  420. package/lib/common-logic/transaction-utils.js +0 -161
  421. package/lib/common-logic/transaction-utils.js.map +0 -1
  422. package/lib/contracts/abis/VIP180.d.ts +0 -17
  423. package/lib/contracts/abis/VIP180.d.ts.map +0 -1
  424. package/lib/contracts/abis/VIP180.js +0 -265
  425. package/lib/contracts/abis/VIP180.js.map +0 -1
  426. package/lib/contracts/abis/params.d.ts +0 -8
  427. package/lib/contracts/abis/params.d.ts.map +0 -1
  428. package/lib/contracts/abis/params.js +0 -69
  429. package/lib/contracts/abis/params.js.map +0 -1
  430. package/lib/contracts/constants.d.ts +0 -6
  431. package/lib/contracts/constants.d.ts.map +0 -1
  432. package/lib/contracts/constants.js +0 -10
  433. package/lib/contracts/constants.js.map +0 -1
  434. package/lib-es/common-logic/address-utils.d.ts +0 -2
  435. package/lib-es/common-logic/address-utils.d.ts.map +0 -1
  436. package/lib-es/common-logic/address-utils.js +0 -12
  437. package/lib-es/common-logic/address-utils.js.map +0 -1
  438. package/lib-es/common-logic/hex-utils.d.ts +0 -8
  439. package/lib-es/common-logic/hex-utils.d.ts.map +0 -1
  440. package/lib-es/common-logic/hex-utils.js +0 -50
  441. package/lib-es/common-logic/hex-utils.js.map +0 -1
  442. package/lib-es/common-logic/logic.d.ts +0 -5
  443. package/lib-es/common-logic/logic.d.ts.map +0 -1
  444. package/lib-es/common-logic/logic.js.map +0 -1
  445. package/lib-es/common-logic/mapping-utils.d.ts.map +0 -1
  446. package/lib-es/common-logic/mapping-utils.js +0 -44
  447. package/lib-es/common-logic/mapping-utils.js.map +0 -1
  448. package/lib-es/common-logic/pad-address.d.ts.map +0 -1
  449. package/lib-es/common-logic/pad-address.js.map +0 -1
  450. package/lib-es/common-logic/transaction-utils.d.ts +0 -30
  451. package/lib-es/common-logic/transaction-utils.d.ts.map +0 -1
  452. package/lib-es/common-logic/transaction-utils.js +0 -150
  453. package/lib-es/common-logic/transaction-utils.js.map +0 -1
  454. package/lib-es/contracts/abis/VIP180.d.ts +0 -17
  455. package/lib-es/contracts/abis/VIP180.d.ts.map +0 -1
  456. package/lib-es/contracts/abis/VIP180.js +0 -263
  457. package/lib-es/contracts/abis/VIP180.js.map +0 -1
  458. package/lib-es/contracts/abis/params.d.ts +0 -8
  459. package/lib-es/contracts/abis/params.d.ts.map +0 -1
  460. package/lib-es/contracts/abis/params.js +0 -67
  461. package/lib-es/contracts/abis/params.js.map +0 -1
  462. package/lib-es/contracts/constants.d.ts +0 -6
  463. package/lib-es/contracts/constants.d.ts.map +0 -1
  464. package/lib-es/contracts/constants.js +0 -7
  465. package/lib-es/contracts/constants.js.map +0 -1
  466. package/src/common-logic/address-utils.ts +0 -11
  467. package/src/common-logic/hex-utils.ts +0 -53
  468. package/src/common-logic/logic.ts +0 -44
  469. package/src/common-logic/mapping-utils.ts +0 -67
  470. package/src/common-logic/transaction-utils.ts +0 -190
  471. package/src/contracts/abis/VIP180.ts +0 -265
  472. package/src/contracts/abis/params.ts +0 -70
  473. package/src/contracts/constants.ts +0 -11
  474. /package/src/common-logic/{pad-address.ts → padAddress.ts} +0 -0
@@ -0,0 +1,440 @@
1
+ import BigNumber from "bignumber.js";
2
+ import {
3
+ formatTransaction,
4
+ fromTransactionRaw,
5
+ toTransactionRaw,
6
+ fromTransactionStatusRaw,
7
+ toTransactionStatusRaw,
8
+ } from "./transaction";
9
+ import { getAccountCurrency } from "@ledgerhq/coin-framework/account/index";
10
+ import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies/index";
11
+ import {
12
+ fromTransactionCommonRaw,
13
+ fromTransactionStatusRawCommon,
14
+ toTransactionCommonRaw,
15
+ toTransactionStatusRawCommon,
16
+ } from "@ledgerhq/coin-framework/serialization";
17
+ import { Transaction, TransactionRaw, TransactionStatus, TransactionStatusRaw } from "../types";
18
+ import { Account } from "@ledgerhq/types-live";
19
+
20
+ // Mock dependencies
21
+ jest.mock("@ledgerhq/coin-framework/account/index");
22
+ jest.mock("@ledgerhq/coin-framework/currencies/index");
23
+ jest.mock("@ledgerhq/coin-framework/serialization");
24
+
25
+ const mockedGetAccountCurrency = jest.mocked(getAccountCurrency);
26
+ const mockedFormatCurrencyUnit = jest.mocked(formatCurrencyUnit);
27
+ const mockedFromTransactionCommonRaw = jest.mocked(fromTransactionCommonRaw);
28
+ const mockedFromTransactionStatusRawCommon = jest.mocked(fromTransactionStatusRawCommon);
29
+ const mockedToTransactionCommonRaw = jest.mocked(toTransactionCommonRaw);
30
+ const mockedToTransactionStatusRawCommon = jest.mocked(toTransactionStatusRawCommon);
31
+
32
+ describe("transaction utilities", () => {
33
+ const mockAccount: Account = {
34
+ type: "Account",
35
+ id: "vechain:1:0x123:",
36
+ seedIdentifier: "seed123",
37
+ derivationMode: "" as any,
38
+ index: 0,
39
+ freshAddress: "0x742d35Cc6634C0532925a3b8D0B251d8c1743eC4",
40
+ freshAddressPath: "44'/818'/0'/0/0",
41
+ used: true,
42
+ balance: new BigNumber("5000000000000000000"),
43
+ spendableBalance: new BigNumber("5000000000000000000"),
44
+ creationDate: new Date("2022-01-01"),
45
+ blockHeight: 12345,
46
+ currency: {
47
+ name: "VeChain",
48
+ units: [{ name: "VET", code: "VET", magnitude: 18 }],
49
+ } as any,
50
+ operationsCount: 10,
51
+ operations: [],
52
+ pendingOperations: [],
53
+ lastSyncDate: new Date("2022-01-01"),
54
+ balanceHistoryCache: { HOUR: {}, DAY: {}, WEEK: {} } as any,
55
+ swapHistory: [],
56
+ subAccounts: [],
57
+ };
58
+
59
+ const mockTransaction: Transaction = {
60
+ family: "vechain",
61
+ recipient: "0x456789012345678901234567890123456789abcd",
62
+ amount: new BigNumber("1000000000000000000"), // 1 VET
63
+ estimatedFees: "210000000000000000",
64
+ useAllAmount: false,
65
+ body: {
66
+ chainTag: 74,
67
+ blockRef: "0x00000000000b2bce",
68
+ expiration: 18,
69
+ clauses: [],
70
+ maxFeePerGas: 10000000000000,
71
+ maxPriorityFeePerGas: 1000000000000,
72
+ gas: 21000,
73
+ dependsOn: null,
74
+ nonce: "0x12345678",
75
+ },
76
+ } as Transaction;
77
+
78
+ beforeEach(() => {
79
+ jest.clearAllMocks();
80
+ mockedGetAccountCurrency.mockReturnValue(mockAccount.currency);
81
+ mockedFormatCurrencyUnit.mockReturnValue("1 VET");
82
+ });
83
+
84
+ describe("formatTransaction", () => {
85
+ it("should format transaction with amount", () => {
86
+ const result = formatTransaction(mockTransaction, mockAccount);
87
+
88
+ expect(result).toBe("SEND 1 VET TO 0x456789012345678901234567890123456789abcd");
89
+ expect(mockedGetAccountCurrency).toHaveBeenCalledWith(mockAccount);
90
+ expect(mockedFormatCurrencyUnit).toHaveBeenCalledWith(
91
+ mockAccount.currency.units[0],
92
+ mockTransaction.amount,
93
+ {
94
+ showCode: true,
95
+ disableRounding: true,
96
+ },
97
+ );
98
+ });
99
+
100
+ it("should format transaction with useAllAmount", () => {
101
+ const useAllAmountTransaction = { ...mockTransaction, useAllAmount: true };
102
+
103
+ const result = formatTransaction(useAllAmountTransaction, mockAccount);
104
+
105
+ expect(result).toBe("SEND MAX TO 0x456789012345678901234567890123456789abcd");
106
+ expect(mockedFormatCurrencyUnit).not.toHaveBeenCalled();
107
+ });
108
+
109
+ it("should format transaction with zero amount", () => {
110
+ const zeroAmountTransaction = {
111
+ ...mockTransaction,
112
+ amount: new BigNumber("0"),
113
+ useAllAmount: false,
114
+ };
115
+
116
+ const result = formatTransaction(zeroAmountTransaction, mockAccount);
117
+
118
+ expect(result).toBe("SEND TO 0x456789012345678901234567890123456789abcd");
119
+ expect(mockedFormatCurrencyUnit).not.toHaveBeenCalled();
120
+ });
121
+
122
+ it("should handle different recipients", () => {
123
+ const differentRecipientTx = {
124
+ ...mockTransaction,
125
+ recipient: "0x999888777666555444333222111000aaabbbcccd",
126
+ };
127
+
128
+ const result = formatTransaction(differentRecipientTx, mockAccount);
129
+
130
+ expect(result).toBe("SEND 1 VET TO 0x999888777666555444333222111000aaabbbcccd");
131
+ });
132
+
133
+ it("should handle different formatted amounts", () => {
134
+ mockedFormatCurrencyUnit.mockReturnValue("2.5 VET");
135
+
136
+ const result = formatTransaction(mockTransaction, mockAccount);
137
+
138
+ expect(result).toBe("SEND 2.5 VET TO 0x456789012345678901234567890123456789abcd");
139
+ });
140
+
141
+ it("should handle empty recipient", () => {
142
+ const emptyRecipientTx = { ...mockTransaction, recipient: "" };
143
+
144
+ const result = formatTransaction(emptyRecipientTx, mockAccount);
145
+
146
+ expect(result).toBe("SEND 1 VET TO ");
147
+ });
148
+
149
+ it("should handle very large amounts", () => {
150
+ const largeAmountTx = {
151
+ ...mockTransaction,
152
+ amount: new BigNumber("1000000000000000000000000"),
153
+ };
154
+ mockedFormatCurrencyUnit.mockReturnValue("1000000 VET");
155
+
156
+ const result = formatTransaction(largeAmountTx, mockAccount);
157
+
158
+ expect(result).toBe("SEND 1000000 VET TO 0x456789012345678901234567890123456789abcd");
159
+ });
160
+ });
161
+
162
+ describe("fromTransactionRaw", () => {
163
+ const mockTransactionRaw: TransactionRaw = {
164
+ family: "vechain",
165
+ recipient: "0x456789012345678901234567890123456789abcd",
166
+ amount: "1000000000000000000",
167
+ estimatedFees: "210000000000000000",
168
+ body: {
169
+ chainTag: 74,
170
+ blockRef: "0x00000000000b2bce",
171
+ expiration: 18,
172
+ clauses: [],
173
+ maxFeePerGas: 10000000000000,
174
+ maxPriorityFeePerGas: 1000000000000,
175
+ gas: 21000,
176
+ dependsOn: null,
177
+ nonce: "0x12345678",
178
+ },
179
+ } as TransactionRaw;
180
+
181
+ const mockCommonData = {
182
+ mode: "send" as any,
183
+ useAllAmount: false,
184
+ amount: new BigNumber("1000000000000000000"),
185
+ recipient: "0x456789012345678901234567890123456789abcd",
186
+ };
187
+
188
+ it("should deserialize transaction from raw", () => {
189
+ mockedFromTransactionCommonRaw.mockReturnValue(mockCommonData);
190
+
191
+ const result = fromTransactionRaw(mockTransactionRaw);
192
+
193
+ expect(result).toEqual({
194
+ ...mockTransactionRaw,
195
+ ...mockCommonData,
196
+ });
197
+ expect(mockedFromTransactionCommonRaw).toHaveBeenCalledWith(mockTransactionRaw);
198
+ });
199
+
200
+ it("should merge raw data with common data", () => {
201
+ const extendedCommonData = {
202
+ mode: "send" as any,
203
+ useAllAmount: true,
204
+ amount: new BigNumber("1000000000000000000"),
205
+ recipient: "0x456789012345678901234567890123456789abcd",
206
+ subAccountId: "vechain:1:0x123:+vtho",
207
+ };
208
+ mockedFromTransactionCommonRaw.mockReturnValue(extendedCommonData);
209
+
210
+ const result = fromTransactionRaw(mockTransactionRaw);
211
+
212
+ expect(result).toEqual({
213
+ ...mockTransactionRaw,
214
+ ...extendedCommonData,
215
+ });
216
+ });
217
+ });
218
+
219
+ describe("toTransactionRaw", () => {
220
+ const mockCommonRawData = {
221
+ mode: "send" as any,
222
+ useAllAmount: false,
223
+ amount: "1000000000000000000",
224
+ recipient: "0x456789012345678901234567890123456789abcd",
225
+ };
226
+
227
+ it("should serialize transaction to raw", () => {
228
+ mockedToTransactionCommonRaw.mockReturnValue(mockCommonRawData);
229
+
230
+ const result = toTransactionRaw(mockTransaction);
231
+
232
+ expect(result).toEqual({
233
+ ...mockTransaction,
234
+ ...mockCommonRawData,
235
+ });
236
+ expect(mockedToTransactionCommonRaw).toHaveBeenCalledWith(mockTransaction);
237
+ });
238
+
239
+ it("should merge transaction data with common raw data", () => {
240
+ const extendedCommonRawData = {
241
+ mode: "send" as any,
242
+ useAllAmount: true,
243
+ amount: "1000000000000000000",
244
+ recipient: "0x456789012345678901234567890123456789abcd",
245
+ subAccountId: "vechain:1:0x123:+vtho",
246
+ };
247
+ mockedToTransactionCommonRaw.mockReturnValue(extendedCommonRawData);
248
+
249
+ const result = toTransactionRaw(mockTransaction);
250
+
251
+ expect(result).toEqual({
252
+ ...mockTransaction,
253
+ ...extendedCommonRawData,
254
+ });
255
+ });
256
+ });
257
+
258
+ describe("fromTransactionStatusRaw", () => {
259
+ const mockTransactionStatusRaw: TransactionStatusRaw = {
260
+ errors: {},
261
+ warnings: {},
262
+ estimatedFees: "210000000000000000",
263
+ amount: "1000000000000000000",
264
+ totalSpent: "1000000000000000000",
265
+ } as TransactionStatusRaw;
266
+
267
+ const mockCommonStatusData = {
268
+ errors: {},
269
+ warnings: {},
270
+ estimatedFees: new BigNumber("210000000000000000"),
271
+ amount: new BigNumber("1000000000000000000"),
272
+ totalSpent: new BigNumber("1000000000000000000"),
273
+ txid: "0x123",
274
+ };
275
+
276
+ it("should deserialize transaction status from raw", () => {
277
+ mockedFromTransactionStatusRawCommon.mockReturnValue(mockCommonStatusData);
278
+
279
+ const result = fromTransactionStatusRaw(mockTransactionStatusRaw);
280
+
281
+ expect(result).toEqual({
282
+ ...mockTransactionStatusRaw,
283
+ ...mockCommonStatusData,
284
+ });
285
+ expect(mockedFromTransactionStatusRawCommon).toHaveBeenCalledWith(mockTransactionStatusRaw);
286
+ });
287
+
288
+ it("should merge raw status data with common data", () => {
289
+ const extendedCommonStatusData = {
290
+ errors: {},
291
+ warnings: {},
292
+ estimatedFees: new BigNumber("210000000000000000"),
293
+ amount: new BigNumber("1000000000000000000"),
294
+ totalSpent: new BigNumber("1000000000000000000"),
295
+ txid: "0x456",
296
+ gasLimit: new BigNumber("21000"),
297
+ };
298
+ mockedFromTransactionStatusRawCommon.mockReturnValue(extendedCommonStatusData);
299
+
300
+ const result = fromTransactionStatusRaw(mockTransactionStatusRaw);
301
+
302
+ expect(result).toEqual({
303
+ ...mockTransactionStatusRaw,
304
+ ...extendedCommonStatusData,
305
+ });
306
+ });
307
+ });
308
+
309
+ describe("toTransactionStatusRaw", () => {
310
+ const mockTransactionStatus: TransactionStatus = {
311
+ errors: {},
312
+ warnings: {},
313
+ estimatedFees: new BigNumber("210000000000000000"),
314
+ amount: new BigNumber("1000000000000000000"),
315
+ totalSpent: new BigNumber("1000000000000000000"),
316
+ } as TransactionStatus;
317
+
318
+ const mockCommonStatusRawData = {
319
+ errors: {},
320
+ warnings: {},
321
+ estimatedFees: "210000000000000000",
322
+ amount: "1000000000000000000",
323
+ totalSpent: "1000000000000000000",
324
+ txid: "0x789",
325
+ };
326
+
327
+ it("should serialize transaction status to raw", () => {
328
+ mockedToTransactionStatusRawCommon.mockReturnValue(mockCommonStatusRawData);
329
+
330
+ const result = toTransactionStatusRaw(mockTransactionStatus);
331
+
332
+ expect(result).toEqual({
333
+ ...mockTransactionStatus,
334
+ ...mockCommonStatusRawData,
335
+ });
336
+ expect(mockedToTransactionStatusRawCommon).toHaveBeenCalledWith(mockTransactionStatus);
337
+ });
338
+
339
+ it("should merge transaction status data with common raw data", () => {
340
+ const extendedCommonStatusRawData = {
341
+ errors: {},
342
+ warnings: {},
343
+ estimatedFees: "210000000000000000",
344
+ amount: "1000000000000000000",
345
+ totalSpent: "1000000000000000000",
346
+ txid: "0xabc",
347
+ gasLimit: "21000",
348
+ };
349
+ mockedToTransactionStatusRawCommon.mockReturnValue(extendedCommonStatusRawData);
350
+
351
+ const result = toTransactionStatusRaw(mockTransactionStatus);
352
+
353
+ expect(result).toEqual({
354
+ ...mockTransactionStatus,
355
+ ...extendedCommonStatusRawData,
356
+ });
357
+ });
358
+ });
359
+
360
+ describe("default export", () => {
361
+ it("should export all functions in default object", () => {
362
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
363
+ const defaultExport = require("./transaction").default;
364
+
365
+ expect(defaultExport).toEqual({
366
+ formatTransaction,
367
+ formatTransactionStatus: expect.any(Function), // This is imported from coin-framework
368
+ fromTransactionRaw,
369
+ toTransactionRaw,
370
+ fromTransactionStatusRaw,
371
+ toTransactionStatusRaw,
372
+ });
373
+ });
374
+ });
375
+
376
+ describe("integration with currency formatting", () => {
377
+ it("should call formatCurrencyUnit with correct parameters", () => {
378
+ const customAmount = new BigNumber("2500000000000000000"); // 2.5 VET
379
+ const customTransaction = { ...mockTransaction, amount: customAmount };
380
+
381
+ formatTransaction(customTransaction, mockAccount);
382
+
383
+ expect(mockedFormatCurrencyUnit).toHaveBeenCalledWith(
384
+ mockAccount.currency.units[0],
385
+ customAmount,
386
+ {
387
+ showCode: true,
388
+ disableRounding: true,
389
+ },
390
+ );
391
+ });
392
+
393
+ it("should use the first currency unit", () => {
394
+ const multiUnitCurrency = {
395
+ ...mockAccount.currency,
396
+ units: [
397
+ { name: "VET", code: "VET", magnitude: 18 },
398
+ { name: "Wei", code: "wei", magnitude: 0 },
399
+ ],
400
+ };
401
+ const customAccount = { ...mockAccount, currency: multiUnitCurrency };
402
+ mockedGetAccountCurrency.mockReturnValue(multiUnitCurrency);
403
+
404
+ formatTransaction(mockTransaction, customAccount);
405
+
406
+ expect(mockedFormatCurrencyUnit).toHaveBeenCalledWith(
407
+ multiUnitCurrency.units[0], // Should use the first unit
408
+ mockTransaction.amount,
409
+ expect.any(Object),
410
+ );
411
+ });
412
+ });
413
+
414
+ describe("error handling", () => {
415
+ it("should handle getAccountCurrency errors", () => {
416
+ mockedGetAccountCurrency.mockImplementation(() => {
417
+ throw new Error("Currency not found");
418
+ });
419
+
420
+ expect(() => formatTransaction(mockTransaction, mockAccount)).toThrow("Currency not found");
421
+ });
422
+
423
+ it("should handle formatCurrencyUnit errors", () => {
424
+ mockedFormatCurrencyUnit.mockImplementation(() => {
425
+ throw new Error("Formatting error");
426
+ });
427
+
428
+ expect(() => formatTransaction(mockTransaction, mockAccount)).toThrow("Formatting error");
429
+ });
430
+
431
+ it("should handle fromTransactionCommonRaw errors", () => {
432
+ const mockTransactionRaw = {} as TransactionRaw;
433
+ mockedFromTransactionCommonRaw.mockImplementation(() => {
434
+ throw new Error("Deserialization error");
435
+ });
436
+
437
+ expect(() => fromTransactionRaw(mockTransactionRaw)).toThrow("Deserialization error");
438
+ });
439
+ });
440
+ });
@@ -0,0 +1,186 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { ABIContract, VIP180_ABI, VTHO_ADDRESS } from "@vechain/sdk-core";
3
+ import { calculateClausesVtho, calculateClausesVet } from "./calculateClauses";
4
+
5
+ describe("calculateClauses", () => {
6
+ const testRecipient = "0x1234567890123456789012345678901234567890";
7
+ const testAmount = new BigNumber("1000000000000000000"); // 1 VET/VTHO in wei
8
+
9
+ describe("calculateClausesVtho", () => {
10
+ it("should create correct VTHO transfer clause", async () => {
11
+ const clauses = await calculateClausesVtho(testRecipient, testAmount);
12
+
13
+ expect(clauses).toHaveLength(1);
14
+ expect(clauses[0]).toMatchObject({
15
+ to: VTHO_ADDRESS,
16
+ value: 0,
17
+ });
18
+ expect(clauses[0].data).toMatch(/^0x/);
19
+ expect(clauses[0].data).not.toBe("0x");
20
+ });
21
+
22
+ it("should encode transfer function call in data field", async () => {
23
+ const clauses = await calculateClausesVtho(testRecipient, testAmount);
24
+
25
+ // The data should be the encoded function call for transfer(address,uint256)
26
+ const expectedData = ABIContract.ofAbi(VIP180_ABI)
27
+ .encodeFunctionInput("transfer", [testRecipient, testAmount.toFixed()])
28
+ .toString();
29
+
30
+ expect(clauses[0].data).toBe(expectedData);
31
+ });
32
+
33
+ it("should handle different amounts correctly", async () => {
34
+ const amounts = [
35
+ new BigNumber("1"), // 1 wei
36
+ new BigNumber("1000"), // 1000 wei
37
+ new BigNumber("1000000000000000000"), // 1 token
38
+ new BigNumber("999999999999999999999999"), // large amount
39
+ ];
40
+
41
+ for (const amount of amounts) {
42
+ const clauses = await calculateClausesVtho(testRecipient, amount);
43
+
44
+ expect(clauses).toHaveLength(1);
45
+ expect(clauses[0].to).toBe(VTHO_ADDRESS);
46
+ expect(clauses[0].value).toBe(0);
47
+
48
+ // Verify the amount is encoded correctly in the data
49
+ const expectedData = ABIContract.ofAbi(VIP180_ABI)
50
+ .encodeFunctionInput("transfer", [testRecipient, amount.toFixed()])
51
+ .toString();
52
+ expect(clauses[0].data).toBe(expectedData);
53
+ }
54
+ });
55
+
56
+ it("should handle different recipients correctly", async () => {
57
+ const recipients = [
58
+ "0x1234567890123456789012345678901234567890",
59
+ "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
60
+ "0x0000000000000000000000000000000000000000",
61
+ "0xffffffffffffffffffffffffffffffffffffffff",
62
+ ];
63
+
64
+ for (const recipient of recipients) {
65
+ const clauses = await calculateClausesVtho(recipient, testAmount);
66
+
67
+ expect(clauses).toHaveLength(1);
68
+ expect(clauses[0].to).toBe(VTHO_ADDRESS);
69
+
70
+ // Verify the recipient is encoded correctly in the data
71
+ const expectedData = ABIContract.ofAbi(VIP180_ABI)
72
+ .encodeFunctionInput("transfer", [recipient, testAmount.toFixed()])
73
+ .toString();
74
+ expect(clauses[0].data).toBe(expectedData);
75
+ }
76
+ });
77
+
78
+ it("should handle integer amounts correctly", async () => {
79
+ const integerAmount = new BigNumber("1500000000000000000"); // 1.5 * 10^18 as integer
80
+ const clauses = await calculateClausesVtho(testRecipient, integerAmount);
81
+
82
+ const expectedData = ABIContract.ofAbi(VIP180_ABI)
83
+ .encodeFunctionInput("transfer", [testRecipient, integerAmount.toFixed()])
84
+ .toString();
85
+
86
+ expect(clauses[0].data).toBe(expectedData);
87
+ });
88
+ });
89
+
90
+ describe("calculateClausesVet", () => {
91
+ it("should create correct VET transfer clause", async () => {
92
+ const clauses = await calculateClausesVet(testRecipient, testAmount);
93
+
94
+ expect(clauses).toHaveLength(1);
95
+ expect(clauses[0]).toMatchObject({
96
+ to: testRecipient,
97
+ value: `0x${testAmount.toString(16)}`,
98
+ data: "0x",
99
+ });
100
+ });
101
+
102
+ it("should convert amount to hex correctly", async () => {
103
+ const testCases = [
104
+ { amount: new BigNumber("1"), expectedHex: "0x1" },
105
+ { amount: new BigNumber("255"), expectedHex: "0xff" },
106
+ { amount: new BigNumber("256"), expectedHex: "0x100" },
107
+ { amount: new BigNumber("1000000000000000000"), expectedHex: "0xde0b6b3a7640000" },
108
+ ];
109
+
110
+ for (const testCase of testCases) {
111
+ const clauses = await calculateClausesVet(testRecipient, testCase.amount);
112
+
113
+ expect(clauses[0].value).toBe(testCase.expectedHex);
114
+ expect(clauses[0].to).toBe(testRecipient);
115
+ expect(clauses[0].data).toBe("0x");
116
+ }
117
+ });
118
+
119
+ it("should handle different recipients correctly", async () => {
120
+ const recipients = [
121
+ "0x1234567890123456789012345678901234567890",
122
+ "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
123
+ "0x0000000000000000000000000000000000000000",
124
+ "0xffffffffffffffffffffffffffffffffffffffff",
125
+ ];
126
+
127
+ for (const recipient of recipients) {
128
+ const clauses = await calculateClausesVet(recipient, testAmount);
129
+
130
+ expect(clauses).toHaveLength(1);
131
+ expect(clauses[0].to).toBe(recipient);
132
+ expect(clauses[0].value).toBe(`0x${testAmount.toString(16)}`);
133
+ expect(clauses[0].data).toBe("0x");
134
+ }
135
+ });
136
+
137
+ it("should handle zero amount", async () => {
138
+ const zeroAmount = new BigNumber("0");
139
+ const clauses = await calculateClausesVet(testRecipient, zeroAmount);
140
+
141
+ expect(clauses[0].value).toBe("0x0");
142
+ expect(clauses[0].to).toBe(testRecipient);
143
+ });
144
+
145
+ it("should handle very large amounts", async () => {
146
+ const largeAmount = new BigNumber("999999999999999999999999");
147
+ const clauses = await calculateClausesVet(testRecipient, largeAmount);
148
+
149
+ expect(clauses[0].value).toBe(`0x${largeAmount.toString(16)}`);
150
+ expect(clauses[0].to).toBe(testRecipient);
151
+ });
152
+
153
+ it("should maintain data field as empty hex", async () => {
154
+ const clauses = await calculateClausesVet(testRecipient, testAmount);
155
+
156
+ expect(clauses[0].data).toBe("0x");
157
+ });
158
+ });
159
+
160
+ describe("return value structure", () => {
161
+ it("should always return an array of clauses", async () => {
162
+ const vthoResult = await calculateClausesVtho(testRecipient, testAmount);
163
+ const vetResult = await calculateClausesVet(testRecipient, testAmount);
164
+
165
+ expect(Array.isArray(vthoResult)).toBe(true);
166
+ expect(Array.isArray(vetResult)).toBe(true);
167
+ expect(vthoResult).toHaveLength(1);
168
+ expect(vetResult).toHaveLength(1);
169
+ });
170
+
171
+ it("should return clauses with required VechainSDKTransactionClause structure", async () => {
172
+ const vthoResult = await calculateClausesVtho(testRecipient, testAmount);
173
+ const vetResult = await calculateClausesVet(testRecipient, testAmount);
174
+
175
+ // Check VTHO clause structure
176
+ expect(vthoResult[0]).toHaveProperty("to");
177
+ expect(vthoResult[0]).toHaveProperty("value");
178
+ expect(vthoResult[0]).toHaveProperty("data");
179
+
180
+ // Check VET clause structure
181
+ expect(vetResult[0]).toHaveProperty("to");
182
+ expect(vetResult[0]).toHaveProperty("value");
183
+ expect(vetResult[0]).toHaveProperty("data");
184
+ });
185
+ });
186
+ });
@@ -0,0 +1,44 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { VechainSDKTransactionClause } from "../types";
3
+ import { ABIContract, VIP180_ABI, VTHO_ADDRESS } from "@vechain/sdk-core";
4
+
5
+ export const calculateClausesVtho = async (
6
+ recipient: string,
7
+ amount: BigNumber,
8
+ ): Promise<VechainSDKTransactionClause[]> => {
9
+ const clauses: VechainSDKTransactionClause[] = [];
10
+
11
+ // Get the existing clause or create a blank one
12
+ const updatedClause: VechainSDKTransactionClause = {
13
+ to: VTHO_ADDRESS,
14
+ value: 0,
15
+ data: "0x",
16
+ };
17
+ updatedClause.data = ABIContract.ofAbi(VIP180_ABI)
18
+ .encodeFunctionInput("transfer", [recipient, amount.toFixed()])
19
+ .toString();
20
+
21
+ clauses.push(updatedClause);
22
+ return clauses;
23
+ };
24
+
25
+ export const calculateClausesVet = async (
26
+ recipient: string,
27
+ amount: BigNumber,
28
+ ): Promise<VechainSDKTransactionClause[]> => {
29
+ const clauses: VechainSDKTransactionClause[] = [];
30
+
31
+ // Get the existing clause or create a blank one
32
+ const updatedClause: VechainSDKTransactionClause = {
33
+ to: null,
34
+ value: 0,
35
+ data: "0x",
36
+ };
37
+
38
+ updatedClause.value = `0x${amount.toString(16)}`;
39
+ updatedClause.to = recipient;
40
+
41
+ clauses.push(updatedClause);
42
+
43
+ return clauses;
44
+ };