@ledgerhq/coin-framework 0.8.0 → 0.8.1-next.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.
@@ -0,0 +1,22 @@
1
+ {
2
+ "entry": [
3
+ "src/account/index.ts",
4
+ "src/batcher/index.ts",
5
+ "src/bot/specs.ts",
6
+ "src/bot/formatters.ts",
7
+ "src/bridge/jsHelpers.ts",
8
+ "src/cache.ts",
9
+ "src/currencies/index.ts",
10
+ "src/derivation.ts",
11
+ "src/mocks/helpers.ts",
12
+ "src/mocks/account.ts",
13
+ "src/network.ts",
14
+ "src/nft/helpers.ts",
15
+ "src/nft/support.ts",
16
+ "src/operation.ts",
17
+ "src/signer.ts",
18
+ "src/transaction/common.ts"
19
+ ],
20
+ "ignoreUnimported": ["src/test-helpers/staticTime.ts"],
21
+ "ignoreUnresolved": ["follow-redirects"]
22
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @ledgerhq/coin-framework
2
2
 
3
+ ## 0.8.1-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - [#5201](https://github.com/LedgerHQ/ledger-live/pull/5201) [`f83e060bf4`](https://github.com/LedgerHQ/ledger-live/commit/f83e060bf474a6b6133406eff49cb054e813046f) Thanks [@mle-gall](https://github.com/mle-gall)! - New supported countervalues source from API.
8
+
9
+ - Updated dependencies [[`3dc4937cc0`](https://github.com/LedgerHQ/ledger-live/commit/3dc4937cc0c77f6dc40ac7c628e9ab165dfb899f), [`95cf52eb66`](https://github.com/LedgerHQ/ledger-live/commit/95cf52eb66769228feb45dd5e799c444e80c5072), [`f5a5c315ea`](https://github.com/LedgerHQ/ledger-live/commit/f5a5c315ea2200cd5b52ef3a0b377d1327b1144e), [`17ba334e47`](https://github.com/LedgerHQ/ledger-live/commit/17ba334e47b901e34fbb083396aa3f9952e5233e), [`9e2d32aec4`](https://github.com/LedgerHQ/ledger-live/commit/9e2d32aec4ebd8774880f94e3ef0e805ebb172ac), [`9e2d32aec4`](https://github.com/LedgerHQ/ledger-live/commit/9e2d32aec4ebd8774880f94e3ef0e805ebb172ac), [`df5c9ae02a`](https://github.com/LedgerHQ/ledger-live/commit/df5c9ae02a604ddba13ddc64caf8d9ad079c303d), [`54b1d185c9`](https://github.com/LedgerHQ/ledger-live/commit/54b1d185c9df5ae84dc7e85d58249c06550df5f1), [`9b49ff233c`](https://github.com/LedgerHQ/ledger-live/commit/9b49ff233ccfad68c98d15cd648927dee12a8b0b), [`4d6fa0772e`](https://github.com/LedgerHQ/ledger-live/commit/4d6fa0772e19cdbd4b432fafa43621c42e2a5fdd), [`b259781b72`](https://github.com/LedgerHQ/ledger-live/commit/b259781b7212aa7758437640e7c48c5d17b0fa79)]:
10
+ - @ledgerhq/types-live@6.42.0-next.0
11
+ - @ledgerhq/types-cryptoassets@7.7.0-next.0
12
+ - @ledgerhq/cryptoassets@11.1.0-next.0
13
+ - @ledgerhq/logs@6.11.0-next.0
14
+ - @ledgerhq/live-env@0.6.1-next.0
15
+ - @ledgerhq/errors@6.15.0-next.0
16
+ - @ledgerhq/devices@8.0.8-next.0
17
+
3
18
  ## 0.8.0
4
19
 
5
20
  ### Minor Changes
@@ -1,7 +1,7 @@
1
1
  import { CryptoCurrency, CryptoCurrencyId, FiatCurrency } from "@ledgerhq/types-cryptoassets";
2
- export declare function isFiatSupported(fiat: FiatCurrency): boolean;
3
- export declare function setSupportedFiats(ids: string[]): void;
4
- export declare function listSupportedFiats(): FiatCurrency[];
2
+ export declare function fetchSupportedFiatsTokens(): Promise<string[]>;
3
+ export declare function isFiatSupported(fiat: FiatCurrency): boolean | undefined;
4
+ export declare function listSupportedFiats(): Promise<FiatCurrency[]>;
5
5
  export declare function setSupportedCurrencies(ids: CryptoCurrencyId[]): void;
6
6
  export declare function listSupportedCurrencies(): CryptoCurrency[];
7
7
  export declare function isCurrencySupported(currency: CryptoCurrency): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/currencies/support.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA8D9F,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,WAEjD;AACD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAE9C;AACD,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAG7D;AAWD,wBAAgB,uBAAuB,IAAI,cAAc,EAAE,CAK1D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAErE"}
1
+ {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/currencies/support.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA4E9F,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBnE;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,uBAEjD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAalE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAG7D;AAWD,wBAAgB,uBAAuB,IAAI,cAAc,EAAE,CAK1D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAErE"}
@@ -1,16 +1,23 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isCurrencySupported = exports.listSupportedCurrencies = exports.setSupportedCurrencies = exports.listSupportedFiats = exports.setSupportedFiats = exports.isFiatSupported = void 0;
12
+ exports.isCurrencySupported = exports.listSupportedCurrencies = exports.setSupportedCurrencies = exports.listSupportedFiats = exports.isFiatSupported = exports.fetchSupportedFiatsTokens = void 0;
4
13
  const cryptoassets_1 = require("@ledgerhq/cryptoassets");
5
14
  const live_env_1 = require("@ledgerhq/live-env");
15
+ const logs_1 = require("@ledgerhq/logs");
6
16
  // set by user side effect to precise which currencies are considered supported (typically by live)
7
17
  let userSupportedCurrencies = [];
8
- let userSupportedFiats = [];
9
- // Current list was established with what our API really supports
10
- // to update the list,
11
- // 1. $ ledger-live countervalues --format supportedFiats --fiats
12
- // 2. copy & paste the output
13
- setSupportedFiats([
18
+ let userSupportedFiats = null;
19
+ // The API returns Coingeko countervalues tickers, but getFiatCurrencyByTicker might not support each of those.
20
+ const locallySupportedFiats = [
14
21
  "AED",
15
22
  "AUD",
16
23
  "BGN",
@@ -60,17 +67,67 @@ setSupportedFiats([
60
67
  "VND",
61
68
  "VUV",
62
69
  "ZAR",
63
- ]);
70
+ ];
71
+ function initializeUserSupportedFiats() {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ try {
74
+ const ids = yield fetchSupportedFiatsTokens();
75
+ const idsToUpper = ids.map(id => id.toUpperCase());
76
+ // This makes sure we only keep the elements supported in our API and that are available for getFiatCurrencyByTicker
77
+ const supportedTokens = idsToUpper.filter(token => locallySupportedFiats.includes(token));
78
+ userSupportedFiats = supportedTokens.map(id => {
79
+ return (0, cryptoassets_1.getFiatCurrencyByTicker)(id);
80
+ });
81
+ }
82
+ catch (error) {
83
+ throw new Error(`Failed to get supported Fiats. Error Message: ${error}`);
84
+ }
85
+ });
86
+ }
87
+ function fetchSupportedFiatsTokens() {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ try {
90
+ const response = yield fetch("https://countervalues.live.ledger.com/v2/supported-to", {
91
+ method: "GET",
92
+ headers: {
93
+ accept: "application/json",
94
+ },
95
+ });
96
+ if (!response.ok) {
97
+ throw new Error(`Request failed with status ${response.status}`);
98
+ }
99
+ const data = yield response.json();
100
+ return data;
101
+ }
102
+ catch (error) {
103
+ // Handle any network or parsing errors here
104
+ console.error("Error:", error);
105
+ throw error;
106
+ }
107
+ });
108
+ }
109
+ exports.fetchSupportedFiatsTokens = fetchSupportedFiatsTokens;
110
+ // Usage of isFiatSupported and listSupportedFiats should check if userSupportedFiats is populated
64
111
  function isFiatSupported(fiat) {
65
- return userSupportedFiats.includes(fiat);
112
+ return userSupportedFiats === null || userSupportedFiats === void 0 ? void 0 : userSupportedFiats.includes(fiat);
66
113
  }
67
114
  exports.isFiatSupported = isFiatSupported;
68
- function setSupportedFiats(ids) {
69
- userSupportedFiats = ids.map(cryptoassets_1.getFiatCurrencyByTicker);
70
- }
71
- exports.setSupportedFiats = setSupportedFiats;
72
115
  function listSupportedFiats() {
73
- return userSupportedFiats;
116
+ return __awaiter(this, void 0, void 0, function* () {
117
+ if (userSupportedFiats === null) {
118
+ // Handle case where userSupportedFiats is not yet populated (e.g., by calling initializeUserSupportedFiats)
119
+ try {
120
+ yield initializeUserSupportedFiats();
121
+ }
122
+ catch (error) {
123
+ // Handle initialization error
124
+ (0, logs_1.log)("debug", `Failed to initialize userSupportedFiats. Error Message: ${error}`);
125
+ return [];
126
+ }
127
+ return userSupportedFiats || [];
128
+ }
129
+ return userSupportedFiats;
130
+ });
74
131
  }
75
132
  exports.listSupportedFiats = listSupportedFiats;
76
133
  function setSupportedCurrencies(ids) {
@@ -1 +1 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/currencies/support.ts"],"names":[],"mappings":";;;AAAA,yDAIgC;AAEhC,iDAA4C;AAE5C,mGAAmG;AACnG,IAAI,uBAAuB,GAAqB,EAAE,CAAC;AACnD,IAAI,kBAAkB,GAAmB,EAAE,CAAC;AAC5C,iEAAiE;AACjE,sBAAsB;AACtB,iEAAiE;AACjE,6BAA6B;AAC7B,iBAAiB,CAAC;IAChB,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAEH,SAAgB,eAAe,CAAC,IAAkB;IAChD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAFD,0CAEC;AACD,SAAgB,iBAAiB,CAAC,GAAa;IAC7C,kBAAkB,GAAG,GAAG,CAAC,GAAG,CAAC,sCAAuB,CAAC,CAAC;AACxD,CAAC;AAFD,8CAEC;AACD,SAAgB,kBAAkB;IAChC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAFD,gDAEC;AAED,SAAgB,sBAAsB,CAAC,GAAuB;IAC5D,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;SACjF,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,oCAAqB,EAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAHD,wDAGC;AAED,SAAS,uBAAuB;IAC9B,OAAO,IAAA,iBAAM,EAAC,yBAAyB,CAAC;SACrC,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CACL,CAAC,EAAU,EAAE,EAAE,CAAC,IAAA,kCAAmB,EAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAC3F;SACA,GAAG,CAAC,oCAAqB,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,uBAAuB;IACrC,MAAM,aAAa,GAAG,uBAAuB,EAAE,CAAC;IAChD,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC;QAC/B,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACpD,CAAC;AALD,0DAKC;AAED,SAAgB,mBAAmB,CAAC,QAAwB;IAC1D,OAAO,uBAAuB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC;AAFD,kDAEC"}
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/currencies/support.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAEhF;AAED,QAAA,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAElD,CAAC;AAEF,KAAK,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC;AAEjD,eAAO,MAAM,kBAAkB,QACxB,QAAQ,GAAG,SAAS,GAAG,IAAI,KAC/B,OAAO,YAAY,EAAE,OAAO,CAO5B,CAAC;AAIJ;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aACpB,cAAc;4BAGb,gBAAgB,EAAE,UACjB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACxB,QAAQ,mBAAmB,EAAE,CAAC;sCAE1B,uBAAuB,EAAE,UACxB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACxB,QAAQ,6BAA6B,EAAE,CAAC;MAE9C,kBAgBF,CAAC"}
1
+ {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAOhF;AAED,QAAA,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAElD,CAAC;AAEF,KAAK,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC;AAEjD,eAAO,MAAM,kBAAkB,QACxB,QAAQ,GAAG,SAAS,GAAG,IAAI,KAC/B,OAAO,YAAY,EAAE,OAAO,CAO5B,CAAC;AAIJ;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aACpB,cAAc;4BAGb,gBAAgB,EAAE,UACjB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACxB,QAAQ,mBAAmB,EAAE,CAAC;sCAE1B,uBAAuB,EAAE,UACxB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACxB,QAAQ,6BAA6B,EAAE,CAAC;MAE9C,kBAgBF,CAAC"}
@@ -4,7 +4,10 @@ exports.metadataCallBatcher = exports.getNftCapabilities = exports.isNFTActive =
4
4
  const live_env_1 = require("@ledgerhq/live-env");
5
5
  const batcher_1 = require("../batcher");
6
6
  function isNFTActive(currency) {
7
- return !!currency && (0, live_env_1.getEnv)("NFT_CURRENCIES").split(",").includes(currency === null || currency === void 0 ? void 0 : currency.id);
7
+ return (!!currency &&
8
+ (0, live_env_1.getEnv)("NFT_CURRENCIES")
9
+ .split(",")
10
+ .includes(currency === null || currency === void 0 ? void 0 : currency.id));
8
11
  }
9
12
  exports.isNFTActive = isNFTActive;
10
13
  const nftCapabilities = {
@@ -1 +1 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":";;;AAMA,iDAA4C;AAG5C,wCAAyC;AAEzC,SAAgB,WAAW,CAAC,QAA2C;IACrE,OAAO,CAAC,CAAC,QAAQ,IAAI,IAAA,iBAAM,EAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAFD,kCAEC;AAED,MAAM,eAAe,GAAkC;IACrD,WAAW,EAAE,CAAC,SAAS,CAAC;CACzB,CAAC;AAIK,MAAM,kBAAkB,GAAG,CAChC,GAAgC,EACD,EAAE,CAChC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAqC,CAAC,MAAM,CACzE,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,iCAC7B,GAAG,KACN,CAAC,UAAU,CAAC,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,IACtE,EACF,EAAmC,CACpC,CAAC;AATS,QAAA,kBAAkB,sBAS3B;AAEJ,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE1D;;;;;GAKG;AACI,MAAM,mBAAmB,GAAG,CACjC,QAAwB,EACxB,GASC,EACmB,EAAE;;IACtB,MAAM,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,0CAAE,OAAO,CAAC;IAEpD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACjC,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,IAAA,qBAAW,EAAC,GAAG,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC;YACrD,cAAc,EAAE,IAAA,qBAAW,EAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,CAAC;SACvE,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;KACvC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAC;AACvC,CAAC,CAAC;AA5BW,QAAA,mBAAmB,uBA4B9B"}
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":";;;AAMA,iDAA4C;AAG5C,wCAAyC;AAEzC,SAAgB,WAAW,CAAC,QAA2C;IACrE,OAAO,CACL,CAAC,CAAC,QAAQ;QACV,IAAA,iBAAM,EAAC,gBAAgB,CAAC;aACrB,KAAK,CAAC,GAAG,CAAC;aACV,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAC,CAC1B,CAAC;AACJ,CAAC;AAPD,kCAOC;AAED,MAAM,eAAe,GAAkC;IACrD,WAAW,EAAE,CAAC,SAAS,CAAC;CACzB,CAAC;AAIK,MAAM,kBAAkB,GAAG,CAChC,GAAgC,EACD,EAAE,CAChC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAqC,CAAC,MAAM,CACzE,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,iCAC7B,GAAG,KACN,CAAC,UAAU,CAAC,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,IACtE,EACF,EAAmC,CACpC,CAAC;AATS,QAAA,kBAAkB,sBAS3B;AAEJ,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE1D;;;;;GAKG;AACI,MAAM,mBAAmB,GAAG,CACjC,QAAwB,EACxB,GASC,EACmB,EAAE;;IACtB,MAAM,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,0CAAE,OAAO,CAAC;IAEpD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACjC,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,IAAA,qBAAW,EAAC,GAAG,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC;YACrD,cAAc,EAAE,IAAA,qBAAW,EAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,CAAC;SACvE,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;KACvC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAC;AACvC,CAAC,CAAC;AA5BW,QAAA,mBAAmB,uBA4B9B"}
@@ -1,7 +1,7 @@
1
1
  import { CryptoCurrency, CryptoCurrencyId, FiatCurrency } from "@ledgerhq/types-cryptoassets";
2
- export declare function isFiatSupported(fiat: FiatCurrency): boolean;
3
- export declare function setSupportedFiats(ids: string[]): void;
4
- export declare function listSupportedFiats(): FiatCurrency[];
2
+ export declare function fetchSupportedFiatsTokens(): Promise<string[]>;
3
+ export declare function isFiatSupported(fiat: FiatCurrency): boolean | undefined;
4
+ export declare function listSupportedFiats(): Promise<FiatCurrency[]>;
5
5
  export declare function setSupportedCurrencies(ids: CryptoCurrencyId[]): void;
6
6
  export declare function listSupportedCurrencies(): CryptoCurrency[];
7
7
  export declare function isCurrencySupported(currency: CryptoCurrency): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/currencies/support.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA8D9F,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,WAEjD;AACD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAE9C;AACD,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAG7D;AAWD,wBAAgB,uBAAuB,IAAI,cAAc,EAAE,CAK1D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAErE"}
1
+ {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/currencies/support.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA4E9F,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAoBnE;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,uBAEjD;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAalE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAG7D;AAWD,wBAAgB,uBAAuB,IAAI,cAAc,EAAE,CAK1D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAErE"}
@@ -1,13 +1,20 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
1
10
  import { getFiatCurrencyByTicker, getCryptoCurrencyById, hasCryptoCurrencyId, } from "@ledgerhq/cryptoassets";
2
11
  import { getEnv } from "@ledgerhq/live-env";
12
+ import { log } from "@ledgerhq/logs";
3
13
  // set by user side effect to precise which currencies are considered supported (typically by live)
4
14
  let userSupportedCurrencies = [];
5
- let userSupportedFiats = [];
6
- // Current list was established with what our API really supports
7
- // to update the list,
8
- // 1. $ ledger-live countervalues --format supportedFiats --fiats
9
- // 2. copy & paste the output
10
- setSupportedFiats([
15
+ let userSupportedFiats = null;
16
+ // The API returns Coingeko countervalues tickers, but getFiatCurrencyByTicker might not support each of those.
17
+ const locallySupportedFiats = [
11
18
  "AED",
12
19
  "AUD",
13
20
  "BGN",
@@ -57,15 +64,65 @@ setSupportedFiats([
57
64
  "VND",
58
65
  "VUV",
59
66
  "ZAR",
60
- ]);
61
- export function isFiatSupported(fiat) {
62
- return userSupportedFiats.includes(fiat);
67
+ ];
68
+ function initializeUserSupportedFiats() {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ try {
71
+ const ids = yield fetchSupportedFiatsTokens();
72
+ const idsToUpper = ids.map(id => id.toUpperCase());
73
+ // This makes sure we only keep the elements supported in our API and that are available for getFiatCurrencyByTicker
74
+ const supportedTokens = idsToUpper.filter(token => locallySupportedFiats.includes(token));
75
+ userSupportedFiats = supportedTokens.map(id => {
76
+ return getFiatCurrencyByTicker(id);
77
+ });
78
+ }
79
+ catch (error) {
80
+ throw new Error(`Failed to get supported Fiats. Error Message: ${error}`);
81
+ }
82
+ });
83
+ }
84
+ export function fetchSupportedFiatsTokens() {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ try {
87
+ const response = yield fetch("https://countervalues.live.ledger.com/v2/supported-to", {
88
+ method: "GET",
89
+ headers: {
90
+ accept: "application/json",
91
+ },
92
+ });
93
+ if (!response.ok) {
94
+ throw new Error(`Request failed with status ${response.status}`);
95
+ }
96
+ const data = yield response.json();
97
+ return data;
98
+ }
99
+ catch (error) {
100
+ // Handle any network or parsing errors here
101
+ console.error("Error:", error);
102
+ throw error;
103
+ }
104
+ });
63
105
  }
64
- export function setSupportedFiats(ids) {
65
- userSupportedFiats = ids.map(getFiatCurrencyByTicker);
106
+ // Usage of isFiatSupported and listSupportedFiats should check if userSupportedFiats is populated
107
+ export function isFiatSupported(fiat) {
108
+ return userSupportedFiats === null || userSupportedFiats === void 0 ? void 0 : userSupportedFiats.includes(fiat);
66
109
  }
67
110
  export function listSupportedFiats() {
68
- return userSupportedFiats;
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ if (userSupportedFiats === null) {
113
+ // Handle case where userSupportedFiats is not yet populated (e.g., by calling initializeUserSupportedFiats)
114
+ try {
115
+ yield initializeUserSupportedFiats();
116
+ }
117
+ catch (error) {
118
+ // Handle initialization error
119
+ log("debug", `Failed to initialize userSupportedFiats. Error Message: ${error}`);
120
+ return [];
121
+ }
122
+ return userSupportedFiats || [];
123
+ }
124
+ return userSupportedFiats;
125
+ });
69
126
  }
70
127
  export function setSupportedCurrencies(ids) {
71
128
  userSupportedCurrencies = Array.from(new Set(ids)) // Make sure to remove duplicates
@@ -1 +1 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/currencies/support.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,mGAAmG;AACnG,IAAI,uBAAuB,GAAqB,EAAE,CAAC;AACnD,IAAI,kBAAkB,GAAmB,EAAE,CAAC;AAC5C,iEAAiE;AACjE,sBAAsB;AACtB,iEAAiE;AACjE,6BAA6B;AAC7B,iBAAiB,CAAC;IAChB,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,GAAa;IAC7C,kBAAkB,GAAG,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACxD,CAAC;AACD,MAAM,UAAU,kBAAkB;IAChC,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAuB;IAC5D,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iCAAiC;SACjF,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO,MAAM,CAAC,yBAAyB,CAAC;SACrC,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CACL,CAAC,EAAU,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAC3F;SACA,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,aAAa,GAAG,uBAAuB,EAAE,CAAC;IAChD,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC;QAC/B,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,OAAO,uBAAuB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/currencies/support.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAEhF;AAED,QAAA,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAElD,CAAC;AAEF,KAAK,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC;AAEjD,eAAO,MAAM,kBAAkB,QACxB,QAAQ,GAAG,SAAS,GAAG,IAAI,KAC/B,OAAO,YAAY,EAAE,OAAO,CAO5B,CAAC;AAIJ;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aACpB,cAAc;4BAGb,gBAAgB,EAAE,UACjB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACxB,QAAQ,mBAAmB,EAAE,CAAC;sCAE1B,uBAAuB,EAAE,UACxB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACxB,QAAQ,6BAA6B,EAAE,CAAC;MAE9C,kBAgBF,CAAC"}
1
+ {"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAOhF;AAED,QAAA,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAElD,CAAC;AAEF,KAAK,YAAY,GAAG,MAAM,OAAO,eAAe,CAAC;AAEjD,eAAO,MAAM,kBAAkB,QACxB,QAAQ,GAAG,SAAS,GAAG,IAAI,KAC/B,OAAO,YAAY,EAAE,OAAO,CAO5B,CAAC;AAIJ;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,aACpB,cAAc;4BAGb,gBAAgB,EAAE,UACjB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACxB,QAAQ,mBAAmB,EAAE,CAAC;sCAE1B,uBAAuB,EAAE,UACxB;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KACxB,QAAQ,6BAA6B,EAAE,CAAC;MAE9C,kBAgBF,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { getEnv } from "@ledgerhq/live-env";
2
2
  import { makeBatcher } from "../batcher";
3
3
  export function isNFTActive(currency) {
4
- return !!currency && getEnv("NFT_CURRENCIES").split(",").includes(currency === null || currency === void 0 ? void 0 : currency.id);
4
+ return (!!currency &&
5
+ getEnv("NFT_CURRENCIES")
6
+ .split(",")
7
+ .includes(currency === null || currency === void 0 ? void 0 : currency.id));
5
8
  }
6
9
  const nftCapabilities = {
7
10
  hasQuantity: ["ERC1155"],
@@ -1 +1 @@
1
- {"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,WAAW,CAAC,QAA2C;IACrE,OAAO,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,eAAe,GAAkC;IACrD,WAAW,EAAE,CAAC,SAAS,CAAC;CACzB,CAAC;AAIF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,GAAgC,EACD,EAAE,CAChC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAqC,CAAC,MAAM,CACzE,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,iCAC7B,GAAG,KACN,CAAC,UAAU,CAAC,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,IACtE,EACF,EAAmC,CACpC,CAAC;AAEJ,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAwB,EACxB,GASC,EACmB,EAAE;;IACtB,MAAM,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,0CAAE,OAAO,CAAC;IAEpD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACjC,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC;YACrD,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,CAAC;SACvE,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;KACvC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAC;AACvC,CAAC,CAAC"}
1
+ {"version":3,"file":"support.js","sourceRoot":"","sources":["../../src/nft/support.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,WAAW,CAAC,QAA2C;IACrE,OAAO,CACL,CAAC,CAAC,QAAQ;QACV,MAAM,CAAC,gBAAgB,CAAC;aACrB,KAAK,CAAC,GAAG,CAAC;aACV,QAAQ,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,EAAE,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAkC;IACrD,WAAW,EAAE,CAAC,SAAS,CAAC;CACzB,CAAC;AAIF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,GAAgC,EACD,EAAE,CAChC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAqC,CAAC,MAAM,CACzE,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,iCAC7B,GAAG,KACN,CAAC,UAAU,CAAC,EAAE,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,EAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,IACtE,EACF,EAAmC,CACpC,CAAC;AAEJ,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,QAAwB,EACxB,GASC,EACmB,EAAE;;IACtB,MAAM,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,0CAAE,OAAO,CAAC;IAEpD,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;QACjC,MAAM,OAAO,GAAG;YACd,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,CAAC;YACrD,cAAc,EAAE,WAAW,CAAC,GAAG,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,CAAC;SACvE,CAAC;QACF,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;KACvC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAC;AACvC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/coin-framework",
3
- "version": "0.8.0",
3
+ "version": "0.8.1-next.0",
4
4
  "description": "Ledger framework for Coin integration",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -79,7 +79,6 @@
79
79
  },
80
80
  "license": "Apache-2.0",
81
81
  "dependencies": {
82
- "@ledgerhq/compressjs": "github:LedgerHQ/compressjs#d9e8e4d994923e0ea76a32b97289bcccfe71b82e",
83
82
  "bignumber.js": "^9.1.2",
84
83
  "eip55": "^2.1.0",
85
84
  "expect": "^27.4.6",
@@ -88,14 +87,14 @@
88
87
  "lru-cache": "^7.14.1",
89
88
  "numeral": "^2.0.6",
90
89
  "prando": "^6.0.1",
91
- "rxjs": "^6.6.7",
92
- "@ledgerhq/cryptoassets": "^11.0.1",
93
- "@ledgerhq/devices": "^8.0.7",
94
- "@ledgerhq/errors": "^6.14.0",
95
- "@ledgerhq/live-env": "^0.6.0",
96
- "@ledgerhq/logs": "^6.10.1",
97
- "@ledgerhq/types-cryptoassets": "^7.6.0",
98
- "@ledgerhq/types-live": "^6.41.1"
90
+ "rxjs": "^7.8.1",
91
+ "@ledgerhq/cryptoassets": "^11.1.0-next.0",
92
+ "@ledgerhq/devices": "^8.0.8-next.0",
93
+ "@ledgerhq/errors": "^6.15.0-next.0",
94
+ "@ledgerhq/live-env": "^0.6.1-next.0",
95
+ "@ledgerhq/logs": "^6.11.0-next.0",
96
+ "@ledgerhq/types-cryptoassets": "^7.7.0-next.0",
97
+ "@ledgerhq/types-live": "^6.42.0-next.0"
99
98
  },
100
99
  "devDependencies": {
101
100
  "@types/invariant": "^2.2.2",
@@ -106,8 +105,8 @@
106
105
  "jest": "^28.1.1",
107
106
  "timemachine": "^0.3.2",
108
107
  "ts-jest": "^28.0.5",
109
- "@ledgerhq/hw-transport-node-speculos": "^6.27.19",
110
- "@ledgerhq/hw-transport-node-speculos-http": "^6.27.19"
108
+ "@ledgerhq/hw-transport-node-speculos": "^6.27.20-next.0",
109
+ "@ledgerhq/hw-transport-node-speculos-http": "^6.27.20-next.0"
111
110
  },
112
111
  "scripts": {
113
112
  "clean": "rm -rf lib lib-es",
@@ -117,6 +116,7 @@
117
116
  "doc": "documentation readme src/** --section=API --pe ts --re ts --re d.ts",
118
117
  "lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx --cache",
119
118
  "lint:fix": "pnpm lint --fix",
120
- "test": "cross-env TZ=America/New_York jest"
119
+ "test": "cross-env TZ=America/New_York jest",
120
+ "unimported": "unimported"
121
121
  }
122
122
  }
@@ -5,15 +5,14 @@ import {
5
5
  } from "@ledgerhq/cryptoassets";
6
6
  import { CryptoCurrency, CryptoCurrencyId, FiatCurrency } from "@ledgerhq/types-cryptoassets";
7
7
  import { getEnv } from "@ledgerhq/live-env";
8
+ import { log } from "@ledgerhq/logs";
8
9
 
9
10
  // set by user side effect to precise which currencies are considered supported (typically by live)
10
11
  let userSupportedCurrencies: CryptoCurrency[] = [];
11
- let userSupportedFiats: FiatCurrency[] = [];
12
- // Current list was established with what our API really supports
13
- // to update the list,
14
- // 1. $ ledger-live countervalues --format supportedFiats --fiats
15
- // 2. copy & paste the output
16
- setSupportedFiats([
12
+ let userSupportedFiats: FiatCurrency[] | null = null;
13
+
14
+ // The API returns Coingeko countervalues tickers, but getFiatCurrencyByTicker might not support each of those.
15
+ const locallySupportedFiats = [
17
16
  "AED",
18
17
  "AUD",
19
18
  "BGN",
@@ -63,15 +62,62 @@ setSupportedFiats([
63
62
  "VND",
64
63
  "VUV",
65
64
  "ZAR",
66
- ]);
65
+ ];
67
66
 
68
- export function isFiatSupported(fiat: FiatCurrency) {
69
- return userSupportedFiats.includes(fiat);
67
+ async function initializeUserSupportedFiats() {
68
+ try {
69
+ const ids = await fetchSupportedFiatsTokens();
70
+ const idsToUpper = ids.map(id => id.toUpperCase());
71
+
72
+ // This makes sure we only keep the elements supported in our API and that are available for getFiatCurrencyByTicker
73
+ const supportedTokens = idsToUpper.filter(token => locallySupportedFiats.includes(token));
74
+ userSupportedFiats = supportedTokens.map(id => {
75
+ return getFiatCurrencyByTicker(id);
76
+ });
77
+ } catch (error) {
78
+ throw new Error(`Failed to get supported Fiats. Error Message: ${error}`);
79
+ }
80
+ }
81
+
82
+ export async function fetchSupportedFiatsTokens(): Promise<string[]> {
83
+ try {
84
+ const response = await fetch("https://countervalues.live.ledger.com/v2/supported-to", {
85
+ method: "GET",
86
+ headers: {
87
+ accept: "application/json",
88
+ },
89
+ });
90
+
91
+ if (!response.ok) {
92
+ throw new Error(`Request failed with status ${response.status}`);
93
+ }
94
+
95
+ const data: string[] = await response.json();
96
+ return data;
97
+ } catch (error) {
98
+ // Handle any network or parsing errors here
99
+ console.error("Error:", error);
100
+ throw error;
101
+ }
70
102
  }
71
- export function setSupportedFiats(ids: string[]) {
72
- userSupportedFiats = ids.map(getFiatCurrencyByTicker);
103
+
104
+ // Usage of isFiatSupported and listSupportedFiats should check if userSupportedFiats is populated
105
+ export function isFiatSupported(fiat: FiatCurrency) {
106
+ return userSupportedFiats?.includes(fiat);
73
107
  }
74
- export function listSupportedFiats(): FiatCurrency[] {
108
+
109
+ export async function listSupportedFiats(): Promise<FiatCurrency[]> {
110
+ if (userSupportedFiats === null) {
111
+ // Handle case where userSupportedFiats is not yet populated (e.g., by calling initializeUserSupportedFiats)
112
+ try {
113
+ await initializeUserSupportedFiats();
114
+ } catch (error) {
115
+ // Handle initialization error
116
+ log("debug", `Failed to initialize userSupportedFiats. Error Message: ${error}`);
117
+ return [];
118
+ }
119
+ return userSupportedFiats || [];
120
+ }
75
121
  return userSupportedFiats;
76
122
  }
77
123
 
@@ -10,7 +10,12 @@ import { CollectionMetadataInput, NftMetadataInput, NftRequestsBatcher } from ".
10
10
  import { makeBatcher } from "../batcher";
11
11
 
12
12
  export function isNFTActive(currency: CryptoCurrency | undefined | null): boolean {
13
- return !!currency && getEnv("NFT_CURRENCIES").split(",").includes(currency?.id);
13
+ return (
14
+ !!currency &&
15
+ getEnv("NFT_CURRENCIES")
16
+ .split(",")
17
+ .includes(currency?.id)
18
+ );
14
19
  }
15
20
 
16
21
  const nftCapabilities: Record<string, NFTStandard[]> = {
@@ -1,6 +0,0 @@
1
- declare module '@ledgerhq/compressjs' {
2
- declare namespace Bzip2 {
3
- declare function compressFile(stream: Buffer): WithImplicitCoercion<ArrayBuffer | SharedArrayBuffer>
4
- declare function decompressFile(stream: Buffer): WithImplicitCoercion<ArrayBuffer | SharedArrayBuffer>
5
- }
6
- }