@ledgerhq/coin-solana 0.35.0-nightly.9 → 0.35.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 (199) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +28 -90
  3. package/lib/__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json +50 -0
  4. package/lib/__tests__/fixtures/helpers.fixture.d.ts +138 -0
  5. package/lib/__tests__/fixtures/helpers.fixture.d.ts.map +1 -0
  6. package/lib/__tests__/fixtures/helpers.fixture.js +124 -0
  7. package/lib/__tests__/fixtures/helpers.fixture.js.map +1 -0
  8. package/lib/__tests__/scan-accounts.test.d.ts +2 -0
  9. package/lib/__tests__/scan-accounts.test.d.ts.map +1 -0
  10. package/lib/__tests__/scan-accounts.test.js +426 -0
  11. package/lib/__tests__/scan-accounts.test.js.map +1 -0
  12. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts +2 -0
  13. package/lib/__tests__/unit/hw-signMessage.unit.test.d.ts.map +1 -0
  14. package/lib/__tests__/unit/hw-signMessage.unit.test.js +91 -0
  15. package/lib/__tests__/unit/hw-signMessage.unit.test.js.map +1 -0
  16. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts +2 -0
  17. package/lib/__tests__/unit/nftResolvers.unit.test.d.ts.map +1 -0
  18. package/lib/__tests__/unit/nftResolvers.unit.test.js +147 -0
  19. package/lib/__tests__/unit/nftResolvers.unit.test.js.map +1 -0
  20. package/lib/__tests__/unit/utils.unit.test.d.ts +2 -0
  21. package/lib/__tests__/unit/utils.unit.test.d.ts.map +1 -0
  22. package/lib/__tests__/unit/utils.unit.test.js +16 -0
  23. package/lib/__tests__/unit/utils.unit.test.js.map +1 -0
  24. package/lib/__tests__/unit/validator-app.unit.test.d.ts +2 -0
  25. package/lib/__tests__/unit/validator-app.unit.test.d.ts.map +1 -0
  26. package/lib/__tests__/unit/validator-app.unit.test.js +169 -0
  27. package/lib/__tests__/unit/validator-app.unit.test.js.map +1 -0
  28. package/lib/bridge.integration.test.d.ts +4 -0
  29. package/lib/bridge.integration.test.d.ts.map +1 -0
  30. package/lib/bridge.integration.test.js +870 -0
  31. package/lib/bridge.integration.test.js.map +1 -0
  32. package/lib/buildTransaction.test.d.ts +2 -0
  33. package/lib/buildTransaction.test.d.ts.map +1 -0
  34. package/lib/buildTransaction.test.js +164 -0
  35. package/lib/buildTransaction.test.js.map +1 -0
  36. package/lib/cryptoAssetsStore.test.d.ts +2 -0
  37. package/lib/cryptoAssetsStore.test.d.ts.map +1 -0
  38. package/lib/cryptoAssetsStore.test.js +15 -0
  39. package/lib/cryptoAssetsStore.test.js.map +1 -0
  40. package/lib/network/chain/account/parser.d.ts +1 -1
  41. package/lib/network/chain/account/stake.d.ts +23 -23
  42. package/lib/network/chain/account/token.d.ts +7 -7
  43. package/lib/network/chain/instruction/stake/types.d.ts +8 -8
  44. package/lib/network/chain/instruction/system/types.d.ts +14 -14
  45. package/lib/network/chain/web3.integration.test.d.ts +2 -0
  46. package/lib/network/chain/web3.integration.test.d.ts.map +1 -0
  47. package/lib/network/chain/web3.integration.test.js +70 -0
  48. package/lib/network/chain/web3.integration.test.js.map +1 -0
  49. package/lib/offchainMessage/format.unit.test.d.ts +2 -0
  50. package/lib/offchainMessage/format.unit.test.d.ts.map +1 -0
  51. package/lib/offchainMessage/format.unit.test.js +124 -0
  52. package/lib/offchainMessage/format.unit.test.js.map +1 -0
  53. package/lib/preload.test.d.ts +2 -0
  54. package/lib/preload.test.d.ts.map +1 -0
  55. package/lib/preload.test.js +9 -0
  56. package/lib/preload.test.js.map +1 -0
  57. package/lib/prepareTransaction.d.ts.map +1 -1
  58. package/lib/prepareTransaction.js +0 -4
  59. package/lib/prepareTransaction.js.map +1 -1
  60. package/lib/prepareTransaction.test.d.ts +2 -0
  61. package/lib/prepareTransaction.test.d.ts.map +1 -0
  62. package/lib/prepareTransaction.test.js +139 -0
  63. package/lib/prepareTransaction.test.js.map +1 -0
  64. package/lib/signOperation.d.ts.map +1 -1
  65. package/lib/signOperation.js +0 -2
  66. package/lib/signOperation.js.map +1 -1
  67. package/lib/signOperation.test.d.ts +3 -0
  68. package/lib/signOperation.test.d.ts.map +1 -0
  69. package/lib/signOperation.test.js +139 -0
  70. package/lib/signOperation.test.js.map +1 -0
  71. package/lib/signer.d.ts +0 -1
  72. package/lib/signer.d.ts.map +1 -1
  73. package/lib/signer.js.map +1 -1
  74. package/lib/tests/preload.fixtures.d.ts +5 -0
  75. package/lib/tests/preload.fixtures.d.ts.map +1 -0
  76. package/lib/tests/preload.fixtures.js +28 -0
  77. package/lib/tests/preload.fixtures.js.map +1 -0
  78. package/lib/tests/preload.unit.test.d.ts +2 -0
  79. package/lib/tests/preload.unit.test.d.ts.map +1 -0
  80. package/lib/tests/preload.unit.test.js +175 -0
  81. package/lib/tests/preload.unit.test.js.map +1 -0
  82. package/lib/tests/stakes-bridge.unit.test.d.ts +2 -0
  83. package/lib/tests/stakes-bridge.unit.test.d.ts.map +1 -0
  84. package/lib/tests/stakes-bridge.unit.test.js +166 -0
  85. package/lib/tests/stakes-bridge.unit.test.js.map +1 -0
  86. package/lib/tests/test-onchain-data.fixture.d.ts +20 -0
  87. package/lib/tests/test-onchain-data.fixture.d.ts.map +1 -0
  88. package/lib/tests/test-onchain-data.fixture.js +34 -0
  89. package/lib/tests/test-onchain-data.fixture.js.map +1 -0
  90. package/lib/tests/tokens-bridge.unit.test.d.ts +2 -0
  91. package/lib/tests/tokens-bridge.unit.test.d.ts.map +1 -0
  92. package/lib/tests/tokens-bridge.unit.test.js +615 -0
  93. package/lib/tests/tokens-bridge.unit.test.js.map +1 -0
  94. package/lib/tx-fees.js +0 -2
  95. package/lib/tx-fees.js.map +1 -1
  96. package/lib/types.d.ts +1 -2
  97. package/lib/types.d.ts.map +1 -1
  98. package/lib-es/__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json +50 -0
  99. package/lib-es/__tests__/fixtures/helpers.fixture.d.ts +138 -0
  100. package/lib-es/__tests__/fixtures/helpers.fixture.d.ts.map +1 -0
  101. package/lib-es/__tests__/fixtures/helpers.fixture.js +110 -0
  102. package/lib-es/__tests__/fixtures/helpers.fixture.js.map +1 -0
  103. package/lib-es/__tests__/scan-accounts.test.d.ts +2 -0
  104. package/lib-es/__tests__/scan-accounts.test.d.ts.map +1 -0
  105. package/lib-es/__tests__/scan-accounts.test.js +398 -0
  106. package/lib-es/__tests__/scan-accounts.test.js.map +1 -0
  107. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts +2 -0
  108. package/lib-es/__tests__/unit/hw-signMessage.unit.test.d.ts.map +1 -0
  109. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js +86 -0
  110. package/lib-es/__tests__/unit/hw-signMessage.unit.test.js.map +1 -0
  111. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts +2 -0
  112. package/lib-es/__tests__/unit/nftResolvers.unit.test.d.ts.map +1 -0
  113. package/lib-es/__tests__/unit/nftResolvers.unit.test.js +142 -0
  114. package/lib-es/__tests__/unit/nftResolvers.unit.test.js.map +1 -0
  115. package/lib-es/__tests__/unit/utils.unit.test.d.ts +2 -0
  116. package/lib-es/__tests__/unit/utils.unit.test.d.ts.map +1 -0
  117. package/lib-es/__tests__/unit/utils.unit.test.js +14 -0
  118. package/lib-es/__tests__/unit/utils.unit.test.js.map +1 -0
  119. package/lib-es/__tests__/unit/validator-app.unit.test.d.ts +2 -0
  120. package/lib-es/__tests__/unit/validator-app.unit.test.d.ts.map +1 -0
  121. package/lib-es/__tests__/unit/validator-app.unit.test.js +144 -0
  122. package/lib-es/__tests__/unit/validator-app.unit.test.js.map +1 -0
  123. package/lib-es/bridge.integration.test.d.ts +4 -0
  124. package/lib-es/bridge.integration.test.d.ts.map +1 -0
  125. package/lib-es/bridge.integration.test.js +864 -0
  126. package/lib-es/bridge.integration.test.js.map +1 -0
  127. package/lib-es/buildTransaction.test.d.ts +2 -0
  128. package/lib-es/buildTransaction.test.d.ts.map +1 -0
  129. package/lib-es/buildTransaction.test.js +162 -0
  130. package/lib-es/buildTransaction.test.js.map +1 -0
  131. package/lib-es/cryptoAssetsStore.test.d.ts +2 -0
  132. package/lib-es/cryptoAssetsStore.test.d.ts.map +1 -0
  133. package/lib-es/cryptoAssetsStore.test.js +13 -0
  134. package/lib-es/cryptoAssetsStore.test.js.map +1 -0
  135. package/lib-es/network/chain/account/parser.d.ts +1 -1
  136. package/lib-es/network/chain/account/stake.d.ts +23 -23
  137. package/lib-es/network/chain/account/token.d.ts +7 -7
  138. package/lib-es/network/chain/instruction/stake/types.d.ts +8 -8
  139. package/lib-es/network/chain/instruction/system/types.d.ts +14 -14
  140. package/lib-es/network/chain/web3.integration.test.d.ts +2 -0
  141. package/lib-es/network/chain/web3.integration.test.d.ts.map +1 -0
  142. package/lib-es/network/chain/web3.integration.test.js +68 -0
  143. package/lib-es/network/chain/web3.integration.test.js.map +1 -0
  144. package/lib-es/offchainMessage/format.unit.test.d.ts +2 -0
  145. package/lib-es/offchainMessage/format.unit.test.d.ts.map +1 -0
  146. package/lib-es/offchainMessage/format.unit.test.js +122 -0
  147. package/lib-es/offchainMessage/format.unit.test.js.map +1 -0
  148. package/lib-es/preload.test.d.ts +2 -0
  149. package/lib-es/preload.test.d.ts.map +1 -0
  150. package/lib-es/preload.test.js +7 -0
  151. package/lib-es/preload.test.js.map +1 -0
  152. package/lib-es/prepareTransaction.d.ts.map +1 -1
  153. package/lib-es/prepareTransaction.js +0 -4
  154. package/lib-es/prepareTransaction.js.map +1 -1
  155. package/lib-es/prepareTransaction.test.d.ts +2 -0
  156. package/lib-es/prepareTransaction.test.d.ts.map +1 -0
  157. package/lib-es/prepareTransaction.test.js +134 -0
  158. package/lib-es/prepareTransaction.test.js.map +1 -0
  159. package/lib-es/signOperation.d.ts.map +1 -1
  160. package/lib-es/signOperation.js +0 -2
  161. package/lib-es/signOperation.js.map +1 -1
  162. package/lib-es/signOperation.test.d.ts +3 -0
  163. package/lib-es/signOperation.test.d.ts.map +1 -0
  164. package/lib-es/signOperation.test.js +135 -0
  165. package/lib-es/signOperation.test.js.map +1 -0
  166. package/lib-es/signer.d.ts +0 -1
  167. package/lib-es/signer.d.ts.map +1 -1
  168. package/lib-es/signer.js.map +1 -1
  169. package/lib-es/tests/preload.fixtures.d.ts +5 -0
  170. package/lib-es/tests/preload.fixtures.d.ts.map +1 -0
  171. package/lib-es/tests/preload.fixtures.js +25 -0
  172. package/lib-es/tests/preload.fixtures.js.map +1 -0
  173. package/lib-es/tests/preload.unit.test.d.ts +2 -0
  174. package/lib-es/tests/preload.unit.test.d.ts.map +1 -0
  175. package/lib-es/tests/preload.unit.test.js +147 -0
  176. package/lib-es/tests/preload.unit.test.js.map +1 -0
  177. package/lib-es/tests/stakes-bridge.unit.test.d.ts +2 -0
  178. package/lib-es/tests/stakes-bridge.unit.test.d.ts.map +1 -0
  179. package/lib-es/tests/stakes-bridge.unit.test.js +161 -0
  180. package/lib-es/tests/stakes-bridge.unit.test.js.map +1 -0
  181. package/lib-es/tests/test-onchain-data.fixture.d.ts +20 -0
  182. package/lib-es/tests/test-onchain-data.fixture.d.ts.map +1 -0
  183. package/lib-es/tests/test-onchain-data.fixture.js +28 -0
  184. package/lib-es/tests/test-onchain-data.fixture.js.map +1 -0
  185. package/lib-es/tests/tokens-bridge.unit.test.d.ts +2 -0
  186. package/lib-es/tests/tokens-bridge.unit.test.d.ts.map +1 -0
  187. package/lib-es/tests/tokens-bridge.unit.test.js +610 -0
  188. package/lib-es/tests/tokens-bridge.unit.test.js.map +1 -0
  189. package/lib-es/tx-fees.js +0 -2
  190. package/lib-es/tx-fees.js.map +1 -1
  191. package/lib-es/types.d.ts +1 -2
  192. package/lib-es/types.d.ts.map +1 -1
  193. package/package.json +9 -9
  194. package/src/prepareTransaction.ts +0 -4
  195. package/src/signOperation.ts +0 -2
  196. package/src/signer.ts +0 -1
  197. package/src/tests/preload.fixtures.ts +1 -1
  198. package/src/tx-fees.ts +0 -2
  199. package/src/types.ts +1 -2
