@ledgerhq/coin-sui 0.16.0 → 0.17.0-nightly.1

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 (329) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.unimportedrc.json +2 -1
  3. package/CHANGELOG.md +22 -0
  4. package/lib/api/index.d.ts.map +1 -1
  5. package/lib/api/index.js +1 -0
  6. package/lib/api/index.js.map +1 -1
  7. package/lib/logic/estimateFees.d.ts +4 -1
  8. package/lib/logic/estimateFees.d.ts.map +1 -1
  9. package/lib/logic/estimateFees.js +2 -1
  10. package/lib/logic/estimateFees.js.map +1 -1
  11. package/lib/logic/getValidators.d.ts +3 -0
  12. package/lib/logic/getValidators.d.ts.map +1 -0
  13. package/lib/logic/getValidators.js +24 -0
  14. package/lib/logic/getValidators.js.map +1 -0
  15. package/lib/logic/index.d.ts +1 -0
  16. package/lib/logic/index.d.ts.map +1 -1
  17. package/lib/logic/index.js +3 -1
  18. package/lib/logic/index.js.map +1 -1
  19. package/lib/network/index.d.ts +3 -2
  20. package/lib/network/index.d.ts.map +1 -1
  21. package/lib/network/index.js +3 -1
  22. package/lib/network/index.js.map +1 -1
  23. package/lib/network/sdk.d.ts +4 -1
  24. package/lib/network/sdk.d.ts.map +1 -1
  25. package/lib/network/sdk.js +54 -23
  26. package/lib/network/sdk.js.map +1 -1
  27. package/lib/{bridge/bridge.integration.test.d.ts → test/bridge.dataset.d.ts} +1 -1
  28. package/lib/test/bridge.dataset.d.ts.map +1 -0
  29. package/lib/{bridge/bridge.integration.test.js → test/bridge.dataset.js} +2 -2
  30. package/lib/test/bridge.dataset.js.map +1 -0
  31. package/lib-es/api/index.d.ts.map +1 -1
  32. package/lib-es/api/index.js +2 -1
  33. package/lib-es/api/index.js.map +1 -1
  34. package/lib-es/logic/estimateFees.d.ts +4 -1
  35. package/lib-es/logic/estimateFees.d.ts.map +1 -1
  36. package/lib-es/logic/estimateFees.js +2 -1
  37. package/lib-es/logic/estimateFees.js.map +1 -1
  38. package/lib-es/logic/getValidators.d.ts +3 -0
  39. package/lib-es/logic/getValidators.d.ts.map +1 -0
  40. package/lib-es/logic/getValidators.js +20 -0
  41. package/lib-es/logic/getValidators.js.map +1 -0
  42. package/lib-es/logic/index.d.ts +1 -0
  43. package/lib-es/logic/index.d.ts.map +1 -1
  44. package/lib-es/logic/index.js +1 -0
  45. package/lib-es/logic/index.js.map +1 -1
  46. package/lib-es/network/index.d.ts +3 -2
  47. package/lib-es/network/index.d.ts.map +1 -1
  48. package/lib-es/network/index.js +3 -2
  49. package/lib-es/network/index.js.map +1 -1
  50. package/lib-es/network/sdk.d.ts +4 -1
  51. package/lib-es/network/sdk.d.ts.map +1 -1
  52. package/lib-es/network/sdk.js +52 -22
  53. package/lib-es/network/sdk.js.map +1 -1
  54. package/lib-es/{bridge/bridge.integration.test.d.ts → test/bridge.dataset.d.ts} +1 -1
  55. package/lib-es/test/bridge.dataset.d.ts.map +1 -0
  56. package/lib-es/{bridge/bridge.integration.test.js → test/bridge.dataset.js} +2 -2
  57. package/lib-es/test/bridge.dataset.js.map +1 -0
  58. package/package.json +5 -9
  59. package/src/api/index.integration.test.ts +80 -7
  60. package/src/api/index.ts +2 -0
  61. package/src/logic/estimateFees.test.ts +22 -16
  62. package/src/logic/estimateFees.ts +6 -1
  63. package/src/logic/getValidators.test.ts +92 -0
  64. package/src/logic/getValidators.ts +23 -0
  65. package/src/logic/index.ts +1 -0
  66. package/src/network/index.ts +3 -0
  67. package/src/network/sdk.test.ts +134 -60
  68. package/src/network/sdk.ts +58 -23
  69. package/src/{bridge/bridge.integration.test.ts → test/bridge.dataset.ts} +1 -1
  70. package/lib/api/index.integration.test.d.ts +0 -2
  71. package/lib/api/index.integration.test.d.ts.map +0 -1
  72. package/lib/api/index.integration.test.js +0 -173
  73. package/lib/api/index.integration.test.js.map +0 -1
  74. package/lib/api/index.test.d.ts +0 -2
  75. package/lib/api/index.test.d.ts.map +0 -1
  76. package/lib/api/index.test.js +0 -173
  77. package/lib/api/index.test.js.map +0 -1
  78. package/lib/bridge/bridge.integration.test.d.ts.map +0 -1
  79. package/lib/bridge/bridge.integration.test.js.map +0 -1
  80. package/lib/bridge/broadcast.test.d.ts +0 -2
  81. package/lib/bridge/broadcast.test.d.ts.map +0 -1
  82. package/lib/bridge/broadcast.test.js +0 -48
  83. package/lib/bridge/broadcast.test.js.map +0 -1
  84. package/lib/bridge/buildOptimisticOperation.test.d.ts +0 -2
  85. package/lib/bridge/buildOptimisticOperation.test.d.ts.map +0 -1
  86. package/lib/bridge/buildOptimisticOperation.test.js +0 -52
  87. package/lib/bridge/buildOptimisticOperation.test.js.map +0 -1
  88. package/lib/bridge/buildTransaction.integration.test.d.ts +0 -2
  89. package/lib/bridge/buildTransaction.integration.test.d.ts.map +0 -1
  90. package/lib/bridge/buildTransaction.integration.test.js +0 -72
  91. package/lib/bridge/buildTransaction.integration.test.js.map +0 -1
  92. package/lib/bridge/buildTransaction.test.d.ts +0 -2
  93. package/lib/bridge/buildTransaction.test.d.ts.map +0 -1
  94. package/lib/bridge/buildTransaction.test.js +0 -231
  95. package/lib/bridge/buildTransaction.test.js.map +0 -1
  96. package/lib/bridge/estimateMaxSpendable.test.d.ts +0 -2
  97. package/lib/bridge/estimateMaxSpendable.test.d.ts.map +0 -1
  98. package/lib/bridge/estimateMaxSpendable.test.js +0 -52
  99. package/lib/bridge/estimateMaxSpendable.test.js.map +0 -1
  100. package/lib/bridge/formatters.test.d.ts +0 -2
  101. package/lib/bridge/formatters.test.d.ts.map +0 -1
  102. package/lib/bridge/formatters.test.js +0 -18
  103. package/lib/bridge/formatters.test.js.map +0 -1
  104. package/lib/bridge/getFeesForTransaction.test.d.ts +0 -2
  105. package/lib/bridge/getFeesForTransaction.test.d.ts.map +0 -1
  106. package/lib/bridge/getFeesForTransaction.test.js +0 -35
  107. package/lib/bridge/getFeesForTransaction.test.js.map +0 -1
  108. package/lib/bridge/getTransactionStatus.test.d.ts +0 -2
  109. package/lib/bridge/getTransactionStatus.test.d.ts.map +0 -1
  110. package/lib/bridge/getTransactionStatus.test.js +0 -69
  111. package/lib/bridge/getTransactionStatus.test.js.map +0 -1
  112. package/lib/bridge/index.test.d.ts +0 -2
  113. package/lib/bridge/index.test.d.ts.map +0 -1
  114. package/lib/bridge/index.test.js +0 -265
  115. package/lib/bridge/index.test.js.map +0 -1
  116. package/lib/bridge/preload.test.d.ts +0 -2
  117. package/lib/bridge/preload.test.d.ts.map +0 -1
  118. package/lib/bridge/preload.test.js +0 -52
  119. package/lib/bridge/preload.test.js.map +0 -1
  120. package/lib/bridge/prepareTransaction.test.d.ts +0 -2
  121. package/lib/bridge/prepareTransaction.test.d.ts.map +0 -1
  122. package/lib/bridge/prepareTransaction.test.js +0 -97
  123. package/lib/bridge/prepareTransaction.test.js.map +0 -1
  124. package/lib/bridge/serialization.test.d.ts +0 -2
  125. package/lib/bridge/serialization.test.d.ts.map +0 -1
  126. package/lib/bridge/serialization.test.js +0 -131
  127. package/lib/bridge/serialization.test.js.map +0 -1
  128. package/lib/bridge/signOperation.integration.test.d.ts +0 -2
  129. package/lib/bridge/signOperation.integration.test.d.ts.map +0 -1
  130. package/lib/bridge/signOperation.integration.test.js +0 -80
  131. package/lib/bridge/signOperation.integration.test.js.map +0 -1
  132. package/lib/bridge/signOperation.test.d.ts +0 -2
  133. package/lib/bridge/signOperation.test.d.ts.map +0 -1
  134. package/lib/bridge/signOperation.test.js +0 -445
  135. package/lib/bridge/signOperation.test.js.map +0 -1
  136. package/lib/bridge/synchronisation.test.d.ts +0 -2
  137. package/lib/bridge/synchronisation.test.d.ts.map +0 -1
  138. package/lib/bridge/synchronisation.test.js +0 -505
  139. package/lib/bridge/synchronisation.test.js.map +0 -1
  140. package/lib/bridge/transaction.test.d.ts +0 -2
  141. package/lib/bridge/transaction.test.d.ts.map +0 -1
  142. package/lib/bridge/transaction.test.js +0 -68
  143. package/lib/bridge/transaction.test.js.map +0 -1
  144. package/lib/logic/broadcast.test.d.ts +0 -2
  145. package/lib/logic/broadcast.test.d.ts.map +0 -1
  146. package/lib/logic/broadcast.test.js +0 -62
  147. package/lib/logic/broadcast.test.js.map +0 -1
  148. package/lib/logic/combine.test.d.ts +0 -2
  149. package/lib/logic/combine.test.d.ts.map +0 -1
  150. package/lib/logic/combine.test.js +0 -37
  151. package/lib/logic/combine.test.js.map +0 -1
  152. package/lib/logic/craftTransaction.integration.test.d.ts +0 -2
  153. package/lib/logic/craftTransaction.integration.test.d.ts.map +0 -1
  154. package/lib/logic/craftTransaction.integration.test.js +0 -98
  155. package/lib/logic/craftTransaction.integration.test.js.map +0 -1
  156. package/lib/logic/craftTransaction.test.d.ts +0 -2
  157. package/lib/logic/craftTransaction.test.d.ts.map +0 -1
  158. package/lib/logic/craftTransaction.test.js +0 -127
  159. package/lib/logic/craftTransaction.test.js.map +0 -1
  160. package/lib/logic/estimateFees.integration.test.d.ts +0 -2
  161. package/lib/logic/estimateFees.integration.test.d.ts.map +0 -1
  162. package/lib/logic/estimateFees.integration.test.js +0 -82
  163. package/lib/logic/estimateFees.integration.test.js.map +0 -1
  164. package/lib/logic/estimateFees.test.d.ts +0 -2
  165. package/lib/logic/estimateFees.test.d.ts.map +0 -1
  166. package/lib/logic/estimateFees.test.js +0 -70
  167. package/lib/logic/estimateFees.test.js.map +0 -1
  168. package/lib/logic/getBalance.integration.test.d.ts +0 -2
  169. package/lib/logic/getBalance.integration.test.d.ts.map +0 -1
  170. package/lib/logic/getBalance.integration.test.js +0 -56
  171. package/lib/logic/getBalance.integration.test.js.map +0 -1
  172. package/lib/logic/getBalance.test.d.ts +0 -2
  173. package/lib/logic/getBalance.test.d.ts.map +0 -1
  174. package/lib/logic/getBalance.test.js +0 -64
  175. package/lib/logic/getBalance.test.js.map +0 -1
  176. package/lib/logic/lastBlock.test.d.ts +0 -2
  177. package/lib/logic/lastBlock.test.d.ts.map +0 -1
  178. package/lib/logic/lastBlock.test.js +0 -27
  179. package/lib/logic/lastBlock.test.js.map +0 -1
  180. package/lib/logic/listOperations.test.d.ts +0 -2
  181. package/lib/logic/listOperations.test.d.ts.map +0 -1
  182. package/lib/logic/listOperations.test.js +0 -79
  183. package/lib/logic/listOperations.test.js.map +0 -1
  184. package/lib/network/sdk.integration.test.d.ts +0 -2
  185. package/lib/network/sdk.integration.test.d.ts.map +0 -1
  186. package/lib/network/sdk.integration.test.js +0 -215
  187. package/lib/network/sdk.integration.test.js.map +0 -1
  188. package/lib/network/sdk.test.d.ts +0 -2
  189. package/lib/network/sdk.test.d.ts.map +0 -1
  190. package/lib/network/sdk.test.js +0 -1784
  191. package/lib/network/sdk.test.js.map +0 -1
  192. package/lib/signer/getAddress.test.d.ts +0 -2
  193. package/lib/signer/getAddress.test.d.ts.map +0 -1
  194. package/lib/signer/getAddress.test.js +0 -106
  195. package/lib/signer/getAddress.test.js.map +0 -1
  196. package/lib/test/config.test.d.ts +0 -2
  197. package/lib/test/config.test.d.ts.map +0 -1
  198. package/lib/test/config.test.js +0 -44
  199. package/lib/test/config.test.js.map +0 -1
  200. package/lib-es/api/index.integration.test.d.ts +0 -2
  201. package/lib-es/api/index.integration.test.d.ts.map +0 -1
  202. package/lib-es/api/index.integration.test.js +0 -171
  203. package/lib-es/api/index.integration.test.js.map +0 -1
  204. package/lib-es/api/index.test.d.ts +0 -2
  205. package/lib-es/api/index.test.d.ts.map +0 -1
  206. package/lib-es/api/index.test.js +0 -148
  207. package/lib-es/api/index.test.js.map +0 -1
  208. package/lib-es/bridge/bridge.integration.test.d.ts.map +0 -1
  209. package/lib-es/bridge/bridge.integration.test.js.map +0 -1
  210. package/lib-es/bridge/broadcast.test.d.ts +0 -2
  211. package/lib-es/bridge/broadcast.test.d.ts.map +0 -1
  212. package/lib-es/bridge/broadcast.test.js +0 -46
  213. package/lib-es/bridge/broadcast.test.js.map +0 -1
  214. package/lib-es/bridge/buildOptimisticOperation.test.d.ts +0 -2
  215. package/lib-es/bridge/buildOptimisticOperation.test.d.ts.map +0 -1
  216. package/lib-es/bridge/buildOptimisticOperation.test.js +0 -47
  217. package/lib-es/bridge/buildOptimisticOperation.test.js.map +0 -1
  218. package/lib-es/bridge/buildTransaction.integration.test.d.ts +0 -2
  219. package/lib-es/bridge/buildTransaction.integration.test.d.ts.map +0 -1
  220. package/lib-es/bridge/buildTransaction.integration.test.js +0 -67
  221. package/lib-es/bridge/buildTransaction.integration.test.js.map +0 -1
  222. package/lib-es/bridge/buildTransaction.test.d.ts +0 -2
  223. package/lib-es/bridge/buildTransaction.test.d.ts.map +0 -1
  224. package/lib-es/bridge/buildTransaction.test.js +0 -229
  225. package/lib-es/bridge/buildTransaction.test.js.map +0 -1
  226. package/lib-es/bridge/estimateMaxSpendable.test.d.ts +0 -2
  227. package/lib-es/bridge/estimateMaxSpendable.test.d.ts.map +0 -1
  228. package/lib-es/bridge/estimateMaxSpendable.test.js +0 -50
  229. package/lib-es/bridge/estimateMaxSpendable.test.js.map +0 -1
  230. package/lib-es/bridge/formatters.test.d.ts +0 -2
  231. package/lib-es/bridge/formatters.test.d.ts.map +0 -1
  232. package/lib-es/bridge/formatters.test.js +0 -16
  233. package/lib-es/bridge/formatters.test.js.map +0 -1
  234. package/lib-es/bridge/getFeesForTransaction.test.d.ts +0 -2
  235. package/lib-es/bridge/getFeesForTransaction.test.d.ts.map +0 -1
  236. package/lib-es/bridge/getFeesForTransaction.test.js +0 -30
  237. package/lib-es/bridge/getFeesForTransaction.test.js.map +0 -1
  238. package/lib-es/bridge/getTransactionStatus.test.d.ts +0 -2
  239. package/lib-es/bridge/getTransactionStatus.test.d.ts.map +0 -1
  240. package/lib-es/bridge/getTransactionStatus.test.js +0 -64
  241. package/lib-es/bridge/getTransactionStatus.test.js.map +0 -1
  242. package/lib-es/bridge/index.test.d.ts +0 -2
  243. package/lib-es/bridge/index.test.d.ts.map +0 -1
  244. package/lib-es/bridge/index.test.js +0 -260
  245. package/lib-es/bridge/index.test.js.map +0 -1
  246. package/lib-es/bridge/preload.test.d.ts +0 -2
  247. package/lib-es/bridge/preload.test.d.ts.map +0 -1
  248. package/lib-es/bridge/preload.test.js +0 -50
  249. package/lib-es/bridge/preload.test.js.map +0 -1
  250. package/lib-es/bridge/prepareTransaction.test.d.ts +0 -2
  251. package/lib-es/bridge/prepareTransaction.test.d.ts.map +0 -1
  252. package/lib-es/bridge/prepareTransaction.test.js +0 -92
  253. package/lib-es/bridge/prepareTransaction.test.js.map +0 -1
  254. package/lib-es/bridge/serialization.test.d.ts +0 -2
  255. package/lib-es/bridge/serialization.test.d.ts.map +0 -1
  256. package/lib-es/bridge/serialization.test.js +0 -126
  257. package/lib-es/bridge/serialization.test.js.map +0 -1
  258. package/lib-es/bridge/signOperation.integration.test.d.ts +0 -2
  259. package/lib-es/bridge/signOperation.integration.test.d.ts.map +0 -1
  260. package/lib-es/bridge/signOperation.integration.test.js +0 -75
  261. package/lib-es/bridge/signOperation.integration.test.js.map +0 -1
  262. package/lib-es/bridge/signOperation.test.d.ts +0 -2
  263. package/lib-es/bridge/signOperation.test.d.ts.map +0 -1
  264. package/lib-es/bridge/signOperation.test.js +0 -440
  265. package/lib-es/bridge/signOperation.test.js.map +0 -1
  266. package/lib-es/bridge/synchronisation.test.d.ts +0 -2
  267. package/lib-es/bridge/synchronisation.test.d.ts.map +0 -1
  268. package/lib-es/bridge/synchronisation.test.js +0 -477
  269. package/lib-es/bridge/synchronisation.test.js.map +0 -1
  270. package/lib-es/bridge/transaction.test.d.ts +0 -2
  271. package/lib-es/bridge/transaction.test.d.ts.map +0 -1
  272. package/lib-es/bridge/transaction.test.js +0 -66
  273. package/lib-es/bridge/transaction.test.js.map +0 -1
  274. package/lib-es/logic/broadcast.test.d.ts +0 -2
  275. package/lib-es/logic/broadcast.test.d.ts.map +0 -1
  276. package/lib-es/logic/broadcast.test.js +0 -57
  277. package/lib-es/logic/broadcast.test.js.map +0 -1
  278. package/lib-es/logic/combine.test.d.ts +0 -2
  279. package/lib-es/logic/combine.test.d.ts.map +0 -1
  280. package/lib-es/logic/combine.test.js +0 -35
  281. package/lib-es/logic/combine.test.js.map +0 -1
  282. package/lib-es/logic/craftTransaction.integration.test.d.ts +0 -2
  283. package/lib-es/logic/craftTransaction.integration.test.d.ts.map +0 -1
  284. package/lib-es/logic/craftTransaction.integration.test.js +0 -93
  285. package/lib-es/logic/craftTransaction.integration.test.js.map +0 -1
  286. package/lib-es/logic/craftTransaction.test.d.ts +0 -2
  287. package/lib-es/logic/craftTransaction.test.d.ts.map +0 -1
  288. package/lib-es/logic/craftTransaction.test.js +0 -122
  289. package/lib-es/logic/craftTransaction.test.js.map +0 -1
  290. package/lib-es/logic/estimateFees.integration.test.d.ts +0 -2
  291. package/lib-es/logic/estimateFees.integration.test.d.ts.map +0 -1
  292. package/lib-es/logic/estimateFees.integration.test.js +0 -77
  293. package/lib-es/logic/estimateFees.integration.test.js.map +0 -1
  294. package/lib-es/logic/estimateFees.test.d.ts +0 -2
  295. package/lib-es/logic/estimateFees.test.d.ts.map +0 -1
  296. package/lib-es/logic/estimateFees.test.js +0 -65
  297. package/lib-es/logic/estimateFees.test.js.map +0 -1
  298. package/lib-es/logic/getBalance.integration.test.d.ts +0 -2
  299. package/lib-es/logic/getBalance.integration.test.d.ts.map +0 -1
  300. package/lib-es/logic/getBalance.integration.test.js +0 -51
  301. package/lib-es/logic/getBalance.integration.test.js.map +0 -1
  302. package/lib-es/logic/getBalance.test.d.ts +0 -2
  303. package/lib-es/logic/getBalance.test.d.ts.map +0 -1
  304. package/lib-es/logic/getBalance.test.js +0 -62
  305. package/lib-es/logic/getBalance.test.js.map +0 -1
  306. package/lib-es/logic/lastBlock.test.d.ts +0 -2
  307. package/lib-es/logic/lastBlock.test.d.ts.map +0 -1
  308. package/lib-es/logic/lastBlock.test.js +0 -25
  309. package/lib-es/logic/lastBlock.test.js.map +0 -1
  310. package/lib-es/logic/listOperations.test.d.ts +0 -2
  311. package/lib-es/logic/listOperations.test.d.ts.map +0 -1
  312. package/lib-es/logic/listOperations.test.js +0 -77
  313. package/lib-es/logic/listOperations.test.js.map +0 -1
  314. package/lib-es/network/sdk.integration.test.d.ts +0 -2
  315. package/lib-es/network/sdk.integration.test.d.ts.map +0 -1
  316. package/lib-es/network/sdk.integration.test.js +0 -210
  317. package/lib-es/network/sdk.integration.test.js.map +0 -1
  318. package/lib-es/network/sdk.test.d.ts +0 -2
  319. package/lib-es/network/sdk.test.d.ts.map +0 -1
  320. package/lib-es/network/sdk.test.js +0 -1756
  321. package/lib-es/network/sdk.test.js.map +0 -1
  322. package/lib-es/signer/getAddress.test.d.ts +0 -2
  323. package/lib-es/signer/getAddress.test.d.ts.map +0 -1
  324. package/lib-es/signer/getAddress.test.js +0 -101
  325. package/lib-es/signer/getAddress.test.js.map +0 -1
  326. package/lib-es/test/config.test.d.ts +0 -2
  327. package/lib-es/test/config.test.d.ts.map +0 -1
  328. package/lib-es/test/config.test.js +0 -39
  329. package/lib-es/test/config.test.js.map +0 -1
