@ledgerhq/coin-multiversx 0.2.0-next.2

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 (378) hide show
  1. package/.eslintrc.js +23 -0
  2. package/.turbo/turbo-build.log +4 -0
  3. package/.unimportedrc.json +31 -0
  4. package/CHANGELOG.md +400 -0
  5. package/LICENSE.txt +21 -0
  6. package/jest.config.js +8 -0
  7. package/lib/api/apiCalls.d.ts +22 -0
  8. package/lib/api/apiCalls.d.ts.map +1 -0
  9. package/lib/api/apiCalls.js +153 -0
  10. package/lib/api/apiCalls.js.map +1 -0
  11. package/lib/api/dtos/multiversx-account.d.ts +9 -0
  12. package/lib/api/dtos/multiversx-account.d.ts.map +1 -0
  13. package/lib/api/dtos/multiversx-account.js +17 -0
  14. package/lib/api/dtos/multiversx-account.js.map +1 -0
  15. package/lib/api/index.d.ts +2 -0
  16. package/lib/api/index.d.ts.map +1 -0
  17. package/lib/api/index.js +16 -0
  18. package/lib/api/index.js.map +1 -0
  19. package/lib/api/sdk.d.ts +29 -0
  20. package/lib/api/sdk.d.ts.map +1 -0
  21. package/lib/api/sdk.js +281 -0
  22. package/lib/api/sdk.js.map +1 -0
  23. package/lib/bridge/js.d.ts +11 -0
  24. package/lib/bridge/js.d.ts.map +1 -0
  25. package/lib/bridge/js.js +62 -0
  26. package/lib/bridge/js.js.map +1 -0
  27. package/lib/bridge.integration.test.d.ts +4 -0
  28. package/lib/bridge.integration.test.d.ts.map +1 -0
  29. package/lib/bridge.integration.test.js +142 -0
  30. package/lib/bridge.integration.test.js.map +1 -0
  31. package/lib/broadcast.d.ts +9 -0
  32. package/lib/broadcast.d.ts.map +1 -0
  33. package/lib/broadcast.js +16 -0
  34. package/lib/broadcast.js.map +1 -0
  35. package/lib/buildOptimisticOperation.d.ts +4 -0
  36. package/lib/buildOptimisticOperation.d.ts.map +1 -0
  37. package/lib/buildOptimisticOperation.js +100 -0
  38. package/lib/buildOptimisticOperation.js.map +1 -0
  39. package/lib/buildOptimisticOperation.test.d.ts +2 -0
  40. package/lib/buildOptimisticOperation.test.d.ts.map +1 -0
  41. package/lib/buildOptimisticOperation.test.js +78 -0
  42. package/lib/buildOptimisticOperation.test.js.map +1 -0
  43. package/lib/buildSubAccounts.d.ts +11 -0
  44. package/lib/buildSubAccounts.d.ts.map +1 -0
  45. package/lib/buildSubAccounts.js +117 -0
  46. package/lib/buildSubAccounts.js.map +1 -0
  47. package/lib/buildTransaction.d.ts +19 -0
  48. package/lib/buildTransaction.d.ts.map +1 -0
  49. package/lib/buildTransaction.js +49 -0
  50. package/lib/buildTransaction.js.map +1 -0
  51. package/lib/buildTransaction.unit.test.d.ts +2 -0
  52. package/lib/buildTransaction.unit.test.d.ts.map +1 -0
  53. package/lib/buildTransaction.unit.test.js +47 -0
  54. package/lib/buildTransaction.unit.test.js.map +1 -0
  55. package/lib/cli-transaction.d.ts +16 -0
  56. package/lib/cli-transaction.d.ts.map +1 -0
  57. package/lib/cli-transaction.js +35 -0
  58. package/lib/cli-transaction.js.map +1 -0
  59. package/lib/config.d.ts +14 -0
  60. package/lib/config.d.ts.map +1 -0
  61. package/lib/config.js +16 -0
  62. package/lib/config.js.map +1 -0
  63. package/lib/constants.d.ts +21 -0
  64. package/lib/constants.d.ts.map +1 -0
  65. package/lib/constants.js +27 -0
  66. package/lib/constants.js.map +1 -0
  67. package/lib/createTransaction.d.ts +9 -0
  68. package/lib/createTransaction.d.ts.map +1 -0
  69. package/lib/createTransaction.js +26 -0
  70. package/lib/createTransaction.js.map +1 -0
  71. package/lib/datasets/multiversx1.d.ts +3 -0
  72. package/lib/datasets/multiversx1.d.ts.map +1 -0
  73. package/lib/datasets/multiversx1.js +21 -0
  74. package/lib/datasets/multiversx1.js.map +1 -0
  75. package/lib/deviceTransactionConfig.d.ts +10 -0
  76. package/lib/deviceTransactionConfig.d.ts.map +1 -0
  77. package/lib/deviceTransactionConfig.js +60 -0
  78. package/lib/deviceTransactionConfig.js.map +1 -0
  79. package/lib/encode.d.ts +11 -0
  80. package/lib/encode.d.ts.map +1 -0
  81. package/lib/encode.js +39 -0
  82. package/lib/encode.js.map +1 -0
  83. package/lib/errors.d.ts +16 -0
  84. package/lib/errors.d.ts.map +1 -0
  85. package/lib/errors.js +10 -0
  86. package/lib/errors.js.map +1 -0
  87. package/lib/estimateMaxSpendable.d.ts +10 -0
  88. package/lib/estimateMaxSpendable.d.ts.map +1 -0
  89. package/lib/estimateMaxSpendable.js +35 -0
  90. package/lib/estimateMaxSpendable.js.map +1 -0
  91. package/lib/formatters.d.ts +11 -0
  92. package/lib/formatters.d.ts.map +1 -0
  93. package/lib/formatters.js +65 -0
  94. package/lib/formatters.js.map +1 -0
  95. package/lib/getTransactionStatus.d.ts +5 -0
  96. package/lib/getTransactionStatus.d.ts.map +1 -0
  97. package/lib/getTransactionStatus.js +107 -0
  98. package/lib/getTransactionStatus.js.map +1 -0
  99. package/lib/helpers/denominate.d.ts +9 -0
  100. package/lib/helpers/denominate.d.ts.map +1 -0
  101. package/lib/helpers/denominate.js +75 -0
  102. package/lib/helpers/denominate.js.map +1 -0
  103. package/lib/helpers/handleTransactionStatus.d.ts +7 -0
  104. package/lib/helpers/handleTransactionStatus.d.ts.map +1 -0
  105. package/lib/helpers/handleTransactionStatus.js +18 -0
  106. package/lib/helpers/handleTransactionStatus.js.map +1 -0
  107. package/lib/helpers/hasMinimumDelegableBalance.d.ts +3 -0
  108. package/lib/helpers/hasMinimumDelegableBalance.d.ts.map +1 -0
  109. package/lib/helpers/hasMinimumDelegableBalance.js +7 -0
  110. package/lib/helpers/hasMinimumDelegableBalance.js.map +1 -0
  111. package/lib/helpers/randomizeProviders.d.ts +7 -0
  112. package/lib/helpers/randomizeProviders.d.ts.map +1 -0
  113. package/lib/helpers/randomizeProviders.js +12 -0
  114. package/lib/helpers/randomizeProviders.js.map +1 -0
  115. package/lib/hw-getAddress.d.ts +6 -0
  116. package/lib/hw-getAddress.d.ts.map +1 -0
  117. package/lib/hw-getAddress.js +14 -0
  118. package/lib/hw-getAddress.js.map +1 -0
  119. package/lib/logic.d.ts +15 -0
  120. package/lib/logic.d.ts.map +1 -0
  121. package/lib/logic.js +77 -0
  122. package/lib/logic.js.map +1 -0
  123. package/lib/preload.d.ts +11 -0
  124. package/lib/preload.d.ts.map +1 -0
  125. package/lib/preload.js +94 -0
  126. package/lib/preload.js.map +1 -0
  127. package/lib/prepareTransaction.d.ts +10 -0
  128. package/lib/prepareTransaction.d.ts.map +1 -0
  129. package/lib/prepareTransaction.js +72 -0
  130. package/lib/prepareTransaction.js.map +1 -0
  131. package/lib/reconciliation.d.ts +3 -0
  132. package/lib/reconciliation.d.ts.map +1 -0
  133. package/lib/reconciliation.js +56 -0
  134. package/lib/reconciliation.js.map +1 -0
  135. package/lib/serialization.d.ts +9 -0
  136. package/lib/serialization.d.ts.map +1 -0
  137. package/lib/serialization.js +65 -0
  138. package/lib/serialization.js.map +1 -0
  139. package/lib/signOperation.d.ts +10 -0
  140. package/lib/signOperation.d.ts.map +1 -0
  141. package/lib/signOperation.js +65 -0
  142. package/lib/signOperation.js.map +1 -0
  143. package/lib/signer.d.ts +16 -0
  144. package/lib/signer.d.ts.map +1 -0
  145. package/lib/signer.js +3 -0
  146. package/lib/signer.js.map +1 -0
  147. package/lib/specs.d.ts +7 -0
  148. package/lib/specs.d.ts.map +1 -0
  149. package/lib/specs.js +286 -0
  150. package/lib/specs.js.map +1 -0
  151. package/lib/speculos-deviceActions.d.ts +16 -0
  152. package/lib/speculos-deviceActions.d.ts.map +1 -0
  153. package/lib/speculos-deviceActions.js +250 -0
  154. package/lib/speculos-deviceActions.js.map +1 -0
  155. package/lib/synchronisation.d.ts +5 -0
  156. package/lib/synchronisation.d.ts.map +1 -0
  157. package/lib/synchronisation.js +69 -0
  158. package/lib/synchronisation.js.map +1 -0
  159. package/lib/transaction.d.ts +15 -0
  160. package/lib/transaction.d.ts.map +1 -0
  161. package/lib/transaction.js +62 -0
  162. package/lib/transaction.js.map +1 -0
  163. package/lib/types.d.ts +188 -0
  164. package/lib/types.d.ts.map +1 -0
  165. package/lib/types.js +17 -0
  166. package/lib/types.js.map +1 -0
  167. package/lib/utils/binary.utils.d.ts +5 -0
  168. package/lib/utils/binary.utils.d.ts.map +1 -0
  169. package/lib/utils/binary.utils.js +16 -0
  170. package/lib/utils/binary.utils.js.map +1 -0
  171. package/lib-es/api/apiCalls.d.ts +22 -0
  172. package/lib-es/api/apiCalls.d.ts.map +1 -0
  173. package/lib-es/api/apiCalls.js +147 -0
  174. package/lib-es/api/apiCalls.js.map +1 -0
  175. package/lib-es/api/dtos/multiversx-account.d.ts +9 -0
  176. package/lib-es/api/dtos/multiversx-account.d.ts.map +1 -0
  177. package/lib-es/api/dtos/multiversx-account.js +13 -0
  178. package/lib-es/api/dtos/multiversx-account.js.map +1 -0
  179. package/lib-es/api/index.d.ts +2 -0
  180. package/lib-es/api/index.d.ts.map +1 -0
  181. package/lib-es/api/index.js +2 -0
  182. package/lib-es/api/index.js.map +1 -0
  183. package/lib-es/api/sdk.d.ts +29 -0
  184. package/lib-es/api/sdk.d.ts.map +1 -0
  185. package/lib-es/api/sdk.js +264 -0
  186. package/lib-es/api/sdk.js.map +1 -0
  187. package/lib-es/bridge/js.d.ts +11 -0
  188. package/lib-es/bridge/js.d.ts.map +1 -0
  189. package/lib-es/bridge/js.js +53 -0
  190. package/lib-es/bridge/js.js.map +1 -0
  191. package/lib-es/bridge.integration.test.d.ts +4 -0
  192. package/lib-es/bridge.integration.test.d.ts.map +1 -0
  193. package/lib-es/bridge.integration.test.js +139 -0
  194. package/lib-es/bridge.integration.test.js.map +1 -0
  195. package/lib-es/broadcast.d.ts +9 -0
  196. package/lib-es/broadcast.d.ts.map +1 -0
  197. package/lib-es/broadcast.js +12 -0
  198. package/lib-es/broadcast.js.map +1 -0
  199. package/lib-es/buildOptimisticOperation.d.ts +4 -0
  200. package/lib-es/buildOptimisticOperation.d.ts.map +1 -0
  201. package/lib-es/buildOptimisticOperation.js +93 -0
  202. package/lib-es/buildOptimisticOperation.js.map +1 -0
  203. package/lib-es/buildOptimisticOperation.test.d.ts +2 -0
  204. package/lib-es/buildOptimisticOperation.test.d.ts.map +1 -0
  205. package/lib-es/buildOptimisticOperation.test.js +73 -0
  206. package/lib-es/buildOptimisticOperation.test.js.map +1 -0
  207. package/lib-es/buildSubAccounts.d.ts +11 -0
  208. package/lib-es/buildSubAccounts.d.ts.map +1 -0
  209. package/lib-es/buildSubAccounts.js +112 -0
  210. package/lib-es/buildSubAccounts.js.map +1 -0
  211. package/lib-es/buildTransaction.d.ts +19 -0
  212. package/lib-es/buildTransaction.d.ts.map +1 -0
  213. package/lib-es/buildTransaction.js +44 -0
  214. package/lib-es/buildTransaction.js.map +1 -0
  215. package/lib-es/buildTransaction.unit.test.d.ts +2 -0
  216. package/lib-es/buildTransaction.unit.test.d.ts.map +1 -0
  217. package/lib-es/buildTransaction.unit.test.js +42 -0
  218. package/lib-es/buildTransaction.unit.test.js.map +1 -0
  219. package/lib-es/cli-transaction.d.ts +16 -0
  220. package/lib-es/cli-transaction.d.ts.map +1 -0
  221. package/lib-es/cli-transaction.js +29 -0
  222. package/lib-es/cli-transaction.js.map +1 -0
  223. package/lib-es/config.d.ts +14 -0
  224. package/lib-es/config.d.ts.map +1 -0
  225. package/lib-es/config.js +11 -0
  226. package/lib-es/config.js.map +1 -0
  227. package/lib-es/constants.d.ts +21 -0
  228. package/lib-es/constants.d.ts.map +1 -0
  229. package/lib-es/constants.js +21 -0
  230. package/lib-es/constants.js.map +1 -0
  231. package/lib-es/createTransaction.d.ts +9 -0
  232. package/lib-es/createTransaction.d.ts.map +1 -0
  233. package/lib-es/createTransaction.js +19 -0
  234. package/lib-es/createTransaction.js.map +1 -0
  235. package/lib-es/datasets/multiversx1.d.ts +3 -0
  236. package/lib-es/datasets/multiversx1.d.ts.map +1 -0
  237. package/lib-es/datasets/multiversx1.js +18 -0
  238. package/lib-es/datasets/multiversx1.js.map +1 -0
  239. package/lib-es/deviceTransactionConfig.d.ts +10 -0
  240. package/lib-es/deviceTransactionConfig.d.ts.map +1 -0
  241. package/lib-es/deviceTransactionConfig.js +55 -0
  242. package/lib-es/deviceTransactionConfig.js.map +1 -0
  243. package/lib-es/encode.d.ts +11 -0
  244. package/lib-es/encode.d.ts.map +1 -0
  245. package/lib-es/encode.js +35 -0
  246. package/lib-es/encode.js.map +1 -0
  247. package/lib-es/errors.d.ts +16 -0
  248. package/lib-es/errors.d.ts.map +1 -0
  249. package/lib-es/errors.js +7 -0
  250. package/lib-es/errors.js.map +1 -0
  251. package/lib-es/estimateMaxSpendable.d.ts +10 -0
  252. package/lib-es/estimateMaxSpendable.d.ts.map +1 -0
  253. package/lib-es/estimateMaxSpendable.js +31 -0
  254. package/lib-es/estimateMaxSpendable.js.map +1 -0
  255. package/lib-es/formatters.d.ts +11 -0
  256. package/lib-es/formatters.d.ts.map +1 -0
  257. package/lib-es/formatters.js +60 -0
  258. package/lib-es/formatters.js.map +1 -0
  259. package/lib-es/getTransactionStatus.d.ts +5 -0
  260. package/lib-es/getTransactionStatus.d.ts.map +1 -0
  261. package/lib-es/getTransactionStatus.js +100 -0
  262. package/lib-es/getTransactionStatus.js.map +1 -0
  263. package/lib-es/helpers/denominate.d.ts +9 -0
  264. package/lib-es/helpers/denominate.d.ts.map +1 -0
  265. package/lib-es/helpers/denominate.js +71 -0
  266. package/lib-es/helpers/denominate.js.map +1 -0
  267. package/lib-es/helpers/handleTransactionStatus.d.ts +7 -0
  268. package/lib-es/helpers/handleTransactionStatus.d.ts.map +1 -0
  269. package/lib-es/helpers/handleTransactionStatus.js +14 -0
  270. package/lib-es/helpers/handleTransactionStatus.js.map +1 -0
  271. package/lib-es/helpers/hasMinimumDelegableBalance.d.ts +3 -0
  272. package/lib-es/helpers/hasMinimumDelegableBalance.d.ts.map +1 -0
  273. package/lib-es/helpers/hasMinimumDelegableBalance.js +3 -0
  274. package/lib-es/helpers/hasMinimumDelegableBalance.js.map +1 -0
  275. package/lib-es/helpers/randomizeProviders.d.ts +7 -0
  276. package/lib-es/helpers/randomizeProviders.d.ts.map +1 -0
  277. package/lib-es/helpers/randomizeProviders.js +8 -0
  278. package/lib-es/helpers/randomizeProviders.js.map +1 -0
  279. package/lib-es/hw-getAddress.d.ts +6 -0
  280. package/lib-es/hw-getAddress.d.ts.map +1 -0
  281. package/lib-es/hw-getAddress.js +12 -0
  282. package/lib-es/hw-getAddress.js.map +1 -0
  283. package/lib-es/logic.d.ts +15 -0
  284. package/lib-es/logic.d.ts.map +1 -0
  285. package/lib-es/logic.js +65 -0
  286. package/lib-es/logic.js.map +1 -0
  287. package/lib-es/preload.d.ts +11 -0
  288. package/lib-es/preload.d.ts.map +1 -0
  289. package/lib-es/preload.js +85 -0
  290. package/lib-es/preload.js.map +1 -0
  291. package/lib-es/prepareTransaction.d.ts +10 -0
  292. package/lib-es/prepareTransaction.d.ts.map +1 -0
  293. package/lib-es/prepareTransaction.js +68 -0
  294. package/lib-es/prepareTransaction.js.map +1 -0
  295. package/lib-es/reconciliation.d.ts +3 -0
  296. package/lib-es/reconciliation.d.ts.map +1 -0
  297. package/lib-es/reconciliation.js +52 -0
  298. package/lib-es/reconciliation.js.map +1 -0
  299. package/lib-es/serialization.d.ts +9 -0
  300. package/lib-es/serialization.d.ts.map +1 -0
  301. package/lib-es/serialization.js +53 -0
  302. package/lib-es/serialization.js.map +1 -0
  303. package/lib-es/signOperation.d.ts +10 -0
  304. package/lib-es/signOperation.d.ts.map +1 -0
  305. package/lib-es/signOperation.js +61 -0
  306. package/lib-es/signOperation.js.map +1 -0
  307. package/lib-es/signer.d.ts +16 -0
  308. package/lib-es/signer.d.ts.map +1 -0
  309. package/lib-es/signer.js +2 -0
  310. package/lib-es/signer.js.map +1 -0
  311. package/lib-es/specs.d.ts +7 -0
  312. package/lib-es/specs.d.ts.map +1 -0
  313. package/lib-es/specs.js +281 -0
  314. package/lib-es/specs.js.map +1 -0
  315. package/lib-es/speculos-deviceActions.d.ts +16 -0
  316. package/lib-es/speculos-deviceActions.d.ts.map +1 -0
  317. package/lib-es/speculos-deviceActions.js +244 -0
  318. package/lib-es/speculos-deviceActions.js.map +1 -0
  319. package/lib-es/synchronisation.d.ts +5 -0
  320. package/lib-es/synchronisation.d.ts.map +1 -0
  321. package/lib-es/synchronisation.js +62 -0
  322. package/lib-es/synchronisation.js.map +1 -0
  323. package/lib-es/transaction.d.ts +15 -0
  324. package/lib-es/transaction.d.ts.map +1 -0
  325. package/lib-es/transaction.js +56 -0
  326. package/lib-es/transaction.js.map +1 -0
  327. package/lib-es/types.d.ts +188 -0
  328. package/lib-es/types.d.ts.map +1 -0
  329. package/lib-es/types.js +12 -0
  330. package/lib-es/types.js.map +1 -0
  331. package/lib-es/utils/binary.utils.d.ts +5 -0
  332. package/lib-es/utils/binary.utils.d.ts.map +1 -0
  333. package/lib-es/utils/binary.utils.js +12 -0
  334. package/lib-es/utils/binary.utils.js.map +1 -0
  335. package/package.json +86 -0
  336. package/src/__snapshots__/bridge.integration.test.ts.snap +181 -0
  337. package/src/api/apiCalls.ts +243 -0
  338. package/src/api/dtos/multiversx-account.ts +20 -0
  339. package/src/api/index.ts +13 -0
  340. package/src/api/sdk.ts +368 -0
  341. package/src/bridge/js.ts +77 -0
  342. package/src/bridge.integration.test.ts +147 -0
  343. package/src/broadcast.ts +16 -0
  344. package/src/buildOptimisticOperation.test.ts +88 -0
  345. package/src/buildOptimisticOperation.ts +120 -0
  346. package/src/buildSubAccounts.ts +153 -0
  347. package/src/buildTransaction.ts +67 -0
  348. package/src/buildTransaction.unit.test.ts +49 -0
  349. package/src/cli-transaction.ts +41 -0
  350. package/src/config.ts +26 -0
  351. package/src/constants.ts +24 -0
  352. package/src/createTransaction.ts +21 -0
  353. package/src/datasets/multiversx1.ts +19 -0
  354. package/src/deviceTransactionConfig.ts +74 -0
  355. package/src/encode.ts +46 -0
  356. package/src/errors.ts +19 -0
  357. package/src/estimateMaxSpendable.ts +43 -0
  358. package/src/formatters.ts +76 -0
  359. package/src/getTransactionStatus.ts +151 -0
  360. package/src/helpers/denominate.ts +95 -0
  361. package/src/helpers/handleTransactionStatus.ts +26 -0
  362. package/src/helpers/hasMinimumDelegableBalance.ts +6 -0
  363. package/src/helpers/randomizeProviders.ts +20 -0
  364. package/src/hw-getAddress.ts +19 -0
  365. package/src/logic.ts +83 -0
  366. package/src/preload.ts +95 -0
  367. package/src/prepareTransaction.ts +78 -0
  368. package/src/reconciliation.ts +64 -0
  369. package/src/serialization.ts +72 -0
  370. package/src/signOperation.ts +99 -0
  371. package/src/signer.ts +21 -0
  372. package/src/specs.ts +387 -0
  373. package/src/speculos-deviceActions.ts +269 -0
  374. package/src/synchronisation.ts +74 -0
  375. package/src/transaction.ts +76 -0
  376. package/src/types.ts +235 -0
  377. package/src/utils/binary.utils.ts +13 -0
  378. package/tsconfig.json +13 -0
