@ledgerhq/coin-vechain 2.2.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 (396) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +74 -0
  4. package/CHANGELOG.md +1186 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +8 -0
  7. package/lib/account.d.ts +7 -0
  8. package/lib/account.d.ts.map +1 -0
  9. package/lib/account.js +19 -0
  10. package/lib/account.js.map +1 -0
  11. package/lib/bridge/broadcast.d.ts +8 -0
  12. package/lib/bridge/broadcast.d.ts.map +1 -0
  13. package/lib/bridge/broadcast.js +27 -0
  14. package/lib/bridge/broadcast.js.map +1 -0
  15. package/lib/bridge/buildOptimisticOperatioin.d.ts +4 -0
  16. package/lib/bridge/buildOptimisticOperatioin.d.ts.map +1 -0
  17. package/lib/bridge/buildOptimisticOperatioin.js +56 -0
  18. package/lib/bridge/buildOptimisticOperatioin.js.map +1 -0
  19. package/lib/bridge/createTransaction.d.ts +9 -0
  20. package/lib/bridge/createTransaction.d.ts.map +1 -0
  21. package/lib/bridge/createTransaction.js +36 -0
  22. package/lib/bridge/createTransaction.js.map +1 -0
  23. package/lib/bridge/estimateMaxSpendable.d.ts +4 -0
  24. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -0
  25. package/lib/bridge/estimateMaxSpendable.js +29 -0
  26. package/lib/bridge/estimateMaxSpendable.js.map +1 -0
  27. package/lib/bridge/getTransactionStatus.d.ts +5 -0
  28. package/lib/bridge/getTransactionStatus.d.ts.map +1 -0
  29. package/lib/bridge/getTransactionStatus.js +76 -0
  30. package/lib/bridge/getTransactionStatus.js.map +1 -0
  31. package/lib/bridge/index.d.ts +10 -0
  32. package/lib/bridge/index.d.ts.map +1 -0
  33. package/lib/bridge/index.js +64 -0
  34. package/lib/bridge/index.js.map +1 -0
  35. package/lib/bridge/prepareTransaction.d.ts +10 -0
  36. package/lib/bridge/prepareTransaction.d.ts.map +1 -0
  37. package/lib/bridge/prepareTransaction.js +38 -0
  38. package/lib/bridge/prepareTransaction.js.map +1 -0
  39. package/lib/bridge/signOperation.d.ts +8 -0
  40. package/lib/bridge/signOperation.d.ts.map +1 -0
  41. package/lib/bridge/signOperation.js +43 -0
  42. package/lib/bridge/signOperation.js.map +1 -0
  43. package/lib/bridge/synchronisation.d.ts +4 -0
  44. package/lib/bridge/synchronisation.d.ts.map +1 -0
  45. package/lib/bridge/synchronisation.js +84 -0
  46. package/lib/bridge/synchronisation.js.map +1 -0
  47. package/lib/bridge/transaction.d.ts +17 -0
  48. package/lib/bridge/transaction.d.ts.map +1 -0
  49. package/lib/bridge/transaction.js +56 -0
  50. package/lib/bridge/transaction.js.map +1 -0
  51. package/lib/common-logic/address-utils.d.ts +2 -0
  52. package/lib/common-logic/address-utils.d.ts.map +1 -0
  53. package/lib/common-logic/address-utils.js +19 -0
  54. package/lib/common-logic/address-utils.js.map +1 -0
  55. package/lib/common-logic/hex-utils.d.ts +8 -0
  56. package/lib/common-logic/hex-utils.d.ts.map +1 -0
  57. package/lib/common-logic/hex-utils.js +52 -0
  58. package/lib/common-logic/hex-utils.js.map +1 -0
  59. package/lib/common-logic/index.d.ts +7 -0
  60. package/lib/common-logic/index.d.ts.map +1 -0
  61. package/lib/common-logic/index.js +23 -0
  62. package/lib/common-logic/index.js.map +1 -0
  63. package/lib/common-logic/logic.d.ts +5 -0
  64. package/lib/common-logic/logic.d.ts.map +1 -0
  65. package/lib/common-logic/logic.js +46 -0
  66. package/lib/common-logic/logic.js.map +1 -0
  67. package/lib/common-logic/mapping-utils.d.ts +5 -0
  68. package/lib/common-logic/mapping-utils.d.ts.map +1 -0
  69. package/lib/common-logic/mapping-utils.js +61 -0
  70. package/lib/common-logic/mapping-utils.js.map +1 -0
  71. package/lib/common-logic/pad-address.d.ts +2 -0
  72. package/lib/common-logic/pad-address.d.ts.map +1 -0
  73. package/lib/common-logic/pad-address.js +13 -0
  74. package/lib/common-logic/pad-address.js.map +1 -0
  75. package/lib/common-logic/transaction-utils.d.ts +30 -0
  76. package/lib/common-logic/transaction-utils.d.ts.map +1 -0
  77. package/lib/common-logic/transaction-utils.js +164 -0
  78. package/lib/common-logic/transaction-utils.js.map +1 -0
  79. package/lib/config.d.ts +5 -0
  80. package/lib/config.d.ts.map +1 -0
  81. package/lib/config.js +17 -0
  82. package/lib/config.js.map +1 -0
  83. package/lib/contracts/abis/VIP180.d.ts +17 -0
  84. package/lib/contracts/abis/VIP180.d.ts.map +1 -0
  85. package/lib/contracts/abis/VIP180.js +265 -0
  86. package/lib/contracts/abis/VIP180.js.map +1 -0
  87. package/lib/contracts/abis/params.d.ts +8 -0
  88. package/lib/contracts/abis/params.d.ts.map +1 -0
  89. package/lib/contracts/abis/params.js +69 -0
  90. package/lib/contracts/abis/params.js.map +1 -0
  91. package/lib/contracts/constants.d.ts +6 -0
  92. package/lib/contracts/constants.d.ts.map +1 -0
  93. package/lib/contracts/constants.js +10 -0
  94. package/lib/contracts/constants.js.map +1 -0
  95. package/lib/datasets/index.d.ts +3 -0
  96. package/lib/datasets/index.d.ts.map +1 -0
  97. package/lib/datasets/index.js +23 -0
  98. package/lib/datasets/index.js.map +1 -0
  99. package/lib/datasets/vechain.d.ts +5 -0
  100. package/lib/datasets/vechain.d.ts.map +1 -0
  101. package/lib/datasets/vechain.js +91 -0
  102. package/lib/datasets/vechain.js.map +1 -0
  103. package/lib/datasets/vechain.scanAccounts.1.d.ts +6 -0
  104. package/lib/datasets/vechain.scanAccounts.1.d.ts.map +1 -0
  105. package/lib/datasets/vechain.scanAccounts.1.js +16 -0
  106. package/lib/datasets/vechain.scanAccounts.1.js.map +1 -0
  107. package/lib/errors.d.ts +10 -0
  108. package/lib/errors.d.ts.map +1 -0
  109. package/lib/errors.js +8 -0
  110. package/lib/errors.js.map +1 -0
  111. package/lib/index.d.ts +2 -0
  112. package/lib/index.d.ts.map +1 -0
  113. package/lib/index.js +6 -0
  114. package/lib/index.js.map +1 -0
  115. package/lib/mock.d.ts +9 -0
  116. package/lib/mock.d.ts.map +1 -0
  117. package/lib/mock.js +13 -0
  118. package/lib/mock.js.map +1 -0
  119. package/lib/network/index.d.ts +3 -0
  120. package/lib/network/index.d.ts.map +1 -0
  121. package/lib/network/index.js +22 -0
  122. package/lib/network/index.js.map +1 -0
  123. package/lib/network/sdk.d.ts +47 -0
  124. package/lib/network/sdk.d.ts.map +1 -0
  125. package/lib/network/sdk.js +164 -0
  126. package/lib/network/sdk.js.map +1 -0
  127. package/lib/signer/getAddress.d.ts +6 -0
  128. package/lib/signer/getAddress.d.ts.map +1 -0
  129. package/lib/signer/getAddress.js +32 -0
  130. package/lib/signer/getAddress.js.map +1 -0
  131. package/lib/signer/index.d.ts +4 -0
  132. package/lib/signer/index.d.ts.map +1 -0
  133. package/lib/signer/index.js +23 -0
  134. package/lib/signer/index.js.map +1 -0
  135. package/lib/signer/signMessage.d.ts +4 -0
  136. package/lib/signer/signMessage.d.ts.map +1 -0
  137. package/lib/signer/signMessage.js +31 -0
  138. package/lib/signer/signMessage.js.map +1 -0
  139. package/lib/test/bot-deviceActions.d.ts +7 -0
  140. package/lib/test/bot-deviceActions.d.ts.map +1 -0
  141. package/lib/test/bot-deviceActions.js +23 -0
  142. package/lib/test/bot-deviceActions.js.map +1 -0
  143. package/lib/test/bot-specs.d.ts +8 -0
  144. package/lib/test/bot-specs.d.ts.map +1 -0
  145. package/lib/test/bot-specs.js +161 -0
  146. package/lib/test/bot-specs.js.map +1 -0
  147. package/lib/test/bridgeDatasetTest.d.ts +4 -0
  148. package/lib/test/bridgeDatasetTest.d.ts.map +1 -0
  149. package/lib/test/bridgeDatasetTest.js +252 -0
  150. package/lib/test/bridgeDatasetTest.js.map +1 -0
  151. package/lib/test/cli.d.ts +17 -0
  152. package/lib/test/cli.d.ts.map +1 -0
  153. package/lib/test/cli.js +51 -0
  154. package/lib/test/cli.js.map +1 -0
  155. package/lib/test/index.d.ts +6 -0
  156. package/lib/test/index.d.ts.map +1 -0
  157. package/lib/test/index.js +26 -0
  158. package/lib/test/index.js.map +1 -0
  159. package/lib/types/bridge.d.ts +25 -0
  160. package/lib/types/bridge.d.ts.map +1 -0
  161. package/lib/types/bridge.js +3 -0
  162. package/lib/types/bridge.js.map +1 -0
  163. package/lib/types/constants.d.ts +6 -0
  164. package/lib/types/constants.d.ts.map +1 -0
  165. package/lib/types/constants.js +9 -0
  166. package/lib/types/constants.js.map +1 -0
  167. package/lib/types/index.d.ts +5 -0
  168. package/lib/types/index.d.ts.map +1 -0
  169. package/lib/types/index.js +21 -0
  170. package/lib/types/index.js.map +1 -0
  171. package/lib/types/network.d.ts +71 -0
  172. package/lib/types/network.d.ts.map +1 -0
  173. package/lib/types/network.js +3 -0
  174. package/lib/types/network.js.map +1 -0
  175. package/lib/types/signer.d.ts +12 -0
  176. package/lib/types/signer.d.ts.map +1 -0
  177. package/lib/types/signer.js +3 -0
  178. package/lib/types/signer.js.map +1 -0
  179. package/lib-es/account.d.ts +7 -0
  180. package/lib-es/account.d.ts.map +1 -0
  181. package/lib-es/account.js +17 -0
  182. package/lib-es/account.js.map +1 -0
  183. package/lib-es/bridge/broadcast.d.ts +8 -0
  184. package/lib-es/bridge/broadcast.d.ts.map +1 -0
  185. package/lib-es/bridge/broadcast.js +23 -0
  186. package/lib-es/bridge/broadcast.js.map +1 -0
  187. package/lib-es/bridge/buildOptimisticOperatioin.d.ts +4 -0
  188. package/lib-es/bridge/buildOptimisticOperatioin.d.ts.map +1 -0
  189. package/lib-es/bridge/buildOptimisticOperatioin.js +49 -0
  190. package/lib-es/bridge/buildOptimisticOperatioin.js.map +1 -0
  191. package/lib-es/bridge/createTransaction.d.ts +9 -0
  192. package/lib-es/bridge/createTransaction.d.ts.map +1 -0
  193. package/lib-es/bridge/createTransaction.js +29 -0
  194. package/lib-es/bridge/createTransaction.js.map +1 -0
  195. package/lib-es/bridge/estimateMaxSpendable.d.ts +4 -0
  196. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -0
  197. package/lib-es/bridge/estimateMaxSpendable.js +22 -0
  198. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -0
  199. package/lib-es/bridge/getTransactionStatus.d.ts +5 -0
  200. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -0
  201. package/lib-es/bridge/getTransactionStatus.js +69 -0
  202. package/lib-es/bridge/getTransactionStatus.js.map +1 -0
  203. package/lib-es/bridge/index.d.ts +10 -0
  204. package/lib-es/bridge/index.d.ts.map +1 -0
  205. package/lib-es/bridge/index.js +55 -0
  206. package/lib-es/bridge/index.js.map +1 -0
  207. package/lib-es/bridge/prepareTransaction.d.ts +10 -0
  208. package/lib-es/bridge/prepareTransaction.d.ts.map +1 -0
  209. package/lib-es/bridge/prepareTransaction.js +34 -0
  210. package/lib-es/bridge/prepareTransaction.js.map +1 -0
  211. package/lib-es/bridge/signOperation.d.ts +8 -0
  212. package/lib-es/bridge/signOperation.d.ts.map +1 -0
  213. package/lib-es/bridge/signOperation.js +39 -0
  214. package/lib-es/bridge/signOperation.js.map +1 -0
  215. package/lib-es/bridge/synchronisation.d.ts +4 -0
  216. package/lib-es/bridge/synchronisation.d.ts.map +1 -0
  217. package/lib-es/bridge/synchronisation.js +77 -0
  218. package/lib-es/bridge/synchronisation.js.map +1 -0
  219. package/lib-es/bridge/transaction.d.ts +17 -0
  220. package/lib-es/bridge/transaction.d.ts.map +1 -0
  221. package/lib-es/bridge/transaction.js +48 -0
  222. package/lib-es/bridge/transaction.js.map +1 -0
  223. package/lib-es/common-logic/address-utils.d.ts +2 -0
  224. package/lib-es/common-logic/address-utils.d.ts.map +1 -0
  225. package/lib-es/common-logic/address-utils.js +12 -0
  226. package/lib-es/common-logic/address-utils.js.map +1 -0
  227. package/lib-es/common-logic/hex-utils.d.ts +8 -0
  228. package/lib-es/common-logic/hex-utils.d.ts.map +1 -0
  229. package/lib-es/common-logic/hex-utils.js +50 -0
  230. package/lib-es/common-logic/hex-utils.js.map +1 -0
  231. package/lib-es/common-logic/index.d.ts +7 -0
  232. package/lib-es/common-logic/index.d.ts.map +1 -0
  233. package/lib-es/common-logic/index.js +7 -0
  234. package/lib-es/common-logic/index.js.map +1 -0
  235. package/lib-es/common-logic/logic.d.ts +5 -0
  236. package/lib-es/common-logic/logic.d.ts.map +1 -0
  237. package/lib-es/common-logic/logic.js +38 -0
  238. package/lib-es/common-logic/logic.js.map +1 -0
  239. package/lib-es/common-logic/mapping-utils.d.ts +5 -0
  240. package/lib-es/common-logic/mapping-utils.d.ts.map +1 -0
  241. package/lib-es/common-logic/mapping-utils.js +53 -0
  242. package/lib-es/common-logic/mapping-utils.js.map +1 -0
  243. package/lib-es/common-logic/pad-address.d.ts +2 -0
  244. package/lib-es/common-logic/pad-address.d.ts.map +1 -0
  245. package/lib-es/common-logic/pad-address.js +9 -0
  246. package/lib-es/common-logic/pad-address.js.map +1 -0
  247. package/lib-es/common-logic/transaction-utils.d.ts +30 -0
  248. package/lib-es/common-logic/transaction-utils.d.ts.map +1 -0
  249. package/lib-es/common-logic/transaction-utils.js +153 -0
  250. package/lib-es/common-logic/transaction-utils.js.map +1 -0
  251. package/lib-es/config.d.ts +5 -0
  252. package/lib-es/config.d.ts.map +1 -0
  253. package/lib-es/config.js +12 -0
  254. package/lib-es/config.js.map +1 -0
  255. package/lib-es/contracts/abis/VIP180.d.ts +17 -0
  256. package/lib-es/contracts/abis/VIP180.d.ts.map +1 -0
  257. package/lib-es/contracts/abis/VIP180.js +263 -0
  258. package/lib-es/contracts/abis/VIP180.js.map +1 -0
  259. package/lib-es/contracts/abis/params.d.ts +8 -0
  260. package/lib-es/contracts/abis/params.d.ts.map +1 -0
  261. package/lib-es/contracts/abis/params.js +67 -0
  262. package/lib-es/contracts/abis/params.js.map +1 -0
  263. package/lib-es/contracts/constants.d.ts +6 -0
  264. package/lib-es/contracts/constants.d.ts.map +1 -0
  265. package/lib-es/contracts/constants.js +7 -0
  266. package/lib-es/contracts/constants.js.map +1 -0
  267. package/lib-es/datasets/index.d.ts +3 -0
  268. package/lib-es/datasets/index.d.ts.map +1 -0
  269. package/lib-es/datasets/index.js +3 -0
  270. package/lib-es/datasets/index.js.map +1 -0
  271. package/lib-es/datasets/vechain.d.ts +5 -0
  272. package/lib-es/datasets/vechain.d.ts.map +1 -0
  273. package/lib-es/datasets/vechain.js +88 -0
  274. package/lib-es/datasets/vechain.js.map +1 -0
  275. package/lib-es/datasets/vechain.scanAccounts.1.d.ts +6 -0
  276. package/lib-es/datasets/vechain.scanAccounts.1.d.ts.map +1 -0
  277. package/lib-es/datasets/vechain.scanAccounts.1.js +14 -0
  278. package/lib-es/datasets/vechain.scanAccounts.1.js.map +1 -0
  279. package/lib-es/errors.d.ts +10 -0
  280. package/lib-es/errors.d.ts.map +1 -0
  281. package/lib-es/errors.js +5 -0
  282. package/lib-es/errors.js.map +1 -0
  283. package/lib-es/index.d.ts +2 -0
  284. package/lib-es/index.d.ts.map +1 -0
  285. package/lib-es/index.js +2 -0
  286. package/lib-es/index.js.map +1 -0
  287. package/lib-es/mock.d.ts +9 -0
  288. package/lib-es/mock.d.ts.map +1 -0
  289. package/lib-es/mock.js +11 -0
  290. package/lib-es/mock.js.map +1 -0
  291. package/lib-es/network/index.d.ts +3 -0
  292. package/lib-es/network/index.d.ts.map +1 -0
  293. package/lib-es/network/index.js +3 -0
  294. package/lib-es/network/index.js.map +1 -0
  295. package/lib-es/network/sdk.d.ts +47 -0
  296. package/lib-es/network/sdk.d.ts.map +1 -0
  297. package/lib-es/network/sdk.js +150 -0
  298. package/lib-es/network/sdk.js.map +1 -0
  299. package/lib-es/signer/getAddress.d.ts +6 -0
  300. package/lib-es/signer/getAddress.d.ts.map +1 -0
  301. package/lib-es/signer/getAddress.js +27 -0
  302. package/lib-es/signer/getAddress.js.map +1 -0
  303. package/lib-es/signer/index.d.ts +4 -0
  304. package/lib-es/signer/index.d.ts.map +1 -0
  305. package/lib-es/signer/index.js +4 -0
  306. package/lib-es/signer/index.js.map +1 -0
  307. package/lib-es/signer/signMessage.d.ts +4 -0
  308. package/lib-es/signer/signMessage.d.ts.map +1 -0
  309. package/lib-es/signer/signMessage.js +27 -0
  310. package/lib-es/signer/signMessage.js.map +1 -0
  311. package/lib-es/test/bot-deviceActions.d.ts +7 -0
  312. package/lib-es/test/bot-deviceActions.d.ts.map +1 -0
  313. package/lib-es/test/bot-deviceActions.js +21 -0
  314. package/lib-es/test/bot-deviceActions.js.map +1 -0
  315. package/lib-es/test/bot-specs.d.ts +8 -0
  316. package/lib-es/test/bot-specs.d.ts.map +1 -0
  317. package/lib-es/test/bot-specs.js +156 -0
  318. package/lib-es/test/bot-specs.js.map +1 -0
  319. package/lib-es/test/bridgeDatasetTest.d.ts +4 -0
  320. package/lib-es/test/bridgeDatasetTest.d.ts.map +1 -0
  321. package/lib-es/test/bridgeDatasetTest.js +246 -0
  322. package/lib-es/test/bridgeDatasetTest.js.map +1 -0
  323. package/lib-es/test/cli.d.ts +17 -0
  324. package/lib-es/test/cli.d.ts.map +1 -0
  325. package/lib-es/test/cli.js +45 -0
  326. package/lib-es/test/cli.js.map +1 -0
  327. package/lib-es/test/index.d.ts +6 -0
  328. package/lib-es/test/index.d.ts.map +1 -0
  329. package/lib-es/test/index.js +6 -0
  330. package/lib-es/test/index.js.map +1 -0
  331. package/lib-es/types/bridge.d.ts +25 -0
  332. package/lib-es/types/bridge.d.ts.map +1 -0
  333. package/lib-es/types/bridge.js +2 -0
  334. package/lib-es/types/bridge.js.map +1 -0
  335. package/lib-es/types/constants.d.ts +6 -0
  336. package/lib-es/types/constants.d.ts.map +1 -0
  337. package/lib-es/types/constants.js +6 -0
  338. package/lib-es/types/constants.js.map +1 -0
  339. package/lib-es/types/index.d.ts +5 -0
  340. package/lib-es/types/index.d.ts.map +1 -0
  341. package/lib-es/types/index.js +5 -0
  342. package/lib-es/types/index.js.map +1 -0
  343. package/lib-es/types/network.d.ts +71 -0
  344. package/lib-es/types/network.d.ts.map +1 -0
  345. package/lib-es/types/network.js +2 -0
  346. package/lib-es/types/network.js.map +1 -0
  347. package/lib-es/types/signer.d.ts +12 -0
  348. package/lib-es/types/signer.d.ts.map +1 -0
  349. package/lib-es/types/signer.js +2 -0
  350. package/lib-es/types/signer.js.map +1 -0
  351. package/package.json +120 -0
  352. package/src/__snapshots__/bridge.integration.test.ts.snap +146 -0
  353. package/src/account.ts +22 -0
  354. package/src/bridge/broadcast.ts +23 -0
  355. package/src/bridge/buildOptimisticOperatioin.ts +46 -0
  356. package/src/bridge/createTransaction.ts +31 -0
  357. package/src/bridge/estimateMaxSpendable.ts +18 -0
  358. package/src/bridge/getTransactionStatus.ts +76 -0
  359. package/src/bridge/index.ts +63 -0
  360. package/src/bridge/prepareTransaction.ts +41 -0
  361. package/src/bridge/signOperation.ts +53 -0
  362. package/src/bridge/synchronisation.ts +86 -0
  363. package/src/bridge/transaction.ts +79 -0
  364. package/src/common-logic/address-utils.ts +11 -0
  365. package/src/common-logic/hex-utils.ts +53 -0
  366. package/src/common-logic/index.ts +6 -0
  367. package/src/common-logic/logic.ts +44 -0
  368. package/src/common-logic/mapping-utils.ts +67 -0
  369. package/src/common-logic/pad-address.ts +8 -0
  370. package/src/common-logic/transaction-utils.ts +190 -0
  371. package/src/config.ts +18 -0
  372. package/src/contracts/abis/VIP180.ts +265 -0
  373. package/src/contracts/abis/params.ts +70 -0
  374. package/src/contracts/constants.ts +11 -0
  375. package/src/datasets/index.ts +2 -0
  376. package/src/datasets/vechain.scanAccounts.1.ts +13 -0
  377. package/src/datasets/vechain.ts +92 -0
  378. package/src/errors.ts +7 -0
  379. package/src/index.ts +1 -0
  380. package/src/mock.ts +14 -0
  381. package/src/network/index.ts +2 -0
  382. package/src/network/sdk.ts +177 -0
  383. package/src/signer/getAddress.ts +25 -0
  384. package/src/signer/index.ts +4 -0
  385. package/src/signer/signMessage.ts +22 -0
  386. package/src/test/bot-deviceActions.ts +24 -0
  387. package/src/test/bot-specs.ts +210 -0
  388. package/src/test/bridgeDatasetTest.ts +262 -0
  389. package/src/test/cli.ts +86 -0
  390. package/src/test/index.ts +6 -0
  391. package/src/types/bridge.ts +35 -0
  392. package/src/types/constants.ts +5 -0
  393. package/src/types/index.ts +4 -0
  394. package/src/types/network.ts +81 -0
  395. package/src/types/signer.ts +10 -0
  396. package/tsconfig.json +13 -0
