@ledgerhq/coin-sui 0.11.0 → 0.12.0-nightly.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/.eslintrc.js +1 -0
  2. package/.unimportedrc.json +1 -0
  3. package/CHANGELOG.md +11 -0
  4. package/index.d.ts +0 -1
  5. package/jest.config.js +1 -1
  6. package/lib/bridge/broadcast.d.ts.map +1 -1
  7. package/lib/bridge/broadcast.js +3 -0
  8. package/lib/bridge/broadcast.js.map +1 -1
  9. package/lib/bridge/buildOptimisticOperation.js +31 -0
  10. package/lib/bridge/buildOptimisticOperation.js.map +1 -1
  11. package/lib/bridge/buildTransaction.d.ts +1 -1
  12. package/lib/bridge/buildTransaction.d.ts.map +1 -1
  13. package/lib/bridge/buildTransaction.js +3 -1
  14. package/lib/bridge/buildTransaction.js.map +1 -1
  15. package/lib/bridge/buildTransaction.test.js +4 -0
  16. package/lib/bridge/buildTransaction.test.js.map +1 -1
  17. package/lib/bridge/estimateMaxSpendable.d.ts.map +1 -1
  18. package/lib/bridge/estimateMaxSpendable.js +15 -3
  19. package/lib/bridge/estimateMaxSpendable.js.map +1 -1
  20. package/lib/bridge/estimateMaxSpendable.test.js +27 -0
  21. package/lib/bridge/estimateMaxSpendable.test.js.map +1 -1
  22. package/lib/bridge/getFeesForTransaction.d.ts.map +1 -1
  23. package/lib/bridge/getFeesForTransaction.js +13 -1
  24. package/lib/bridge/getFeesForTransaction.js.map +1 -1
  25. package/lib/bridge/getOperationExtra.d.ts +2 -0
  26. package/lib/bridge/getOperationExtra.d.ts.map +1 -0
  27. package/lib/bridge/getOperationExtra.js +6 -0
  28. package/lib/bridge/getOperationExtra.js.map +1 -0
  29. package/lib/bridge/getTransactionStatus.d.ts.map +1 -1
  30. package/lib/bridge/getTransactionStatus.js +45 -20
  31. package/lib/bridge/getTransactionStatus.js.map +1 -1
  32. package/lib/bridge/preload.d.ts.map +1 -1
  33. package/lib/bridge/preload.js +5 -3
  34. package/lib/bridge/preload.js.map +1 -1
  35. package/lib/bridge/preload.test.js +13 -217
  36. package/lib/bridge/preload.test.js.map +1 -1
  37. package/lib/bridge/prepareTransaction.js +1 -1
  38. package/lib/bridge/prepareTransaction.js.map +1 -1
  39. package/lib/bridge/synchronisation.d.ts.map +1 -1
  40. package/lib/bridge/synchronisation.js +5 -2
  41. package/lib/bridge/synchronisation.js.map +1 -1
  42. package/lib/bridge/synchronisation.test.js +355 -7
  43. package/lib/bridge/synchronisation.test.js.map +1 -1
  44. package/lib/bridge/utils.d.ts +1 -1
  45. package/lib/bridge/utils.d.ts.map +1 -1
  46. package/lib/bridge/utils.js +22 -0
  47. package/lib/bridge/utils.js.map +1 -1
  48. package/lib/constants.d.ts +4 -0
  49. package/lib/constants.d.ts.map +1 -0
  50. package/lib/constants.js +7 -0
  51. package/lib/constants.js.map +1 -0
  52. package/lib/errors.d.ts +13 -0
  53. package/lib/errors.d.ts.map +1 -0
  54. package/lib/errors.js +21 -0
  55. package/lib/errors.js.map +1 -0
  56. package/lib/logic/craftTransaction.d.ts +5 -10
  57. package/lib/logic/craftTransaction.d.ts.map +1 -1
  58. package/lib/logic/craftTransaction.js +2 -1
  59. package/lib/logic/craftTransaction.js.map +1 -1
  60. package/lib/logic/estimateFees.d.ts +1 -1
  61. package/lib/logic/estimateFees.d.ts.map +1 -1
  62. package/lib/logic/estimateFees.js +14 -2
  63. package/lib/logic/estimateFees.js.map +1 -1
  64. package/lib/logic/index.d.ts +2 -1
  65. package/lib/logic/index.d.ts.map +1 -1
  66. package/lib/logic/index.js +3 -1
  67. package/lib/logic/index.js.map +1 -1
  68. package/lib/logic/stake.d.ts +3 -0
  69. package/lib/logic/stake.d.ts.map +1 -0
  70. package/lib/logic/stake.js +12 -0
  71. package/lib/logic/stake.js.map +1 -0
  72. package/lib/network/index.d.ts +5 -4
  73. package/lib/network/index.d.ts.map +1 -1
  74. package/lib/network/index.js +5 -3
  75. package/lib/network/index.js.map +1 -1
  76. package/lib/network/sdk.d.ts +5 -3
  77. package/lib/network/sdk.d.ts.map +1 -1
  78. package/lib/network/sdk.js +148 -26
  79. package/lib/network/sdk.js.map +1 -1
  80. package/lib/network/sdk.test.js +491 -6
  81. package/lib/network/sdk.test.js.map +1 -1
  82. package/lib/types/bridge.d.ts +33 -6
  83. package/lib/types/bridge.d.ts.map +1 -1
  84. package/lib-es/bridge/broadcast.d.ts.map +1 -1
  85. package/lib-es/bridge/broadcast.js +3 -0
  86. package/lib-es/bridge/broadcast.js.map +1 -1
  87. package/lib-es/bridge/buildOptimisticOperation.js +31 -0
  88. package/lib-es/bridge/buildOptimisticOperation.js.map +1 -1
  89. package/lib-es/bridge/buildTransaction.d.ts +1 -1
  90. package/lib-es/bridge/buildTransaction.d.ts.map +1 -1
  91. package/lib-es/bridge/buildTransaction.js +3 -1
  92. package/lib-es/bridge/buildTransaction.js.map +1 -1
  93. package/lib-es/bridge/buildTransaction.test.js +4 -0
  94. package/lib-es/bridge/buildTransaction.test.js.map +1 -1
  95. package/lib-es/bridge/estimateMaxSpendable.d.ts.map +1 -1
  96. package/lib-es/bridge/estimateMaxSpendable.js +15 -3
  97. package/lib-es/bridge/estimateMaxSpendable.js.map +1 -1
  98. package/lib-es/bridge/estimateMaxSpendable.test.js +27 -0
  99. package/lib-es/bridge/estimateMaxSpendable.test.js.map +1 -1
  100. package/lib-es/bridge/getFeesForTransaction.d.ts.map +1 -1
  101. package/lib-es/bridge/getFeesForTransaction.js +13 -1
  102. package/lib-es/bridge/getFeesForTransaction.js.map +1 -1
  103. package/lib-es/bridge/getOperationExtra.d.ts +2 -0
  104. package/lib-es/bridge/getOperationExtra.d.ts.map +1 -0
  105. package/lib-es/bridge/getOperationExtra.js +2 -0
  106. package/lib-es/bridge/getOperationExtra.js.map +1 -0
  107. package/lib-es/bridge/getTransactionStatus.d.ts.map +1 -1
  108. package/lib-es/bridge/getTransactionStatus.js +46 -21
  109. package/lib-es/bridge/getTransactionStatus.js.map +1 -1
  110. package/lib-es/bridge/preload.d.ts.map +1 -1
  111. package/lib-es/bridge/preload.js +5 -3
  112. package/lib-es/bridge/preload.js.map +1 -1
  113. package/lib-es/bridge/preload.test.js +14 -218
  114. package/lib-es/bridge/preload.test.js.map +1 -1
  115. package/lib-es/bridge/prepareTransaction.js +1 -1
  116. package/lib-es/bridge/prepareTransaction.js.map +1 -1
  117. package/lib-es/bridge/synchronisation.d.ts.map +1 -1
  118. package/lib-es/bridge/synchronisation.js +6 -3
  119. package/lib-es/bridge/synchronisation.js.map +1 -1
  120. package/lib-es/bridge/synchronisation.test.js +332 -7
  121. package/lib-es/bridge/synchronisation.test.js.map +1 -1
  122. package/lib-es/bridge/utils.d.ts +1 -1
  123. package/lib-es/bridge/utils.d.ts.map +1 -1
  124. package/lib-es/bridge/utils.js +22 -0
  125. package/lib-es/bridge/utils.js.map +1 -1
  126. package/lib-es/constants.d.ts +4 -0
  127. package/lib-es/constants.d.ts.map +1 -0
  128. package/lib-es/constants.js +4 -0
  129. package/lib-es/constants.js.map +1 -0
  130. package/lib-es/errors.d.ts +13 -0
  131. package/lib-es/errors.d.ts.map +1 -0
  132. package/lib-es/errors.js +18 -0
  133. package/lib-es/errors.js.map +1 -0
  134. package/lib-es/logic/craftTransaction.d.ts +5 -10
  135. package/lib-es/logic/craftTransaction.d.ts.map +1 -1
  136. package/lib-es/logic/craftTransaction.js +2 -1
  137. package/lib-es/logic/craftTransaction.js.map +1 -1
  138. package/lib-es/logic/estimateFees.d.ts +1 -1
  139. package/lib-es/logic/estimateFees.d.ts.map +1 -1
  140. package/lib-es/logic/estimateFees.js +14 -2
  141. package/lib-es/logic/estimateFees.js.map +1 -1
  142. package/lib-es/logic/index.d.ts +2 -1
  143. package/lib-es/logic/index.d.ts.map +1 -1
  144. package/lib-es/logic/index.js +1 -0
  145. package/lib-es/logic/index.js.map +1 -1
  146. package/lib-es/logic/stake.d.ts +3 -0
  147. package/lib-es/logic/stake.d.ts.map +1 -0
  148. package/lib-es/logic/stake.js +8 -0
  149. package/lib-es/logic/stake.js.map +1 -0
  150. package/lib-es/network/index.d.ts +5 -4
  151. package/lib-es/network/index.d.ts.map +1 -1
  152. package/lib-es/network/index.js +4 -3
  153. package/lib-es/network/index.js.map +1 -1
  154. package/lib-es/network/sdk.d.ts +5 -3
  155. package/lib-es/network/sdk.d.ts.map +1 -1
  156. package/lib-es/network/sdk.js +144 -25
  157. package/lib-es/network/sdk.js.map +1 -1
  158. package/lib-es/network/sdk.test.js +491 -6
  159. package/lib-es/network/sdk.test.js.map +1 -1
  160. package/lib-es/types/bridge.d.ts +33 -6
  161. package/lib-es/types/bridge.d.ts.map +1 -1
  162. package/package.json +17 -9
  163. package/src/bridge/broadcast.ts +3 -0
  164. package/src/bridge/buildOptimisticOperation.ts +47 -4
  165. package/src/bridge/buildTransaction.test.ts +4 -0
  166. package/src/bridge/buildTransaction.ts +3 -1
  167. package/src/bridge/estimateMaxSpendable.test.ts +33 -0
  168. package/src/bridge/estimateMaxSpendable.ts +17 -3
  169. package/src/bridge/getFeesForTransaction.ts +14 -1
  170. package/src/bridge/getOperationExtra.ts +1 -0
  171. package/src/bridge/getTransactionStatus.ts +53 -21
  172. package/src/bridge/preload.test.ts +13 -279
  173. package/src/bridge/preload.ts +5 -3
  174. package/src/bridge/prepareTransaction.ts +1 -1
  175. package/src/bridge/synchronisation.test.ts +389 -7
  176. package/src/bridge/synchronisation.ts +6 -3
  177. package/src/bridge/utils.ts +25 -1
  178. package/src/constants.ts +4 -0
  179. package/src/errors.ts +21 -0
  180. package/src/logic/craftTransaction.ts +6 -9
  181. package/src/logic/estimateFees.ts +16 -1
  182. package/src/logic/index.ts +2 -1
  183. package/src/logic/stake.ts +9 -0
  184. package/src/network/index.ts +6 -3
  185. package/src/network/sdk.test.ts +538 -10
  186. package/src/network/sdk.ts +179 -31
  187. package/src/types/bridge.ts +32 -6
