@ledgerhq/coin-solana 0.35.0 → 0.35.1-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 (196) hide show
  1. package/.unimportedrc.json +2 -1
  2. package/CHANGELOG.md +9 -0
  3. package/lib/network/chain/account/parser.d.ts +1 -1
  4. package/lib/network/chain/account/stake.d.ts +23 -23
  5. package/lib/network/chain/account/token.d.ts +7 -7
  6. package/lib/network/chain/instruction/stake/types.d.ts +8 -8
  7. package/lib/network/chain/instruction/system/types.d.ts +14 -14
  8. package/lib/prepareTransaction.d.ts.map +1 -1
  9. package/lib/prepareTransaction.js +4 -0
  10. package/lib/prepareTransaction.js.map +1 -1
  11. package/lib/signOperation.d.ts.map +1 -1
  12. package/lib/signOperation.js +2 -0
  13. package/lib/signOperation.js.map +1 -1
  14. package/lib/signer.d.ts +1 -0
  15. package/lib/signer.d.ts.map +1 -1
  16. package/lib/signer.js.map +1 -1
  17. package/lib/{bridge.integration.test.d.ts → test/bridge.dataset.d.ts} +2 -2
  18. package/lib/test/bridge.dataset.d.ts.map +1 -0
  19. package/lib/{bridge.integration.test.js → test/bridge.dataset.js} +8 -8
  20. package/lib/test/bridge.dataset.js.map +1 -0
  21. package/lib/tx-fees.js +2 -0
  22. package/lib/tx-fees.js.map +1 -1
  23. package/lib/types.d.ts +2 -1
  24. package/lib/types.d.ts.map +1 -1
  25. package/lib-es/network/chain/account/parser.d.ts +1 -1
  26. package/lib-es/network/chain/account/stake.d.ts +23 -23
  27. package/lib-es/network/chain/account/token.d.ts +7 -7
  28. package/lib-es/network/chain/instruction/stake/types.d.ts +8 -8
  29. package/lib-es/network/chain/instruction/system/types.d.ts +14 -14
  30. package/lib-es/prepareTransaction.d.ts.map +1 -1
  31. package/lib-es/prepareTransaction.js +4 -0
  32. package/lib-es/prepareTransaction.js.map +1 -1
  33. package/lib-es/signOperation.d.ts.map +1 -1
  34. package/lib-es/signOperation.js +2 -0
  35. package/lib-es/signOperation.js.map +1 -1
  36. package/lib-es/signer.d.ts +1 -0
  37. package/lib-es/signer.d.ts.map +1 -1
  38. package/lib-es/signer.js.map +1 -1
  39. package/lib-es/{bridge.integration.test.d.ts → test/bridge.dataset.d.ts} +2 -2
  40. package/lib-es/test/bridge.dataset.d.ts.map +1 -0
  41. package/lib-es/{bridge.integration.test.js → test/bridge.dataset.js} +8 -8
  42. package/lib-es/test/bridge.dataset.js.map +1 -0
  43. package/lib-es/tx-fees.js +2 -0
  44. package/lib-es/tx-fees.js.map +1 -1
  45. package/lib-es/types.d.ts +2 -1
  46. package/lib-es/types.d.ts.map +1 -1
  47. package/package.json +6 -6
  48. package/src/prepareTransaction.ts +4 -0
  49. package/src/signOperation.ts +2 -0
  50. package/src/signer.ts +1 -0
  51. package/src/{bridge.integration.test.ts → test/bridge.dataset.ts} +8 -8
  52. package/src/tests/preload.fixtures.ts +1 -1
  53. package/src/tx-fees.ts +2 -0
  54. package/src/types.ts +2 -1
  55. package/lib/__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json +0 -50
  56. package/lib/__tests__/fixtures/helpers.fixture.d.ts +0 -138
  57. package/lib/__tests__/fixtures/helpers.fixture.d.ts.map +0 -1
  58. package/lib/__tests__/fixtures/helpers.fixture.js +0 -124
  59. package/lib/__tests__/fixtures/helpers.fixture.js.map +0 -1
  60. package/lib/__tests__/scan-accounts.test.d.ts +0 -2
  61. package/lib/__tests__/scan-accounts.test.d.ts.map +0 -1
  62. package/lib/__tests__/scan-accounts.test.js +0 -426
  63. package/lib/__tests__/scan-accounts.test.js.map +0 -1
  64. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts +0 -2
  65. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts.map +0 -1
  66. package/lib/__tests__/unit/hw-signMessage.unit.test.js +0 -91
  67. package/lib/__tests__/unit/hw-signMessage.unit.test.js.map +0 -1
  68. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts +0 -2
  69. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts.map +0 -1
  70. package/lib/__tests__/unit/nftResolvers.unit.test.js +0 -147
  71. package/lib/__tests__/unit/nftResolvers.unit.test.js.map +0 -1
  72. package/lib/__tests__/unit/utils.unit.test.d.ts +0 -2
  73. package/lib/__tests__/unit/utils.unit.test.d.ts.map +0 -1
  74. package/lib/__tests__/unit/utils.unit.test.js +0 -16
  75. package/lib/__tests__/unit/utils.unit.test.js.map +0 -1
  76. package/lib/__tests__/unit/validator-app.unit.test.d.ts +0 -2
  77. package/lib/__tests__/unit/validator-app.unit.test.d.ts.map +0 -1
  78. package/lib/__tests__/unit/validator-app.unit.test.js +0 -169
  79. package/lib/__tests__/unit/validator-app.unit.test.js.map +0 -1
  80. package/lib/bridge.integration.test.d.ts.map +0 -1
  81. package/lib/bridge.integration.test.js.map +0 -1
  82. package/lib/buildTransaction.test.d.ts +0 -2
  83. package/lib/buildTransaction.test.d.ts.map +0 -1
  84. package/lib/buildTransaction.test.js +0 -164
  85. package/lib/buildTransaction.test.js.map +0 -1
  86. package/lib/cryptoAssetsStore.test.d.ts +0 -2
  87. package/lib/cryptoAssetsStore.test.d.ts.map +0 -1
  88. package/lib/cryptoAssetsStore.test.js +0 -15
  89. package/lib/cryptoAssetsStore.test.js.map +0 -1
  90. package/lib/network/chain/web3.integration.test.d.ts +0 -2
  91. package/lib/network/chain/web3.integration.test.d.ts.map +0 -1
  92. package/lib/network/chain/web3.integration.test.js +0 -70
  93. package/lib/network/chain/web3.integration.test.js.map +0 -1
  94. package/lib/offchainMessage/format.unit.test.d.ts +0 -2
  95. package/lib/offchainMessage/format.unit.test.d.ts.map +0 -1
  96. package/lib/offchainMessage/format.unit.test.js +0 -124
  97. package/lib/offchainMessage/format.unit.test.js.map +0 -1
  98. package/lib/preload.test.d.ts +0 -2
  99. package/lib/preload.test.d.ts.map +0 -1
  100. package/lib/preload.test.js +0 -9
  101. package/lib/preload.test.js.map +0 -1
  102. package/lib/prepareTransaction.test.d.ts +0 -2
  103. package/lib/prepareTransaction.test.d.ts.map +0 -1
  104. package/lib/prepareTransaction.test.js +0 -139
  105. package/lib/prepareTransaction.test.js.map +0 -1
  106. package/lib/signOperation.test.d.ts +0 -3
  107. package/lib/signOperation.test.d.ts.map +0 -1
  108. package/lib/signOperation.test.js +0 -139
  109. package/lib/signOperation.test.js.map +0 -1
  110. package/lib/tests/preload.fixtures.d.ts +0 -5
  111. package/lib/tests/preload.fixtures.d.ts.map +0 -1
  112. package/lib/tests/preload.fixtures.js +0 -28
  113. package/lib/tests/preload.fixtures.js.map +0 -1
  114. package/lib/tests/preload.unit.test.d.ts +0 -2
  115. package/lib/tests/preload.unit.test.d.ts.map +0 -1
  116. package/lib/tests/preload.unit.test.js +0 -175
  117. package/lib/tests/preload.unit.test.js.map +0 -1
  118. package/lib/tests/stakes-bridge.unit.test.d.ts +0 -2
  119. package/lib/tests/stakes-bridge.unit.test.d.ts.map +0 -1
  120. package/lib/tests/stakes-bridge.unit.test.js +0 -166
  121. package/lib/tests/stakes-bridge.unit.test.js.map +0 -1
  122. package/lib/tests/tokens-bridge.unit.test.d.ts +0 -2
  123. package/lib/tests/tokens-bridge.unit.test.d.ts.map +0 -1
  124. package/lib/tests/tokens-bridge.unit.test.js +0 -615
  125. package/lib/tests/tokens-bridge.unit.test.js.map +0 -1
  126. package/lib-es/__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json +0 -50
  127. package/lib-es/__tests__/fixtures/helpers.fixture.d.ts +0 -138
  128. package/lib-es/__tests__/fixtures/helpers.fixture.d.ts.map +0 -1
  129. package/lib-es/__tests__/fixtures/helpers.fixture.js +0 -110
  130. package/lib-es/__tests__/fixtures/helpers.fixture.js.map +0 -1
  131. package/lib-es/__tests__/scan-accounts.test.d.ts +0 -2
  132. package/lib-es/__tests__/scan-accounts.test.d.ts.map +0 -1
  133. package/lib-es/__tests__/scan-accounts.test.js +0 -398
  134. package/lib-es/__tests__/scan-accounts.test.js.map +0 -1
  135. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts +0 -2
  136. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts.map +0 -1
  137. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js +0 -86
  138. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js.map +0 -1
  139. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts +0 -2
  140. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts.map +0 -1
  141. package/lib-es/__tests__/unit/nftResolvers.unit.test.js +0 -142
  142. package/lib-es/__tests__/unit/nftResolvers.unit.test.js.map +0 -1
  143. package/lib-es/__tests__/unit/utils.unit.test.d.ts +0 -2
  144. package/lib-es/__tests__/unit/utils.unit.test.d.ts.map +0 -1
  145. package/lib-es/__tests__/unit/utils.unit.test.js +0 -14
  146. package/lib-es/__tests__/unit/utils.unit.test.js.map +0 -1
  147. package/lib-es/__tests__/unit/validator-app.unit.test.d.ts +0 -2
  148. package/lib-es/__tests__/unit/validator-app.unit.test.d.ts.map +0 -1
  149. package/lib-es/__tests__/unit/validator-app.unit.test.js +0 -144
  150. package/lib-es/__tests__/unit/validator-app.unit.test.js.map +0 -1
  151. package/lib-es/bridge.integration.test.d.ts.map +0 -1
  152. package/lib-es/bridge.integration.test.js.map +0 -1
  153. package/lib-es/buildTransaction.test.d.ts +0 -2
  154. package/lib-es/buildTransaction.test.d.ts.map +0 -1
  155. package/lib-es/buildTransaction.test.js +0 -162
  156. package/lib-es/buildTransaction.test.js.map +0 -1
  157. package/lib-es/cryptoAssetsStore.test.d.ts +0 -2
  158. package/lib-es/cryptoAssetsStore.test.d.ts.map +0 -1
  159. package/lib-es/cryptoAssetsStore.test.js +0 -13
  160. package/lib-es/cryptoAssetsStore.test.js.map +0 -1
  161. package/lib-es/network/chain/web3.integration.test.d.ts +0 -2
  162. package/lib-es/network/chain/web3.integration.test.d.ts.map +0 -1
  163. package/lib-es/network/chain/web3.integration.test.js +0 -68
  164. package/lib-es/network/chain/web3.integration.test.js.map +0 -1
  165. package/lib-es/offchainMessage/format.unit.test.d.ts +0 -2
  166. package/lib-es/offchainMessage/format.unit.test.d.ts.map +0 -1
  167. package/lib-es/offchainMessage/format.unit.test.js +0 -122
  168. package/lib-es/offchainMessage/format.unit.test.js.map +0 -1
  169. package/lib-es/preload.test.d.ts +0 -2
  170. package/lib-es/preload.test.d.ts.map +0 -1
  171. package/lib-es/preload.test.js +0 -7
  172. package/lib-es/preload.test.js.map +0 -1
  173. package/lib-es/prepareTransaction.test.d.ts +0 -2
  174. package/lib-es/prepareTransaction.test.d.ts.map +0 -1
  175. package/lib-es/prepareTransaction.test.js +0 -134
  176. package/lib-es/prepareTransaction.test.js.map +0 -1
  177. package/lib-es/signOperation.test.d.ts +0 -3
  178. package/lib-es/signOperation.test.d.ts.map +0 -1
  179. package/lib-es/signOperation.test.js +0 -135
  180. package/lib-es/signOperation.test.js.map +0 -1
  181. package/lib-es/tests/preload.fixtures.d.ts +0 -5
  182. package/lib-es/tests/preload.fixtures.d.ts.map +0 -1
  183. package/lib-es/tests/preload.fixtures.js +0 -25
  184. package/lib-es/tests/preload.fixtures.js.map +0 -1
  185. package/lib-es/tests/preload.unit.test.d.ts +0 -2
  186. package/lib-es/tests/preload.unit.test.d.ts.map +0 -1
  187. package/lib-es/tests/preload.unit.test.js +0 -147
  188. package/lib-es/tests/preload.unit.test.js.map +0 -1
  189. package/lib-es/tests/stakes-bridge.unit.test.d.ts +0 -2
  190. package/lib-es/tests/stakes-bridge.unit.test.d.ts.map +0 -1
  191. package/lib-es/tests/stakes-bridge.unit.test.js +0 -161
  192. package/lib-es/tests/stakes-bridge.unit.test.js.map +0 -1
  193. package/lib-es/tests/tokens-bridge.unit.test.d.ts +0 -2
  194. package/lib-es/tests/tokens-bridge.unit.test.d.ts.map +0 -1
  195. package/lib-es/tests/tokens-bridge.unit.test.js +0 -610
  196. package/lib-es/tests/tokens-bridge.unit.test.js.map +0 -1