@@ -0,0 +1,88 @@
1
+ // NOTE: account information is fetched from the blockchain so this is just integration for those information
2
+ // so you you should not rely on that, here the important part are ids and index
3
+ export const vechain1 = {
4
+ id: "js:2:vechain:0x0fe6688548f0C303932bB197B0A96034f1d74dba:vechain",
5
+ seedIdentifier: "0x0fe6688548f0C303932bB197B0A96034f1d74dba",
6
+ name: "Vechain 1",
7
+ derivationMode: "vechain",
8
+ index: 0,
9
+ freshAddress: "0x0fe6688548f0C303932bB197B0A96034f1d74dba",
10
+ freshAddressPath: "44'/818'/0'/0/0",
11
+ blockHeight: 15156315,
12
+ operations: [],
13
+ pendingOperations: [],
14
+ currencyId: "vechain",
15
+ feesCurrencyId: "vechain/vip180/vtho",
16
+ lastSyncDate: "2023-04-21T14:22:48.395Z",
17
+ balance: "10000000000000000000",
18
+ subAccounts: [
19
+ {
20
+ type: "TokenAccountRaw",
21
+ id: "js:2:vechain:0x0fe6688548f0C303932bB197B0A96034f1d74dba:vechain+vechain%2Fvip180%2Fvtho",
22
+ parentId: "js:2:vechain:0x0fe6688548f0C303932bB197B0A96034f1d74dba:vechain",
23
+ tokenId: "vechain/vip180/vtho",
24
+ balance: "10000000000000000000",
25
+ operations: [],
26
+ pendingOperations: [],
27
+ },
28
+ ],
29
+ swapHistory: [],
30
+ };
31
+ export const vechain2 = {
32
+ id: "js:2:vechain:0x02961B92B8D20A4ea12f1f1CeFA74Dd7B4355A86:vechain",
33
+ seedIdentifier: "0x02961B92B8D20A4ea12f1f1CeFA74Dd7B4355A86",
34
+ name: "Vechain 2",
35
+ derivationMode: "vechain",
36
+ index: 1,
37
+ freshAddress: "0x02961B92B8D20A4ea12f1f1CeFA74Dd7B4355A86",
38
+ freshAddressPath: "44'/818'/0'/0/1",
39
+ blockHeight: 15156315,
40
+ operations: [],
41
+ pendingOperations: [],
42
+ currencyId: "vechain",
43
+ feesCurrencyId: "vechain/vip180/vtho",
44
+ lastSyncDate: "2023-04-21T14:22:48.395Z",
45
+ balance: "10000000000000000000",
46
+ subAccounts: [
47
+ {
48
+ type: "TokenAccountRaw",
49
+ id: "js:2:vechain:0x02961B92B8D20A4ea12f1f1CeFA74Dd7B4355A86:vechain+vechain%2Fvip180%2Fvtho",
50
+ parentId: "js:2:vechain:0x02961B92B8D20A4ea12f1f1CeFA74Dd7B4355A86:vechain",
51
+ tokenId: "vechain/vip180/vtho",
52
+ balance: "0",
53
+ operations: [],
54
+ pendingOperations: [],
55
+ },
56
+ ],
57
+ swapHistory: [],
58
+ };
59
+ // account with vtho but no vet
60
+ export const vechain3 = {
61
+ id: "js:2:vechain:0xC0dFC490f8fba6A573C55a68dd9023f999ccaDA0:vechain",
62
+ seedIdentifier: "0xC0dFC490f8fba6A573C55a68dd9023f999ccaDA0",
63
+ name: "Vechain 3",
64
+ derivationMode: "vechain",
65
+ index: 1,
66
+ freshAddress: "0xC0dFC490f8fba6A573C55a68dd9023f999ccaDA0",
67
+ freshAddressPath: "44'/818'/0'/0/0",
68
+ blockHeight: 15156315,
69
+ operations: [],
70
+ pendingOperations: [],
71
+ currencyId: "vechain",
72
+ feesCurrencyId: "vechain/vip180/vtho",
73
+ lastSyncDate: "2023-11-13T13:55:32.004Z",
74
+ balance: "0",
75
+ subAccounts: [
76
+ {
77
+ type: "TokenAccountRaw",
78
+ id: "js:2:vechain:0xC0dFC490f8fba6A573C55a68dd9023f999ccaDA0:vechain+vechain%2Fvip180%2Fvtho",
79
+ parentId: "js:2:vechain:0xC0dFC490f8fba6A573C55a68dd9023f999ccaDA0:vechain",
80
+ tokenId: "vechain/vip180/vtho",
81
+ balance: "1000000000000000",
82
+ operations: [],
83
+ pendingOperations: [],
84
+ },
85
+ ],
86
+ swapHistory: [],
87
+ };
88
+ //# sourceMappingURL=vechain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vechain.js","sourceRoot":"","sources":["../../src/datasets/vechain.ts"],"names":[],"mappings":"AAEA,6GAA6G;AAC7G,gFAAgF;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,EAAE,EAAE,iEAAiE;IACrE,cAAc,EAAE,4CAA4C;IAC5D,IAAI,EAAE,WAAW;IACjB,cAAc,EAAE,SAAS;IACzB,KAAK,EAAE,CAAC;IACR,YAAY,EAAE,4CAA4C;IAC1D,gBAAgB,EAAE,iBAAiB;IACnC,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,EAAE;IACd,iBAAiB,EAAE,EAAE;IACrB,UAAU,EAAE,SAAS;IACrB,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,0BAA0B;IACxC,OAAO,EAAE,sBAAsB;IAC/B,WAAW,EAAE;QACX;YACE,IAAI,EAAE,iBAAiB;YACvB,EAAE,EAAE,yFAAyF;YAC7F,QAAQ,EAAE,iEAAiE;YAC3E,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,sBAAsB;YAC/B,UAAU,EAAE,EAAE;YACd,iBAAiB,EAAE,EAAE;SACtB;KACF;IACD,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,EAAE,EAAE,iEAAiE;IACrE,cAAc,EAAE,4CAA4C;IAC5D,IAAI,EAAE,WAAW;IACjB,cAAc,EAAE,SAAS;IACzB,KAAK,EAAE,CAAC;IACR,YAAY,EAAE,4CAA4C;IAC1D,gBAAgB,EAAE,iBAAiB;IACnC,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,EAAE;IACd,iBAAiB,EAAE,EAAE;IACrB,UAAU,EAAE,SAAS;IACrB,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,0BAA0B;IACxC,OAAO,EAAE,sBAAsB;IAC/B,WAAW,EAAE;QACX;YACE,IAAI,EAAE,iBAAiB;YACvB,EAAE,EAAE,yFAAyF;YAC7F,QAAQ,EAAE,iEAAiE;YAC3E,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,EAAE;YACd,iBAAiB,EAAE,EAAE;SACtB;KACF;IACD,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAe;IAClC,EAAE,EAAE,iEAAiE;IACrE,cAAc,EAAE,4CAA4C;IAC5D,IAAI,EAAE,WAAW;IACjB,cAAc,EAAE,SAAS;IACzB,KAAK,EAAE,CAAC;IACR,YAAY,EAAE,4CAA4C;IAC1D,gBAAgB,EAAE,iBAAiB;IACnC,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,EAAE;IACd,iBAAiB,EAAE,EAAE;IACrB,UAAU,EAAE,SAAS;IACrB,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,0BAA0B;IACxC,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE;QACX;YACE,IAAI,EAAE,iBAAiB;YACvB,EAAE,EAAE,yFAAyF;YAC7F,QAAQ,EAAE,iEAAiE;YAC3E,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,kBAAkB;YAC3B,UAAU,EAAE,EAAE;YACd,iBAAiB,EAAE,EAAE;SACtB;KACF;IACD,WAAW,EAAE,EAAE;CAChB,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ name: string;
3
+ apdus: string;
4
+ }[];
5
+ export default _default;
6
+ //# sourceMappingURL=vechain.scanAccounts.1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vechain.scanAccounts.1.d.ts","sourceRoot":"","sources":["../../src/datasets/vechain.scanAccounts.1.ts"],"names":[],"mappings":";;;;AAAA,wBAYE"}
@@ -0,0 +1,14 @@
1
+ export default [
2
+ {
3
+ name: "vechain seed 1",
4
+ apdus: `
5
+ => e002000015058000002c80000332800000000000000000000000
6
+ <= 4104de5a8f11cc426ff5617aeffd397c5dd77b58424662f368f2cd539a8c42fd2e7d0c6245c9c3a4306f70d7f292e95642651a6832d66fd9823fa6a0af575113e94e28306665363638383534386630433330333933326242313937423041393630333466316437346462619000
7
+ => e002000015058000002c80000332800000000000000000000001
8
+ <= 4104c1295d6d253841866b1cf8adbb63004d74849370d6301c839c7f57fa764b2eab0ae8fd4ea092a0ee3c2ca3bc61542b4becae04b5e1ed91e698a4a4d620a512dd28303239363142393242384432304134656131326631663143654641373444643742343335354138369000
9
+ => e002000015058000002c80000332800000000000000000000002
10
+ <= 41047ff6eb07f97f5db006f9777d96a44bcb4cd35bf149ff9ed63d9b5fba32e167caa272a2b648e826aa4b9e7c88871d69096424c59634bc260e28fc1c1a3d5f204728466243383635334330623834326464333333363143453839333842323465343037646434383338439000
11
+ `,
12
+ },
13
+ ];
14
+ //# sourceMappingURL=vechain.scanAccounts.1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vechain.scanAccounts.1.js","sourceRoot":"","sources":["../../src/datasets/vechain.scanAccounts.1.ts"],"names":[],"mappings":"AAAA,eAAe;IACb;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE;;;;;;;OAOJ;KACJ;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare const NotEnoughVTHO: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
2
+ [key: string]: unknown;
3
+ }>;
4
+ export declare const MustBeVechain: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
5
+ [key: string]: unknown;
6
+ }>;
7
+ export declare const ImpossibleToCalculateAmountAndFees: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
8
+ [key: string]: unknown;
9
+ }>;
10
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;EAA0C,CAAC;AACrE,eAAO,MAAM,aAAa;;EAA0C,CAAC;AACrE,eAAO,MAAM,kCAAkC;;EAE9C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { createCustomErrorClass } from "@ledgerhq/errors";
2
+ export const NotEnoughVTHO = createCustomErrorClass("NotEnoughVTHO");
3
+ export const MustBeVechain = createCustomErrorClass("MustBeVechain");
4
+ export const ImpossibleToCalculateAmountAndFees = createCustomErrorClass("ImpossibleToCalculateAmountAndFees");
5
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,aAAa,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,kCAAkC,GAAG,sBAAsB,CACtE,oCAAoC,CACrC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createBridges } from "./bridge/index";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { createBridges } from "./bridge/index";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Account } from "@ledgerhq/types-live";
2
+ declare function postSyncAccount(account: Account): Account;
3
+ declare function postScanAccount(account: Account): Account;
4
+ declare const _default: {
5
+ postSyncAccount: typeof postSyncAccount;
6
+ postScanAccount: typeof postScanAccount;
7
+ };
8
+ export default _default;
9
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,iBAAS,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAElD;AAED,iBAAS,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAElD;;;;;AAED,wBAGE"}
package/lib-es/mock.js ADDED
@@ -0,0 +1,11 @@
1
+ function postSyncAccount(account) {
2
+ return account;
3
+ }
4
+ function postScanAccount(account) {
5
+ return account;
6
+ }
7
+ export default {
8
+ postSyncAccount,
9
+ postScanAccount,
10
+ };
11
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAEA,SAAS,eAAe,CAAC,OAAgB;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,eAAe;IACb,eAAe;IACf,eAAe;CAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { getAccount, getOperations } from "./sdk";
2
+ export * from "./sdk";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,cAAc,OAAO,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { getAccount, getOperations } from "./sdk";
2
+ export * from "./sdk";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,cAAc,OAAO,CAAC"}
@@ -0,0 +1,47 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { AccountResponse, Query, QueryResponse } from "../types";
3
+ import type { Operation } from "@ledgerhq/types-live";
4
+ import { Transaction } from "thor-devkit";
5
+ export declare const getAccount: (address: string) => Promise<AccountResponse>;
6
+ export declare const getLastBlockHeight: () => Promise<number>;
7
+ /**
8
+ * Get VET operations
9
+ * @param accountId
10
+ * @param addr
11
+ * @param startAt
12
+ * @returns an array of operations
13
+ */
14
+ export declare const getOperations: (accountId: string, addr: string, startAt: number) => Promise<Operation[]>;
15
+ /**
16
+ * Get operations for a fungible token
17
+ * @param accountId
18
+ * @param addr
19
+ * @param tokenAddr - The token address (The VTHO token address is available from constants.ts)
20
+ * @param startAt
21
+ * @returns an array of operations
22
+ */
23
+ export declare const getTokenOperations: (accountId: string, addr: string, tokenAddr: string, startAt: number) => Promise<Operation[]>;
24
+ /**
25
+ * Submit a transaction and return the ID
26
+ * @param tx - The transaction to submit
27
+ * @returns transaction ID
28
+ */
29
+ export declare const submit: (tx: Transaction) => Promise<string>;
30
+ /**
31
+ * Query the blockchain
32
+ * @param queryData - The query data
33
+ * @returns a result of the query
34
+ */
35
+ export declare const query: (queryData: Query[]) => Promise<QueryResponse[]>;
36
+ /**
37
+ * Get the block ref to use in a transaction
38
+ * @returns the block ref of head
39
+ */
40
+ export declare const getBlockRef: () => Promise<string>;
41
+ /**
42
+ * Get fees paid for the transaction
43
+ * @param transactionId - the id of the transaction
44
+ * @return the fee paid in VTHO or 0
45
+ */
46
+ export declare const getFees: (transactionID: string) => Promise<BigNumber>;
47
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/network/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,eAAe,EAA8B,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOtD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C,eAAO,MAAM,UAAU,YAAmB,MAAM,KAAG,QAAQ,eAAe,CAOzE,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAa,QAAQ,MAAM,CAOzD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,cACb,MAAM,QACX,MAAM,WACH,MAAM,KACd,QAAQ,SAAS,EAAE,CAmBrB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,cAClB,MAAM,QACX,MAAM,aACD,MAAM,WACR,MAAM,KACd,QAAQ,SAAS,EAAE,CA+BrB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM,OAAc,WAAW,KAAG,QAAQ,MAAM,CAe5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,cAAqB,KAAK,EAAE,KAAG,QAAQ,aAAa,EAAE,CAQvE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAa,QAAQ,MAAM,CAOlD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,OAAO,kBAAyB,MAAM,KAAG,QAAQ,SAAS,CAStE,CAAC"}
@@ -0,0 +1,150 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import BigNumber from "bignumber.js";
11
+ import network from "@ledgerhq/live-network/network";
12
+ import { mapVetTransfersToOperations, mapTokenTransfersToOperations, padAddress, } from "../common-logic";
13
+ import { TransferEventSignature } from "../contracts/constants";
14
+ import { HEX_PREFIX } from "../types";
15
+ import { getEnv } from "@ledgerhq/live-env";
16
+ const BASE_URL = getEnv("API_VECHAIN_THOREST");
17
+ export const getAccount = (address) => __awaiter(void 0, void 0, void 0, function* () {
18
+ const { data } = yield network({
19
+ method: "GET",
20
+ url: `${BASE_URL}/accounts/${address}`,
21
+ });
22
+ return data;
23
+ });
24
+ export const getLastBlockHeight = () => __awaiter(void 0, void 0, void 0, function* () {
25
+ const { data } = yield network({
26
+ method: "GET",
27
+ url: `${BASE_URL}/blocks/best`,
28
+ });
29
+ return data.number;
30
+ });
31
+ /**
32
+ * Get VET operations
33
+ * @param accountId
34
+ * @param addr
35
+ * @param startAt
36
+ * @returns an array of operations
37
+ */
38
+ export const getOperations = (accountId, addr, startAt) => __awaiter(void 0, void 0, void 0, function* () {
39
+ const query = {
40
+ range: {
41
+ unit: "block",
42
+ from: startAt,
43
+ },
44
+ criteriaSet: [{ sender: addr }, { recipient: addr }],
45
+ order: "desc",
46
+ };
47
+ const { data } = yield network({
48
+ method: "POST",
49
+ url: `${BASE_URL}/logs/transfer`,
50
+ data: JSON.stringify(query),
51
+ });
52
+ const operations = yield mapVetTransfersToOperations(data, accountId, addr);
53
+ return operations;
54
+ });
55
+ /**
56
+ * Get operations for a fungible token
57
+ * @param accountId
58
+ * @param addr
59
+ * @param tokenAddr - The token address (The VTHO token address is available from constants.ts)
60
+ * @param startAt
61
+ * @returns an array of operations
62
+ */
63
+ export const getTokenOperations = (accountId, addr, tokenAddr, startAt) => __awaiter(void 0, void 0, void 0, function* () {
64
+ const paddedAddress = padAddress(addr);
65
+ const query = {
66
+ range: {
67
+ unit: "block",
68
+ from: startAt,
69
+ },
70
+ criteriaSet: [
71
+ {
72
+ address: tokenAddr,
73
+ topic0: TransferEventSignature,
74
+ topic1: paddedAddress,
75
+ },
76
+ {
77
+ address: tokenAddr,
78
+ topic0: TransferEventSignature,
79
+ topic2: paddedAddress,
80
+ },
81
+ ],
82
+ order: "desc",
83
+ };
84
+ const { data } = yield network({
85
+ method: "POST",
86
+ url: `${BASE_URL}/logs/event`,
87
+ data: JSON.stringify(query),
88
+ });
89
+ const operations = yield mapTokenTransfersToOperations(data, accountId, addr);
90
+ return operations;
91
+ });
92
+ /**
93
+ * Submit a transaction and return the ID
94
+ * @param tx - The transaction to submit
95
+ * @returns transaction ID
96
+ */
97
+ export const submit = (tx) => __awaiter(void 0, void 0, void 0, function* () {
98
+ const encodedRawTx = {
99
+ raw: `${HEX_PREFIX}${tx.encode().toString("hex")}`,
100
+ };
101
+ const { data } = yield network({
102
+ method: "POST",
103
+ url: `${BASE_URL}/transactions`,
104
+ data: encodedRawTx,
105
+ });
106
+ // Expect a transaction ID
107
+ if (!data.id)
108
+ throw Error("Expected an ID to be returned");
109
+ return data.id;
110
+ });
111
+ /**
112
+ * Query the blockchain
113
+ * @param queryData - The query data
114
+ * @returns a result of the query
115
+ */
116
+ export const query = (queryData) => __awaiter(void 0, void 0, void 0, function* () {
117
+ const { data } = yield network({
118
+ method: "POST",
119
+ url: `${BASE_URL}/accounts/*`,
120
+ data: { clauses: queryData },
121
+ });
122
+ return data;
123
+ });
124
+ /**
125
+ * Get the block ref to use in a transaction
126
+ * @returns the block ref of head
127
+ */
128
+ export const getBlockRef = () => __awaiter(void 0, void 0, void 0, function* () {
129
+ const { data } = yield network({
130
+ method: "GET",
131
+ url: `${BASE_URL}/blocks/best`,
132
+ });
133
+ return data.id.slice(0, 18);
134
+ });
135
+ /**
136
+ * Get fees paid for the transaction
137
+ * @param transactionId - the id of the transaction
138
+ * @return the fee paid in VTHO or 0
139
+ */
140
+ export const getFees = (transactionID) => __awaiter(void 0, void 0, void 0, function* () {
141
+ const { data } = yield network({
142
+ method: "GET",
143
+ url: `${BASE_URL}/transactions/${transactionID}/receipt`,
144
+ params: { id: transactionID },
145
+ });
146
+ if (!data || !data.paid)
147
+ return new BigNumber(0);
148
+ return new BigNumber(data.paid);
149
+ });
150
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/network/sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
2
+ import { VechainSigner } from "../types";
3
+ import { GetAddressFn } from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
4
+ declare const resolver: (signerContext: SignerContext<VechainSigner>) => GetAddressFn;
5
+ export default resolver;
6
+ //# sourceMappingURL=getAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddress.d.ts","sourceRoot":"","sources":["../../src/signer/getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mDAAmD,CAAC;AAGjF,QAAA,MAAM,QAAQ,kBAAmB,cAAc,aAAa,CAAC,KAAG,YAgB/D,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,27 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import eip55 from "eip55";
11
+ const resolver = (signerContext) => {
12
+ return (deviceId_1, _a) => __awaiter(void 0, [deviceId_1, _a], void 0, function* (deviceId, { path, verify }) {
13
+ const sig = yield signerContext(deviceId, (signer) => __awaiter(void 0, void 0, void 0, function* () {
14
+ return yield signer.getAddress(path, verify, false); // Note: Do we need to check askChainCode or false?
15
+ }));
16
+ if (!sig.address || !sig.publicKey.length)
17
+ throw Error(`[vechain] Response is empty ${sig.address} ${sig.publicKey}`);
18
+ const address = eip55.encode(sig.address);
19
+ return {
20
+ address,
21
+ publicKey: sig.publicKey,
22
+ path,
23
+ };
24
+ });
25
+ };
26
+ export default resolver;
27
+ //# sourceMappingURL=getAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddress.js","sourceRoot":"","sources":["../../src/signer/getAddress.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,QAAQ,GAAG,CAAC,aAA2C,EAAgB,EAAE;IAC7E,OAAO,iBAA8D,EAAE,wDAAzD,QAAgB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAqB;QACjE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAM,MAAM,EAAC,EAAE;YACvD,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,mDAAmD;QAC1G,CAAC,CAAA,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM;YACvC,MAAM,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAE7E,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO;YACL,OAAO;YACP,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI;SACL,CAAC;IACJ,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import resolver from "./getAddress";
2
+ export * from "./signMessage";
3
+ export default resolver;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,cAAc,CAAC;AAEpC,cAAc,eAAe,CAAC;AAC9B,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import resolver from "./getAddress";
2
+ export * from "./signMessage";
3
+ export default resolver;
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signer/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,cAAc,CAAC;AAEpC,cAAc,eAAe,CAAC;AAC9B,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/signer";
2
+ import { VechainSigner } from "../types";
3
+ export declare const signMessage: (signerContext: SignerContext<VechainSigner>) => (deviceId: string, path: string, message: string, rawMessage: string) => Promise<string>;
4
+ //# sourceMappingURL=signMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signMessage.d.ts","sourceRoot":"","sources":["../../src/signer/signMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,WAAW,kBACN,cAAc,aAAa,CAAC,gBAC3B,MAAM,QAAQ,MAAM,WAAW,MAAM,cAAc,MAAM,oBAezE,CAAC"}
@@ -0,0 +1,27 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Transaction as ThorTransaction } from "thor-devkit";
11
+ export const signMessage = (signerContext) => (deviceId, path, message, rawMessage) => __awaiter(void 0, void 0, void 0, function* () {
12
+ let messageObj;
13
+ let unsigned;
14
+ try {
15
+ if (message)
16
+ messageObj = JSON.parse(message);
17
+ else
18
+ messageObj = JSON.parse(rawMessage);
19
+ unsigned = new ThorTransaction(messageObj);
20
+ }
21
+ catch (e) {
22
+ throw new Error("Message is not a valid JSON object");
23
+ }
24
+ const result = yield signerContext(deviceId, signer => signer.signTransaction(path, unsigned.encode().toString("hex")));
25
+ return result.toString("hex");
26
+ });
27
+ //# sourceMappingURL=signMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signMessage.js","sourceRoot":"","sources":["../../src/signer/signMessage.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,aAAa,CAAC;AAI7D,MAAM,CAAC,MAAM,WAAW,GACtB,CAAC,aAA2C,EAAE,EAAE,CAChD,CAAO,QAAgB,EAAE,IAAY,EAAE,OAAe,EAAE,UAAkB,EAAE,EAAE;IAC5E,IAAI,UAAU,CAAC;IACf,IAAI,QAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,IAAI,OAAO;YAAE,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;YACzC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzC,QAAQ,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CACpD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAChE,CAAC;IAEF,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC,CAAA,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Transaction } from "../types";
2
+ import { DeviceAction } from "@ledgerhq/coin-framework/bot/types";
3
+ declare const _default: {
4
+ acceptTransaction: DeviceAction<Transaction, any>;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=bot-deviceActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-deviceActions.d.ts","sourceRoot":"","sources":["../../src/test/bot-deviceActions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;;;;AAqBlE,wBAAqC"}
@@ -0,0 +1,21 @@
1
+ import { SpeculosButton, deviceActionFlow } from "@ledgerhq/coin-framework/bot/specs";
2
+ const acceptTransaction = deviceActionFlow({
3
+ steps: [
4
+ {
5
+ title: "Review",
6
+ button: SpeculosButton.RIGHT,
7
+ },
8
+ {
9
+ title: "Amount",
10
+ button: SpeculosButton.RIGHT,
11
+ },
12
+ { title: "Address", button: SpeculosButton.RIGHT },
13
+ { title: "Max Fees", button: SpeculosButton.RIGHT },
14
+ {
15
+ title: "Accept",
16
+ button: SpeculosButton.BOTH,
17
+ },
18
+ ],
19
+ });
20
+ export default { acceptTransaction };
21
+ //# sourceMappingURL=bot-deviceActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-deviceActions.js","sourceRoot":"","sources":["../../src/test/bot-deviceActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAItF,MAAM,iBAAiB,GAAmC,gBAAgB,CAAC;IACzE,KAAK,EAAE;QACL;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,cAAc,CAAC,KAAK;SAC7B;QACD;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,cAAc,CAAC,KAAK;SAC7B;QACD,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE;QAClD,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE;QACnD;YACE,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,cAAc,CAAC,IAAI;SAC5B;KACF;CACF,CAAC,CAAC;AAEH,eAAe,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { AppSpec } from "@ledgerhq/coin-framework/bot/types";
2
+ import type { Transaction } from "../types";
3
+ declare const _default: {
4
+ vtho: AppSpec<Transaction>;
5
+ vet: AppSpec<Transaction>;
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=bot-specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot-specs.d.ts","sourceRoot":"","sources":["../../src/test/bot-specs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,EAKR,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;;;;;AAwM5C,wBAA6B"}