@@ -1,4 +1,27 @@
1
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
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
@@ -9,6 +32,9 @@ const faker_1 = require("@faker-js/faker");
9
32
  const bridge_fixture_1 = require("../types/bridge.fixture");
10
33
  const sdk_1 = require("../network/sdk");
11
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"));
12
38
  // Mock getTokenById and listTokensForCryptoCurrency
13
39
  jest.mock("@ledgerhq/cryptoassets/tokens", () => ({
14
40
  getTokenById: (coinType) => ({
@@ -23,22 +49,38 @@ jest.mock("@ledgerhq/cryptoassets/tokens", () => ({
23
49
  }),
24
50
  listTokensForCryptoCurrency: () => [{ id: "0x123::sui::TEST" }],
25
51
  }));
26
- const mockGetAccountBalances = jest.fn();
27
- const mockGetOperations = jest.fn();
28
- jest.mock("../network", () => ({
29
- getAccountBalances: () => mockGetAccountBalances(),
30
- getOperations: () => mockGetOperations(),
31
- }));
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
+ });
32
63
  describe("getAccountShape", () => {
64
+ const mockGetAccountBalances = networkModule.getAccountBalances;
65
+ const mockGetOperations = networkModule.getOperations;
66
+ const mockGetStakesRaw = networkModule.getStakesRaw;
33
67
  beforeEach(() => {
34
68
  mockGetAccountBalances.mockClear();
35
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
+ }));
36
77
  });