@@ -0,0 +1,264 @@
1
+ import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
2
+ import { inferSubOperations } from "@ledgerhq/coin-framework/serialization/index";
3
+ import { getAbandonSeedAddress } from "@ledgerhq/cryptoassets";
4
+ import { getEnv } from "@ledgerhq/live-env";
5
+ import { Address, ApiNetworkProvider, Transaction as MultiversXSdkTransaction, TransactionPayload, } from "@multiversx/sdk-core";
6
+ import { BigNumber } from "bignumber.js";
7
+ import { CHAIN_ID, GAS_PER_DATA_BYTE, GAS_PRICE, GAS_PRICE_MODIFIER, MIN_GAS_LIMIT, MULTIVERSX_STAKING_POOL, } from "../constants";
8
+ import { MultiversXTransferOptions, } from "../types";
9
+ import { BinaryUtils } from "../utils/binary.utils";
10
+ import MultiversXApi from "./apiCalls";
11
+ import { MultiversXAccount } from "./dtos/multiversx-account";
12
+ const api = new MultiversXApi(getEnv("MULTIVERSX_API_ENDPOINT"), getEnv("MULTIVERSX_DELEGATION_API_ENDPOINT"));
13
+ const networkConfig = { clientName: "ledger-live" };
14
+ const proxy = new ApiNetworkProvider(getEnv("MULTIVERSX_API_ENDPOINT"), networkConfig);
15
+ /**
16
+ * Get account balances and nonce
17
+ */
18
+ export const getAccount = async (addr) => {
19
+ const { balance, nonce, isGuarded } = await api.getAccountDetails(addr);
20
+ const blockHeight = await api.getBlockchainBlockHeight();
21
+ const account = new MultiversXAccount(new BigNumber(balance), nonce, isGuarded, blockHeight);
22
+ return account;
23
+ };
24
+ export const getProviders = async () => {
25
+ const providers = await api.getProviders();
26
+ return providers;
27
+ };
28
+ export const getNetworkConfig = async () => {
29
+ return await proxy.getNetworkConfig();
30
+ };
31
+ export const getAccountNonce = async (addr) => {
32
+ const address = new Address(addr);
33
+ const account = await proxy.getAccount(address);
34
+ return account.nonce;
35
+ };
36
+ /**
37
+ * Returns true if account is the signer
38
+ */
39
+ function isSender(transaction, addr) {
40
+ return transaction.sender === addr;
41
+ }
42
+ function isSelfSend(transaction) {
43
+ return (!!transaction.sender && !!transaction.receiver && transaction.sender === transaction.receiver);
44
+ }
45
+ /**
46
+ * Map transaction to an Operation Type
47
+ */
48
+ function getEGLDOperationType(transaction, addr) {
49
+ if (transaction.action && transaction.action.category == "stake") {
50
+ const stakeAction = transaction.action.name;
51
+ switch (stakeAction) {
52
+ case "delegate":
53
+ return "DELEGATE";
54
+ case "unDelegate":
55
+ return "UNDELEGATE";
56
+ case "withdraw":
57
+ return "WITHDRAW_UNBONDED";
58
+ case "claimRewards":
59
+ return "REWARD";
60
+ case "reDelegateRewards":
61
+ return "DELEGATE";
62
+ }
63
+ }
64
+ return isSender(transaction, addr)
65
+ ? transaction.transfer === MultiversXTransferOptions.esdt
66
+ ? "FEES"
67
+ : "OUT"
68
+ : "IN";
69
+ }
70
+ function getESDTOperationValue(transaction, tokenIdentifier) {
71
+ const hasFailed = !transaction.status || transaction.status === "fail" || transaction.status === "invalid";
72
+ if (!transaction.action || hasFailed) {
73
+ return new BigNumber(0);
74
+ }
75
+ let token1, token2;
76
+ switch (transaction.action.name) {
77
+ case "transfer":
78
+ return new BigNumber(transaction.action.arguments.transfers[0].value ?? 0);
79
+ case "swap":
80
+ token1 = transaction.action.arguments.transfers[0];
81
+ token2 = transaction.action.arguments.transfers[1];
82
+ if (token1.token === tokenIdentifier) {
83
+ return new BigNumber(token1.value);
84
+ }
85
+ else {
86
+ return new BigNumber(token2.value);
87
+ }
88
+ default:
89
+ return new BigNumber(transaction.tokenValue ?? 0);
90
+ }
91
+ }
92
+ function getStakingAmount(transaction, address) {
93
+ const operation = transaction.operations?.find(({ sender, receiver, action, type }) => action == "transfer" &&
94
+ type == "egld" &&
95
+ sender == transaction.receiver &&
96
+ (receiver == address || receiver == MULTIVERSX_STAKING_POOL));
97
+ let dataDecoded;
98
+ switch (transaction.mode) {
99
+ case "send":
100
+ return new BigNumber(0);
101
+ case "delegate":
102
+ return new BigNumber(transaction.value ?? 0);
103
+ case "unDelegate":
104
+ dataDecoded = BinaryUtils.base64Decode(transaction.data ?? "");
105
+ return new BigNumber(`0x${dataDecoded.split("@")[1]}`);
106
+ case "reDelegateRewards":
107
+ case "claimRewards":
108
+ case "withdraw":
109
+ default:
110
+ return new BigNumber(operation?.value ?? new BigNumber(0));
111
+ }
112
+ }
113
+ /**
114
+ * Map transaction to a correct Operation Value (affecting account balance)
115
+ */
116
+ function getEGLDOperationValue(transaction, address) {
117
+ if (transaction.mode === "send") {
118
+ if (transaction.transfer === MultiversXTransferOptions.esdt) {
119
+ // Only fees paid in EGLD for token transactions
120
+ return isSender(transaction, address) && transaction.fee
121
+ ? new BigNumber(transaction.fee)
122
+ : new BigNumber(0);
123
+ }
124
+ else {
125
+ return isSender(transaction, address)
126
+ ? isSelfSend(transaction)
127
+ ? new BigNumber(transaction.fee ?? 0) // Self-send, only fees are paid
128
+ : new BigNumber(transaction.value ?? 0).plus(transaction.fee ?? 0) // The sender pays the amount and the fees
129
+ : new BigNumber(transaction.value ?? 0); // The recipient gets the amount
130
+ }
131
+ }
132
+ else {
133
+ // Operation value for staking transactions are just the fees, plus possible rewards
134
+ // Other amounts are put in extra.amount
135
+ return new BigNumber(transaction.fee ?? 0);
136
+ }
137
+ }
138
+ /**
139
+ * Map the MultiversX history transaction to a Ledger Live Operation
140
+ */
141
+ function transactionToEGLDOperation(accountId, addr, transaction, subAccounts) {
142
+ const type = getEGLDOperationType(transaction, addr);
143
+ const fee = new BigNumber(transaction.fee ?? 0);
144
+ const hasFailed = !transaction.status || transaction.status === "fail" || transaction.status === "invalid";
145
+ const delegationAmount = getStakingAmount(transaction, addr);
146
+ const value = hasFailed
147
+ ? isSender(transaction, addr)
148
+ ? fee
149
+ : new BigNumber(0)
150
+ : transaction.mode === "claimRewards"
151
+ ? delegationAmount.minus(fee)
152
+ : getEGLDOperationValue(transaction, addr);
153
+ const operation = {
154
+ id: encodeOperationId(accountId, transaction.txHash ?? "", type),
155
+ accountId,
156
+ fee,
157
+ value,
158
+ type,
159
+ hash: transaction.txHash ?? "",
160
+ blockHash: transaction.miniBlockHash,
161
+ blockHeight: transaction.round,
162
+ date: new Date(transaction.timestamp ? transaction.timestamp * 1000 : 0),
163
+ extra: {
164
+ amount: delegationAmount,
165
+ },
166
+ senders: (type == "OUT" || type == "IN") && transaction.sender ? [transaction.sender] : [],
167
+ recipients: (type == "OUT" || type == "IN") && transaction.receiver ? [transaction.receiver] : [],
168
+ transactionSequenceNumber: isSender(transaction, addr) ? transaction.nonce : undefined,
169
+ hasFailed,
170
+ };
171
+ const subOperations = subAccounts
172
+ ? inferSubOperations(transaction.txHash ?? "", subAccounts)
173
+ : undefined;
174
+ if (subOperations) {
175
+ operation.subOperations = subOperations;
176
+ }
177
+ let contract = undefined;
178
+ if (transaction.receiver) {
179
+ const isReceiverSmartContract = Address.newFromBech32(transaction.receiver).isSmartContract();
180
+ contract = isReceiverSmartContract ? transaction.receiver : undefined;
181
+ }
182
+ if (contract) {
183
+ operation.contract = contract;
184
+ }
185
+ return operation;
186
+ }
187
+ const getESDTOperationType = (transaction, address) => {
188
+ return isSender(transaction, address) ? "OUT" : "IN";
189
+ };
190
+ const transactionToESDTOperation = (tokenAccountId, addr, transaction, tokenIdentifier) => {
191
+ const type = getESDTOperationType(transaction, addr);
192
+ const value = getESDTOperationValue(transaction, tokenIdentifier);
193
+ const fee = new BigNumber(transaction.fee ?? 0);
194
+ const senders = transaction.sender ? [transaction.sender] : [];
195
+ const recipients = transaction.receiver ? [transaction.receiver] : [];
196
+ const hash = transaction.txHash ?? "";
197
+ const blockHeight = transaction.round;
198
+ const date = new Date(transaction.timestamp ? transaction.timestamp * 1000 : 0);
199
+ return {
200
+ id: encodeOperationId(tokenAccountId, hash, type),
201
+ accountId: tokenAccountId,
202
+ hash,
203
+ date,
204
+ type,
205
+ value,
206
+ fee,
207
+ senders,
208
+ recipients,
209
+ blockHeight,
210
+ blockHash: transaction.miniBlockHash,
211
+ extra: {},
212
+ };
213
+ };
214
+ /**
215
+ * Fetch operation list
216
+ */
217
+ export const getEGLDOperations = async (accountId, addr, startAt, subAccounts) => {
218
+ const rawTransactions = await api.getHistory(addr, startAt);
219
+ if (!rawTransactions)
220
+ return rawTransactions;
221
+ return rawTransactions.map(transaction => transactionToEGLDOperation(accountId, addr, transaction, subAccounts));
222
+ };
223
+ export const getAccountESDTTokens = async (address) => {
224
+ return await api.getESDTTokensForAddress(address);
225
+ };
226
+ export const getAccountDelegations = async (address) => {
227
+ return await api.getAccountDelegations(address);
228
+ };
229
+ export const hasESDTTokens = async (address) => {
230
+ const tokensCount = await api.getESDTTokensCountForAddress(address);
231
+ return tokensCount > 0;
232
+ };
233
+ export const getESDTOperations = async (tokenAccountId, address, tokenIdentifier, startAt) => {
234
+ const accountESDTTransactions = await api.getESDTTransactionsForAddress(address, tokenIdentifier, startAt);
235
+ return accountESDTTransactions.map(transaction => transactionToESDTOperation(tokenAccountId, address, transaction, tokenIdentifier));
236
+ };
237
+ /**
238
+ * Obtain fees from blockchain
239
+ */
240
+ export const getFees = async (t) => {
241
+ const networkConfig = {
242
+ MinGasLimit: MIN_GAS_LIMIT,
243
+ GasPerDataByte: GAS_PER_DATA_BYTE,
244
+ GasPriceModifier: GAS_PRICE_MODIFIER,
245
+ ChainID: CHAIN_ID,
246
+ };
247
+ const transaction = new MultiversXSdkTransaction({
248
+ data: TransactionPayload.fromEncoded(t.data?.trim()),
249
+ receiver: new Address(getAbandonSeedAddress("elrond")),
250
+ chainID: CHAIN_ID,
251
+ gasPrice: GAS_PRICE,
252
+ gasLimit: t.gasLimit ?? networkConfig.MinGasLimit,
253
+ sender: Address.empty(),
254
+ });
255
+ const feesStr = transaction.computeFee(networkConfig).toFixed();
256
+ return new BigNumber(feesStr);
257
+ };
258
+ /**
259
+ * Broadcast blob to blockchain
260
+ */
261
+ export const broadcastTransaction = async (signedOperation) => {
262
+ return await api.submit(signedOperation);
263
+ };
264
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/api/sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { SignerContext } from "@ledgerhq/coin-framework/lib/signer";
2
+ import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live";
3
+ import { MultiversXSigner } from "../signer";
4
+ import type { MultiversXAccount, Transaction, TransactionStatus } from "../types";
5
+ export declare function buildCurrencyBridge(signerContext: SignerContext<MultiversXSigner>): CurrencyBridge;
6
+ export declare function buildAccountBridge(signerContext: SignerContext<MultiversXSigner>): AccountBridge<Transaction, MultiversXAccount, TransactionStatus>;
7
+ export declare function createBridges(signerContext: SignerContext<MultiversXSigner>): {
8
+ currencyBridge: CurrencyBridge;
9
+ accountBridge: AccountBridge<Transaction, MultiversXAccount, import("@ledgerhq/types-live").TransactionStatusCommon>;
10
+ };
11
+ //# sourceMappingURL=js.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js.d.ts","sourceRoot":"","sources":["../../src/bridge/js.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAc1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElF,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAC7C,cAAc,CAchB;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAC7C,aAAa,CAAC,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAsBlE;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC;;;EAK3E"}
@@ -0,0 +1,53 @@
1
+ import getAddressWrapper from "@ledgerhq/coin-framework/bridge/getAddressWrapper";
2
+ import { getSerializedAddressParameters, updateTransaction, makeAccountBridgeReceive, makeScanAccounts, } from "@ledgerhq/coin-framework/bridge/jsHelpers";
3
+ import { broadcast } from "../broadcast";
4
+ import { createTransaction } from "../createTransaction";
5
+ import { estimateMaxSpendable } from "../estimateMaxSpendable";
6
+ import { getTransactionStatus } from "../getTransactionStatus";
7
+ import resolver from "../hw-getAddress";
8
+ import { getPreloadStrategy, hydrate, preload } from "../preload";
9
+ import { prepareTransaction } from "../prepareTransaction";
10
+ import { assignFromAccountRaw, assignToAccountRaw, fromOperationExtraRaw, toOperationExtraRaw, } from "../serialization";
11
+ import { buildSignOperation } from "../signOperation";
12
+ import { getAccountShape, sync } from "../synchronisation";
13
+ export function buildCurrencyBridge(signerContext) {
14
+ const getAddress = resolver(signerContext);
15
+ const scanAccounts = makeScanAccounts({
16
+ getAccountShape,
17
+ getAddressFn: getAddress,
18
+ });
19
+ return {
20
+ getPreloadStrategy,
21
+ preload,
22
+ hydrate,
23
+ scanAccounts,
24
+ };
25
+ }
26
+ export function buildAccountBridge(signerContext) {
27
+ const getAddress = resolver(signerContext);
28
+ const receive = makeAccountBridgeReceive(getAddressWrapper(getAddress));
29
+ const signOperation = buildSignOperation(signerContext);
30
+ return {
31
+ estimateMaxSpendable,
32
+ createTransaction,
33
+ updateTransaction,
34
+ getTransactionStatus,
35
+ prepareTransaction,
36
+ sync,
37
+ receive,
38
+ signOperation,
39
+ broadcast,
40
+ assignFromAccountRaw,
41
+ assignToAccountRaw,
42
+ fromOperationExtraRaw,
43
+ toOperationExtraRaw,
44
+ getSerializedAddressParameters,
45
+ };
46
+ }
47
+ export function createBridges(signerContext) {
48
+ return {
49
+ currencyBridge: buildCurrencyBridge(signerContext),
50
+ accountBridge: buildAccountBridge(signerContext),
51
+ };
52
+ }
53
+ //# sourceMappingURL=js.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js.js","sourceRoot":"","sources":["../../src/bridge/js.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,mDAAmD,CAAC;AAClF,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,2CAA2C,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAG3D,MAAM,UAAU,mBAAmB,CACjC,aAA8C;IAE9C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,gBAAgB,CAAC;QACpC,eAAe;QACf,YAAY,EAAE,UAAU;KACzB,CAAC,CAAC;IAEH,OAAO;QACL,kBAAkB;QAClB,OAAO;QACP,OAAO;QACP,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,aAA8C;IAE9C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,wBAAwB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAExD,OAAO;QACL,oBAAoB;QACpB,iBAAiB;QACjB,iBAAiB;QACjB,oBAAoB;QACpB,kBAAkB;QAClB,IAAI;QACJ,OAAO;QACP,aAAa;QACb,SAAS;QACT,oBAAoB;QACpB,kBAAkB;QAClB,qBAAqB;QACrB,mBAAmB;QACnB,8BAA8B;KAC/B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,aAA8C;IAC1E,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,aAAa,CAAC;QAClD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DatasetTest } from "@ledgerhq/types-live";
2
+ import type { Transaction } from "./types";
3
+ export declare const dataset: DatasetTest<Transaction>;
4
+ //# sourceMappingURL=bridge.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.integration.test.d.ts","sourceRoot":"","sources":["../src/bridge.integration.test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAiI3C,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,WAAW,CAM5C,CAAC"}
@@ -0,0 +1,139 @@
1
+ import { InvalidAddressBecauseDestinationIsAlsoSource, NotEnoughBalance } from "@ledgerhq/errors";
2
+ import { BigNumber } from "bignumber.js";
3
+ import { fromTransactionRaw } from "./transaction";
4
+ const TEST_ADDRESS = "erd1vgfp3g7azqjx4wsmtt7067m0l62v3psmqzr24j6xvywj2tlz0gesvyzsq2";
5
+ const elrond = {
6
+ FIXME_ignorePreloadFields: [
7
+ "validators", // They are always changing
8
+ ],
9
+ scanAccounts: [
10
+ {
11
+ name: "multiversx seed 1",
12
+ apdus: `
13
+ => ed030000080000000080000000
14
+ <= 3e6572643176676670336737617a716a783477736d7474373036376d306c3632763370736d717a7232346a36787679776a32746c7a3067657376797a7371329000
15
+ => ed030000080000000080000000
16
+ <= 3e6572643176676670336737617a716a783477736d7474373036376d306c3632763370736d717a7232346a36787679776a32746c7a3067657376797a7371329000
17
+ => ed030000080000000080000001
18
+ <= 3e65726431706d33676a65326c6d643576796c6463767579366a7078676465347261706a70756a76756a6b65653661376a77327a6d6834747172653739367a9000
19
+ `,
20
+ },
21
+ ],
22
+ accounts: [
23
+ {
24
+ raw: {
25
+ id: `js:2:multiversx:${TEST_ADDRESS}:`,
26
+ seedIdentifier: `${TEST_ADDRESS}`,
27
+ name: "MultiversX 1",
28
+ derivationMode: "",
29
+ index: 0,
30
+ freshAddress: `${TEST_ADDRESS}`,
31
+ freshAddressPath: "44'/508'/0'/0'/0'",
32
+ blockHeight: 0,
33
+ operations: [],
34
+ pendingOperations: [],
35
+ currencyId: "elrond",
36
+ lastSyncDate: "",
37
+ balance: "299569965",
38
+ subAccounts: [
39
+ {
40
+ // MEX account
41
+ id: `js:2:multiversx:${TEST_ADDRESS}:+4d45582d343535633537`,
42
+ balance: "100",
43
+ spendableBalance: "100",
44
+ type: "TokenAccountRaw",
45
+ tokenId: "multiversx/esdt/4d45582d343535633537",
46
+ parentId: `js:2:multiversx:${TEST_ADDRESS}:`,
47
+ operations: [],
48
+ pendingOperations: [],
49
+ },
50
+ ],
51
+ },
52
+ transactions: [
53
+ {
54
+ name: "recipient and sender must not be the same",
55
+ transaction: fromTransactionRaw({
56
+ family: "multiversx",
57
+ recipient: `${TEST_ADDRESS}`,
58
+ amount: "100000000",
59
+ mode: "send",
60
+ fees: null,
61
+ gasLimit: 50000000,
62
+ }),
63
+ expectedStatus: {
64
+ amount: new BigNumber("100000000"),
65
+ errors: {
66
+ recipient: new InvalidAddressBecauseDestinationIsAlsoSource(),
67
+ },
68
+ warnings: {},
69
+ },
70
+ },
71
+ {
72
+ name: "Not enough balance",
73
+ transaction: fromTransactionRaw({
74
+ family: "multiversx",
75
+ recipient: "erd1frj909pfums4m8aza596595l9pl56crwdj077vs2aqcw6ynl28wsfkw9rd",
76
+ amount: "1000000000000000000000000",
77
+ mode: "send",
78
+ fees: null,
79
+ gasLimit: 50000000,
80
+ }),
81
+ expectedStatus: {
82
+ errors: {
83
+ amount: new NotEnoughBalance(),
84
+ },
85
+ warnings: {},
86
+ },
87
+ },
88
+ {
89
+ name: "Not enough balance (ESDT transfer)",
90
+ transaction: fromTransactionRaw({
91
+ family: "multiversx",
92
+ recipient: "erd1frj909pfums4m8aza596595l9pl56crwdj077vs2aqcw6ynl28wsfkw9rd",
93
+ amount: "1000000000000000000000000",
94
+ mode: "send",
95
+ fees: null,
96
+ gasLimit: 50000000,
97
+ subAccountId: `js:2:multiversx:${TEST_ADDRESS}:+4d45582d343535633537`,
98
+ }),
99
+ expectedStatus: {
100
+ errors: {
101
+ amount: new NotEnoughBalance(),
102
+ },
103
+ warnings: {},
104
+ },
105
+ },
106
+ {
107
+ name: "Send max",
108
+ transaction: fromTransactionRaw({
109
+ family: "multiversx",
110
+ recipient: "erd1frj909pfums4m8aza596595l9pl56crwdj077vs2aqcw6ynl28wsfkw9rd",
111
+ useAllAmount: true,
112
+ amount: "0",
113
+ mode: "send",
114
+ fees: null,
115
+ gasLimit: 50000000,
116
+ }),
117
+ expectedStatus: (account, _, status) => {
118
+ return {
119
+ amount: account.balance.minus(status.estimatedFees),
120
+ warnings: {},
121
+ errors: {},
122
+ };
123
+ },
124
+ },
125
+ ],
126
+ },
127
+ ],
128
+ };
129
+ export const dataset = {
130
+ implementations: ["js"],
131
+ currencies: {
132
+ // multiversx,
133
+ elrond,
134
+ },
135
+ };
136
+ describe("MultiversX bridge", () => {
137
+ test.todo("This is an empty test to make jest command pass. Remove it once there is a real test.");
138
+ });
139
+ //# sourceMappingURL=bridge.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.integration.test.js","sourceRoot":"","sources":["../src/bridge.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AccountBridge } from "@ledgerhq/types-live";
2
+ import { Transaction } from "./types";
3
+ /**
4
+ * Broadcast the signed transaction
5
+ * @param {signature: string, operation: string} signedOperation
6
+ */
7
+ export declare const broadcast: AccountBridge<Transaction>["broadcast"];
8
+ export default broadcast;
9
+ //# sourceMappingURL=broadcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../src/broadcast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,WAAW,CAI7D,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { patchOperationWithHash } from "@ledgerhq/coin-framework/operation";
2
+ import { broadcastTransaction } from "./api";
3
+ /**
4
+ * Broadcast the signed transaction
5
+ * @param {signature: string, operation: string} signedOperation
6
+ */
7
+ export const broadcast = async ({ signedOperation }) => {
8
+ const hash = await broadcastTransaction(signedOperation);
9
+ return patchOperationWithHash(signedOperation.operation, hash);
10
+ };
11
+ export default broadcast;
12
+ //# sourceMappingURL=broadcast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../src/broadcast.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAG7C;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAA4C,KAAK,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE;IAC9F,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAEzD,OAAO,sBAAsB,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Operation } from "@ledgerhq/types-live";
2
+ import { MultiversXAccount, MultiversXProtocolTransaction, Transaction } from "./types";
3
+ export declare const buildOptimisticOperation: (account: MultiversXAccount, transaction: Transaction, unsignedTx: MultiversXProtocolTransaction) => Operation;
4
+ //# sourceMappingURL=buildOptimisticOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildOptimisticOperation.d.ts","sourceRoot":"","sources":["../src/buildOptimisticOperation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAiB,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EACL,iBAAiB,EACjB,6BAA6B,EAE7B,WAAW,EACZ,MAAM,SAAS,CAAC;AAkCjB,eAAO,MAAM,wBAAwB,YAC1B,iBAAiB,eACb,WAAW,cACZ,6BAA6B,KACxC,SAsEF,CAAC"}
@@ -0,0 +1,93 @@
1
+ import BigNumber from "bignumber.js";
2
+ import { FeeNotLoaded } from "@ledgerhq/errors";
3
+ import { Address } from "@multiversx/sdk-core";
4
+ import { BinaryUtils } from "./utils/binary.utils";
5
+ import { encodeOperationId } from "@ledgerhq/coin-framework/operation";
6
+ function getOptimisticOperationType(transactionMode) {
7
+ switch (transactionMode) {
8
+ case "delegate":
9
+ return "DELEGATE";
10
+ case "unDelegate":
11
+ return "UNDELEGATE";
12
+ case "withdraw":
13
+ return "WITHDRAW_UNBONDED";
14
+ case "claimRewards":
15
+ return "REWARD";
16
+ case "reDelegateRewards":
17
+ return "DELEGATE";
18
+ default:
19
+ return "OUT";
20
+ }
21
+ }
22
+ function getOptimisticOperationDelegationAmount(transaction) {
23
+ let dataDecoded;
24
+ switch (transaction.mode) {
25
+ case "delegate":
26
+ return transaction.amount;
27
+ case "unDelegate":
28
+ dataDecoded = BinaryUtils.base64Decode(transaction.data ?? "");
29
+ return new BigNumber(`0x${dataDecoded.split("@")[1]}`);
30
+ default:
31
+ return new BigNumber(0);
32
+ }
33
+ }
34
+ export const buildOptimisticOperation = (account, transaction, unsignedTx) => {
35
+ const senders = [account.freshAddress];
36
+ const recipients = [transaction.recipient];
37
+ const { subAccountId, fees } = transaction;
38
+ if (!fees) {
39
+ throw new FeeNotLoaded();
40
+ }
41
+ const type = getOptimisticOperationType(transaction.mode);
42
+ const tokenAccount = (subAccountId &&
43
+ account.subAccounts &&
44
+ account.subAccounts.find(ta => ta.id === subAccountId)) ||
45
+ null;
46
+ const value = tokenAccount || (transaction.mode !== "send" && transaction.mode != "delegate")
47
+ ? fees
48
+ : transaction.amount.plus(transaction.fees || new BigNumber(0));
49
+ const delegationAmount = getOptimisticOperationDelegationAmount(transaction);
50
+ const operation = {
51
+ id: encodeOperationId(account.id, "", type),
52
+ hash: "",
53
+ type,
54
+ value,
55
+ fee: fees,
56
+ blockHash: null,
57
+ blockHeight: null,
58
+ senders,
59
+ recipients,
60
+ accountId: account.id,
61
+ transactionSequenceNumber: unsignedTx.nonce,
62
+ date: new Date(),
63
+ extra: {
64
+ amount: delegationAmount,
65
+ },
66
+ };
67
+ const contract = new Address(transaction.recipient).isContractAddress()
68
+ ? transaction.recipient
69
+ : undefined;
70
+ if (contract) {
71
+ operation.contract = contract;
72
+ }
73
+ if (tokenAccount && subAccountId) {
74
+ operation.subOperations = [
75
+ {
76
+ id: encodeOperationId(subAccountId, "", "OUT"),
77
+ hash: "",
78
+ type: "OUT",
79
+ value: transaction.amount,
80
+ fee: new BigNumber(0),
81
+ blockHash: null,
82
+ blockHeight: null,
83
+ senders,
84
+ recipients,
85
+ accountId: subAccountId,
86
+ date: new Date(),
87
+ extra: {},
88
+ },
89
+ ];
90
+ }
91
+ return operation;
92
+ };
93
+ //# sourceMappingURL=buildOptimisticOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildOptimisticOperation.js","sourceRoot":"","sources":["../src/buildOptimisticOperation.ts"],"names":[],"mappings":"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"}