@ledgerhq/coin-solana 0.36.0-nightly.7 → 0.37.0-nightly.20251107095716

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 (61) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +35 -50
  3. package/lib/cli-transaction.d.ts +1 -1
  4. package/lib/cli-transaction.d.ts.map +1 -1
  5. package/lib/cli-transaction.js +3 -3
  6. package/lib/cli-transaction.js.map +1 -1
  7. package/lib/helpers/token.d.ts +1 -1
  8. package/lib/helpers/token.d.ts.map +1 -1
  9. package/lib/helpers/token.js +3 -2
  10. package/lib/helpers/token.js.map +1 -1
  11. package/lib/preload.js +5 -5
  12. package/lib/preload.js.map +1 -1
  13. package/lib/prepareTransaction.js +3 -3
  14. package/lib/prepareTransaction.js.map +1 -1
  15. package/lib/signOperation.js +2 -2
  16. package/lib/signOperation.js.map +1 -1
  17. package/lib/synchronization.d.ts.map +1 -1
  18. package/lib/synchronization.js +13 -10
  19. package/lib/synchronization.js.map +1 -1
  20. package/lib/test/bridge.dataset.d.ts.map +1 -1
  21. package/lib/test/bridge.dataset.js +11 -2
  22. package/lib/test/bridge.dataset.js.map +1 -1
  23. package/lib/transaction.d.ts +2 -2
  24. package/lib/transaction.d.ts.map +1 -1
  25. package/lib/transaction.js +6 -6
  26. package/lib/transaction.js.map +1 -1
  27. package/lib-es/cli-transaction.d.ts +1 -1
  28. package/lib-es/cli-transaction.d.ts.map +1 -1
  29. package/lib-es/cli-transaction.js +3 -3
  30. package/lib-es/cli-transaction.js.map +1 -1
  31. package/lib-es/helpers/token.d.ts +1 -1
  32. package/lib-es/helpers/token.d.ts.map +1 -1
  33. package/lib-es/helpers/token.js +3 -2
  34. package/lib-es/helpers/token.js.map +1 -1
  35. package/lib-es/preload.js +1 -1
  36. package/lib-es/preload.js.map +1 -1
  37. package/lib-es/prepareTransaction.js +3 -3
  38. package/lib-es/prepareTransaction.js.map +1 -1
  39. package/lib-es/signOperation.js +2 -2
  40. package/lib-es/signOperation.js.map +1 -1
  41. package/lib-es/synchronization.d.ts.map +1 -1
  42. package/lib-es/synchronization.js +13 -10
  43. package/lib-es/synchronization.js.map +1 -1
  44. package/lib-es/test/bridge.dataset.d.ts.map +1 -1
  45. package/lib-es/test/bridge.dataset.js +11 -2
  46. package/lib-es/test/bridge.dataset.js.map +1 -1
  47. package/lib-es/transaction.d.ts +2 -2
  48. package/lib-es/transaction.d.ts.map +1 -1
  49. package/lib-es/transaction.js +6 -6
  50. package/lib-es/transaction.js.map +1 -1
  51. package/package.json +10 -10
  52. package/src/cli-transaction.ts +106 -104
  53. package/src/helpers/token.ts +3 -4
  54. package/src/preload.ts +1 -1
  55. package/src/prepareTransaction.ts +3 -3
  56. package/src/signOperation.ts +2 -2
  57. package/src/synchronization.ts +16 -13
  58. package/src/test/bridge.dataset.ts +11 -5
  59. package/src/tests/preload.unit.test.ts +27 -29
  60. package/src/tests/tokens-bridge.unit.test.ts +14 -6
  61. package/src/transaction.ts +13 -6