37
78
  it("calls getAccountBalances and getOperations", async () => {
38
79
  // GIVEN
39
80
  const initialAccount = undefined;
40
81
  mockGetAccountBalances.mockResolvedValue([createAccountBalance()]);
41
82
  mockGetOperations.mockResolvedValue([]);
83
+ mockGetStakesRaw.mockResolvedValue([]);
42
84
  // WHEN
43
85
  await (0, synchronisation_1.getAccountShape)({
44
86
  index: 0,
@@ -58,6 +100,7 @@ describe("getAccountShape", () => {
58
100
  const accountBalance = createAccountBalance();
59
101
  mockGetAccountBalances.mockResolvedValue([accountBalance]);
60
102
  mockGetOperations.mockResolvedValue([]);
103
+ mockGetStakesRaw.mockResolvedValue([]);
61
104
  // WHEN
62
105
  const shape = await (0, synchronisation_1.getAccountShape)({
63
106
  index: 0,
@@ -75,8 +118,11 @@ describe("getAccountShape", () => {
75
118
  blockHeight: 5,
76
119
  operations: [],
77
120
  operationsCount: 0,
78
- suiResources: {},
121
+ suiResources: {
122
+ stakes: [],
123
+ },
79
124
  subAccounts: [],
125
+ syncHash: undefined,
80
126
  });
81
127
  });
82
128
  it("returns an AccountShapeInfo with operations from initialAccount", async () => {
@@ -87,6 +133,7 @@ describe("getAccountShape", () => {
87
133
  const accountBalance = createAccountBalance();
88
134
  mockGetAccountBalances.mockResolvedValue([accountBalance]);
89
135
  mockGetOperations.mockResolvedValue([]);
136
+ mockGetStakesRaw.mockResolvedValue([]);
90
137
  // WHEN
91
138
  const shape = await (0, synchronisation_1.getAccountShape)({
92
139
  index: 0,
@@ -111,6 +158,7 @@ describe("getAccountShape", () => {
111
158
  (0, bridge_fixture_1.createFixtureOperation)({ id: faker_1.faker.string.uuid(), extra }),
112
159
  ];
113
160
  mockGetOperations.mockResolvedValue(apiOperations);
161
+ mockGetStakesRaw.mockResolvedValue([]);
114
162
  // WHEN
115
163
  const shape = await (0, synchronisation_1.getAccountShape)({
116
164
  index: 0,
@@ -131,6 +179,7 @@ describe("getAccountShape", () => {
131
179
  const tokenBalance = createAccountBalance({ coinType: "0x123::sui::TEST" });
132
180
  mockGetAccountBalances.mockResolvedValue([mainBalance, tokenBalance]);
133
181
  mockGetOperations.mockResolvedValue([]);
182
+ mockGetStakesRaw.mockResolvedValue([]);
134
183
  // WHEN
135
184
  const shape = await (0, synchronisation_1.getAccountShape)({
136
185
  index: 0,
@@ -145,6 +194,305 @@ describe("getAccountShape", () => {
145
194
  expect(shape.subAccounts).toBeDefined();
146
195
  expect(Array.isArray(shape.subAccounts)).toBe(true);
147
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
+ });
148
496
  });
149
497
  function createAccountBalance(overrides = {}) {
150
498
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"synchronisation.test.js","sourceRoot":"","sources":["../../src/bridge/synchronisation.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"synchronisation.test.js","sourceRoot":"","sources":["../../src/bridge/synchronisation.test.ts"],"names":[],"mappings":"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"}
@@ -23,5 +23,5 @@ export declare const calculateAmount: ({ account, transaction, }: {
23
23
  account: SuiAccount;
24
24
  transaction: Transaction;
25
25
  }) => BigNumber;
26
- export declare const assertUnreachable: (_: never) => never;
26
+ export declare const assertUnreachable: (_: unknown) => never;
27
27
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bridge/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGxD,eAAO,MAAM,gBAAgB,uBAAqB,CAAC;AAEnD,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,YAAY,iBAAiB;CAC9B;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAMA;AAcD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;aAIjB,UAAU;iBACN,WAAW;MACtB,SAkBH,CAAC;AAEF,eAAO,MAAM,iBAAiB,MAAO,KAAK,KAAG,KAE5C,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bridge/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGxD,eAAO,MAAM,gBAAgB,uBAAqB,CAAC;AAEnD,oBAAY,WAAW;IACrB,OAAO,YAAY;IACnB,YAAY,iBAAiB;CAC9B;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAMA;AA8BD;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;aAIjB,UAAU;iBACN,WAAW;MACtB,SA0BH,CAAC;AAEF,eAAO,MAAM,iBAAiB,MAAO,OAAO,KAAG,KAE9C,CAAC"}
@@ -28,6 +28,20 @@ const calculateMaxSend = (account, transaction) => {
28
28
  const amount = account.spendableBalance.minus(transaction.fees || 0);
29
29
  return amount.lt(0) ? new bignumber_js_1.BigNumber(0) : amount;
30
30
  };
31
+ /**
32
+ * Calculate the maximum amount that can be delegated after deducting fees and reserving gas.
33
+ *
34
+ * @param {SuiAccount} account - The account from which the amount is being delegated.
35
+ * @param {Transaction} transaction - The transaction details including fees.
36
+ * @returns {BigNumber} - The maximum amount that can be delegated, or 0 if insufficient balance.
37
+ */
38
+ const calculateMaxDelegate = (account, transaction) => {
39
+ // Reserve 0.1 SUI for future gas fees as recommended for delegation
40
+ const ONE_SUI = new bignumber_js_1.BigNumber("1000000000"); // 1 SUI in MIST
41
+ const gasReserve = ONE_SUI.div(10); // 0.1 SUI
42
+ const amount = account.spendableBalance.minus(transaction.fees || 0).minus(gasReserve);
43
+ return amount.lt(0) ? new bignumber_js_1.BigNumber(0) : amount;
44
+ };
31
45
  /**
32
46
  * Calculates the amount to be sent in a transaction based on the account's balance and transaction details.
33
47
  *
@@ -47,6 +61,14 @@ const calculateAmount = ({ account, transaction, }) => {
47
61
  amount =
48
62
  (0, index_1.findSubAccountById)(account, transaction.subAccountId)?.spendableBalance ??
49
63
  new bignumber_js_1.BigNumber(0);
64
+ break;
65
+ case "delegate":
66
+ amount = calculateMaxDelegate(account, transaction);
67
+ break;
68
+ case "undelegate":
69
+ // For undelegate, use the full staked amount (handled elsewhere)
70
+ amount = transaction.amount;
71
+ break;
50
72
  }
51
73
  }
52
74
  else if (transaction.amount.gt(exports.MAX_AMOUNT_INPUT)) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/bridge/utils.ts"],"names":[],"mappings":";;;AAAA,+CAAyC;AAEzC,kEAA4E;AAG5E,mEAAmE;AACtD,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AAEnD,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,4CAA6B,CAAA;AAC/B,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,SAAgB,cAAc,CAAC,OAAoB;IAKjD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAVD,wCAUC;AAED;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CAAC,OAAmB,EAAE,WAAwB,EAAa,EAAE;IACpF,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC,CAAC;AAEF;;;;;;;GAOG;AACI,MAAM,eAAe,GAAG,CAAC,EAC9B,OAAO,EACP,WAAW,GAIZ,EAAa,EAAE;IACd,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAEhC,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;QAC7B,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,MAAM;gBACT,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,YAAY;gBACf,MAAM;oBACJ,IAAA,0BAAkB,EAAC,OAAO,EAAE,WAAW,CAAC,YAAa,CAAC,EAAE,gBAAgB;wBACxE,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,wBAAgB,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,wBAAS,CAAC,wBAAgB,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,wBAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAClD,CAAC,CAAC;AAxBW,QAAA,eAAe,mBAwB1B;AAEK,MAAM,iBAAiB,GAAG,CAAC,CAAQ,EAAS,EAAE;IACnD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAClD,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/bridge/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const STAKING_GAS_BASE = "25000000000000";
2
+ export declare const FIGMENT_SUI_VALIDATOR_ADDRESS = "0x3d9fb148e35ef4d74fcfc36995da14fc504b885d5f2bfeca37d6ea2cc044a32d";
3
+ export declare const ONE_SUI = 1000000000;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AACjD,eAAO,MAAM,6BAA6B,uEAC4B,CAAC;AACvE,eAAO,MAAM,OAAO,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ONE_SUI = exports.FIGMENT_SUI_VALIDATOR_ADDRESS = exports.STAKING_GAS_BASE = void 0;
4
+ exports.STAKING_GAS_BASE = "25000000000000";
5
+ exports.FIGMENT_SUI_VALIDATOR_ADDRESS = "0x3d9fb148e35ef4d74fcfc36995da14fc504b885d5f2bfeca37d6ea2cc044a32d";
6
+ exports.ONE_SUI = 1000000000;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,gBAAgB,CAAC;AACpC,QAAA,6BAA6B,GACxC,oEAAoE,CAAC;AAC1D,QAAA,OAAO,GAAG,UAAU,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const OneSuiMinForStake: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
2
+ [key: string]: unknown;
3
+ }>;
4
+ export declare const OneSuiMinForUnstake: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
5
+ [key: string]: unknown;
6
+ }>;
7
+ export declare const OneSuiMinForUnstakeToBeLeft: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
8
+ [key: string]: unknown;
9
+ }>;
10
+ export declare const SomeSuiForUnstake: import("@ledgerhq/errors/lib/helpers").LedgerErrorConstructor<{
11
+ [key: string]: unknown;
12
+ }>;
13
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB;;EAA8C,CAAC;AAK7E,eAAO,MAAM,mBAAmB;;EAAgD,CAAC;AAKjF,eAAO,MAAM,2BAA2B;;EAAwD,CAAC;AAKjG,eAAO,MAAM,iBAAiB;;EAA8C,CAAC"}
package/lib/errors.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SomeSuiForUnstake = exports.OneSuiMinForUnstakeToBeLeft = exports.OneSuiMinForUnstake = exports.OneSuiMinForStake = void 0;
4
+ const errors_1 = require("@ledgerhq/errors");
5
+ /*
6
+ * One SUI is minimal to stake.
7
+ */
8
+ exports.OneSuiMinForStake = (0, errors_1.createCustomErrorClass)("OneSuiMinForStake");
9
+ /*
10
+ * One SUI is minimal for partial unstake.
11
+ */
12
+ exports.OneSuiMinForUnstake = (0, errors_1.createCustomErrorClass)("OneSuiMinForUnstake");
13
+ /*
14
+ * One SUI is minimal to be left when partial unstake.
15
+ */
16
+ exports.OneSuiMinForUnstakeToBeLeft = (0, errors_1.createCustomErrorClass)("OneSuiMinForUnstakeToBeLeft");
17
+ /*
18
+ * At least 0.1 SUI to unstake
19
+ */
20
+ exports.SomeSuiForUnstake = (0, errors_1.createCustomErrorClass)("SomeSuiForUnstake");
21
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,6CAA0D;AAE1D;;GAEG;AACU,QAAA,iBAAiB,GAAG,IAAA,+BAAsB,EAAC,mBAAmB,CAAC,CAAC;AAE7E;;GAEG;AACU,QAAA,mBAAmB,GAAG,IAAA,+BAAsB,EAAC,qBAAqB,CAAC,CAAC;AAEjF;;GAEG;AACU,QAAA,2BAA2B,GAAG,IAAA,+BAAsB,EAAC,6BAA6B,CAAC,CAAC;AAEjG;;GAEG;AACU,QAAA,iBAAiB,GAAG,IAAA,+BAAsB,EAAC,mBAAmB,CAAC,CAAC"}
@@ -1,12 +1,7 @@
1
- import BigNumber from "bignumber.js";
2
1
  import type { TransactionIntent } from "@ledgerhq/coin-framework/api/index";
3
- import type { SuiTransactionMode, CoreTransaction } from "../types";
4
- export type CreateExtrinsicArg = {
5
- amount: BigNumber;
6
- coinType: string;
7
- mode: SuiTransactionMode;
8
- recipient: string;
9
- useAllAmount?: boolean | undefined;
10
- };
11
- export declare function craftTransaction({ amount, asset, recipient, sender, type, }: TransactionIntent): Promise<CoreTransaction>;
2
+ import type { CoreTransaction } from "../types";
3
+ export declare function craftTransaction({ amount, asset, recipient, sender, type, ...extra }: TransactionIntent & {
4
+ useAllAmount?: boolean;
5
+ stakedSuiId?: string;
6
+ }): Promise<CoreTransaction>;
12
7
  //# sourceMappingURL=craftTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"craftTransaction.d.ts","sourceRoot":"","sources":["../../src/logic/craftTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAM,EACN,IAAI,GACL,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAa9C"}
1
+ {"version":3,"file":"craftTransaction.d.ts","sourceRoot":"","sources":["../../src/logic/craftTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,UAAU,CAAC;AAIpE,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAM,EACN,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,iBAAiB,GAAG;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAc3B"}
@@ -7,7 +7,7 @@ exports.craftTransaction = void 0;
7
7
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
8
  const network_1 = __importDefault(require("../network"));
9
9
  const sdk_1 = require("../network/sdk");
10
- async function craftTransaction({ amount, asset, recipient, sender, type, }) {
10
+ async function craftTransaction({ amount, asset, recipient, sender, type, ...extra }) {
11
11
  let coinType = sdk_1.DEFAULT_COIN_TYPE;
12
12
  if (asset.type === "token" && asset.assetReference) {
13
13
  coinType = asset.assetReference;
@@ -17,6 +17,7 @@ async function craftTransaction({ amount, asset, recipient, sender, type, }) {
17
17
  coinType,
18
18
  mode: type,
19
19
  recipient,
20
+ ...extra,
20
21
  });
21
22
  return { unsigned };
22
23
  }