@@ -1,477 +0,0 @@
1
- import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets/currencies";
2
- import BigNumber from "bignumber.js";
3
- import { faker } from "@faker-js/faker";
4
- import { createFixtureAccount, createFixtureOperation } from "../types/bridge.fixture";
5
- import { DEFAULT_COIN_TYPE } from "../network/sdk";
6
- import { getAccountShape } from "./synchronisation";
7
- import coinConfig from "../config";
8
- import { getFullnodeUrl } from "@mysten/sui/client";
9
- import * as networkModule from "../network";
10
- // Mock getTokenById and listTokensForCryptoCurrency
11
- jest.mock("@ledgerhq/cryptoassets/tokens", () => ({
12
- getTokenById: (coinType) => ({
13
- id: coinType,
14
- ticker: "TEST",
15
- name: "Test Token",
16
- countervalueTicker: "TEST",
17
- standard: "SUI-20",
18
- tokenType: "sui",
19
- parentCurrency: { id: "sui" },
20
- contract: "0x123",
21
- }),
22
- listTokensForCryptoCurrency: () => [{ id: "0x123::sui::TEST" }],
23
- }));
24
- jest.mock("../network", () => {
25
- const mockGetAccountBalances = jest.fn();
26
- const mockGetOperations = jest.fn();
27
- const mockGetStakesRaw = jest.fn();
28
- return {
29
- getAccountBalances: mockGetAccountBalances,
30
- getOperations: mockGetOperations,
31
- getStakesRaw: mockGetStakesRaw,
32
- createTransaction: jest.fn(),
33
- };
34
- });
35
- describe("getAccountShape", () => {
36
- const mockGetAccountBalances = networkModule.getAccountBalances;
37
- const mockGetOperations = networkModule.getOperations;
38
- const mockGetStakesRaw = networkModule.getStakesRaw;
39
- beforeEach(() => {
40
- mockGetAccountBalances.mockClear();
41
- mockGetOperations.mockClear();
42
- mockGetStakesRaw.mockClear();
43
- });
44
- beforeAll(() => {
45
- coinConfig.setCoinConfig(() => ({
46
- status: { type: "active" },
47
- node: { url: getFullnodeUrl("mainnet") },
48
- }));
49
- });
50
- it("calls getAccountBalances and getOperations", async () => {
51
- // GIVEN
52
- const initialAccount = undefined;
53
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
54
- mockGetOperations.mockResolvedValue([]);
55
- mockGetStakesRaw.mockResolvedValue([]);
56
- // WHEN
57
- await getAccountShape({
58
- index: 0,
59
- derivationPath: "44'/784'/0'/0'/0'",
60
- currency: getCryptoCurrencyById("sui"),
61
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
62
- initialAccount,
63
- derivationMode: "sui",
64
- }, { blacklistedTokenIds: [], paginationConfig: {} });
65
- // THEN
66
- expect(mockGetAccountBalances).toHaveBeenCalledTimes(1);
67
- expect(mockGetOperations).toHaveBeenCalledTimes(1);
68
- });
69
- it("returns an AccountShapeInfo based on getAccountBalances API", async () => {
70
- // GIVEN
71
- const initialAccount = undefined;
72
- const accountBalance = createAccountBalance();
73
- mockGetAccountBalances.mockResolvedValue([accountBalance]);
74
- mockGetOperations.mockResolvedValue([]);
75
- mockGetStakesRaw.mockResolvedValue([]);
76
- // WHEN
77
- const shape = await getAccountShape({
78
- index: 0,
79
- derivationPath: "44'/784'/0'/0'/0'",
80
- currency: getCryptoCurrencyById("sui"),
81
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
82
- initialAccount,
83
- derivationMode: "sui",
84
- }, { blacklistedTokenIds: [], paginationConfig: {} });
85
- // THEN
86
- expect(shape).toEqual({
87
- id: "js:2:sui:0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0:sui",
88
- balance: accountBalance.balance,
89
- spendableBalance: accountBalance.balance,
90
- blockHeight: 5,
91
- operations: [],
92
- operationsCount: 0,
93
- suiResources: {
94
- stakes: [],
95
- },
96
- subAccounts: [],
97
- syncHash: undefined,
98
- });
99
- });
100
- it("returns an AccountShapeInfo with operations from initialAccount", async () => {
101
- // GIVEN
102
- const extra = { coinType: DEFAULT_COIN_TYPE };
103
- const initialOperations = [createFixtureOperation({ id: faker.string.uuid(), extra })];
104
- const initialAccount = createFixtureAccount({ operations: initialOperations });
105
- const accountBalance = createAccountBalance();
106
- mockGetAccountBalances.mockResolvedValue([accountBalance]);
107
- mockGetOperations.mockResolvedValue([]);
108
- mockGetStakesRaw.mockResolvedValue([]);
109
- // WHEN
110
- const shape = await getAccountShape({
111
- index: 0,
112
- derivationPath: "44'/784'/0'/0'/0'",
113
- currency: getCryptoCurrencyById("sui"),
114
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
115
- initialAccount,
116
- derivationMode: "sui",
117
- }, { blacklistedTokenIds: [], paginationConfig: {} });
118
- // THEN
119
- expect(shape.operationsCount).toEqual(1);
120
- expect(shape.operations).toEqual(expect.arrayContaining(initialOperations));
121
- });
122
- it("returns an AccountShapeInfo with operations from getOperations API", async () => {
123
- // GIVEN
124
- const initialAccount = createFixtureAccount();
125
- const accountBalance = createAccountBalance();
126
- mockGetAccountBalances.mockResolvedValue([accountBalance]);
127
- const extra = { coinType: DEFAULT_COIN_TYPE };
128
- const apiOperations = [
129
- createFixtureOperation({ id: faker.string.uuid(), extra }),
130
- createFixtureOperation({ id: faker.string.uuid(), extra }),
131
- ];
132
- mockGetOperations.mockResolvedValue(apiOperations);
133
- mockGetStakesRaw.mockResolvedValue([]);
134
- // WHEN
135
- const shape = await getAccountShape({
136
- index: 0,
137
- derivationPath: "44'/784'/0'/0'/0'",
138
- currency: getCryptoCurrencyById("sui"),
139
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
140
- initialAccount,
141
- derivationMode: "sui",
142
- }, { blacklistedTokenIds: [], paginationConfig: {} });
143
- // THEN
144
- expect(shape.operationsCount).toEqual(initialAccount.operations.length + apiOperations.length);
145
- expect(shape.operations).toEqual(expect.arrayContaining(apiOperations));
146
- });
147
- it("handles multiple token balances and creates subAccounts", async () => {
148
- // GIVEN
149
- const initialAccount = createFixtureAccount();
150
- const mainBalance = createAccountBalance({ coinType: DEFAULT_COIN_TYPE });
151
- const tokenBalance = createAccountBalance({ coinType: "0x123::sui::TEST" });
152
- mockGetAccountBalances.mockResolvedValue([mainBalance, tokenBalance]);
153
- mockGetOperations.mockResolvedValue([]);
154
- mockGetStakesRaw.mockResolvedValue([]);
155
- // WHEN
156
- const shape = await getAccountShape({
157
- index: 0,
158
- derivationPath: "44'/784'/0'/0'/0'",
159
- currency: getCryptoCurrencyById("sui"),
160
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
161
- initialAccount,
162
- derivationMode: "sui",
163
- }, { blacklistedTokenIds: [], paginationConfig: {} });
164
- // THEN
165
- expect(shape.balance).toEqual(mainBalance.balance);
166
- expect(shape.subAccounts).toBeDefined();
167
- expect(Array.isArray(shape.subAccounts)).toBe(true);
168
- });
169
- describe("stakes functionality", () => {
170
- it("calls getStakesRaw with the correct address", async () => {
171
- // GIVEN
172
- const address = "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0";
173
- const initialAccount = undefined;
174
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
175
- mockGetOperations.mockResolvedValue([]);
176
- mockGetStakesRaw.mockResolvedValue([]);
177
- // WHEN
178
- await getAccountShape({
179
- index: 0,
180
- derivationPath: "44'/784'/0'/0'/0'",
181
- currency: getCryptoCurrencyById("sui"),
182
- address,
183
- initialAccount,
184
- derivationMode: "sui",
185
- }, { blacklistedTokenIds: [], paginationConfig: {} });
186
- // THEN
187
- expect(mockGetStakesRaw).toHaveBeenCalledTimes(1);
188
- expect(mockGetStakesRaw).toHaveBeenCalledWith(address);
189
- });
190
- it("includes empty stakes in suiResources when no stakes are returned", async () => {
191
- // GIVEN
192
- const initialAccount = undefined;
193
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
194
- mockGetOperations.mockResolvedValue([]);
195
- mockGetStakesRaw.mockResolvedValue([]);
196
- // WHEN
197
- const shape = await getAccountShape({
198
- index: 0,
199
- derivationPath: "44'/784'/0'/0'/0'",
200
- currency: getCryptoCurrencyById("sui"),
201
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
202
- initialAccount,
203
- derivationMode: "sui",
204
- }, { blacklistedTokenIds: [], paginationConfig: {} });
205
- // THEN
206
- expect(shape.suiResources).toBeDefined();
207
- expect(shape.suiResources?.stakes).toEqual([]);
208
- });
209
- it("includes stakes in suiResources when stakes are returned", async () => {
210
- // GIVEN
211
- const initialAccount = undefined;
212
- const mockStakes = [
213
- {
214
- validatorAddress: "0xvalidator1",
215
- stakes: [
216
- {
217
- stakedSuiId: "0xstake1",
218
- status: "Active",
219
- principal: "1000000000",
220
- stakeActiveEpoch: "100",
221
- stakeRequestEpoch: "95",
222
- },
223
- ],
224
- },
225
- {
226
- validatorAddress: "0xvalidator2",
227
- stakes: [
228
- {
229
- stakedSuiId: "0xstake2",
230
- status: "Pending",
231
- principal: "2000000000",
232
- stakeActiveEpoch: "0",
233
- stakeRequestEpoch: "100",
234
- },
235
- ],
236
- },
237
- ];
238
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
239
- mockGetOperations.mockResolvedValue([]);
240
- mockGetStakesRaw.mockResolvedValue(mockStakes);
241
- // WHEN
242
- const shape = await getAccountShape({
243
- index: 0,
244
- derivationPath: "44'/784'/0'/0'/0'",
245
- currency: getCryptoCurrencyById("sui"),
246
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
247
- initialAccount,
248
- derivationMode: "sui",
249
- }, { blacklistedTokenIds: [], paginationConfig: {} });
250
- // THEN
251
- expect(shape.suiResources).toBeDefined();
252
- expect(shape.suiResources?.stakes).toEqual(mockStakes);
253
- });
254
- it("handles multiple stakes per validator", async () => {
255
- // GIVEN
256
- const initialAccount = undefined;
257
- const mockStakes = [
258
- {
259
- validatorAddress: "0xvalidator1",
260
- stakes: [
261
- {
262
- stakedSuiId: "0xstake1",
263
- status: "Active",
264
- principal: "1000000000",
265
- stakeActiveEpoch: "100",
266
- stakeRequestEpoch: "95",
267
- },
268
- {
269
- stakedSuiId: "0xstake2",
270
- status: "Active",
271
- principal: "1500000000",
272
- stakeActiveEpoch: "100",
273
- stakeRequestEpoch: "95",
274
- },
275
- ],
276
- },
277
- ];
278
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
279
- mockGetOperations.mockResolvedValue([]);
280
- mockGetStakesRaw.mockResolvedValue(mockStakes);
281
- // WHEN
282
- const shape = await getAccountShape({
283
- index: 0,
284
- derivationPath: "44'/784'/0'/0'/0'",
285
- currency: getCryptoCurrencyById("sui"),
286
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
287
- initialAccount,
288
- derivationMode: "sui",
289
- }, { blacklistedTokenIds: [], paginationConfig: {} });
290
- // THEN
291
- expect(shape.suiResources?.stakes).toEqual(mockStakes);
292
- expect(shape.suiResources?.stakes?.[0].stakes).toHaveLength(2);
293
- });
294
- it("handles different stake statuses correctly", async () => {
295
- // GIVEN
296
- const initialAccount = undefined;
297
- const mockStakes = [
298
- {
299
- validatorAddress: "0xvalidator1",
300
- stakes: [
301
- {
302
- stakedSuiId: "0xactive",
303
- status: "Active",
304
- principal: "1000000000",
305
- stakeActiveEpoch: "100",
306
- stakeRequestEpoch: "95",
307
- },
308
- {
309
- stakedSuiId: "0xpending",
310
- status: "Pending",
311
- principal: "2000000000",
312
- stakeActiveEpoch: "0",
313
- stakeRequestEpoch: "100",
314
- },
315
- {
316
- stakedSuiId: "0xunstaked",
317
- status: "Unstaked",
318
- principal: "3000000000",
319
- stakeActiveEpoch: "0",
320
- stakeRequestEpoch: "0",
321
- },
322
- ],
323
- },
324
- ];
325
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
326
- mockGetOperations.mockResolvedValue([]);
327
- mockGetStakesRaw.mockResolvedValue(mockStakes);
328
- // WHEN
329
- const shape = await getAccountShape({
330
- index: 0,
331
- derivationPath: "44'/784'/0'/0'/0'",
332
- currency: getCryptoCurrencyById("sui"),
333
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
334
- initialAccount,
335
- derivationMode: "sui",
336
- }, { blacklistedTokenIds: [], paginationConfig: {} });
337
- // THEN
338
- expect(shape.suiResources?.stakes).toEqual(mockStakes);
339
- const stakes = shape.suiResources?.stakes?.[0].stakes || [];
340
- expect(stakes).toHaveLength(3);
341
- expect(stakes.find(s => s.stakedSuiId === "0xactive")?.status).toBe("Active");
342
- expect(stakes.find(s => s.stakedSuiId === "0xpending")?.status).toBe("Pending");
343
- expect(stakes.find(s => s.stakedSuiId === "0xunstaked")?.status).toBe("Unstaked");
344
- });
345
- it("handles getStakesRaw throwing an error gracefully", async () => {
346
- // GIVEN
347
- const initialAccount = undefined;
348
- const error = new Error("Network error");
349
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
350
- mockGetOperations.mockResolvedValue([]);
351
- mockGetStakesRaw.mockRejectedValue(error);
352
- // WHEN & THEN
353
- await expect(getAccountShape({
354
- index: 0,
355
- derivationPath: "44'/784'/0'/0'/0'",
356
- currency: getCryptoCurrencyById("sui"),
357
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
358
- initialAccount,
359
- derivationMode: "sui",
360
- }, { blacklistedTokenIds: [], paginationConfig: {} })).rejects.toThrow("Network error");
361
- });
362
- it("preserves existing suiResources when initialAccount has stakes", async () => {
363
- // GIVEN
364
- const existingStakes = [
365
- {
366
- validatorAddress: "0xexistingValidator",
367
- stakes: [
368
- {
369
- stakedSuiId: "0xexistingStake",
370
- status: "Active",
371
- principal: "500000000",
372
- stakeActiveEpoch: "90",
373
- stakeRequestEpoch: "85",
374
- },
375
- ],
376
- },
377
- ];
378
- const initialAccount = createFixtureAccount({
379
- suiResources: { stakes: existingStakes },
380
- });
381
- const newStakes = [
382
- {
383
- validatorAddress: "0xnewValidator",
384
- stakes: [
385
- {
386
- stakedSuiId: "0xnewStake",
387
- status: "Active",
388
- principal: "1000000000",
389
- stakeActiveEpoch: "100",
390
- stakeRequestEpoch: "95",
391
- },
392
- ],
393
- },
394
- ];
395
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
396
- mockGetOperations.mockResolvedValue([]);
397
- mockGetStakesRaw.mockResolvedValue(newStakes);
398
- // WHEN
399
- const shape = await getAccountShape({
400
- index: 0,
401
- derivationPath: "44'/784'/0'/0'/0'",
402
- currency: getCryptoCurrencyById("sui"),
403
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
404
- initialAccount,
405
- derivationMode: "sui",
406
- }, { blacklistedTokenIds: [], paginationConfig: {} });
407
- // THEN
408
- expect(shape.suiResources?.stakes).toEqual(newStakes);
409
- // The new stakes should replace the old ones, not merge
410
- expect(shape.suiResources?.stakes).not.toEqual(existingStakes);
411
- });
412
- it("handles large stake amounts correctly", async () => {
413
- // GIVEN
414
- const initialAccount = undefined;
415
- const mockStakes = [
416
- {
417
- validatorAddress: "0xvalidator1",
418
- stakes: [
419
- {
420
- stakedSuiId: "0xlargeStake",
421
- status: "Active",
422
- principal: "999999999999999999999999999999",
423
- stakeActiveEpoch: "1000",
424
- stakeRequestEpoch: "995",
425
- },
426
- ],
427
- },
428
- ];
429
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
430
- mockGetOperations.mockResolvedValue([]);
431
- mockGetStakesRaw.mockResolvedValue(mockStakes);
432
- // WHEN
433
- const shape = await getAccountShape({
434
- index: 0,
435
- derivationPath: "44'/784'/0'/0'/0'",
436
- currency: getCryptoCurrencyById("sui"),
437
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
438
- initialAccount,
439
- derivationMode: "sui",
440
- }, { blacklistedTokenIds: [], paginationConfig: {} });
441
- // THEN
442
- expect(shape.suiResources?.stakes).toEqual(mockStakes);
443
- const stake = shape.suiResources?.stakes?.[0].stakes?.[0];
444
- expect(stake?.principal).toBe("999999999999999999999999999999");
445
- expect(stake?.stakeActiveEpoch).toBe("1000");
446
- expect(stake?.stakeRequestEpoch).toBe("995");
447
- });
448
- it("handles getStakesRaw returning null or undefined", async () => {
449
- // GIVEN
450
- const initialAccount = undefined;
451
- mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
452
- mockGetOperations.mockResolvedValue([]);
453
- mockGetStakesRaw.mockResolvedValue(null);
454
- // WHEN
455
- const shape = await getAccountShape({
456
- index: 0,
457
- derivationPath: "44'/784'/0'/0'/0'",
458
- currency: getCryptoCurrencyById("sui"),
459
- address: "0x6e143fe0a8ca010a86580dafac44298e5b1b7d73efc345356a59a15f0d7824f0",
460
- initialAccount,
461
- derivationMode: "sui",
462
- }, { blacklistedTokenIds: [], paginationConfig: {} });
463
- // THEN
464
- expect(shape.suiResources).toBeDefined();
465
- expect(shape.suiResources?.stakes).toBeNull();
466
- });
467
- });
468
- });
469
- function createAccountBalance(overrides = {}) {
470
- return {
471
- coinType: DEFAULT_COIN_TYPE,
472
- blockHeight: 10,
473
- balance: new BigNumber(faker.string.numeric()),
474
- ...overrides,
475
- };
476
- }
477
- //# sourceMappingURL=synchronisation.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"synchronisation.test.js","sourceRoot":"","sources":["../../src/bridge/synchronisation.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transaction.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.test.d.ts","sourceRoot":"","sources":["../../src/bridge/transaction.test.ts"],"names":[],"mappings":""}
@@ -1,66 +0,0 @@
1
- import { BigNumber } from "bignumber.js";
2
- import { createFixtureAccount, createFixtureTransaction } from "../types/bridge.fixture";
3
- import { formatTransaction, fromTransactionRaw, toTransactionRaw } from "./transaction";
4
- describe("transaction", () => {
5
- const account = createFixtureAccount();
6
- describe("formatTransaction", () => {
7
- it("should format a basic transaction", () => {
8
- const transaction = createFixtureTransaction({
9
- amount: new BigNumber(500000000),
10
- recipient: "0x456",
11
- });
12
- const formatted = formatTransaction(transaction, account);
13
- expect(formatted).toBe("\nSEND 0.5 SUI\nTO 0x456");
14
- });
15
- it("should format a transaction with useAllAmount", () => {
16
- const transaction = createFixtureTransaction({ useAllAmount: true, recipient: "0x456" });
17
- const formatted = formatTransaction(transaction, account);
18
- expect(formatted).toBe("\nSEND MAX\nTO 0x456");
19
- });
20
- });
21
- describe("fromTransactionRaw", () => {
22
- it("should convert from raw transaction", () => {
23
- const rawTransaction = {
24
- family: "sui",
25
- mode: "send",
26
- coinType: "0x2::sui::SUI",
27
- amount: "500000000",
28
- recipient: "0x456",
29
- useAllAmount: false,
30
- fees: "1000000",
31
- };
32
- const transaction = fromTransactionRaw(rawTransaction);
33
- expect(transaction).toEqual({
34
- family: "sui",
35
- mode: "send",
36
- coinType: "0x2::sui::SUI",
37
- amount: new BigNumber("500000000"),
38
- recipient: "0x456",
39
- useAllAmount: false,
40
- fees: new BigNumber("1000000"),
41
- errors: {},
42
- });
43
- });
44
- });
45
- describe("toTransactionRaw", () => {
46
- it("should convert to raw transaction", () => {
47
- const transaction = createFixtureTransaction();
48
- const rawTransaction = toTransactionRaw(transaction);
49
- expect(rawTransaction).toEqual({
50
- family: "sui",
51
- mode: "send",
52
- coinType: "0x2::sui::SUI",
53
- amount: "3000000000",
54
- recipient: "0x65449f57946938c84c512732f1d69405d1fce417d9c9894696ddf4522f479e24",
55
- useAllAmount: false,
56
- fees: "3976000",
57
- });
58
- });
59
- it("should handle null fees", () => {
60
- const transaction = createFixtureTransaction({ fees: null });
61
- const rawTransaction = toTransactionRaw(transaction);
62
- expect(rawTransaction.fees).toBe("");
63
- });
64
- });
65
- });
66
- //# sourceMappingURL=transaction.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction.test.js","sourceRoot":"","sources":["../../src/bridge/transaction.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=broadcast.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcast.test.d.ts","sourceRoot":"","sources":["../../src/logic/broadcast.test.ts"],"names":[],"mappings":""}
@@ -1,57 +0,0 @@
1
- import { broadcast } from "./broadcast";
2
- import suiAPI from "../network";
3
- // Mock the suiAPI
4
- jest.mock("../network", () => ({
5
- __esModule: true,
6
- default: {
7
- executeTransactionBlock: jest.fn().mockResolvedValue({ digest: "test-digest" }),
8
- },
9
- }));
10
- describe("broadcast", () => {
11
- beforeEach(() => {
12
- jest.clearAllMocks();
13
- });
14
- describe("with string input", () => {
15
- it("should correctly extract transaction and signature and broadcast", async () => {
16
- // Mock transaction string with 4-byte length prefix
17
- // Example: "0010" (length 16 in hex) + "1234567890" (raw tx) + "abcdef" (signature)
18
- const mockTransaction = "000a1234567890abcdef";
19
- const result = await broadcast(mockTransaction);
20
- expect(result).toBe("test-digest");
21
- expect(suiAPI.executeTransactionBlock).toHaveBeenCalledWith({
22
- transactionBlock: "1234567890",
23
- signature: "abcdef",
24
- options: {
25
- showEffects: true,
26
- },
27
- });
28
- });
29
- it("should not call executeTransactionBlock if format is not hex", async () => {
30
- const mockTransaction = "000g1234567890abcdef";
31
- const result = await broadcast(mockTransaction);
32
- expect(result).toBe("");
33
- expect(suiAPI.executeTransactionBlock).toHaveBeenCalledTimes(0);
34
- });
35
- it("should not call executeTransactionBlock if format is incorrect", async () => {
36
- const mockTransaction = "000a1";
37
- const result = await broadcast(mockTransaction);
38
- expect(result).toBe("");
39
- expect(suiAPI.executeTransactionBlock).toHaveBeenCalledTimes(0);
40
- });
41
- });
42
- describe("with ExecuteTransactionBlockParams input", () => {
43
- it("should directly use provided params", async () => {
44
- const mockParams = {
45
- transactionBlock: "test-block",
46
- signature: "test-signature",
47
- options: {
48
- showEffects: true,
49
- },
50
- };
51
- const result = await broadcast(mockParams);
52
- expect(result).toBe("test-digest");
53
- expect(suiAPI.executeTransactionBlock).toHaveBeenCalledWith(mockParams);
54
- });
55
- });
56
- });
57
- //# sourceMappingURL=broadcast.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"broadcast.test.js","sourceRoot":"","sources":["../../src/logic/broadcast.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,MAAM,MAAM,YAAY,CAAC;AAEhC,kBAAkB;AAClB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE;QACP,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;KAChF;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,oDAAoD;YACpD,oFAAoF;YACpF,MAAM,eAAe,GAAG,sBAAsB,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAAC;gBAC1D,gBAAgB,EAAE,YAAY;gBAC9B,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI;iBAClB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,eAAe,GAAG,sBAAsB,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;YAC9E,MAAM,eAAe,GAAG,OAAO,CAAC;YAEhC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;YAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,UAAU,GAAG;gBACjB,gBAAgB,EAAE,YAAY;gBAC9B,SAAS,EAAE,gBAAgB;gBAC3B,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI;iBAClB;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAE3C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}