@@ -12,6 +12,7 @@ import {
12
12
 
13
13
  import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
14
14
  import type { Account, CryptoAssetsStore } from "@ledgerhq/types-live";
15
+ import { getCryptoCurrencyById } from "@ledgerhq/cryptoassets";
15
16
  import {
16
17
  SolanaRecipientMemoIsRequired,
17
18
  SolanaTokenAccountFrozen,
@@ -31,7 +32,7 @@ import {
31
32
  } from "@solana/spl-token";
32
33
  import { calculateToken2022TransferFees } from "../helpers/token";
33
34
  import { PARSED_PROGRAMS } from "../network/chain/program/constants";
34
- import { getCryptoAssetsStore, setCryptoAssetsStoreGetter } from "../cryptoAssetsStore";
35
+ import { setCryptoAssetsStoreGetter } from "../cryptoAssetsStore";
35
36
  import usdcTokenData from "../__fixtures__/solana-spl-epjfwdd5aufqssqem2qn1xzybapc8g4weggkzwytdt1v.json";
36
37
 
37
38
  const USDC_TOKEN = usdcTokenData as unknown as TokenCurrency;
@@ -67,20 +68,27 @@ setCryptoAssetsStoreGetter(
67
68
  () =>
68
69
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
69
70
  ({
70
- findTokenByAddressInCurrency: (address: string, _currencyId: string) => {
71
+ findTokenByAddressInCurrency: async (address: string, _currencyId: string) => {
71
72
  if (address === "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v") {
72
73
  return USDC_TOKEN;
73
74
  }
74
75
  return undefined;
75
76
  },
77
+ findTokenById: async () => undefined,
76
78
  getTokensSyncHash: (_: string) => Promise.resolve("0"),
77
79
  }) as CryptoAssetsStore,
78
80
  );
79
81
 
80
- const wSolToken = getCryptoAssetsStore().findTokenByAddressInCurrency(
81
- testData.mintAddress,
82
- "solana",
83
- ) as TokenCurrency;
82
+ // Create a mock token for testing
83
+ const wSolToken: TokenCurrency = {
84
+ type: "TokenCurrency",
85
+ id: testData.mintAddress,
86
+ contractAddress: testData.mintAddress,
87
+ name: "Wrapped SOL",
88
+ ticker: "WSOL",
89
+ units: [{ name: "WSOL", code: "WSOL", magnitude: 9 }],
90
+ parentCurrency: getCryptoCurrencyById("solana"),
91
+ } as TokenCurrency;
84
92
 
85
93
  const baseAccount = {
86
94
  balance: new BigNumber(10000),
@@ -54,7 +54,7 @@ const lamportsToSOL = (account: Account, amount: number) => {
54
54
  });
55
55
  };
56
56
 
57
- export const formatTransaction = (tx: Transaction, mainAccount: Account): string => {
57
+ export const formatTransaction = async (tx: Transaction, mainAccount: Account): Promise<string> => {
58
58
  if (tx.model.commandDescriptor === undefined) {
59
59
  throw new Error("can not format unprepared transaction");
60
60
  }
@@ -63,17 +63,21 @@ export const formatTransaction = (tx: Transaction, mainAccount: Account): string
63
63
  if (Object.keys(commandDescriptor.errors).length > 0) {
64
64
  throw new Error("can not format invalid transaction");
65
65
  }
66
- return formatCommand(mainAccount, tx, commandDescriptor.command);
66
+ return await formatCommand(mainAccount, tx, commandDescriptor.command);
67
67
  };
68
68
 
69
- function formatCommand(mainAccount: Account, tx: Transaction, command: Command) {
69
+ async function formatCommand(
70
+ mainAccount: Account,
71
+ tx: Transaction,
72
+ command: Command,
73
+ ): Promise<string> {
70
74
  switch (command.kind) {
71
75
  case "transfer":
72
76
  return formatTransfer(mainAccount, tx, command);
73
77
  case "token.transfer":
74
78
  return formatTokenTransfer(mainAccount, tx, command);
75
79
  case "token.createATA":
76
- return formatCreateATA(mainAccount, command);
80
+ return await formatCreateATA(mainAccount, command);
77
81
  case "token.approve":
78
82
  return formatCreateApprove(mainAccount, tx, command);
79
83
  case "token.revoke":
@@ -152,8 +156,11 @@ function formatTokenTransfer(mainAccount: Account, tx: Transaction, command: Tok
152
156
  return "\n" + str;
153
157
  }
154
158
 
155
- function formatCreateATA(mainAccount: Account, command: TokenCreateATACommand) {
156
- const token = getCryptoAssetsStore().findTokenByAddressInCurrency(
159
+ async function formatCreateATA(
160
+ mainAccount: Account,
161
+ command: TokenCreateATACommand,
162
+ ): Promise<string> {
163
+ const token = await getCryptoAssetsStore().findTokenByAddressInCurrency(
157
164
  command.mint,
158
165
  mainAccount.currency.id,
159
166
  );