@@ -0,0 +1,615 @@
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 bignumber_js_1 = __importDefault(require("bignumber.js"));
7
+ const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
8
+ const errors_1 = require("../errors");
9
+ const logic_1 = require("../logic");
10
+ const network_1 = require("../network");
11
+ const getTransactionStatus_1 = __importDefault(require("../getTransactionStatus"));
12
+ const prepareTransaction_1 = require("../prepareTransaction");
13
+ const accountId_1 = require("@ledgerhq/coin-framework/lib/account/accountId");
14
+ const web3_js_1 = require("@solana/web3.js");
15
+ const spl_token_1 = require("@solana/spl-token");
16
+ const token_1 = require("../helpers/token");
17
+ const constants_1 = require("../network/chain/program/constants");
18
+ const cryptoAssetsStore_1 = require("../cryptoAssetsStore");
19
+ const solana_spl_epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v_json_1 = __importDefault(require("../__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json"));
20
+ const USDC_TOKEN = solana_spl_epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v_json_1.default;
21
+ // fake addresses
22
+ const testData = {
23
+ address1: "8DpKDisipx6f76cEmuGvCX9TrA3SjeR76HaTRePxHBDe",
24
+ address2: "6oK54jLodm3D5Qd7Zju5D4LPXhWX61hzog15pvc6UVrX",
25
+ address3: "DYS9SVj8nhK2V7NprSRqbWpiF8euSGWv4QTSX45HTbfX",
26
+ mintAddress: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
27
+ ataAddress1: web3_js_1.PublicKey.findProgramAddressSync([
28
+ new web3_js_1.PublicKey("8DpKDisipx6f76cEmuGvCX9TrA3SjeR76HaTRePxHBDe").toBuffer(),
29
+ spl_token_1.TOKEN_PROGRAM_ID.toBuffer(),
30
+ new web3_js_1.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v").toBuffer(),
31
+ ], spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID)[0].toBase58(),
32
+ fees: 5000,
33
+ };
34
+ const mainAccId = (0, accountId_1.encodeAccountId)({
35
+ type: "js",
36
+ version: "2",
37
+ currencyId: "solana",
38
+ xpubOrAddress: testData.address1,
39
+ derivationMode: "solanaMain",
40
+ });
41
+ const wSolSubAccId = (0, logic_1.encodeAccountIdWithTokenAccountAddress)(mainAccId, testData.ataAddress1);
42
+ (0, cryptoAssetsStore_1.setCryptoAssetsStoreGetter)(() =>
43
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
44
+ ({
45
+ findTokenByAddressInCurrency: (address, _currencyId) => {
46
+ if (address === "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v") {
47
+ return USDC_TOKEN;
48
+ }
49
+ return undefined;
50
+ },
51
+ }));
52
+ const wSolToken = (0, cryptoAssetsStore_1.getCryptoAssetsStore)().findTokenByAddressInCurrency(testData.mintAddress, "solana");
53
+ const baseAccount = {
54
+ balance: new bignumber_js_1.default(10000),
55
+ spendableBalance: new bignumber_js_1.default(10000),
56
+ };
57
+ const baseAPI = {
58
+ getLatestBlockhash: () => Promise.resolve({
59
+ blockhash: network_1.LATEST_BLOCKHASH_MOCK,
60
+ lastValidBlockHeight: network_1.LAST_VALID_BLOCK_HEIGHT_MOCK,
61
+ }),
62
+ getFeeForMessage: (_msg) => Promise.resolve(testData.fees),
63
+ getRecentPrioritizationFees: (_) => {
64
+ return Promise.resolve([
65
+ {
66
+ slot: 122422797,
67
+ prioritizationFee: 0,
68
+ },
69
+ {
70
+ slot: 122422797,
71
+ prioritizationFee: 0,
72
+ },
73
+ ]);
74
+ },
75
+ getSimulationComputeUnits: (_ixs, _payer) => Promise.resolve(1000),
76
+ getBalance: (_) => Promise.resolve(10),
77
+ findAssocTokenAccAddress: (owner, mint, program) => {
78
+ return Promise.resolve(web3_js_1.PublicKey.findProgramAddressSync([
79
+ new web3_js_1.PublicKey(owner).toBuffer(),
80
+ program === "spl-token" ? spl_token_1.TOKEN_PROGRAM_ID.toBuffer() : spl_token_1.TOKEN_2022_PROGRAM_ID.toBuffer(),
81
+ new web3_js_1.PublicKey(mint).toBuffer(),
82
+ ], spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID)[0].toBase58());
83
+ },
84
+ };
85
+ // Broken tests as the address used is not support anymore
86
+ // Returning other errors we don't expect
87
+ describe("Solana tokens bridge integration tests", () => {
88
+ const baseSolanaAccount = {
89
+ ...baseAccount,
90
+ freshAddress: testData.address1,
91
+ solanaResources: { stakes: [], unstakeReserve: (0, bignumber_js_1.default)(0) },
92
+ };
93
+ const baseTxModel = {
94
+ kind: "token.transfer",
95
+ uiState: {
96
+ subAccountId: wSolSubAccId,
97
+ },
98
+ };
99
+ const baseTx = {
100
+ model: baseTxModel,
101
+ amount: new bignumber_js_1.default(10),
102
+ recipient: testData.address2,
103
+ family: "solana",
104
+ };
105
+ const baseAtaMock = {
106
+ parsed: {
107
+ info: {
108
+ isNative: false,
109
+ mint: wSolToken.contractAddress,
110
+ owner: testData.address1,
111
+ state: "initialized",
112
+ tokenAmount: {
113
+ amount: "10000000",
114
+ decimals: wSolToken.units[0].magnitude,
115
+ uiAmount: 10.0,
116
+ uiAmountString: "10",
117
+ },
118
+ },
119
+ type: "account",
120
+ },
121
+ program: constants_1.PARSED_PROGRAMS.SPL_TOKEN,
122
+ space: 165,
123
+ };
124
+ const frozenAtaMock = {
125
+ ...baseAtaMock,
126
+ parsed: {
127
+ ...baseAtaMock.parsed,
128
+ info: {
129
+ ...baseAtaMock.parsed.info,
130
+ state: "frozen",
131
+ },
132
+ },
133
+ };
134
+ const mockedTokenAcc = {
135
+ type: "TokenAccount",
136
+ id: wSolSubAccId,
137
+ parentId: mainAccId,
138
+ token: wSolToken,
139
+ balance: new bignumber_js_1.default(100),
140
+ operations: [],
141
+ pendingOperations: [],
142
+ spendableBalance: new bignumber_js_1.default(100),
143
+ state: "initialized",
144
+ creationDate: new Date(),
145
+ operationsCount: 0,
146
+ balanceHistoryCache: {
147
+ HOUR: { balances: [], latestDate: null },
148
+ DAY: { balances: [], latestDate: null },
149
+ WEEK: { balances: [], latestDate: null },
150
+ },
151
+ swapHistory: [],
152
+ };
153
+ const baseAta2022Mock = {
154
+ parsed: {
155
+ info: {
156
+ isNative: false,
157
+ mint: wSolToken.contractAddress,
158
+ owner: testData.address1,
159
+ state: "initialized",
160
+ tokenAmount: {
161
+ amount: "10000000",
162
+ decimals: wSolToken.units[0].magnitude,
163
+ uiAmount: 10.0,
164
+ uiAmountString: "10",
165
+ },
166
+ },
167
+ type: "account",
168
+ },
169
+ program: constants_1.PARSED_PROGRAMS.SPL_TOKEN_2022,
170
+ space: 165,
171
+ };
172
+ const baseTokenMintMock = {
173
+ data: {
174
+ parsed: {
175
+ info: {
176
+ decimals: 9,
177
+ freezeAuthority: null,
178
+ isInitialized: true,
179
+ mintAuthority: null,
180
+ supply: "0",
181
+ },
182
+ type: "mint",
183
+ },
184
+ program: constants_1.PARSED_PROGRAMS.SPL_TOKEN,
185
+ space: 82,
186
+ },
187
+ executable: false,
188
+ lamports: 419787401967,
189
+ owner: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
190
+ rentEpoch: 304,
191
+ };
192
+ const baseToken2022MintMock = {
193
+ ...baseTokenMintMock,
194
+ data: {
195
+ ...baseTokenMintMock.data,
196
+ parsed: {
197
+ ...baseTokenMintMock.data.parsed,
198
+ info: {
199
+ ...baseTokenMintMock.data.parsed.info,
200
+ extensions: [],
201
+ },
202
+ },
203
+ program: constants_1.PARSED_PROGRAMS.SPL_TOKEN_2022,
204
+ },
205
+ };
206
+ const mockedToken2022Acc = {
207
+ ...mockedTokenAcc,
208
+ };
209
+ const buildTransferFeeConfig = (bps, maxFee) => {
210
+ return {
211
+ extension: "transferFeeConfig",
212
+ state: {
213
+ newerTransferFee: {
214
+ epoch: 300,
215
+ maximumFee: maxFee,
216
+ transferFeeBasisPoints: bps,
217
+ },
218
+ olderTransferFee: {
219
+ epoch: 299,
220
+ maximumFee: maxFee,
221
+ transferFeeBasisPoints: bps,
222
+ },
223
+ transferFeeConfigAuthority: null,
224
+ withdrawWithheldAuthority: null,
225
+ withheldAmount: 0,
226
+ },
227
+ };
228
+ };
229
+ test("token.transfer :: status is success", async () => {
230
+ const api = {
231
+ ...baseAPI,
232
+ getAccountInfo: (address) => {
233
+ if (address === wSolToken.contractAddress) {
234
+ return Promise.resolve(baseTokenMintMock);
235
+ }
236
+ if (address === testData.address2) {
237
+ return Promise.resolve({ data: {} });
238
+ }
239
+ return Promise.resolve({ data: baseAtaMock });
240
+ },
241
+ };
242
+ const account = {
243
+ ...baseSolanaAccount,
244
+ subAccounts: [mockedTokenAcc],
245
+ };
246
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, baseTx, api);
247
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
248
+ const expectedTxStatus = {
249
+ amount: new bignumber_js_1.default(10),
250
+ estimatedFees: new bignumber_js_1.default(testData.fees),
251
+ totalSpent: new bignumber_js_1.default(10),
252
+ errors: {},
253
+ warnings: {},
254
+ };
255
+ expect(receivedTxStatus).toEqual(expectedTxStatus);
256
+ });
257
+ // Send flow
258
+ test("token.transfer :: status is success: transfer with subAccountId", async () => {
259
+ const api = {
260
+ ...baseAPI,
261
+ getAccountInfo: (address) => {
262
+ if (address === wSolToken.contractAddress) {
263
+ return Promise.resolve(baseTokenMintMock);
264
+ }
265
+ if (address === testData.address2) {
266
+ return Promise.resolve({ data: {} });
267
+ }
268
+ return Promise.resolve({ data: baseAtaMock });
269
+ },
270
+ };
271
+ const account = {
272
+ ...baseSolanaAccount,
273
+ subAccounts: [mockedTokenAcc],
274
+ };
275
+ const transferTxWithSubAccountId = {
276
+ model: {
277
+ kind: "transfer",
278
+ uiState: {},
279
+ },
280
+ amount: new bignumber_js_1.default(10),
281
+ recipient: testData.address2,
282
+ family: "solana",
283
+ subAccountId: wSolSubAccId,
284
+ };
285
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, transferTxWithSubAccountId, api);
286
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
287
+ const expectedTxStatus = {
288
+ amount: new bignumber_js_1.default(10),
289
+ estimatedFees: new bignumber_js_1.default(testData.fees),
290
+ totalSpent: new bignumber_js_1.default(10),
291
+ errors: {},
292
+ warnings: {},
293
+ };
294
+ expect(preparedTx.model.commandDescriptor?.command.kind).toEqual("token.transfer");
295
+ expect(receivedTxStatus).toEqual(expectedTxStatus);
296
+ });
297
+ test("token.transfer :: status is error: sender ATA is frozen", async () => {
298
+ const api = {
299
+ ...baseAPI,
300
+ getAccountInfo: (address) => {
301
+ if (address === wSolToken.contractAddress) {
302
+ return Promise.resolve(baseTokenMintMock);
303
+ }
304
+ if (address === testData.address2) {
305
+ return Promise.resolve({ data: {} });
306
+ }
307
+ return Promise.resolve({ data: baseAtaMock });
308
+ },
309
+ };
310
+ const tokenAcc = {
311
+ ...mockedTokenAcc,
312
+ state: "frozen",
313
+ };
314
+ const account = {
315
+ ...baseSolanaAccount,
316
+ subAccounts: [tokenAcc],
317
+ };
318
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, baseTx, api);
319
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
320
+ const expectedTxStatus = {
321
+ amount: new bignumber_js_1.default(10),
322
+ estimatedFees: new bignumber_js_1.default(testData.fees),
323
+ totalSpent: new bignumber_js_1.default(10),
324
+ errors: {
325
+ amount: new errors_1.SolanaTokenAccountFrozen(),
326
+ },
327
+ warnings: {},
328
+ };
329
+ expect(receivedTxStatus).toEqual(expectedTxStatus);
330
+ });
331
+ test("token.transfer :: status is error: recipient ATA is frozen", async () => {
332
+ const api = {
333
+ ...baseAPI,
334
+ getAccountInfo: (address) => {
335
+ if (address === wSolToken.contractAddress) {
336
+ return Promise.resolve(baseTokenMintMock);
337
+ }
338
+ if (address === testData.address2) {
339
+ return Promise.resolve({ data: {} });
340
+ }
341
+ return Promise.resolve({ data: frozenAtaMock });
342
+ },
343
+ };
344
+ const tokenAcc = {
345
+ ...mockedTokenAcc,
346
+ };
347
+ const account = {
348
+ ...baseSolanaAccount,
349
+ subAccounts: [tokenAcc],
350
+ };
351
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, baseTx, api);
352
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
353
+ const expectedTxStatus = {
354
+ amount: new bignumber_js_1.default(10),
355
+ estimatedFees: new bignumber_js_1.default(testData.fees),
356
+ totalSpent: new bignumber_js_1.default(10),
357
+ errors: {
358
+ recipient: new errors_1.SolanaTokenAccountFrozen(),
359
+ },
360
+ warnings: {},
361
+ };
362
+ expect(receivedTxStatus).toEqual(expectedTxStatus);
363
+ });
364
+ test("token2022.transfer :: status is success", async () => {
365
+ const api = {
366
+ ...baseAPI,
367
+ getAccountInfo: (address) => {
368
+ if (address === wSolToken.contractAddress) {
369
+ return Promise.resolve(baseToken2022MintMock);
370
+ }
371
+ if (address === testData.address2) {
372
+ return Promise.resolve({ data: {} });
373
+ }
374
+ return Promise.resolve({ data: baseAta2022Mock });
375
+ },
376
+ };
377
+ const account = {
378
+ ...baseSolanaAccount,
379
+ subAccounts: [mockedToken2022Acc],
380
+ };
381
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, baseTx, api);
382
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
383
+ const expectedTxStatus = {
384
+ amount: new bignumber_js_1.default(10),
385
+ estimatedFees: new bignumber_js_1.default(testData.fees),
386
+ totalSpent: new bignumber_js_1.default(10),
387
+ errors: {},
388
+ warnings: {},
389
+ };
390
+ expect(receivedTxStatus).toEqual(expectedTxStatus);
391
+ });
392
+ test("token2022.transfer :: ATA with required memo :: status is error", async () => {
393
+ const ataWithRequiredMemoMock = (0, cloneDeep_1.default)(baseAta2022Mock);
394
+ ataWithRequiredMemoMock.parsed.info.extensions = [
395
+ {
396
+ extension: "memoTransfer",
397
+ state: { requireIncomingTransferMemos: true },
398
+ },
399
+ ];
400
+ const api = {
401
+ ...baseAPI,
402
+ getAccountInfo: (address) => {
403
+ if (address === wSolToken.contractAddress) {
404
+ return Promise.resolve(baseToken2022MintMock);
405
+ }
406
+ if (address === testData.address2) {
407
+ return Promise.resolve({ data: {} });
408
+ }
409
+ return Promise.resolve({ data: ataWithRequiredMemoMock });
410
+ },
411
+ getBalance: () => Promise.resolve(10),
412
+ };
413
+ const account = {
414
+ ...baseSolanaAccount,
415
+ subAccounts: [mockedToken2022Acc],
416
+ };
417
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, baseTx, api);
418
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
419
+ const expectedErrors = {
420
+ memo: new errors_1.SolanaRecipientMemoIsRequired(),
421
+ transaction: new errors_1.SolanaRecipientMemoIsRequired(),
422
+ };
423
+ expect(receivedTxStatus.errors).toEqual(expectedErrors);
424
+ });
425
+ test("token2022.transfer :: correct transfer fee extension calculations", async () => {
426
+ const mintWithTransferFeeMock = (0, cloneDeep_1.default)(baseToken2022MintMock);
427
+ mintWithTransferFeeMock.data.program = constants_1.PARSED_PROGRAMS.SPL_TOKEN_2022;
428
+ const magnitude = (0, bignumber_js_1.default)(10).pow(baseTokenMintMock.data.parsed.info.decimals);
429
+ const maxFee = (0, bignumber_js_1.default)(10).times(magnitude).toNumber();
430
+ const bps = 100;
431
+ const transferConfigExt = buildTransferFeeConfig(bps, maxFee);
432
+ mintWithTransferFeeMock.data.parsed.info.extensions = [transferConfigExt];
433
+ const api = {
434
+ ...baseAPI,
435
+ getAccountInfo: (address) => {
436
+ if (address === wSolToken.contractAddress) {
437
+ return Promise.resolve(mintWithTransferFeeMock);
438
+ }
439
+ if (address === testData.address2) {
440
+ return Promise.resolve({ data: {} });
441
+ }
442
+ return Promise.resolve({ data: baseAta2022Mock });
443
+ },
444
+ getBalance: () => Promise.resolve((0, bignumber_js_1.default)(100).times(magnitude).toNumber()),
445
+ getEpochInfo: () => Promise.resolve({ epoch: 300 }),
446
+ };
447
+ const account = {
448
+ ...baseSolanaAccount,
449
+ subAccounts: [
450
+ {
451
+ ...mockedToken2022Acc,
452
+ balance: (0, bignumber_js_1.default)(100).times(magnitude),
453
+ spendableBalance: (0, bignumber_js_1.default)(100).times(magnitude),
454
+ },
455
+ ],
456
+ };
457
+ const tx = {
458
+ ...baseTx,
459
+ amount: (0, bignumber_js_1.default)(1).times(magnitude),
460
+ };
461
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, tx, api);
462
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
463
+ const expectedExtensions = {
464
+ transferFee: (0, token_1.calculateToken2022TransferFees)({
465
+ transferAmount: tx.amount.toNumber(),
466
+ currentEpoch: 300,
467
+ transferFeeConfigState: transferConfigExt.state,
468
+ }),
469
+ };
470
+ const expectedTxStatus = {
471
+ amount: tx.amount,
472
+ estimatedFees: new bignumber_js_1.default(testData.fees),
473
+ totalSpent: new bignumber_js_1.default(expectedExtensions.transferFee.transferAmountIncludingFee),
474
+ errors: {},
475
+ warnings: {},
476
+ };
477
+ expect(receivedTxStatus).toEqual(expectedTxStatus);
478
+ expect((preparedTx.model.commandDescriptor?.command).extensions).toEqual(expectedExtensions);
479
+ });
480
+ test("token2022.transfer :: transfer fee with useAllAmount", async () => {
481
+ const mintWithTransferFeeMock = (0, cloneDeep_1.default)(baseToken2022MintMock);
482
+ mintWithTransferFeeMock.data.program = constants_1.PARSED_PROGRAMS.SPL_TOKEN_2022;
483
+ const magnitude = (0, bignumber_js_1.default)(10).pow(baseTokenMintMock.data.parsed.info.decimals);
484
+ const maxFee = (0, bignumber_js_1.default)(10).times(magnitude).toNumber();
485
+ const bps = 100;
486
+ const transferConfigExt = buildTransferFeeConfig(bps, maxFee);
487
+ mintWithTransferFeeMock.data.parsed.info.extensions = [transferConfigExt];
488
+ const balance = (0, bignumber_js_1.default)(100).times(magnitude);
489
+ const api = {
490
+ ...baseAPI,
491
+ getAccountInfo: (address) => {
492
+ if (address === wSolToken.contractAddress) {
493
+ return Promise.resolve(mintWithTransferFeeMock);
494
+ }
495
+ if (address === testData.address2) {
496
+ return Promise.resolve({ data: {} });
497
+ }
498
+ return Promise.resolve({ data: baseAta2022Mock });
499
+ },
500
+ getBalance: () => Promise.resolve(balance.toNumber()),
501
+ getEpochInfo: () => Promise.resolve({ epoch: 300 }),
502
+ };
503
+ const account = {
504
+ ...baseSolanaAccount,
505
+ subAccounts: [
506
+ {
507
+ ...mockedToken2022Acc,
508
+ balance: balance,
509
+ spendableBalance: balance,
510
+ extensions: {
511
+ transferFee: { feeBps: bps },
512
+ },
513
+ },
514
+ ],
515
+ };
516
+ const tx = {
517
+ ...baseTx,
518
+ useAllAmount: true,
519
+ amount: (0, bignumber_js_1.default)(0),
520
+ };
521
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, tx, api);
522
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
523
+ const maxSpendable = (0, token_1.calculateToken2022TransferFees)({
524
+ transferAmount: balance.toNumber(),
525
+ currentEpoch: 300,
526
+ transferFeeConfigState: transferConfigExt.state,
527
+ }).transferAmountExcludingFee;
528
+ const transferFeeConfig = (0, token_1.calculateToken2022TransferFees)({
529
+ transferAmount: maxSpendable,
530
+ currentEpoch: 300,
531
+ transferFeeConfigState: transferConfigExt.state,
532
+ });
533
+ const expectedTxStatus = {
534
+ amount: new bignumber_js_1.default(maxSpendable),
535
+ estimatedFees: new bignumber_js_1.default(testData.fees),
536
+ totalSpent: new bignumber_js_1.default(transferFeeConfig.transferAmountIncludingFee),
537
+ errors: {},
538
+ warnings: {},
539
+ };
540
+ expect((preparedTx.model.commandDescriptor?.command).amount).toBe(maxSpendable);
541
+ expect((preparedTx.model.commandDescriptor?.command).extensions?.transferFee).toEqual(transferFeeConfig);
542
+ expect(receivedTxStatus).toEqual(expectedTxStatus);
543
+ });
544
+ test("token2022.transfer :: transfer fee is zero :: send amount success", async () => {
545
+ const mintWithTransferFeeMock = (0, cloneDeep_1.default)(baseToken2022MintMock);
546
+ mintWithTransferFeeMock.data.program = constants_1.PARSED_PROGRAMS.SPL_TOKEN_2022;
547
+ const magnitude = (0, bignumber_js_1.default)(10).pow(baseTokenMintMock.data.parsed.info.decimals);
548
+ const maxFee = (0, bignumber_js_1.default)(10).times(magnitude).toNumber();
549
+ const bps = 0;
550
+ const transferConfigExt = buildTransferFeeConfig(bps, maxFee);
551
+ mintWithTransferFeeMock.data.parsed.info.extensions = [transferConfigExt];
552
+ const balance = (0, bignumber_js_1.default)(100).times(magnitude);
553
+ const api = {
554
+ ...baseAPI,
555
+ getAccountInfo: (address) => {
556
+ if (address === wSolToken.contractAddress) {
557
+ return Promise.resolve(mintWithTransferFeeMock);
558
+ }
559
+ if (address === testData.address2) {
560
+ return Promise.resolve({ data: {} });
561
+ }
562
+ return Promise.resolve({ data: baseAta2022Mock });
563
+ },
564
+ getBalance: () => Promise.resolve(balance.toNumber()),
565
+ getEpochInfo: () => Promise.resolve({ epoch: 300 }),
566
+ };
567
+ const account = {
568
+ ...baseSolanaAccount,
569
+ subAccounts: [
570
+ {
571
+ ...mockedToken2022Acc,
572
+ balance: balance,
573
+ spendableBalance: balance,
574
+ extensions: {
575
+ transferFee: { feeBps: bps },
576
+ },
577
+ },
578
+ ],
579
+ };
580
+ const preparedTx = await (0, prepareTransaction_1.prepareTransaction)(account, baseTx, api);
581
+ const receivedTxStatus = await (0, getTransactionStatus_1.default)(account, preparedTx);
582
+ const expectedTxStatus = {
583
+ amount: new bignumber_js_1.default(10),
584
+ estimatedFees: new bignumber_js_1.default(testData.fees),
585
+ totalSpent: new bignumber_js_1.default(10),
586
+ errors: {},
587
+ warnings: {},
588
+ };
589
+ expect(receivedTxStatus).toEqual(expectedTxStatus);
590
+ });
591
+ test("token2022.transfer :: NonTransferable token :: tx returns SolanaTokenNonTransferable error", async () => {
592
+ const mintWithNonTransferableExtensionMock = (0, cloneDeep_1.default)(baseToken2022MintMock);
593
+ mintWithNonTransferableExtensionMock.data.parsed.info.extensions = [
594
+ { extension: "nonTransferable" },
595
+ ];
596
+ const api = {
597
+ ...baseAPI,
598
+ getAccountInfo: (address) => {
599
+ if (address === wSolToken.contractAddress) {
600
+ return Promise.resolve(mintWithNonTransferableExtensionMock);
601
+ }
602
+ if (address === testData.address2) {
603
+ return Promise.resolve({ data: {} });
604
+ }
605
+ return Promise.resolve({ data: baseAta2022Mock });
606
+ },
607
+ };
608
+ const account = {
609
+ ...baseSolanaAccount,
610
+ subAccounts: [mockedToken2022Acc],
611
+ };
612
+ expect((0, prepareTransaction_1.prepareTransaction)(account, baseTx, api)).rejects.toThrow(errors_1.SolanaTokenNonTransferable);
613
+ });
614
+ });
615
+ //# sourceMappingURL=tokens-bridge.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens-bridge.unit.test.js","sourceRoot":"","sources":["../../src/tests/tokens-bridge.unit.test.ts"],"names":[],"mappings":"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"}
package/lib/tx-fees.js CHANGED
@@ -169,7 +169,6 @@ const createDummyTokenTransferTx = (address) => {
169
169
  walletAddress: randomAddresses[1],
170
170
  tokenAccAddress: randomAddresses[2],
171
171
  shouldCreateAsAssociatedTokenAccount: true,
172
- userInputType: "sol",
173
172
  },
174
173
  tokenProgram: constants_1.PARSED_PROGRAMS.SPL_TOKEN,
175
174
  },
@@ -193,7 +192,6 @@ const createDummyTokenApproveTx = (address) => {
193
192
  walletAddress: randomAddresses[1],
194
193
  tokenAccAddress: randomAddresses[2],
195
194
  shouldCreateAsAssociatedTokenAccount: true,
196
- userInputType: "sol",
197
195
  },
198
196
  owner: address,
199
197
  amount: 0,