@@ -1,164 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const web3_js_1 = require("@solana/web3.js");
4
- const buildTransaction_1 = require("./buildTransaction");
5
- const helpers_fixture_1 = require("./__tests__/fixtures/helpers.fixture");
6
- const utils_1 = require("./utils");
7
- // Mock VersionedTransaction
8
- const mockAddSignature = jest.fn();
9
- const mockSerialize = jest.fn().mockReturnValue(new Uint8Array([1, 2, 3]));
10
- let spiedDeserialize = undefined;
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
- function setDeserialize(tx) {
13
- return jest.spyOn(web3_js_1.VersionedTransaction, "deserialize").mockReturnValue(tx);
14
- }
15
- describe("Testing buildTransaction", () => {
16
- const ADDRESS = "Hj69wRzkrFuf1Nby4yzPEFHdsmQdMoVYjvDKZSLjZFEp";
17
- const BLOCKHASH = "DJRuRgQP3BeBNH8WVdF9cppBDj7pQNiVr4ZDnqupRtTC";
18
- const LAST_VALID_BLOCK_HEIGHT = 1;
19
- const SIGNATURE = Buffer.from("any random value");
20
- const OLD_BLOCKHASH = "8RgQBB8zzKkv4iuHMo5F9Ku3rRDGjXbQxd1FgiFzqQ97";
21
- const VALID_SIGNATURE = Buffer.from("validSignatureData12345678901234567890123456789012345678901234567890123456789012345678901234567890");
22
- const createMockVersionedTransaction = () => ({
23
- signatures: [utils_1.DUMMY_SIGNATURE],
24
- message: {
25
- recentBlockhash: BLOCKHASH,
26
- },
27
- addSignature: mockAddSignature,
28
- serialize: mockSerialize,
29
- });
30
- afterEach(() => {
31
- spiedDeserialize?.mockReset();
32
- jest.clearAllMocks();
33
- });
34
- it("should decode raw transaction and use it when user provide it", async () => {
35
- const expectedSolanaTransaction = createMockVersionedTransaction();
36
- spiedDeserialize = setDeserialize(expectedSolanaTransaction);
37
- const rawTransaction = (0, helpers_fixture_1.transaction)({ raw: "test" });
38
- const [solanaTransaction, recentBlockhash, addSignatureCallback] = await (0, buildTransaction_1.buildTransactionWithAPI)(ADDRESS, rawTransaction, api(BLOCKHASH, LAST_VALID_BLOCK_HEIGHT));
39
- expect(solanaTransaction).toEqual(expectedSolanaTransaction);
40
- expect(recentBlockhash).toEqual(expect.objectContaining({
41
- blockhash: BLOCKHASH,
42
- lastValidBlockHeight: LAST_VALID_BLOCK_HEIGHT,
43
- }));
44
- addSignatureCallback(SIGNATURE);
45
- expect(mockAddSignature).toHaveBeenCalledTimes(1);
46
- expect(mockAddSignature).toHaveBeenCalledWith(new web3_js_1.PublicKey(ADDRESS), SIGNATURE);
47
- expect(spiedDeserialize).toHaveBeenCalledTimes(1);
48
- expect(spiedDeserialize).toHaveBeenCalledWith(Buffer.from(rawTransaction.raw, "base64"));
49
- });
50
- it("should build the transaction when user does not provide raw", async () => {
51
- spiedDeserialize = setDeserialize(createMockVersionedTransaction());
52
- const nonRawTransaction = (0, helpers_fixture_1.transaction)();
53
- const [solanaTransaction, recentBlockhash, addSignatureCallback] = await (0, buildTransaction_1.buildTransactionWithAPI)(ADDRESS, nonRawTransaction, api(BLOCKHASH, LAST_VALID_BLOCK_HEIGHT));
54
- expect(recentBlockhash).toEqual(expect.objectContaining({
55
- blockhash: BLOCKHASH,
56
- lastValidBlockHeight: LAST_VALID_BLOCK_HEIGHT,
57
- }));
58
- solanaTransaction.addSignature = jest.fn();
59
- addSignatureCallback(SIGNATURE);
60
- expect(solanaTransaction.addSignature).toHaveBeenCalledTimes(1);
61
- expect(solanaTransaction.addSignature).toHaveBeenCalledWith(new web3_js_1.PublicKey(ADDRESS), SIGNATURE);
62
- expect(spiedDeserialize).toHaveBeenCalledTimes(0);
63
- });
64
- it("should update blockhash for raw transaction with different blockhash when only dummy signatures are present", async () => {
65
- const expectedSolanaTransaction = createMockVersionedTransaction();
66
- // Set the transaction to have a different blockhash initially
67
- expectedSolanaTransaction.message.recentBlockhash = OLD_BLOCKHASH;
68
- // Ensure only dummy signatures are present
69
- expectedSolanaTransaction.signatures = [utils_1.DUMMY_SIGNATURE];
70
- spiedDeserialize = setDeserialize(expectedSolanaTransaction);
71
- const rawTransaction = (0, helpers_fixture_1.transaction)({ raw: "test" });
72
- const [solanaTransaction, recentBlockhash, addSignatureCallback] = await (0, buildTransaction_1.buildTransactionWithAPI)(ADDRESS, rawTransaction, api(BLOCKHASH, LAST_VALID_BLOCK_HEIGHT));
73
- // The blockhash should be updated to the fresh one from the API
74
- expect(solanaTransaction.message.recentBlockhash).toBe(BLOCKHASH);
75
- expect(recentBlockhash).toEqual(expect.objectContaining({
76
- blockhash: BLOCKHASH,
77
- lastValidBlockHeight: LAST_VALID_BLOCK_HEIGHT,
78
- }));
79
- addSignatureCallback(SIGNATURE);
80
- expect(mockAddSignature).toHaveBeenCalledTimes(1);
81
- expect(mockAddSignature).toHaveBeenCalledWith(new web3_js_1.PublicKey(ADDRESS), SIGNATURE);
82
- expect(spiedDeserialize).toHaveBeenCalledTimes(1);
83
- expect(spiedDeserialize).toHaveBeenCalledWith(Buffer.from(rawTransaction.raw, "base64"));
84
- });
85
- it("should NOT update blockhash for raw transaction with different blockhash when valid signatures are present", async () => {
86
- const expectedSolanaTransaction = createMockVersionedTransaction();
87
- // Set the transaction to have a different blockhash initially
88
- expectedSolanaTransaction.message.recentBlockhash = OLD_BLOCKHASH;
89
- // Set a valid (non-dummy) signature
90
- expectedSolanaTransaction.signatures = [VALID_SIGNATURE];
91
- spiedDeserialize = setDeserialize(expectedSolanaTransaction);
92
- const rawTransaction = (0, helpers_fixture_1.transaction)({ raw: "test" });
93
- const [solanaTransaction, recentBlockhash, addSignatureCallback] = await (0, buildTransaction_1.buildTransactionWithAPI)(ADDRESS, rawTransaction, api(BLOCKHASH, LAST_VALID_BLOCK_HEIGHT));
94
- // The blockhash should remain unchanged because there's a valid signature
95
- expect(solanaTransaction.message.recentBlockhash).toBe(OLD_BLOCKHASH);
96
- expect(recentBlockhash).toEqual(expect.objectContaining({
97
- blockhash: BLOCKHASH,
98
- lastValidBlockHeight: LAST_VALID_BLOCK_HEIGHT,
99
- }));
100
- addSignatureCallback(SIGNATURE);
101
- expect(mockAddSignature).toHaveBeenCalledTimes(1);
102
- expect(mockAddSignature).toHaveBeenCalledWith(new web3_js_1.PublicKey(ADDRESS), SIGNATURE);
103
- expect(spiedDeserialize).toHaveBeenCalledTimes(1);
104
- expect(spiedDeserialize).toHaveBeenCalledWith(Buffer.from(rawTransaction.raw, "base64"));
105
- });
106
- it("should NOT update blockhash for raw transaction when mix of dummy and valid signatures are present", async () => {
107
- const expectedSolanaTransaction = createMockVersionedTransaction();
108
- // Set the transaction to have a different blockhash initially
109
- expectedSolanaTransaction.message.recentBlockhash = OLD_BLOCKHASH;
110
- // Set a mix of dummy and valid signatures (multisig scenario)
111
- expectedSolanaTransaction.signatures = [utils_1.DUMMY_SIGNATURE, VALID_SIGNATURE];
112
- spiedDeserialize = setDeserialize(expectedSolanaTransaction);
113
- const rawTransaction = (0, helpers_fixture_1.transaction)({ raw: "test" });
114
- const [solanaTransaction, recentBlockhash, addSignatureCallback] = await (0, buildTransaction_1.buildTransactionWithAPI)(ADDRESS, rawTransaction, api(BLOCKHASH, LAST_VALID_BLOCK_HEIGHT));
115
- // The blockhash should remain unchanged because there's at least one valid signature
116
- expect(solanaTransaction.message.recentBlockhash).toBe(OLD_BLOCKHASH);
117
- expect(recentBlockhash).toEqual(expect.objectContaining({
118
- blockhash: BLOCKHASH,
119
- lastValidBlockHeight: LAST_VALID_BLOCK_HEIGHT,
120
- }));
121
- addSignatureCallback(SIGNATURE);
122
- expect(mockAddSignature).toHaveBeenCalledTimes(1);
123
- expect(mockAddSignature).toHaveBeenCalledWith(new web3_js_1.PublicKey(ADDRESS), SIGNATURE);
124
- expect(spiedDeserialize).toHaveBeenCalledTimes(1);
125
- expect(spiedDeserialize).toHaveBeenCalledWith(Buffer.from(rawTransaction.raw, "base64"));
126
- });
127
- it("should update blockhash for raw transaction when all signatures are dummy (multiple dummy signatures)", async () => {
128
- const expectedSolanaTransaction = createMockVersionedTransaction();
129
- // Set the transaction to have a different blockhash initially
130
- expectedSolanaTransaction.message.recentBlockhash = OLD_BLOCKHASH;
131
- // Set multiple dummy signatures (multisig scenario with all dummy)
132
- expectedSolanaTransaction.signatures = [utils_1.DUMMY_SIGNATURE, utils_1.DUMMY_SIGNATURE, utils_1.DUMMY_SIGNATURE];
133
- spiedDeserialize = setDeserialize(expectedSolanaTransaction);
134
- const rawTransaction = (0, helpers_fixture_1.transaction)({ raw: "test" });
135
- const [solanaTransaction, recentBlockhash, addSignatureCallback] = await (0, buildTransaction_1.buildTransactionWithAPI)(ADDRESS, rawTransaction, api(BLOCKHASH, LAST_VALID_BLOCK_HEIGHT));
136
- // The blockhash should be updated because all signatures are dummy
137
- expect(solanaTransaction.message.recentBlockhash).toBe(BLOCKHASH);
138
- expect(recentBlockhash).toEqual(expect.objectContaining({
139
- blockhash: BLOCKHASH,
140
- lastValidBlockHeight: LAST_VALID_BLOCK_HEIGHT,
141
- }));
142
- addSignatureCallback(SIGNATURE);
143
- expect(mockAddSignature).toHaveBeenCalledTimes(1);
144
- expect(mockAddSignature).toHaveBeenCalledWith(new web3_js_1.PublicKey(ADDRESS), SIGNATURE);
145
- expect(spiedDeserialize).toHaveBeenCalledTimes(1);
146
- expect(spiedDeserialize).toHaveBeenCalledWith(Buffer.from(rawTransaction.raw, "base64"));
147
- });
148
- });
149
- function api(blockhash, lastValidBlockHeight) {
150
- const mockBlockhash = {
151
- blockhash: blockhash,
152
- lastValidBlockHeight: lastValidBlockHeight,
153
- };
154
- const mockRecentPrioritizationFees = [];
155
- // Create a mock ChainAPI with only the methods we need
156
- const mockChainApi = {
157
- getLatestBlockhash: jest.fn().mockResolvedValue(mockBlockhash),
158
- getSimulationComputeUnits: jest.fn().mockResolvedValue(null),
159
- getRecentPrioritizationFees: jest.fn().mockResolvedValue(mockRecentPrioritizationFees),
160
- };
161
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
162
- return mockChainApi;
163
- }
164
- //# sourceMappingURL=buildTransaction.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildTransaction.test.js","sourceRoot":"","sources":["../src/buildTransaction.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cryptoAssetsStore.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cryptoAssetsStore.test.d.ts","sourceRoot":"","sources":["../src/cryptoAssetsStore.test.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const cryptoAssetsStore_1 = require("./cryptoAssetsStore");
4
- describe("cryptoAssetsStore", () => {
5
- it("should throw an error when CryptoAssetsStoreGetter is not set", () => {
6
- expect(() => (0, cryptoAssetsStore_1.getCryptoAssetsStore)()).toThrow(cryptoAssetsStore_1.CRYPTO_ASSETS_STORE_NO_SET_ERROR_MESSAGE);
7
- });
8
- it("should return the CryptoAssetsStoreGetter set", () => {
9
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
10
- const store = {};
11
- (0, cryptoAssetsStore_1.setCryptoAssetsStoreGetter)(() => store);
12
- expect((0, cryptoAssetsStore_1.getCryptoAssetsStore)()).toEqual(store);
13
- });
14
- });
15
- //# sourceMappingURL=cryptoAssetsStore.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cryptoAssetsStore.test.js","sourceRoot":"","sources":["../src/cryptoAssetsStore.test.ts"],"names":[],"mappings":";;AACA,2DAI6B;AAE7B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,wCAAoB,GAAE,CAAC,CAAC,OAAO,CAAC,4DAAwC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,yEAAyE;QACzE,MAAM,KAAK,GAAG,EAAuB,CAAC;QACtC,IAAA,8CAA0B,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,IAAA,wCAAoB,GAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=web3.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web3.integration.test.d.ts","sourceRoot":"","sources":["../../../src/network/chain/web3.integration.test.ts"],"names":[],"mappings":""}
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const superstruct_1 = require("superstruct");
4
- const _1 = require(".");
5
- const constants_1 = require("./program/constants");
6
- const pubkey_1 = require("./validators/pubkey");
7
- const web3_1 = require("./web3");
8
- const api = (0, _1.getChainAPI)({
9
- endpoint: "https://solana.coin.ledger.com",
10
- });
11
- const usdcMintAddress = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"; // USDC Mint address
12
- const usdtMintAddress = "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"; // USDT Mint address
13
- const account1 = {
14
- solAccountAddress: "7VHUFJHWu2CuExkJcJrzhQPJ2oygupTWkL2A2For4BmE", // Circle account address
15
- tokenAccountAddress: "3emsAVdmGKERbHjmGfQ6oZ1e35dkf5iYcS6U4CPKFVaa", // Token account owning the supply for Circle
16
- ataAddress: "4kokFKCFMxpCpG41yLYkLEqXW8g1WPfCt2NC9KGivY6N", // Computed ATA address, which is not used to own USDC. Thus the account exists, it has a balance too weak.
17
- };
18
- const account2 = {
19
- solAccountAddress: "HYe4vSaEGqQKnDrxWDrk3o5H2gznv7qtij5G6NNG8WHd",
20
- ataAddress: "HMhsfjwxHcgvfKJatsbhPxhPFKWYPbPUd8FUAGQ79RJ2",
21
- };
22
- describe("getMaybeTokenAccount", () => {
23
- it.each([
24
- {
25
- address: account1.tokenAccountAddress,
26
- mint: usdcMintAddress,
27
- owner: account1.solAccountAddress,
28
- },
29
- {
30
- address: account2.ataAddress,
31
- mint: usdtMintAddress,
32
- owner: account2.solAccountAddress,
33
- },
34
- ])("returns account info", async ({ address, mint, owner }) => {
35
- const accountInfo = await (0, web3_1.getMaybeTokenAccount)(address, api);
36
- expect(accountInfo).toEqual({
37
- isNative: false,
38
- mint: (0, superstruct_1.create)(mint, pubkey_1.PublicKeyFromString),
39
- owner: (0, superstruct_1.create)(owner, pubkey_1.PublicKeyFromString),
40
- state: "initialized",
41
- tokenAmount: expect.objectContaining({
42
- decimals: 6,
43
- }),
44
- });
45
- });
46
- it("returns account info", async () => {
47
- const address = account2.solAccountAddress;
48
- const accountInfo = await (0, web3_1.getMaybeTokenAccount)(address, api);
49
- expect(accountInfo).toBeUndefined();
50
- });
51
- });
52
- describe("findTokenAccAddress", () => {
53
- it.each([
54
- {
55
- // address: account1.tokenAccountAddress, // Token Address --> real one onchain
56
- address: account1.ataAddress, // ATA Address --> doesn't exist onchain
57
- mint: usdcMintAddress,
58
- owner: account1.solAccountAddress,
59
- },
60
- {
61
- address: account2.ataAddress,
62
- mint: usdtMintAddress,
63
- owner: account2.solAccountAddress,
64
- },
65
- ])("returns the expected ATA address", async ({ address, mint, owner }) => {
66
- const ata = await api.findAssocTokenAccAddress(owner, mint, constants_1.PARSED_PROGRAMS.SPL_TOKEN);
67
- expect(ata).toEqual(address);
68
- });
69
- });
70
- //# sourceMappingURL=web3.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web3.integration.test.js","sourceRoot":"","sources":["../../../src/network/chain/web3.integration.test.ts"],"names":[],"mappings":";;AAAA,6CAAqC;AACrC,wBAAgC;AAChC,mDAAsD;AACtD,gDAA0D;AAC1D,iCAA8C;AAE9C,MAAM,GAAG,GAAG,IAAA,cAAW,EAAC;IACtB,QAAQ,EAAE,gCAAgC;CAC3C,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,8CAA8C,CAAC,CAAC,oBAAoB;AAC5F,MAAM,eAAe,GAAG,8CAA8C,CAAC,CAAC,oBAAoB;AAC5F,MAAM,QAAQ,GAAG;IACf,iBAAiB,EAAE,8CAA8C,EAAE,yBAAyB;IAC5F,mBAAmB,EAAE,8CAA8C,EAAE,6CAA6C;IAClH,UAAU,EAAE,8CAA8C,EAAE,2GAA2G;CACxK,CAAC;AACF,MAAM,QAAQ,GAAG;IACf,iBAAiB,EAAE,8CAA8C;IACjE,UAAU,EAAE,8CAA8C;CAC3D,CAAC;AAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,IAAI,CAAC;QACN;YACE,OAAO,EAAE,QAAQ,CAAC,mBAAmB;YACrC,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,QAAQ,CAAC,iBAAiB;SAClC;QACD;YACE,OAAO,EAAE,QAAQ,CAAC,UAAU;YAC5B,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,QAAQ,CAAC,iBAAiB;SAClC;KACF,CAAC,CAAC,sBAAsB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QAC5D,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAoB,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE7D,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;YAC1B,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,IAAA,oBAAM,EAAC,IAAI,EAAE,4BAAmB,CAAC;YACvC,KAAK,EAAE,IAAA,oBAAM,EAAC,KAAK,EAAE,4BAAmB,CAAC;YACzC,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBACnC,QAAQ,EAAE,CAAC;aACZ,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC;QAE3C,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAoB,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE7D,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,IAAI,CAAC;QACN;YACE,+EAA+E;YAC/E,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,wCAAwC;YACtE,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,QAAQ,CAAC,iBAAiB;SAClC;QACD;YACE,OAAO,EAAE,QAAQ,CAAC,UAAU;YAC5B,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,QAAQ,CAAC,iBAAiB;SAClC;KACF,CAAC,CAAC,kCAAkC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACxE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,2BAAe,CAAC,SAAS,CAAC,CAAC;QAEvF,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=format.unit.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.unit.test.d.ts","sourceRoot":"","sources":["../../src/offchainMessage/format.unit.test.ts"],"names":[],"mappings":""}
@@ -1,124 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const web3_js_1 = require("@solana/web3.js");
4
- const format_1 = require("./format");
5
- // hexadecimal of \xffsolana offchain
6
- const SOLANA_HEADER = "ff736f6c616e61206f6666636861696e";
7
- describe("test", () => {
8
- const sharedCases = [
9
- {
10
- value: "hello",
11
- hexadecimal: "68656c6c6f",
12
- messageFormat: "00",
13
- messageLength: "0500",
14
- },
15
- {
16
- value: "bonjour",
17
- hexadecimal: "626f6e6a6f7572",
18
- messageFormat: "00",
19
- messageLength: "0700",
20
- },
21
- {
22
- value: "salam",
23
- hexadecimal: "73616c616d",
24
- messageFormat: "00",
25
- messageLength: "0500",
26
- },
27
- {
28
- value: "Long Off-Chain Test Message.",
29
- hexadecimal: "4c6f6e67204f66662d436861696e2054657374204d6573736167652e",
30
- messageFormat: "00",
31
- messageLength: "1c00",
32
- },
33
- {
34
- value: "Тестовое сообщение в формате UTF-8",
35
- hexadecimal: "d0a2d0b5d181d182d0bed0b2d0bed0b520d181d0bed0bed0b1d189d0b5d0bdd0b8d0b520d0b220d184d0bed180d0bcd0b0d182d0b5205554462d38",
36
- messageFormat: "01",
37
- messageLength: "3b00",
38
- },
39
- ];
40
- const cases = [
41
- ...sharedCases,
42
- {
43
- value: `example.com wants you to sign in with your Solana account: test-account
44
- URI: http://localhost:3000
45
- Version: 1
46
- Network: mainnet
47
- Nonce: once
48
- Issued At: now`,
49
- hexadecimal: "6578616d706c652e636f6d2077616e747320796f7520746f207369676e20696e207769746820796f757220536f6c616e61206163636f756e743a20746573742d6163636f756e740a5552493a20687474703a2f2f6c6f63616c686f73743a333030300a56657273696f6e3a20310a4e6574776f726b3a206d61696e6e65740a4e6f6e63653a206f6e63650a4973737565642041743a206e6f77",
50
- messageFormat: "00",
51
- messageLength: "9900",
52
- },
53
- {
54
- value: `shop.ledger.com wants you to sign in with your Solana account: 2XUhv9PZohcQrwsx3AnYMrHCbssWZuAFdwixd67ZYhYN
55
- URI: http://localhost:3000
56
- Version: 1
57
- Network: mainnet
58
- Nonce: 2XUhv9PZohcQrwsx3AnYMrHCbssWZuAFdwixd67ZYhYN-nonce
59
- Issued At: now`,
60
- hexadecimal: "73686f702e6c65646765722e636f6d2077616e747320796f7520746f207369676e20696e207769746820796f757220536f6c616e61206163636f756e743a20325855687639505a6f6863517277737833416e594d724843627373575a754146647769786436375a5968594e0a5552493a20687474703a2f2f6c6f63616c686f73743a333030300a56657273696f6e3a20310a4e6574776f726b3a206d61696e6e65740a4e6f6e63653a20325855687639505a6f6863517277737833416e594d724843627373575a754146647769786436375a5968594e2d6e6f6e63650a4973737565642041743a206e6f77",
61
- messageFormat: "00",
62
- messageLength: "eb00",
63
- },
64
- ];
65
- const address = "8DpKDisipx6f76cEmuGvCX9TrA3SjeR76HaTRePxHBDe";
66
- const addressHex = new web3_js_1.PublicKey(address).toBuffer().toString("hex");
67
- const emptyApplicationDomain = "0000000000000000000000000000000000000000000000000000000000000000";
68
- it.each(cases)('should format message "$value" correctly for off-chain signing on Solana', ({ value, hexadecimal, messageFormat, messageLength }) => {
69
- const result = (0, format_1.toOffChainMessage)(value, address, false).toString("hex");
70
- expect(result.startsWith(SOLANA_HEADER)).toBe(true);
71
- const version = result.substring(SOLANA_HEADER.length, SOLANA_HEADER.length + 2);
72
- expect(version).toEqual("00");
73
- const applicationDomain = result.substring(SOLANA_HEADER.length + 2, SOLANA_HEADER.length + 66);
74
- expect(applicationDomain).toEqual(emptyApplicationDomain);
75
- const format = result.substring(SOLANA_HEADER.length + 66, SOLANA_HEADER.length + 68);
76
- expect(format).toEqual(messageFormat);
77
- const signerCount = result.substring(SOLANA_HEADER.length + 68, SOLANA_HEADER.length + 70);
78
- expect(signerCount).toEqual("01");
79
- const signerAddress = result.substring(SOLANA_HEADER.length + 70, SOLANA_HEADER.length + 134);
80
- expect(signerAddress).toEqual(addressHex);
81
- const length = result.substring(SOLANA_HEADER.length + 134, SOLANA_HEADER.length + 138);
82
- expect(length).toEqual(messageLength);
83
- // message should end with message parameter
84
- expect(result.substring(SOLANA_HEADER.length + 138)).toEqual(hexadecimal);
85
- });
86
- const legacyCases = [
87
- ...sharedCases,
88
- {
89
- value: `example.com wants you to sign in with your Solana account: test-account
90
- URI: http://localhost:3000
91
- Version: 1
92
- Network: mainnet
93
- Nonce: once
94
- Issued At: now`,
95
- hexadecimal: "6578616d706c652e636f6d2077616e747320796f7520746f207369676e20696e207769746820796f757220536f6c616e61206163636f756e743a20746573742d6163636f756e740a5552493a20687474703a2f2f6c6f63616c686f73743a333030300a56657273696f6e3a20310a4e6574776f726b3a206d61696e6e65740a4e6f6e63653a206f6e63650a4973737565642041743a206e6f77",
96
- messageFormat: "01",
97
- messageLength: "9900",
98
- },
99
- {
100
- value: `shop.ledger.com wants you to sign in with your Solana account: 2XUhv9PZohcQrwsx3AnYMrHCbssWZuAFdwixd67ZYhYN
101
- URI: http://localhost:3000
102
- Version: 1
103
- Network: mainnet
104
- Nonce: 2XUhv9PZohcQrwsx3AnYMrHCbssWZuAFdwixd67ZYhYN-nonce
105
- Issued At: now`,
106
- hexadecimal: "73686f702e6c65646765722e636f6d2077616e747320796f7520746f207369676e20696e207769746820796f757220536f6c616e61206163636f756e743a20325855687639505a6f6863517277737833416e594d724843627373575a754146647769786436375a5968594e0a5552493a20687474703a2f2f6c6f63616c686f73743a333030300a56657273696f6e3a20310a4e6574776f726b3a206d61696e6e65740a4e6f6e63653a20325855687639505a6f6863517277737833416e594d724843627373575a754146647769786436375a5968594e2d6e6f6e63650a4973737565642041743a206e6f77",
107
- messageFormat: "01",
108
- messageLength: "eb00",
109
- },
110
- ];
111
- it.each(legacyCases)('should format message "$value" correctly for off-chain signing on Solana legacy', ({ value, hexadecimal, messageFormat, messageLength }) => {
112
- const result = (0, format_1.toOffChainMessage)(value, address, true).toString("hex");
113
- expect(result.startsWith(SOLANA_HEADER)).toBe(true);
114
- const version = result.substring(SOLANA_HEADER.length, SOLANA_HEADER.length + 2);
115
- expect(version).toEqual("00");
116
- const format = result.substring(SOLANA_HEADER.length + 2, SOLANA_HEADER.length + 4);
117
- expect(format).toEqual(messageFormat);
118
- const length = result.substring(SOLANA_HEADER.length + 4, SOLANA_HEADER.length + 8);
119
- expect(length).toEqual(messageLength);
120
- // message should end with message parameter
121
- expect(result.substring(SOLANA_HEADER.length + 8)).toEqual(hexadecimal);
122
- });
123
- });
124
- //# sourceMappingURL=format.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.unit.test.js","sourceRoot":"","sources":["../../src/offchainMessage/format.unit.test.ts"],"names":[],"mappings":";;AAAA,6CAA4C;AAC5C,qCAA6C;AAS7C,qCAAqC;AACrC,MAAM,aAAa,GAAG,kCAAkC,CAAC;AAEzD,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,MAAM,WAAW,GAAkB;QACjC;YACE,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,YAAY;YACzB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;QACD;YACE,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,gBAAgB;YAC7B,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;QACD;YACE,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,YAAY;YACzB,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;QACD;YACE,KAAK,EAAE,8BAA8B;YACrC,WAAW,EAAE,0DAA0D;YACvE,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;QACD;YACE,KAAK,EAAE,oCAAoC;YAC3C,WAAW,EACT,wHAAwH;YAC1H,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;KACF,CAAC;IAEF,MAAM,KAAK,GAAkB;QAC3B,GAAG,WAAW;QACd;YACE,KAAK,EAAE;;;;;eAKE;YACT,WAAW,EACT,oTAAoT;YACtT,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;QACD;YACE,KAAK,EAAE;;;;;eAKE;YACT,WAAW,EACT,wdAAwd;YAC1d,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,8CAA8C,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrE,MAAM,sBAAsB,GAAG,kEAAkE,CAAC;IAElG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CACZ,0EAA0E,EAC1E,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,CACxC,aAAa,CAAC,MAAM,GAAG,CAAC,EACxB,aAAa,CAAC,MAAM,GAAG,EAAE,CAC1B,CAAC;QACF,MAAM,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEtC,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAC3F,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,EAAE,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAC9F,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,EAAE,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QACxF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEtC,4CAA4C;QAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5E,CAAC,CACF,CAAC;IAEF,MAAM,WAAW,GAAkB;QACjC,GAAG,WAAW;QACd;YACE,KAAK,EAAE;;;;;eAKE;YACT,WAAW,EACT,oTAAoT;YACtT,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;QACD;YACE,KAAK,EAAE;;;;;eAKE;YACT,WAAW,EACT,wdAAwd;YAC1d,aAAa,EAAE,IAAI;YACnB,aAAa,EAAE,MAAM;SACtB;KACF,CAAC;IAEF,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAClB,iFAAiF,EACjF,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,IAAA,0BAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEvE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEtC,4CAA4C;QAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=preload.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preload.test.d.ts","sourceRoot":"","sources":["../src/preload.test.ts"],"names":[],"mappings":""}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const preload_1 = require("./preload");
4
- describe("hydrate", () => {
5
- it.each([undefined, null, {}, { version: null }, { version: undefined }, {}])("should return undefined if data is corrupted (%p value)", value => {
6
- expect((0, preload_1.hydrate)(value, {})).toEqual(undefined);
7
- });
8
- });
9
- //# sourceMappingURL=preload.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preload.test.js","sourceRoot":"","sources":["../src/preload.test.ts"],"names":[],"mappings":";;AACA,uCAAoC;AAGpC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAC3E,yDAAyD,EACzD,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,IAAA,iBAAO,EAAC,KAAqC,EAAE,EAAoB,CAAC,CAAC,CAAC,OAAO,CAClF,SAAS,CACV,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=prepareTransaction.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareTransaction.test.d.ts","sourceRoot":"","sources":["../src/prepareTransaction.test.ts"],"names":[],"mappings":""}
@@ -1,139 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const prepareTransaction_1 = require("./prepareTransaction");
7
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
- const helpers_fixture_1 = require("./__tests__/fixtures/helpers.fixture");
9
- const errors_1 = require("@ledgerhq/errors");
10
- jest.mock("./estimateMaxSpendable", () => {
11
- const originalModule = jest.requireActual("./estimateMaxSpendable");
12
- return {
13
- __esModule: true,
14
- ...originalModule,
15
- estimateFeeAndSpendable: jest.fn((_api, _account, _transaction) => Promise.resolve({ fee: 0, spendable: (0, bignumber_js_1.default)(0) })),
16
- };
17
- });
18
- describe("testing prepareTransaction", () => {
19
- it("packs a 'NotEnoughGas' error if the sender can not afford the fees during a token transfer", async () => {
20
- const preparedTransaction = await (0, prepareTransaction_1.prepareTransaction)(
21
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
22
- {
23
- currency: { units: [{ magnitude: 2 }] },
24
- subAccounts: [
25
- {
26
- id: "subAccountId",
27
- type: "TokenAccount",
28
- token: { contractAddress: "mintAddress", units: [{ magnitude: 2 }] },
29
- },
30
- ],
31
- }, (0, helpers_fixture_1.transaction)({ kind: "token.transfer", subAccountId: "subAccountId" }),
32
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
33
- {
34
- getAccountInfo: () => ({
35
- data: {
36
- parsed: {
37
- type: "mint",
38
- info: {
39
- mintAuthority: null,
40
- supply: "",
41
- decimals: 2,
42
- isInitialized: true,
43
- freezeAuthority: null,
44
- },
45
- },
46
- program: "spl-token",
47
- },
48
- }),
49
- });
50
- expect(preparedTransaction.model.commandDescriptor?.errors.gasPrice).toBeInstanceOf(errors_1.NotEnoughGas);
51
- });
52
- it("does not fail on unknown SPL 2022 extensions", async () => {
53
- const preparedTransaction = (0, prepareTransaction_1.prepareTransaction)({
54
- currency: { units: [{ magnitude: 2 }] },
55
- subAccounts: [
56
- {
57
- id: "subAccountId",
58
- type: "TokenAccount",
59
- token: { contractAddress: "mintAddress", units: [{ magnitude: 2 }] },
60
- },
61
- ],
62
- }, (0, helpers_fixture_1.transaction)({ kind: "token.transfer", subAccountId: "subAccountId" }), {
63
- getAccountInfo: () => ({
64
- data: {
65
- parsed: {
66
- type: "mint",
67
- info: {
68
- extensions: [{ extension: "defaultAccountState" }],
69
- mintAuthority: null,
70
- supply: "",
71
- decimals: 2,
72
- isInitialized: true,
73
- freezeAuthority: null,
74
- },
75
- },
76
- program: "spl-token-2022",
77
- },
78
- }),
79
- });
80
- await expect(() => preparedTransaction).not.toThrow();
81
- });
82
- it("should return a new transaction from the raw transaction when user provide it", async () => {
83
- // Given
84
- const estimatedFees = 0.00005;
85
- const rawTransaction = (0, helpers_fixture_1.transaction)({
86
- raw: "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDNzWs4isgmR+LEHY8ZcgBBLMnC4ckD1iuhSa2/Y+69I91oyGFaAZ/9w4srgx9KoqiHtPM6Vur7h4D6XVoSgrEhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALt5JNk+MAN8BXYrlkxMEL1C/sM3+ZFYwZw4eofBOKp4BAgIAAQwCAAAAgJaYAAAAAAA=",
87
- });
88
- const chainAPI = api(estimatedFees);
89
- const getFeeForMessageSpy = jest.spyOn(chainAPI, "getFeeForMessage");
90
- // When
91
- const preparedTransaction = await (0, prepareTransaction_1.prepareTransaction)(
92
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
93
- {}, rawTransaction, chainAPI);
94
- // Then
95
- expect(preparedTransaction).not.toBe(rawTransaction);
96
- expect(getFeeForMessageSpy).toHaveBeenCalledTimes(1);
97
- expect(preparedTransaction).toMatchObject({
98
- raw: rawTransaction.raw,
99
- family: "solana",
100
- amount: (0, bignumber_js_1.default)(0),
101
- recipient: "",
102
- model: {
103
- kind: "raw",
104
- uiState: {},
105
- commandDescriptor: {
106
- command: {
107
- kind: "raw",
108
- raw: rawTransaction.raw,
109
- },
110
- fee: estimatedFees,
111
- warnings: {},
112
- errors: {},
113
- },
114
- },
115
- });
116
- });
117
- it("should return a new transaction when user does not provide a raw one", async () => {
118
- const nonRawTransaction = (0, helpers_fixture_1.transaction)();
119
- const preparedTransaction = await (0, prepareTransaction_1.prepareTransaction)(
120
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
121
- {}, nonRawTransaction,
122
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
123
- {});
124
- expect(preparedTransaction).not.toBe(nonRawTransaction);
125
- });
126
- });
127
- function api(estimatedFees) {
128
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
129
- return {
130
- getLatestBlockhash: () => {
131
- return Promise.resolve({
132
- blockhash: "blockhash",
133
- lastValidBlockHeight: 1,
134
- });
135
- },
136
- getFeeForMessage: (_message) => Promise.resolve(estimatedFees),
137
- };
138
- }
139
- //# sourceMappingURL=prepareTransaction.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prepareTransaction.test.js","sourceRoot":"","sources":["../src/prepareTransaction.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { OperationType } from "@ledgerhq/types-live";
2
- export declare function toOperationType(kind: string): OperationType;
3
- //# sourceMappingURL=signOperation.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signOperation.test.d.ts","sourceRoot":"","sources":["../src/signOperation.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,aAAa,EAAsB,MAAM,sBAAsB,CAAC;AA8J7F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAO3D"}