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