@ledgerhq/cryptoassets 13.32.0-nightly.2 → 13.32.0-nightly.3

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/cryptoassets@13.32.0-nightly.1 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/cryptoassets
2
+ > @ledgerhq/cryptoassets@13.32.0-nightly.2 build /home/runner/work/ledger-live/ledger-live/libs/ledgerjs/packages/cryptoassets
3
3
  > tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @ledgerhq/cryptoassets
2
2
 
3
+ ## 13.32.0-nightly.3
4
+
5
+ ### Minor Changes
6
+
7
+ - [#12442](https://github.com/LedgerHQ/ledger-live/pull/12442) [`6ccabef`](https://github.com/LedgerHQ/ledger-live/commit/6ccabef8f3c4e8cc042299d531684595ebadcc55) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Refactor api-token-converter to fix bad tokens data
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [[`77566c5`](https://github.com/LedgerHQ/ledger-live/commit/77566c5a3b5795f5938bd5daaa5f8d65934c56b8)]:
12
+ - @ledgerhq/types-live@6.88.0-nightly.3
13
+
3
14
  ## 13.32.0-nightly.2
4
15
 
5
16
  ### Minor Changes
@@ -13,6 +13,35 @@ export interface ApiTokenData {
13
13
  delisted?: boolean;
14
14
  disableCountervalue?: boolean;
15
15
  tokenIdentifier?: string;
16
+ ledgerSignature?: string;
16
17
  }
18
+ /**
19
+ * Transforms Ledger Live token ID to backend API format for querying
20
+ *
21
+ * This handles cases where LL uses different ID conventions than backend APIs.
22
+ * Applied BEFORE querying the API to ensure the request uses the correct format:
23
+ *
24
+ * - MultiversX: multiversx/esdt/* → elrond/esdt/* (API uses old name) [LIVE-22557]
25
+ * - Stellar: UPPERCASE → lowercase (API uses lowercase) [LIVE-22558]
26
+ *
27
+ * @param legacyId - Token ID in Ledger Live format
28
+ * @returns Token ID in backend API format
29
+ */
30
+ export declare function legacyIdToApiId(legacyId: string): string;
31
+ /**
32
+ * Converts API token data to Ledger Live TokenCurrency format
33
+ *
34
+ * This function applies client-side transformations to reconcile differences between
35
+ * backend APIs (CAL/DaDa) and Ledger Live's expected token format:
36
+ *
37
+ * - MultiversX: elrond/esdt/* → multiversx/esdt/* [LIVE-22557]
38
+ * - Stellar: Normalizes casing to stellar/asset/UPPERCASE_ADDRESS and tokenType asset → stellar [LIVE-22558]
39
+ * - Cardano: Reconstructs contractAddress from policyId + tokenIdentifier [LIVE-22559]
40
+ * - Sui: Transforms tokenType from "coin" to "sui" [LIVE-22560]
41
+ * - TON Jetton: Removes name prefix from ID (ton/jetton/name_address → ton/jetton/address) [LIVE-22561]
42
+ *
43
+ * @param apiToken - Token data from backend API
44
+ * @returns TokenCurrency object in Ledger Live format, or undefined if parent currency not found
45
+ */
17
46
  export declare function convertApiToken(apiToken: ApiTokenData): TokenCurrency | undefined;
18
47
  //# sourceMappingURL=api-token-converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-token-converter.d.ts","sourceRoot":"","sources":["../src/api-token-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AA+BlE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAmHjF"}
1
+ {"version":3,"file":"api-token-converter.d.ts","sourceRoot":"","sources":["../src/api-token-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAcxD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAmFjF"}
@@ -1,118 +1,109 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertApiToken = void 0;
4
- const legacy_utils_1 = require("./legacy/legacy-utils");
3
+ exports.convertApiToken = exports.legacyIdToApiId = void 0;
4
+ const currencies_1 = require("./currencies");
5
+ /**
6
+ * Transforms Ledger Live token ID to backend API format for querying
7
+ *
8
+ * This handles cases where LL uses different ID conventions than backend APIs.
9
+ * Applied BEFORE querying the API to ensure the request uses the correct format:
10
+ *
11
+ * - MultiversX: multiversx/esdt/* → elrond/esdt/* (API uses old name) [LIVE-22557]
12
+ * - Stellar: UPPERCASE → lowercase (API uses lowercase) [LIVE-22558]
13
+ *
14
+ * @param legacyId - Token ID in Ledger Live format
15
+ * @returns Token ID in backend API format
16
+ */
17
+ function legacyIdToApiId(legacyId) {
18
+ let apiId = legacyId;
19
+ // LIVE-22557: MultiversX - API uses old "elrond" name
20
+ if (apiId.startsWith("multiversx/esdt/")) {
21
+ apiId = apiId.replace("multiversx/esdt/", "elrond/esdt/");
22
+ }
23
+ // LIVE-22558: Stellar - API uses all lowercase (including the address part)
24
+ if (apiId.startsWith("stellar/asset/")) {
25
+ apiId = apiId.toLowerCase();
26
+ }
27
+ return apiId;
28
+ }
29
+ exports.legacyIdToApiId = legacyIdToApiId;
30
+ /**
31
+ * Converts API token data to Ledger Live TokenCurrency format
32
+ *
33
+ * This function applies client-side transformations to reconcile differences between
34
+ * backend APIs (CAL/DaDa) and Ledger Live's expected token format:
35
+ *
36
+ * - MultiversX: elrond/esdt/* → multiversx/esdt/* [LIVE-22557]
37
+ * - Stellar: Normalizes casing to stellar/asset/UPPERCASE_ADDRESS and tokenType asset → stellar [LIVE-22558]
38
+ * - Cardano: Reconstructs contractAddress from policyId + tokenIdentifier [LIVE-22559]
39
+ * - Sui: Transforms tokenType from "coin" to "sui" [LIVE-22560]
40
+ * - TON Jetton: Removes name prefix from ID (ton/jetton/name_address → ton/jetton/address) [LIVE-22561]
41
+ *
42
+ * @param apiToken - Token data from backend API
43
+ * @returns TokenCurrency object in Ledger Live format, or undefined if parent currency not found
44
+ */
5
45
  function convertApiToken(apiToken) {
6
- const { standard, id, contractAddress, name, ticker, units, delisted = false } = apiToken;
7
- const magnitude = units[0]?.magnitude || 0;
8
- switch (standard) {
9
- case "erc20":
10
- case "bep20": {
11
- const parentCurrencyId = id.split("/")[0];
12
- const tokenIdentifier = id.split("/")[2] || contractAddress;
13
- const erc20Data = [
14
- parentCurrencyId,
15
- tokenIdentifier,
16
- ticker,
17
- magnitude,
18
- name,
19
- "",
20
- contractAddress,
21
- false,
22
- delisted,
23
- ];
24
- return (0, legacy_utils_1.convertERC20)(erc20Data);
25
- }
26
- case "spl": {
27
- const parentCurrencyId = id.split("/")[0];
28
- const splData = [id, parentCurrencyId, name, ticker, contractAddress, magnitude];
29
- return (0, legacy_utils_1.convertSplTokens)(splData);
30
- }
31
- case "jetton": {
32
- const jettonData = [contractAddress, name, ticker, magnitude, delisted];
33
- return (0, legacy_utils_1.convertJettonToken)(jettonData);
34
- }
35
- case "asa": {
36
- const tokenId = id.split("/")[2] || contractAddress;
37
- const asaData = [tokenId, ticker, name, contractAddress, magnitude];
38
- return (0, legacy_utils_1.convertAlgorandASATokens)(asaData);
39
- }
40
- case "esdt": {
41
- const tokenIdentifier = id.split("/")[2] || contractAddress;
42
- const esdtData = [ticker, tokenIdentifier, magnitude, "", name];
43
- return (0, legacy_utils_1.convertMultiversXESDTTokens)(esdtData);
44
- }
45
- case "trc10": {
46
- const tokenId = parseInt(id.split("/")[2] || contractAddress);
47
- const trc10Data = [
48
- tokenId,
49
- ticker,
50
- name,
51
- contractAddress,
52
- magnitude,
53
- delisted,
54
- "",
55
- ];
56
- return (0, legacy_utils_1.convertTRONTokens)("trc10")(trc10Data);
57
- }
58
- case "trc20": {
59
- const tokenId = id.split("/")[2] || contractAddress;
60
- const trc20Data = [
61
- tokenId,
62
- ticker,
63
- name,
64
- contractAddress,
65
- magnitude,
66
- delisted,
67
- "",
68
- ];
69
- return (0, legacy_utils_1.convertTRONTokens)("trc20")(trc20Data);
70
- }
71
- case "vip180": {
72
- const tokenIdentifier = id.split("/")[2] || contractAddress;
73
- const vip180Data = [tokenIdentifier, ticker, name, contractAddress, magnitude];
74
- return (0, legacy_utils_1.convertVechainToken)(vip180Data);
75
- }
76
- case "native": {
77
- const parentCurrencyId = id.split("/")[0];
78
- if (parentCurrencyId !== "cardano")
79
- return undefined;
80
- const tokenIdentifier = id.split("/")[2] || contractAddress;
81
- const parts = tokenIdentifier.split(".");
82
- const [policyId, assetName = ""] = parts;
83
- const cardanoData = [
84
- "cardano",
85
- policyId,
86
- assetName,
87
- name,
88
- ticker,
89
- magnitude,
90
- delisted,
91
- ];
92
- return (0, legacy_utils_1.convertCardanoNativeTokens)(cardanoData);
93
- }
94
- case "stellar": {
95
- const parts = contractAddress.split(":");
96
- const assetCode = parts[0] || ticker;
97
- const assetIssuer = parts[1] || contractAddress;
98
- const stellarData = [assetCode, assetIssuer, "stellar", name, magnitude];
99
- return (0, legacy_utils_1.convertStellarTokens)(stellarData);
100
- }
101
- case "coin": {
102
- const aptCoinData = [id, ticker, name, contractAddress, magnitude, delisted];
103
- return (0, legacy_utils_1.convertAptCoinTokens)(aptCoinData);
104
- }
105
- case "fungible_asset": {
106
- const aptFaData = [id, ticker, name, contractAddress, magnitude, delisted];
107
- return (0, legacy_utils_1.convertAptFaTokens)(aptFaData);
108
- }
109
- case "sui": {
110
- const suiData = [id, name, ticker, contractAddress, magnitude, ""];
111
- return (0, legacy_utils_1.convertSuiTokens)(suiData);
46
+ const { standard, id, contractAddress, name, ticker, units, delisted = false, tokenIdentifier, ledgerSignature, } = apiToken;
47
+ // Apply client-side patches to reconcile CAL format with LL format
48
+ let patchedId = id;
49
+ let patchedContractAddress = contractAddress;
50
+ let patchedStandard = standard;
51
+ // Get parent currency from the ORIGINAL ID (before transformation)
52
+ // This is important for currencies that changed names (elrond -> multiversx)
53
+ const parentCurrencyId = id.split("/")[0];
54
+ const parentCurrency = (0, currencies_1.findCryptoCurrencyById)(parentCurrencyId);
55
+ if (!parentCurrency) {
56
+ return undefined;
57
+ }
58
+ // LIVE-22557: MultiversX - Transform elrond/* to multiversx/*
59
+ if (patchedId.startsWith("elrond/esdt/")) {
60
+ patchedId = patchedId.replace("elrond/esdt/", "multiversx/esdt/");
61
+ }
62
+ // LIVE-22558: Stellar - Transform to LL mixed-case format: stellar/asset/ + UPPERCASE_REST
63
+ // Also fix tokenType: API returns "asset", LL expects "stellar"
64
+ const stellarPrefix = "stellar/asset/";
65
+ if (patchedId.toLowerCase().startsWith(stellarPrefix)) {
66
+ const rest = patchedId.substring(stellarPrefix.length);
67
+ patchedId = stellarPrefix + rest.toUpperCase();
68
+ patchedStandard = patchedStandard === "asset" ? "stellar" : patchedStandard;
69
+ }
70
+ // LIVE-22559: Cardano - Reconstruct full assetId (policyId + assetName)
71
+ if (standard === "native" && tokenIdentifier) {
72
+ patchedContractAddress = contractAddress + tokenIdentifier;
73
+ }
74
+ // LIVE-22560: Sui - Transform "coin" standard to "sui" tokenType (LL format)
75
+ if (standard === "coin" && patchedId.startsWith("sui/")) {
76
+ patchedStandard = "sui";
77
+ }
78
+ // LIVE-22561: TON Jetton - Remove name prefix from ID (API: ton/jetton/name_address -> LL: ton/jetton/address)
79
+ if (patchedId.startsWith("ton/jetton/") && patchedId.indexOf("_") > 0) {
80
+ const parts = patchedId.split("_");
81
+ if (parts.length === 2) {
82
+ patchedId = "ton/jetton/" + parts[1];
112
83
  }
113
- default:
114
- return undefined;
115
84
  }
85
+ // Construct TokenCurrency directly from API data
86
+ const tokenCurrency = {
87
+ type: "TokenCurrency",
88
+ id: patchedId,
89
+ contractAddress: patchedContractAddress,
90
+ parentCurrency,
91
+ tokenType: patchedStandard,
92
+ name,
93
+ ticker,
94
+ delisted,
95
+ disableCountervalue: !!parentCurrency.isTestnetFor || !!apiToken.disableCountervalue,
96
+ units: units.map(unit => ({
97
+ name: unit.name,
98
+ code: unit.code,
99
+ magnitude: unit.magnitude,
100
+ })),
101
+ };
102
+ // Add ledgerSignature if present
103
+ if (ledgerSignature) {
104
+ tokenCurrency.ledgerSignature = ledgerSignature;
105
+ }
106
+ return tokenCurrency;
116
107
  }
117
108
  exports.convertApiToken = convertApiToken;
118
109
  //# sourceMappingURL=api-token-converter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-token-converter.js","sourceRoot":"","sources":["../src/api-token-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-token-converter.js","sourceRoot":"","sources":["../src/api-token-converter.ts"],"names":[],"mappings":";;;AACA,6CAAsD;AAetD;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,KAAK,GAAG,QAAQ,CAAC;IAErB,sDAAsD;IACtD,IAAI,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACzC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IAC5D,CAAC;IAED,4EAA4E;IAC5E,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvC,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAdD,0CAcC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,eAAe,CAAC,QAAsB;IACpD,MAAM,EACJ,QAAQ,EACR,EAAE,EACF,eAAe,EACf,IAAI,EACJ,MAAM,EACN,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,eAAe,EACf,eAAe,GAChB,GAAG,QAAQ,CAAC;IAEb,mEAAmE;IACnE,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,sBAAsB,GAAG,eAAe,CAAC;IAC7C,IAAI,eAAe,GAAG,QAAQ,CAAC;IAE/B,mEAAmE;IACnE,6EAA6E;IAC7E,MAAM,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,IAAA,mCAAsB,EAAC,gBAAgB,CAAC,CAAC;IAEhE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8DAA8D;IAC9D,IAAI,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACzC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,2FAA2F;IAC3F,gEAAgE;IAChE,MAAM,aAAa,GAAG,gBAAgB,CAAC;IACvC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvD,SAAS,GAAG,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/C,eAAe,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC;IAC9E,CAAC;IAED,wEAAwE;IACxE,IAAI,QAAQ,KAAK,QAAQ,IAAI,eAAe,EAAE,CAAC;QAC7C,sBAAsB,GAAG,eAAe,GAAG,eAAe,CAAC;IAC7D,CAAC;IAED,6EAA6E;IAC7E,IAAI,QAAQ,KAAK,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,eAAe,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,+GAA+G;IAC/G,IAAI,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,aAAa,GAAkB;QACnC,IAAI,EAAE,eAAe;QACrB,EAAE,EAAE,SAAS;QACb,eAAe,EAAE,sBAAsB;QACvC,cAAc;QACd,SAAS,EAAE,eAAe;QAC1B,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,mBAAmB,EAAE,CAAC,CAAC,cAAc,CAAC,YAAY,IAAI,CAAC,CAAC,QAAQ,CAAC,mBAAmB;QACpF,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;KACJ,CAAC;IAEF,iCAAiC;IACjC,IAAI,eAAe,EAAE,CAAC;QACpB,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC;IAClD,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAnFD,0CAmFC"}
@@ -65,7 +65,7 @@ export declare const ApiTokenResponseSchema: z.ZodObject<{
65
65
  /** Chain ID */
66
66
  chain_id: z.ZodString;
67
67
  /** Token identifier */
68
- token_identifier: z.ZodString;
68
+ token_identifier: z.ZodOptional<z.ZodString>;
69
69
  /** Network type */
70
70
  network_type: z.ZodString;
71
71
  /** Meta currency ID */
@@ -73,53 +73,53 @@ export declare const ApiTokenResponseSchema: z.ZodObject<{
73
73
  /** Blockchain name */
74
74
  blockchain_name: z.ZodString;
75
75
  /** Live signature */
76
- live_signature: z.ZodString;
76
+ live_signature: z.ZodOptional<z.ZodString>;
77
77
  }, "strip", z.ZodTypeAny, {
78
78
  symbol: string;
79
79
  id: string;
80
80
  type: string;
81
81
  name: string;
82
82
  ticker: string;
83
- delisted: boolean;
84
- decimals: number;
85
- network: string;
86
83
  standard: string;
87
84
  units: {
88
85
  name: string;
89
86
  magnitude: number;
90
87
  code: string;
91
88
  }[];
89
+ delisted: boolean;
90
+ decimals: number;
91
+ network: string;
92
92
  contract_address: string;
93
93
  network_family: string;
94
94
  chain_id: string;
95
- token_identifier: string;
96
95
  network_type: string;
97
96
  meta_currency_id: string;
98
97
  blockchain_name: string;
99
- live_signature: string;
98
+ token_identifier?: string | undefined;
99
+ live_signature?: string | undefined;
100
100
  }, {
101
101
  symbol: string;
102
102
  id: string;
103
103
  type: string;
104
104
  name: string;
105
105
  ticker: string;
106
- delisted: boolean;
107
- decimals: number;
108
- network: string;
109
106
  standard: string;
110
107
  units: {
111
108
  name: string;
112
109
  magnitude: number;
113
110
  code: string;
114
111
  }[];
112
+ delisted: boolean;
113
+ decimals: number;
114
+ network: string;
115
115
  contract_address: string;
116
116
  network_family: string;
117
117
  chain_id: string;
118
- token_identifier: string;
119
118
  network_type: string;
120
119
  meta_currency_id: string;
121
120
  blockchain_name: string;
122
- live_signature: string;
121
+ token_identifier?: string | undefined;
122
+ live_signature?: string | undefined;
123
123
  }>;
124
124
  export type ApiTokenResponse = z.infer<typeof ApiTokenResponseSchema>;
125
125
  //# sourceMappingURL=index.d.ts.map
@@ -44,7 +44,7 @@ exports.ApiTokenResponseSchema = zod_1.z.object({
44
44
  /** Chain ID */
45
45
  chain_id: zod_1.z.string(),
46
46
  /** Token identifier */
47
- token_identifier: zod_1.z.string(),
47
+ token_identifier: zod_1.z.string().optional(),
48
48
  /** Network type */
49
49
  network_type: zod_1.z.string(),
50
50
  /** Meta currency ID */
@@ -52,6 +52,6 @@ exports.ApiTokenResponseSchema = zod_1.z.object({
52
52
  /** Blockchain name */
53
53
  blockchain_name: zod_1.z.string(),
54
54
  /** Live signature */
55
- live_signature: zod_1.z.string(),
55
+ live_signature: zod_1.z.string().optional(),
56
56
  });
57
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cal-client/entities/index.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB;;GAEG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,mCAAmC;IACnC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,+BAA+B;IAC/B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,qCAAqC;IACrC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,wCAAwC;IACxC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,sCAAsC;IACtC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,6BAA6B;IAC7B,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,+CAA+C;IAC/C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,yBAAyB;IACzB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,oDAAoD;IACpD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,8CAA8C;IAC9C,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE;IAC1B,oCAAoC;IACpC,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;IACrB,6BAA6B;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,oBAAoB;IACpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,oCAAoC;IACpC,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,uBAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,aAAa;IACb,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,eAAe;IACf,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,uBAAuB;IACvB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,mBAAmB;IACnB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;IACxB,uBAAuB;IACvB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,sBAAsB;IACtB,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE;IAC3B,qBAAqB;IACrB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cal-client/entities/index.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB;;GAEG;AACU,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,mCAAmC;IACnC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,+BAA+B;IAC/B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,qCAAqC;IACrC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC;AAIH;;GAEG;AACU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,wCAAwC;IACxC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,sCAAsC;IACtC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,6BAA6B;IAC7B,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,+CAA+C;IAC/C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,yBAAyB;IACzB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,oDAAoD;IACpD,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,8CAA8C;IAC9C,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE;IAC1B,oCAAoC;IACpC,QAAQ,EAAE,OAAC,CAAC,OAAO,EAAE;IACrB,6BAA6B;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,oBAAoB;IACpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,oCAAoC;IACpC,KAAK,EAAE,OAAC,CAAC,KAAK,CAAC,uBAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,aAAa;IACb,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,eAAe;IACf,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,uBAAuB;IACvB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,mBAAmB;IACnB,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;IACxB,uBAAuB;IACvB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE;IAC5B,sBAAsB;IACtB,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE;IAC3B,qBAAqB;IACrB,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC"}
@@ -5,7 +5,7 @@ const react_1 = require("@reduxjs/toolkit/query/react");
5
5
  const live_env_1 = require("@ledgerhq/live-env");
6
6
  const types_1 = require("./types");
7
7
  const fields_1 = require("./fields");
8
- const currencies_1 = require("../../currencies");
8
+ const api_token_converter_1 = require("../../api-token-converter");
9
9
  function transformTokensResponse(response, meta) {
10
10
  const nextCursor = meta?.response?.headers.get("x-ledger-next") || undefined;
11
11
  return {
@@ -19,27 +19,26 @@ function transformTokensResponse(response, meta) {
19
19
  };
20
20
  }
21
21
  function transformApiTokenToTokenCurrency(token) {
22
- const parentCurrency = (0, currencies_1.findCryptoCurrencyById)(token.network);
23
- if (!parentCurrency) {
24
- return undefined;
25
- }
26
- return {
27
- type: "TokenCurrency",
22
+ // convertApiToken handles all format reconciliation internally
23
+ const result = (0, api_token_converter_1.convertApiToken)({
28
24
  id: token.id,
29
- ledgerSignature: token.live_signature,
30
25
  contractAddress: token.contract_address,
31
- parentCurrency,
32
- tokenType: token.standard,
33
26
  name: token.name,
34
27
  ticker: token.ticker,
35
- units: token.units.map(unit => ({
36
- code: unit.code,
37
- name: unit.name,
38
- magnitude: unit.magnitude,
39
- })),
28
+ units: token.units,
29
+ standard: token.standard,
30
+ tokenIdentifier: token.token_identifier,
40
31
  delisted: token.delisted,
41
- symbol: token.symbol,
42
- };
32
+ ledgerSignature: token.live_signature,
33
+ });
34
+ // Add symbol if result exists
35
+ if (result && token.symbol) {
36
+ return {
37
+ ...result,
38
+ symbol: token.symbol,
39
+ };
40
+ }
41
+ return result;
43
42
  }
44
43
  exports.cryptoAssetsApi = (0, react_1.createApi)({
45
44
  reducerPath: "cryptoAssetsApi",
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/cal-client/state-manager/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/cal-client/state-manager/api.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,35 @@ export interface ApiTokenData {
13
13
  delisted?: boolean;
14
14
  disableCountervalue?: boolean;
15
15
  tokenIdentifier?: string;
16
+ ledgerSignature?: string;
16
17
  }
18
+ /**
19
+ * Transforms Ledger Live token ID to backend API format for querying
20
+ *
21
+ * This handles cases where LL uses different ID conventions than backend APIs.
22
+ * Applied BEFORE querying the API to ensure the request uses the correct format:
23
+ *
24
+ * - MultiversX: multiversx/esdt/* → elrond/esdt/* (API uses old name) [LIVE-22557]
25
+ * - Stellar: UPPERCASE → lowercase (API uses lowercase) [LIVE-22558]
26
+ *
27
+ * @param legacyId - Token ID in Ledger Live format
28
+ * @returns Token ID in backend API format
29
+ */
30
+ export declare function legacyIdToApiId(legacyId: string): string;
31
+ /**
32
+ * Converts API token data to Ledger Live TokenCurrency format
33
+ *
34
+ * This function applies client-side transformations to reconcile differences between
35
+ * backend APIs (CAL/DaDa) and Ledger Live's expected token format:
36
+ *
37
+ * - MultiversX: elrond/esdt/* → multiversx/esdt/* [LIVE-22557]
38
+ * - Stellar: Normalizes casing to stellar/asset/UPPERCASE_ADDRESS and tokenType asset → stellar [LIVE-22558]
39
+ * - Cardano: Reconstructs contractAddress from policyId + tokenIdentifier [LIVE-22559]
40
+ * - Sui: Transforms tokenType from "coin" to "sui" [LIVE-22560]
41
+ * - TON Jetton: Removes name prefix from ID (ton/jetton/name_address → ton/jetton/address) [LIVE-22561]
42
+ *
43
+ * @param apiToken - Token data from backend API
44
+ * @returns TokenCurrency object in Ledger Live format, or undefined if parent currency not found
45
+ */
17
46
  export declare function convertApiToken(apiToken: ApiTokenData): TokenCurrency | undefined;
18
47
  //# sourceMappingURL=api-token-converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-token-converter.d.ts","sourceRoot":"","sources":["../src/api-token-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AA+BlE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAmHjF"}
1
+ {"version":3,"file":"api-token-converter.d.ts","sourceRoot":"","sources":["../src/api-token-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAcxD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAmFjF"}