@ledgerhq/coin-stellar 6.4.2 → 6.5.0-nightly.2

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 (34) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +23 -20
  3. package/lib/api/index.integ.test.js +13 -6
  4. package/lib/api/index.integ.test.js.map +1 -1
  5. package/lib/logic/getBalance.d.ts.map +1 -1
  6. package/lib/logic/getBalance.js +15 -24
  7. package/lib/logic/getBalance.js.map +1 -1
  8. package/lib/logic/getBalance.test.js +1 -68
  9. package/lib/logic/getBalance.test.js.map +1 -1
  10. package/lib/logic/getTokenFromAsset.d.ts +1 -1
  11. package/lib/logic/getTokenFromAsset.d.ts.map +1 -1
  12. package/lib/logic/getTokenFromAsset.js +1 -1
  13. package/lib/logic/getTokenFromAsset.js.map +1 -1
  14. package/lib/logic/getTokenFromAsset.test.js +40 -2
  15. package/lib/logic/getTokenFromAsset.test.js.map +1 -1
  16. package/lib-es/api/index.integ.test.js +13 -6
  17. package/lib-es/api/index.integ.test.js.map +1 -1
  18. package/lib-es/logic/getBalance.d.ts.map +1 -1
  19. package/lib-es/logic/getBalance.js +15 -21
  20. package/lib-es/logic/getBalance.js.map +1 -1
  21. package/lib-es/logic/getBalance.test.js +1 -68
  22. package/lib-es/logic/getBalance.test.js.map +1 -1
  23. package/lib-es/logic/getTokenFromAsset.d.ts +1 -1
  24. package/lib-es/logic/getTokenFromAsset.d.ts.map +1 -1
  25. package/lib-es/logic/getTokenFromAsset.js +1 -1
  26. package/lib-es/logic/getTokenFromAsset.js.map +1 -1
  27. package/lib-es/logic/getTokenFromAsset.test.js +17 -2
  28. package/lib-es/logic/getTokenFromAsset.test.js.map +1 -1
  29. package/package.json +9 -9
  30. package/src/api/index.integ.test.ts +13 -6
  31. package/src/logic/getBalance.test.ts +1 -77
  32. package/src/logic/getBalance.ts +15 -21
  33. package/src/logic/getTokenFromAsset.test.ts +25 -2
  34. package/src/logic/getTokenFromAsset.ts +1 -1
@@ -1,4 +1,4 @@
1
1
 
2
- > @ledgerhq/coin-stellar@6.4.2 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-stellar
2
+ > @ledgerhq/coin-stellar@6.5.0-nightly.1 build /home/runner/work/ledger-live/ledger-live/libs/coin-modules/coin-stellar
3
3
  > tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,32 +1,35 @@
1
1
  # @ledgerhq/coin-stellar
2
2
 
3
- ## 6.4.2
3
+ ## 6.5.0-nightly.2
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - Updated dependencies [[`e04d493`](https://github.com/LedgerHQ/ledger-live/commit/e04d49340c65c8b4608a37bb726d21350fdd32f1), [`a37c06f`](https://github.com/LedgerHQ/ledger-live/commit/a37c06f97b061a5db0dad3632bb5c3e8f293677c), [`ab0e1bc`](https://github.com/LedgerHQ/ledger-live/commit/ab0e1bcc97b66b750b6c29e618eb03ce6f25bb7b), [`c2d8d86`](https://github.com/LedgerHQ/ledger-live/commit/c2d8d8670f848989836c46ea08ae88c88086fdd6), [`4d60b7e`](https://github.com/LedgerHQ/ledger-live/commit/4d60b7e0984f0f8ef75c1483e0cfaf5784fbc5ed), [`e3b568d`](https://github.com/LedgerHQ/ledger-live/commit/e3b568d2cbeee6dcf19a7047ce9fa11a04b0ae2a), [`0d368f0`](https://github.com/LedgerHQ/ledger-live/commit/0d368f0e682b3bd3daafa6af5b396648a95b1488), [`f015ef3`](https://github.com/LedgerHQ/ledger-live/commit/f015ef32660905d00f55a45f451f38bc12aec9ba), [`fe1abf6`](https://github.com/LedgerHQ/ledger-live/commit/fe1abf640cc1a30b2e78bf7aa4a12e983a068f2e), [`e3bcefb`](https://github.com/LedgerHQ/ledger-live/commit/e3bcefbf8a46c91388d6f936fd31d6ffcdc24756)]:
8
- - @ledgerhq/types-live@6.86.0
9
- - @ledgerhq/cryptoassets@13.30.0
10
- - @ledgerhq/types-cryptoassets@7.28.0
11
- - @ledgerhq/errors@6.26.0
12
- - @ledgerhq/live-env@2.18.0
13
- - @ledgerhq/coin-framework@6.6.0
14
- - @ledgerhq/devices@8.6.1
15
- - @ledgerhq/live-network@2.0.19
7
+ - Updated dependencies [[`1d9860c`](https://github.com/LedgerHQ/ledger-live/commit/1d9860cd1688131d391579955b40c6710b667db8), [`c8dbf40`](https://github.com/LedgerHQ/ledger-live/commit/c8dbf402268359e225a94782420111e786f875fa)]:
8
+ - @ledgerhq/types-cryptoassets@7.28.0-nightly.1
9
+ - @ledgerhq/cryptoassets@13.30.0-nightly.1
10
+ - @ledgerhq/coin-framework@6.6.0-nightly.2
11
+ - @ledgerhq/types-live@6.86.0-nightly.0
16
12
 
17
- ## 6.4.2-next.0
13
+ ## 6.5.0-nightly.1
14
+
15
+ ### Minor Changes
16
+
17
+ - [#11965](https://github.com/LedgerHQ/ledger-live/pull/11965) [`3979c07`](https://github.com/LedgerHQ/ledger-live/commit/3979c0715e4f54165c89d00ebe1441e064e1a110) Thanks [@francois-guerin-ledger](https://github.com/francois-guerin-ledger)! - refactor(coin-evm,coin-stellar): remove CAL dependency from Alpaca
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [[`3979c07`](https://github.com/LedgerHQ/ledger-live/commit/3979c0715e4f54165c89d00ebe1441e064e1a110)]:
22
+ - @ledgerhq/coin-framework@6.6.0-nightly.1
23
+
24
+ ## 6.4.2-nightly.0
18
25
 
19
26
  ### Patch Changes
20
27
 
21
- - Updated dependencies [[`e04d493`](https://github.com/LedgerHQ/ledger-live/commit/e04d49340c65c8b4608a37bb726d21350fdd32f1), [`a37c06f`](https://github.com/LedgerHQ/ledger-live/commit/a37c06f97b061a5db0dad3632bb5c3e8f293677c), [`ab0e1bc`](https://github.com/LedgerHQ/ledger-live/commit/ab0e1bcc97b66b750b6c29e618eb03ce6f25bb7b), [`c2d8d86`](https://github.com/LedgerHQ/ledger-live/commit/c2d8d8670f848989836c46ea08ae88c88086fdd6), [`4d60b7e`](https://github.com/LedgerHQ/ledger-live/commit/4d60b7e0984f0f8ef75c1483e0cfaf5784fbc5ed), [`e3b568d`](https://github.com/LedgerHQ/ledger-live/commit/e3b568d2cbeee6dcf19a7047ce9fa11a04b0ae2a), [`0d368f0`](https://github.com/LedgerHQ/ledger-live/commit/0d368f0e682b3bd3daafa6af5b396648a95b1488), [`f015ef3`](https://github.com/LedgerHQ/ledger-live/commit/f015ef32660905d00f55a45f451f38bc12aec9ba), [`fe1abf6`](https://github.com/LedgerHQ/ledger-live/commit/fe1abf640cc1a30b2e78bf7aa4a12e983a068f2e), [`e3bcefb`](https://github.com/LedgerHQ/ledger-live/commit/e3bcefbf8a46c91388d6f936fd31d6ffcdc24756)]:
22
- - @ledgerhq/types-live@6.86.0-next.0
23
- - @ledgerhq/cryptoassets@13.30.0-next.0
24
- - @ledgerhq/types-cryptoassets@7.28.0-next.0
25
- - @ledgerhq/errors@6.26.0-next.0
26
- - @ledgerhq/live-env@2.18.0-next.0
27
- - @ledgerhq/coin-framework@6.6.0-next.0
28
- - @ledgerhq/devices@8.6.1-next.0
29
- - @ledgerhq/live-network@2.0.19-next.0
28
+ - Updated dependencies [[`e04d493`](https://github.com/LedgerHQ/ledger-live/commit/e04d49340c65c8b4608a37bb726d21350fdd32f1), [`4d60b7e`](https://github.com/LedgerHQ/ledger-live/commit/4d60b7e0984f0f8ef75c1483e0cfaf5784fbc5ed), [`e3b568d`](https://github.com/LedgerHQ/ledger-live/commit/e3b568d2cbeee6dcf19a7047ce9fa11a04b0ae2a), [`0d368f0`](https://github.com/LedgerHQ/ledger-live/commit/0d368f0e682b3bd3daafa6af5b396648a95b1488), [`fe1abf6`](https://github.com/LedgerHQ/ledger-live/commit/fe1abf640cc1a30b2e78bf7aa4a12e983a068f2e)]:
29
+ - @ledgerhq/types-live@6.86.0-nightly.0
30
+ - @ledgerhq/types-cryptoassets@7.28.0-nightly.0
31
+ - @ledgerhq/cryptoassets@13.30.0-nightly.0
32
+ - @ledgerhq/coin-framework@6.6.0-nightly.0
30
33
 
31
34
  ## 6.4.1
32
35
 
@@ -4,10 +4,8 @@ const stellar_sdk_1 = require("@stellar/stellar-sdk");
4
4
  const _1 = require(".");
5
5
  /**
6
6
  * Testnet scan: https://testnet.lumenscan.io/
7
- *
8
- * Tests are skipped for the moment due to TooManyRequest errors
9
7
  */
10
- describe.skip("Stellar Api", () => {
8
+ describe("Stellar Api", () => {
11
9
  let module;
12
10
  const ADDRESS = "GBAUZBDXMVV7HII4JWBGFMLVKVJ6OLQAKOCGXM5E2FM4TAZB6C7JO2L7";
13
11
  beforeAll(() => {
@@ -31,7 +29,7 @@ describe.skip("Stellar Api", () => {
31
29
  memo: { type: "NO_MEMO" },
32
30
  });
33
31
  // Then
34
- expect(result).toEqual(BigInt(100));
32
+ expect(result).toEqual({ value: BigInt(100) });
35
33
  });
36
34
  });
37
35
  describe("listOperations", () => {
@@ -53,7 +51,7 @@ describe.skip("Stellar Api", () => {
53
51
  });
54
52
  it("returns all operations from the latest, but in asc order", async () => {
55
53
  const [txsDesc] = await module.listOperations(ADDRESS, { minHeight: 0, order: "desc" });
56
- expect(txsDesc[0]).toBe(txs[0]);
54
+ expect(txsDesc[0]).toStrictEqual(txs[0]);
57
55
  });
58
56
  });
59
57
  describe("lastBlock", () => {
@@ -71,7 +69,16 @@ describe.skip("Stellar Api", () => {
71
69
  // When
72
70
  const result = await module.getBalance(ADDRESS);
73
71
  // Then
74
- expect(result).toBeGreaterThan(0);
72
+ expect(result).toBeInstanceOf(Array);
73
+ expect(result[0]).toMatchObject({
74
+ value: expect.any(BigInt),
75
+ asset: { type: "native" },
76
+ });
77
+ expect(result[0].value).toBeGreaterThan(0);
78
+ result.slice(1).forEach(balance => {
79
+ expect(balance.asset.type).not.toEqual("native");
80
+ expect(balance.value).toBeGreaterThanOrEqual(0);
81
+ });
75
82
  });
76
83
  });
77
84
  describe("craftTransaction", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.integ.test.js","sourceRoot":"","sources":["../../src/api/index.integ.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.integ.test.js","sourceRoot":"","sources":["../../src/api/index.integ.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../src/logic/getBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAO7D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAgCjE"}
1
+ {"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../src/logic/getBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAG7D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA8BjE"}
@@ -1,14 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.getBalance = void 0;
7
4
  const network_1 = require("../network");
8
- const tokens_1 = require("@ledgerhq/cryptoassets/tokens");
9
- const utils_1 = require("./utils");
10
- const parseCurrencyUnit_1 = require("@ledgerhq/coin-framework/currencies/parseCurrencyUnit");
11
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
12
5
  async function getBalance(addr) {
13
6
  const { balance, assets, spendableBalance } = await (0, network_1.fetchAccount)(addr);
14
7
  const locked = BigInt(balance.toString()) - BigInt(spendableBalance.toString());
@@ -22,23 +15,21 @@ async function getBalance(addr) {
22
15
  if (!assets || assets.length === 0) {
23
16
  return nativeRes;
24
17
  }
25
- const assetBalances = assets.map(asset => {
26
- const token = (0, tokens_1.findTokenById)(`stellar/asset/${(0, utils_1.getAssetIdFromAsset)(asset)}`);
27
- let parsedBalance = new bignumber_js_1.default(0);
28
- if (token) {
29
- parsedBalance = (0, parseCurrencyUnit_1.parseCurrencyUnit)(token.units[0], asset.balance);
30
- }
31
- // NOTE: parse as-is (assumed decimal string), caller should decide how to render
32
- const intBalance = BigInt(Math.floor(parseFloat(parsedBalance.toString()))); // 7 decimals, per Stellar convention
33
- return {
34
- value: intBalance,
35
- asset: {
36
- type: asset.asset_type,
37
- assetReference: asset.asset_code,
38
- assetOwner: asset.asset_issuer,
39
- },
40
- };
41
- });
18
+ /**
19
+ * https://developers.stellar.org/docs/data/apis/horizon/api-reference/retrieve-an-account
20
+ * `asset.balance` matches [0-9]+\.[0-9]{7}
21
+ * NOTE `Math.floor` is still needed
22
+ * > Number.parseFloat('0.1468328') * 10 ** 7
23
+ * 1468328.0000000002
24
+ */
25
+ const assetBalances = assets.map(asset => ({
26
+ value: BigInt(Math.floor(Number.parseFloat(asset.balance) * 10 ** 7)),
27
+ asset: {
28
+ type: asset.asset_type,
29
+ assetReference: asset.asset_code,
30
+ assetOwner: asset.asset_issuer,
31
+ },
32
+ }));
42
33
  return [...nativeRes, ...assetBalances];
43
34
  }
44
35
  exports.getBalance = getBalance;
@@ -1 +1 @@
1
- {"version":3,"file":"getBalance.js","sourceRoot":"","sources":["../../src/logic/getBalance.ts"],"names":[],"mappings":";;;;;;AACA,wCAA0C;AAC1C,0DAA8D;AAC9D,mCAA8C;AAC9C,6FAA0F;AAC1F,gEAAqC;AAE9B,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG;QAChB;YACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;YAClC,MAAM,EAAE,MAAM,EAAE,gFAAgF;SACjG;KACF,CAAC;IACF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,aAAa,GAAc,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAClD,MAAM,KAAK,GAAG,IAAA,sBAAa,EAAC,iBAAiB,IAAA,2BAAmB,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,IAAI,aAAa,GAAG,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,aAAa,GAAG,IAAA,qCAAiB,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,iFAAiF;QACjF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC;QAClH,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,UAAU;gBACtB,cAAc,EAAE,KAAK,CAAC,UAAU;gBAChC,UAAU,EAAE,KAAK,CAAC,YAAY;aAC/B;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC,CAAC;AAC1C,CAAC;AAhCD,gCAgCC"}
1
+ {"version":3,"file":"getBalance.js","sourceRoot":"","sources":["../../src/logic/getBalance.ts"],"names":[],"mappings":";;;AACA,wCAA0C;AAEnC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG;QAChB;YACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;YAClC,MAAM,EAAE,MAAM,EAAE,gFAAgF;SACjG;KACF,CAAC;IACF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;;OAMG;IACH,MAAM,aAAa,GAAc,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,KAAK,EAAE;YACL,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,cAAc,EAAE,KAAK,CAAC,UAAU;YAChC,UAAU,EAAE,KAAK,CAAC,YAAY;SAC/B;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC,CAAC;AAC1C,CAAC;AA9BD,gCA8BC"}
@@ -2,21 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const getBalance_1 = require("./getBalance");
4
4
  const network_1 = require("../network");
5
- const tokens_1 = require("@ledgerhq/cryptoassets/tokens");
6
- const utils_1 = require("./utils");
7
- const parseCurrencyUnit_1 = require("@ledgerhq/coin-framework/currencies/parseCurrencyUnit");
8
5
  jest.mock("../network", () => ({
9
6
  fetchAccount: jest.fn(),
10
7
  }));
11
- jest.mock("@ledgerhq/cryptoassets/tokens", () => ({
12
- findTokenById: jest.fn(),
13
- }));
14
- jest.mock("./utils", () => ({
15
- getAssetIdFromAsset: jest.fn(),
16
- }));
17
- jest.mock("@ledgerhq/coin-framework/currencies/parseCurrencyUnit", () => ({
18
- parseCurrencyUnit: jest.fn(),
19
- }));
20
8
  describe("getBalance", () => {
21
9
  it("returns native balance when no assets are present", async () => {
22
10
  network_1.fetchAccount.mockResolvedValue({
@@ -46,13 +34,6 @@ describe("getBalance", () => {
46
34
  },
47
35
  ],
48
36
  });
49
- utils_1.getAssetIdFromAsset.mockReturnValue("USDC-issuer-address");
50
- tokens_1.findTokenById.mockReturnValue({
51
- units: [{ code: "USDC", magnitude: 7 }],
52
- });
53
- parseCurrencyUnit_1.parseCurrencyUnit.mockReturnValue({
54
- toString: () => "50.1234567",
55
- });
56
37
  const result = await (0, getBalance_1.getBalance)("test-address");
57
38
  expect(result).toEqual([
58
39
  {
@@ -61,7 +42,7 @@ describe("getBalance", () => {
61
42
  locked: BigInt(10),
62
43
  },
63
44
  {
64
- value: BigInt(50),
45
+ value: BigInt(501234567),
65
46
  asset: {
66
47
  type: "credit_alphanum4",
67
48
  assetReference: "USDC",
@@ -70,54 +51,6 @@ describe("getBalance", () => {
70
51
  },
71
52
  ]);
72
53
  expect(network_1.fetchAccount).toHaveBeenCalledWith("test-address");
73
- expect(utils_1.getAssetIdFromAsset).toHaveBeenCalledWith({
74
- asset_type: "credit_alphanum4",
75
- asset_code: "USDC",
76
- asset_issuer: "issuer-address",
77
- balance: "50.1234567",
78
- });
79
- expect(tokens_1.findTokenById).toHaveBeenCalledWith("stellar/asset/USDC-issuer-address");
80
- expect(parseCurrencyUnit_1.parseCurrencyUnit).toHaveBeenCalledWith({ code: "USDC", magnitude: 7 }, "50.1234567");
81
- });
82
- it("handles assets without matching tokens gracefully", async () => {
83
- network_1.fetchAccount.mockResolvedValue({
84
- balance: 100000000,
85
- spendableBalance: 99999990,
86
- assets: [
87
- {
88
- asset_type: "credit_alphanum4",
89
- asset_code: "USDT",
90
- asset_issuer: "issuer-address",
91
- balance: "25.0000000",
92
- },
93
- ],
94
- });
95
- utils_1.getAssetIdFromAsset.mockReturnValue("USDT-issuer-address");
96
- tokens_1.findTokenById.mockReturnValue(null);
97
- const result = await (0, getBalance_1.getBalance)("test-address");
98
- expect(result).toEqual([
99
- {
100
- value: BigInt(100000000),
101
- asset: { type: "native" },
102
- locked: BigInt(10),
103
- },
104
- {
105
- value: BigInt(0),
106
- asset: {
107
- type: "credit_alphanum4",
108
- assetReference: "USDT",
109
- assetOwner: "issuer-address",
110
- },
111
- },
112
- ]);
113
- expect(network_1.fetchAccount).toHaveBeenCalledWith("test-address");
114
- expect(utils_1.getAssetIdFromAsset).toHaveBeenCalledWith({
115
- asset_type: "credit_alphanum4",
116
- asset_code: "USDT",
117
- asset_issuer: "issuer-address",
118
- balance: "25.0000000",
119
- });
120
- expect(tokens_1.findTokenById).toHaveBeenCalledWith("stellar/asset/USDT-issuer-address");
121
54
  });
122
55
  });
123
56
  //# sourceMappingURL=getBalance.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getBalance.test.js","sourceRoot":"","sources":["../../src/logic/getBalance.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getBalance.test.js","sourceRoot":"","sources":["../../src/logic/getBalance.test.ts"],"names":[],"mappings":";;AAAA,6CAA0C;AAC1C,wCAA0C;AAE1C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;CACxB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAChE,sBAA0B,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,QAAQ;YAC1B,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAU,EAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB;gBACE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;gBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;aACnB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACxE,sBAA0B,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,QAAQ;YAC1B,MAAM,EAAE;gBACN;oBACE,UAAU,EAAE,kBAAkB;oBAC9B,UAAU,EAAE,MAAM;oBAClB,YAAY,EAAE,gBAAgB;oBAC9B,OAAO,EAAE,YAAY;iBACtB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAU,EAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB;gBACE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;gBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;aACnB;YACD;gBACE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;gBACxB,KAAK,EAAE;oBACL,IAAI,EAAE,kBAAkB;oBACxB,cAAc,EAAE,MAAM;oBACtB,UAAU,EAAE,gBAAgB;iBAC7B;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,sBAAY,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { AssetInfo } from "@ledgerhq/coin-framework/api/types";
2
2
  import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
3
- export declare function getTokenFromAsset(asset: AssetInfo): TokenCurrency | undefined;
3
+ export declare function getTokenFromAsset(asset: AssetInfo): Promise<TokenCurrency | undefined>;
4
4
  export declare function getAssetFromToken(token: TokenCurrency): AssetInfo;
5
5
  //# sourceMappingURL=getTokenFromAsset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenFromAsset.d.ts","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAM7E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAQjE"}
1
+ {"version":3,"file":"getTokenFromAsset.d.ts","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAM5F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAQjE"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAssetFromToken = exports.getTokenFromAsset = void 0;
4
4
  const tokens_1 = require("@ledgerhq/cryptoassets/tokens");
5
- function getTokenFromAsset(asset) {
5
+ async function getTokenFromAsset(asset) {
6
6
  const assetId = asset.type !== "native" && "assetReference" in asset && "assetOwner" in asset
7
7
  ? `${asset.assetReference}:${asset.assetOwner}`
8
8
  : "";
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenFromAsset.js","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.ts"],"names":[],"mappings":";;;AACA,0DAA8D;AAG9D,SAAgB,iBAAiB,CAAC,KAAgB;IAChD,MAAM,OAAO,GACX,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK;QAC3E,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,EAAE;QAC/C,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,IAAA,sBAAa,EAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAND,8CAMC;AAED,SAAgB,iBAAiB,CAAC,KAAoB;IACpD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,cAAc,EAAE,KAAK,CAAC,IAAI;QAC1B,UAAU,EAAE,KAAK,CAAC,eAAe;QACjC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;KACrB,CAAC;AACJ,CAAC;AARD,8CAQC"}
1
+ {"version":3,"file":"getTokenFromAsset.js","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.ts"],"names":[],"mappings":";;;AACA,0DAA8D;AAGvD,KAAK,UAAU,iBAAiB,CAAC,KAAgB;IACtD,MAAM,OAAO,GACX,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK;QAC3E,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,EAAE;QAC/C,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,IAAA,sBAAa,EAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAND,8CAMC;AAED,SAAgB,iBAAiB,CAAC,KAAoB;IACpD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,cAAc,EAAE,KAAK,CAAC,IAAI;QAC1B,UAAU,EAAE,KAAK,CAAC,eAAe;QACjC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;KACrB,CAAC;AACJ,CAAC;AARD,8CAQC"}
@@ -1,9 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
+ const tokenModule = __importStar(require("@ledgerhq/cryptoassets/tokens"));
3
27
  const getTokenFromAsset_1 = require("./getTokenFromAsset");
4
28
  describe("getTokenFromAsset", () => {
5
- it("computes the token of the USDC asset", () => {
6
- expect((0, getTokenFromAsset_1.getTokenFromAsset)({
29
+ afterEach(() => {
30
+ jest.resetAllMocks();
31
+ });
32
+ it("computes the token of the USDC asset, trusting the CAL", async () => {
33
+ const findTokenById = jest.spyOn(tokenModule, "findTokenById");
34
+ expect(await (0, getTokenFromAsset_1.getTokenFromAsset)({
7
35
  type: "token",
8
36
  assetReference: "USDC",
9
37
  assetOwner: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
@@ -12,6 +40,16 @@ describe("getTokenFromAsset", () => {
12
40
  contractAddress: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
13
41
  name: "USDC",
14
42
  });
43
+ expect(findTokenById).toHaveBeenCalledWith("stellar/asset/USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN");
44
+ });
45
+ it("does not compute the token of an unknown asset, trusting the CAL", async () => {
46
+ const findTokenById = jest.spyOn(tokenModule, "findTokenById");
47
+ expect(await (0, getTokenFromAsset_1.getTokenFromAsset)({
48
+ type: "token",
49
+ assetReference: "unknown-reference",
50
+ assetOwner: "unknown-owner",
51
+ })).toBeUndefined();
52
+ expect(findTokenById).toHaveBeenCalledWith("stellar/asset/unknown-reference:unknown-owner");
15
53
  });
16
54
  });
17
55
  describe("getAssetFromToken", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenFromAsset.test.js","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.test.ts"],"names":[],"mappings":";;AACA,2DAA2E;AAE3E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,IAAA,qCAAiB,EAAC;YAChB,IAAI,EAAE,OAAO;YACb,cAAc,EAAE,MAAM;YACtB,UAAU,EAAE,0DAA0D;SACvE,CAAC,CACH,CAAC,aAAa,CAAC;YACd,EAAE,EAAE,6EAA6E;YACjF,eAAe,EAAE,0DAA0D;YAC3E,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,IAAA,qCAAiB,EAAC;YAChB,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,0DAA0D;YAC3E,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;SAC1B,CAAC,CAC/B,CAAC,OAAO,CAAC;YACR,UAAU,EAAE,0DAA0D;YACtE,cAAc,EAAE,MAAM;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,CAAC;gBACZ,IAAI,EAAE,MAAM;aACb;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"getTokenFromAsset.test.js","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,2EAA6D;AAC7D,2DAA2E;AAE3E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAE/D,MAAM,CACJ,MAAM,IAAA,qCAAiB,EAAC;YACtB,IAAI,EAAE,OAAO;YACb,cAAc,EAAE,MAAM;YACtB,UAAU,EAAE,0DAA0D;SACvE,CAAC,CACH,CAAC,aAAa,CAAC;YACd,EAAE,EAAE,6EAA6E;YACjF,eAAe,EAAE,0DAA0D;YAC3E,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACxC,6EAA6E,CAC9E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAE/D,MAAM,CACJ,MAAM,IAAA,qCAAiB,EAAC;YACtB,IAAI,EAAE,OAAO;YACb,cAAc,EAAE,mBAAmB;YACnC,UAAU,EAAE,eAAe;SAC5B,CAAC,CACH,CAAC,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,+CAA+C,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,IAAA,qCAAiB,EAAC;YAChB,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,0DAA0D;YAC3E,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;SAC1B,CAAC,CAC/B,CAAC,OAAO,CAAC;YACR,UAAU,EAAE,0DAA0D;YACtE,cAAc,EAAE,MAAM;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,CAAC;gBACZ,IAAI,EAAE,MAAM;aACb;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,10 +2,8 @@ import { xdr } from "@stellar/stellar-sdk";
2
2
  import { createApi, envelopeFromAnyXDR } from ".";
3
3
  /**
4
4
  * Testnet scan: https://testnet.lumenscan.io/
5
- *
6
- * Tests are skipped for the moment due to TooManyRequest errors
7
5
  */
8
- describe.skip("Stellar Api", () => {
6
+ describe("Stellar Api", () => {
9
7
  let module;
10
8
  const ADDRESS = "GBAUZBDXMVV7HII4JWBGFMLVKVJ6OLQAKOCGXM5E2FM4TAZB6C7JO2L7";
11
9
  beforeAll(() => {
@@ -29,7 +27,7 @@ describe.skip("Stellar Api", () => {
29
27
  memo: { type: "NO_MEMO" },
30
28
  });
31
29
  // Then
32
- expect(result).toEqual(BigInt(100));
30
+ expect(result).toEqual({ value: BigInt(100) });
33
31
  });
34
32
  });
35
33
  describe("listOperations", () => {
@@ -51,7 +49,7 @@ describe.skip("Stellar Api", () => {
51
49
  });
52
50
  it("returns all operations from the latest, but in asc order", async () => {
53
51
  const [txsDesc] = await module.listOperations(ADDRESS, { minHeight: 0, order: "desc" });
54
- expect(txsDesc[0]).toBe(txs[0]);
52
+ expect(txsDesc[0]).toStrictEqual(txs[0]);
55
53
  });
56
54
  });
57
55
  describe("lastBlock", () => {
@@ -69,7 +67,16 @@ describe.skip("Stellar Api", () => {
69
67
  // When
70
68
  const result = await module.getBalance(ADDRESS);
71
69
  // Then
72
- expect(result).toBeGreaterThan(0);
70
+ expect(result).toBeInstanceOf(Array);
71
+ expect(result[0]).toMatchObject({
72
+ value: expect.any(BigInt),
73
+ asset: { type: "native" },
74
+ });
75
+ expect(result[0].value).toBeGreaterThan(0);
76
+ result.slice(1).forEach(balance => {
77
+ expect(balance.asset.type).not.toEqual("native");
78
+ expect(balance.value).toBeGreaterThanOrEqual(0);
79
+ });
73
80
  });
74
81
  });
75
82
  describe("craftTransaction", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.integ.test.js","sourceRoot":"","sources":["../../src/api/index.integ.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.integ.test.js","sourceRoot":"","sources":["../../src/api/index.integ.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../src/logic/getBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAO7D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAgCjE"}
1
+ {"version":3,"file":"getBalance.d.ts","sourceRoot":"","sources":["../../src/logic/getBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAG7D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA8BjE"}
@@ -1,8 +1,4 @@
1
1
  import { fetchAccount } from "../network";
2
- import { findTokenById } from "@ledgerhq/cryptoassets/tokens";
3
- import { getAssetIdFromAsset } from "./utils";
4
- import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies/parseCurrencyUnit";
5
- import BigNumber from "bignumber.js";
6
2
  export async function getBalance(addr) {
7
3
  const { balance, assets, spendableBalance } = await fetchAccount(addr);
8
4
  const locked = BigInt(balance.toString()) - BigInt(spendableBalance.toString());
@@ -16,23 +12,21 @@ export async function getBalance(addr) {
16
12
  if (!assets || assets.length === 0) {
17
13
  return nativeRes;
18
14
  }
19
- const assetBalances = assets.map(asset => {
20
- const token = findTokenById(`stellar/asset/${getAssetIdFromAsset(asset)}`);
21
- let parsedBalance = new BigNumber(0);
22
- if (token) {
23
- parsedBalance = parseCurrencyUnit(token.units[0], asset.balance);
24
- }
25
- // NOTE: parse as-is (assumed decimal string), caller should decide how to render
26
- const intBalance = BigInt(Math.floor(parseFloat(parsedBalance.toString()))); // 7 decimals, per Stellar convention
27
- return {
28
- value: intBalance,
29
- asset: {
30
- type: asset.asset_type,
31
- assetReference: asset.asset_code,
32
- assetOwner: asset.asset_issuer,
33
- },
34
- };
35
- });
15
+ /**
16
+ * https://developers.stellar.org/docs/data/apis/horizon/api-reference/retrieve-an-account
17
+ * `asset.balance` matches [0-9]+\.[0-9]{7}
18
+ * NOTE `Math.floor` is still needed
19
+ * > Number.parseFloat('0.1468328') * 10 ** 7
20
+ * 1468328.0000000002
21
+ */
22
+ const assetBalances = assets.map(asset => ({
23
+ value: BigInt(Math.floor(Number.parseFloat(asset.balance) * 10 ** 7)),
24
+ asset: {
25
+ type: asset.asset_type,
26
+ assetReference: asset.asset_code,
27
+ assetOwner: asset.asset_issuer,
28
+ },
29
+ }));
36
30
  return [...nativeRes, ...assetBalances];
37
31
  }
38
32
  //# sourceMappingURL=getBalance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getBalance.js","sourceRoot":"","sources":["../../src/logic/getBalance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG;QAChB;YACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;YAClC,MAAM,EAAE,MAAM,EAAE,gFAAgF;SACjG;KACF,CAAC;IACF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,aAAa,GAAc,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QAClD,MAAM,KAAK,GAAG,aAAa,CAAC,iBAAiB,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,IAAI,aAAa,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,iFAAiF;QACjF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC;QAClH,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,UAAU;gBACtB,cAAc,EAAE,KAAK,CAAC,UAAU;gBAChC,UAAU,EAAE,KAAK,CAAC,YAAY;aAC/B;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"getBalance.js","sourceRoot":"","sources":["../../src/logic/getBalance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG;QAChB;YACE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;YAClC,MAAM,EAAE,MAAM,EAAE,gFAAgF;SACjG;KACF,CAAC;IACF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;;OAMG;IACH,MAAM,aAAa,GAAc,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpD,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,KAAK,EAAE;YACL,IAAI,EAAE,KAAK,CAAC,UAAU;YACtB,cAAc,EAAE,KAAK,CAAC,UAAU;YAChC,UAAU,EAAE,KAAK,CAAC,YAAY;SAC/B;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,aAAa,CAAC,CAAC;AAC1C,CAAC"}
@@ -1,20 +1,8 @@
1
1
  import { getBalance } from "./getBalance";
2
2
  import { fetchAccount } from "../network";
3
- import { findTokenById } from "@ledgerhq/cryptoassets/tokens";
4
- import { getAssetIdFromAsset } from "./utils";
5
- import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies/parseCurrencyUnit";
6
3
  jest.mock("../network", () => ({
7
4
  fetchAccount: jest.fn(),
8
5
  }));
9
- jest.mock("@ledgerhq/cryptoassets/tokens", () => ({
10
- findTokenById: jest.fn(),
11
- }));
12
- jest.mock("./utils", () => ({
13
- getAssetIdFromAsset: jest.fn(),
14
- }));
15
- jest.mock("@ledgerhq/coin-framework/currencies/parseCurrencyUnit", () => ({
16
- parseCurrencyUnit: jest.fn(),
17
- }));
18
6
  describe("getBalance", () => {
19
7
  it("returns native balance when no assets are present", async () => {
20
8
  fetchAccount.mockResolvedValue({
@@ -44,13 +32,6 @@ describe("getBalance", () => {
44
32
  },
45
33
  ],
46
34
  });
47
- getAssetIdFromAsset.mockReturnValue("USDC-issuer-address");
48
- findTokenById.mockReturnValue({
49
- units: [{ code: "USDC", magnitude: 7 }],
50
- });
51
- parseCurrencyUnit.mockReturnValue({
52
- toString: () => "50.1234567",
53
- });
54
35
  const result = await getBalance("test-address");
55
36
  expect(result).toEqual([
56
37
  {
@@ -59,7 +40,7 @@ describe("getBalance", () => {
59
40
  locked: BigInt(10),
60
41
  },
61
42
  {
62
- value: BigInt(50),
43
+ value: BigInt(501234567),
63
44
  asset: {
64
45
  type: "credit_alphanum4",
65
46
  assetReference: "USDC",
@@ -68,54 +49,6 @@ describe("getBalance", () => {
68
49
  },
69
50
  ]);
70
51
  expect(fetchAccount).toHaveBeenCalledWith("test-address");
71
- expect(getAssetIdFromAsset).toHaveBeenCalledWith({
72
- asset_type: "credit_alphanum4",
73
- asset_code: "USDC",
74
- asset_issuer: "issuer-address",
75
- balance: "50.1234567",
76
- });
77
- expect(findTokenById).toHaveBeenCalledWith("stellar/asset/USDC-issuer-address");
78
- expect(parseCurrencyUnit).toHaveBeenCalledWith({ code: "USDC", magnitude: 7 }, "50.1234567");
79
- });
80
- it("handles assets without matching tokens gracefully", async () => {
81
- fetchAccount.mockResolvedValue({
82
- balance: 100000000,
83
- spendableBalance: 99999990,
84
- assets: [
85
- {
86
- asset_type: "credit_alphanum4",
87
- asset_code: "USDT",
88
- asset_issuer: "issuer-address",
89
- balance: "25.0000000",
90
- },
91
- ],
92
- });
93
- getAssetIdFromAsset.mockReturnValue("USDT-issuer-address");
94
- findTokenById.mockReturnValue(null);
95
- const result = await getBalance("test-address");
96
- expect(result).toEqual([
97
- {
98
- value: BigInt(100000000),
99
- asset: { type: "native" },
100
- locked: BigInt(10),
101
- },
102
- {
103
- value: BigInt(0),
104
- asset: {
105
- type: "credit_alphanum4",
106
- assetReference: "USDT",
107
- assetOwner: "issuer-address",
108
- },
109
- },
110
- ]);
111
- expect(fetchAccount).toHaveBeenCalledWith("test-address");
112
- expect(getAssetIdFromAsset).toHaveBeenCalledWith({
113
- asset_type: "credit_alphanum4",
114
- asset_code: "USDT",
115
- asset_issuer: "issuer-address",
116
- balance: "25.0000000",
117
- });
118
- expect(findTokenById).toHaveBeenCalledWith("stellar/asset/USDT-issuer-address");
119
52
  });
120
53
  });
121
54
  //# sourceMappingURL=getBalance.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getBalance.test.js","sourceRoot":"","sources":["../../src/logic/getBalance.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getBalance.test.js","sourceRoot":"","sources":["../../src/logic/getBalance.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;CACxB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAChE,YAA0B,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,QAAQ;YAC1B,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB;gBACE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;gBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;aACnB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACxE,YAA0B,CAAC,iBAAiB,CAAC;YAC5C,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,QAAQ;YAC1B,MAAM,EAAE;gBACN;oBACE,UAAU,EAAE,kBAAkB;oBAC9B,UAAU,EAAE,MAAM;oBAClB,YAAY,EAAE,gBAAgB;oBAC9B,OAAO,EAAE,YAAY;iBACtB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACrB;gBACE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;gBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;aACnB;YACD;gBACE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;gBACxB,KAAK,EAAE;oBACL,IAAI,EAAE,kBAAkB;oBACxB,cAAc,EAAE,MAAM;oBACtB,UAAU,EAAE,gBAAgB;iBAC7B;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { AssetInfo } from "@ledgerhq/coin-framework/api/types";
2
2
  import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
3
- export declare function getTokenFromAsset(asset: AssetInfo): TokenCurrency | undefined;
3
+ export declare function getTokenFromAsset(asset: AssetInfo): Promise<TokenCurrency | undefined>;
4
4
  export declare function getAssetFromToken(token: TokenCurrency): AssetInfo;
5
5
  //# sourceMappingURL=getTokenFromAsset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenFromAsset.d.ts","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAM7E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAQjE"}
1
+ {"version":3,"file":"getTokenFromAsset.d.ts","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAM5F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAQjE"}
@@ -1,5 +1,5 @@
1
1
  import { findTokenById } from "@ledgerhq/cryptoassets/tokens";
2
- export function getTokenFromAsset(asset) {
2
+ export async function getTokenFromAsset(asset) {
3
3
  const assetId = asset.type !== "native" && "assetReference" in asset && "assetOwner" in asset
4
4
  ? `${asset.assetReference}:${asset.assetOwner}`
5
5
  : "";
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenFromAsset.js","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,MAAM,UAAU,iBAAiB,CAAC,KAAgB;IAChD,MAAM,OAAO,GACX,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK;QAC3E,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,EAAE;QAC/C,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,aAAa,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,cAAc,EAAE,KAAK,CAAC,IAAI;QAC1B,UAAU,EAAE,KAAK,CAAC,eAAe;QACjC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;KACrB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"getTokenFromAsset.js","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAgB;IACtD,MAAM,OAAO,GACX,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,gBAAgB,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK;QAC3E,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,EAAE;QAC/C,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,aAAa,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAoB;IACpD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,cAAc,EAAE,KAAK,CAAC,IAAI;QAC1B,UAAU,EAAE,KAAK,CAAC,eAAe;QACjC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;KACrB,CAAC;AACJ,CAAC"}
@@ -1,7 +1,12 @@
1
+ import * as tokenModule from "@ledgerhq/cryptoassets/tokens";
1
2
  import { getAssetFromToken, getTokenFromAsset } from "./getTokenFromAsset";
2
3
  describe("getTokenFromAsset", () => {
3
- it("computes the token of the USDC asset", () => {
4
- expect(getTokenFromAsset({
4
+ afterEach(() => {
5
+ jest.resetAllMocks();
6
+ });
7
+ it("computes the token of the USDC asset, trusting the CAL", async () => {
8
+ const findTokenById = jest.spyOn(tokenModule, "findTokenById");
9
+ expect(await getTokenFromAsset({
5
10
  type: "token",
6
11
  assetReference: "USDC",
7
12
  assetOwner: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
@@ -10,6 +15,16 @@ describe("getTokenFromAsset", () => {
10
15
  contractAddress: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
11
16
  name: "USDC",
12
17
  });
18
+ expect(findTokenById).toHaveBeenCalledWith("stellar/asset/USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN");
19
+ });
20
+ it("does not compute the token of an unknown asset, trusting the CAL", async () => {
21
+ const findTokenById = jest.spyOn(tokenModule, "findTokenById");
22
+ expect(await getTokenFromAsset({
23
+ type: "token",
24
+ assetReference: "unknown-reference",
25
+ assetOwner: "unknown-owner",
26
+ })).toBeUndefined();
27
+ expect(findTokenById).toHaveBeenCalledWith("stellar/asset/unknown-reference:unknown-owner");
13
28
  });
14
29
  });
15
30
  describe("getAssetFromToken", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"getTokenFromAsset.test.js","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,iBAAiB,CAAC;YAChB,IAAI,EAAE,OAAO;YACb,cAAc,EAAE,MAAM;YACtB,UAAU,EAAE,0DAA0D;SACvE,CAAC,CACH,CAAC,aAAa,CAAC;YACd,EAAE,EAAE,6EAA6E;YACjF,eAAe,EAAE,0DAA0D;YAC3E,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,iBAAiB,CAAC;YAChB,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,0DAA0D;YAC3E,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;SAC1B,CAAC,CAC/B,CAAC,OAAO,CAAC;YACR,UAAU,EAAE,0DAA0D;YACtE,cAAc,EAAE,MAAM;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,CAAC;gBACZ,IAAI,EAAE,MAAM;aACb;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"getTokenFromAsset.test.js","sourceRoot":"","sources":["../../src/logic/getTokenFromAsset.test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAE/D,MAAM,CACJ,MAAM,iBAAiB,CAAC;YACtB,IAAI,EAAE,OAAO;YACb,cAAc,EAAE,MAAM;YACtB,UAAU,EAAE,0DAA0D;SACvE,CAAC,CACH,CAAC,aAAa,CAAC;YACd,EAAE,EAAE,6EAA6E;YACjF,eAAe,EAAE,0DAA0D;YAC3E,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CACxC,6EAA6E,CAC9E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAE/D,MAAM,CACJ,MAAM,iBAAiB,CAAC;YACtB,IAAI,EAAE,OAAO;YACb,cAAc,EAAE,mBAAmB;YACnC,UAAU,EAAE,eAAe;SAC5B,CAAC,CACH,CAAC,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,+CAA+C,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,iBAAiB,CAAC;YAChB,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,0DAA0D;YAC3E,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;SAC1B,CAAC,CAC/B,CAAC,OAAO,CAAC;YACR,UAAU,EAAE,0DAA0D;YACtE,cAAc,EAAE,MAAM;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,CAAC;gBACZ,IAAI,EAAE,MAAM;aACb;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/coin-stellar",
3
- "version": "6.4.2",
3
+ "version": "6.5.0-nightly.2",
4
4
  "description": "Ledger Stellar Coin integration",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -108,15 +108,15 @@
108
108
  "invariant": "^2.2.2",
109
109
  "rxjs": "^7.8.1",
110
110
  "@exodus/patch-broken-hermes-typed-arrays": "1.0.0-alpha.1",
111
- "@ledgerhq/coin-framework": "^6.6.0",
112
- "@ledgerhq/cryptoassets": "^13.30.0",
113
- "@ledgerhq/devices": "8.6.1",
114
- "@ledgerhq/errors": "^6.26.0",
115
- "@ledgerhq/live-env": "^2.18.0",
116
- "@ledgerhq/live-network": "^2.0.19",
111
+ "@ledgerhq/coin-framework": "^6.6.0-nightly.2",
112
+ "@ledgerhq/cryptoassets": "^13.30.0-nightly.1",
113
+ "@ledgerhq/devices": "8.6.0",
114
+ "@ledgerhq/errors": "^6.26.0-nightly.0",
115
+ "@ledgerhq/live-env": "^2.17.0",
116
+ "@ledgerhq/live-network": "^2.0.18",
117
117
  "@ledgerhq/logs": "^6.13.0",
118
- "@ledgerhq/types-cryptoassets": "^7.28.0",
119
- "@ledgerhq/types-live": "^6.86.0"
118
+ "@ledgerhq/types-cryptoassets": "^7.28.0-nightly.1",
119
+ "@ledgerhq/types-live": "^6.86.0-nightly.0"
120
120
  },
121
121
  "devDependencies": {
122
122
  "@faker-js/faker": "^8.4.1",
@@ -5,10 +5,8 @@ import { StellarMemo } from "../types";
5
5
 
6
6
  /**
7
7
  * Testnet scan: https://testnet.lumenscan.io/
8
- *
9
- * Tests are skipped for the moment due to TooManyRequest errors
10
8
  */
11
- describe.skip("Stellar Api", () => {
9
+ describe("Stellar Api", () => {
12
10
  let module: AlpacaApi<StellarMemo>;
13
11
  const ADDRESS = "GBAUZBDXMVV7HII4JWBGFMLVKVJ6OLQAKOCGXM5E2FM4TAZB6C7JO2L7";
14
12
 
@@ -36,7 +34,7 @@ describe.skip("Stellar Api", () => {
36
34
  });
37
35
 
38
36
  // Then
39
- expect(result).toEqual(BigInt(100));
37
+ expect(result).toEqual({ value: BigInt(100) });
40
38
  });
41
39
  });
42
40
 
@@ -64,7 +62,7 @@ describe.skip("Stellar Api", () => {
64
62
 
65
63
  it("returns all operations from the latest, but in asc order", async () => {
66
64
  const [txsDesc] = await module.listOperations(ADDRESS, { minHeight: 0, order: "desc" });
67
- expect(txsDesc[0]).toBe(txs[0]);
65
+ expect(txsDesc[0]).toStrictEqual(txs[0]);
68
66
  });
69
67
  });
70
68
 
@@ -86,7 +84,16 @@ describe.skip("Stellar Api", () => {
86
84
  const result = await module.getBalance(ADDRESS);
87
85
 
88
86
  // Then
89
- expect(result).toBeGreaterThan(0);
87
+ expect(result).toBeInstanceOf(Array);
88
+ expect(result[0]).toMatchObject({
89
+ value: expect.any(BigInt),
90
+ asset: { type: "native" },
91
+ });
92
+ expect(result[0].value).toBeGreaterThan(0);
93
+ result.slice(1).forEach(balance => {
94
+ expect(balance.asset.type).not.toEqual("native");
95
+ expect(balance.value).toBeGreaterThanOrEqual(0);
96
+ });
90
97
  });
91
98
  });
92
99
 
@@ -1,25 +1,10 @@
1
1
  import { getBalance } from "./getBalance";
2
2
  import { fetchAccount } from "../network";
3
- import { findTokenById } from "@ledgerhq/cryptoassets/tokens";
4
- import { getAssetIdFromAsset } from "./utils";
5
- import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies/parseCurrencyUnit";
6
3
 
7
4
  jest.mock("../network", () => ({
8
5
  fetchAccount: jest.fn(),
9
6
  }));
10
7
 
11
- jest.mock("@ledgerhq/cryptoassets/tokens", () => ({
12
- findTokenById: jest.fn(),
13
- }));
14
-
15
- jest.mock("./utils", () => ({
16
- getAssetIdFromAsset: jest.fn(),
17
- }));
18
-
19
- jest.mock("@ledgerhq/coin-framework/currencies/parseCurrencyUnit", () => ({
20
- parseCurrencyUnit: jest.fn(),
21
- }));
22
-
23
8
  describe("getBalance", () => {
24
9
  it("returns native balance when no assets are present", async () => {
25
10
  (fetchAccount as jest.Mock).mockResolvedValue({
@@ -53,14 +38,6 @@ describe("getBalance", () => {
53
38
  ],
54
39
  });
55
40
 
56
- (getAssetIdFromAsset as jest.Mock).mockReturnValue("USDC-issuer-address");
57
- (findTokenById as jest.Mock).mockReturnValue({
58
- units: [{ code: "USDC", magnitude: 7 }],
59
- });
60
- (parseCurrencyUnit as jest.Mock).mockReturnValue({
61
- toString: () => "50.1234567",
62
- });
63
-
64
41
  const result = await getBalance("test-address");
65
42
 
66
43
  expect(result).toEqual([
@@ -70,7 +47,7 @@ describe("getBalance", () => {
70
47
  locked: BigInt(10),
71
48
  },
72
49
  {
73
- value: BigInt(50),
50
+ value: BigInt(501234567),
74
51
  asset: {
75
52
  type: "credit_alphanum4",
76
53
  assetReference: "USDC",
@@ -80,58 +57,5 @@ describe("getBalance", () => {
80
57
  ]);
81
58
 
82
59
  expect(fetchAccount).toHaveBeenCalledWith("test-address");
83
- expect(getAssetIdFromAsset).toHaveBeenCalledWith({
84
- asset_type: "credit_alphanum4",
85
- asset_code: "USDC",
86
- asset_issuer: "issuer-address",
87
- balance: "50.1234567",
88
- });
89
- expect(findTokenById).toHaveBeenCalledWith("stellar/asset/USDC-issuer-address");
90
- expect(parseCurrencyUnit).toHaveBeenCalledWith({ code: "USDC", magnitude: 7 }, "50.1234567");
91
- });
92
-
93
- it("handles assets without matching tokens gracefully", async () => {
94
- (fetchAccount as jest.Mock).mockResolvedValue({
95
- balance: 100000000,
96
- spendableBalance: 99999990,
97
- assets: [
98
- {
99
- asset_type: "credit_alphanum4",
100
- asset_code: "USDT",
101
- asset_issuer: "issuer-address",
102
- balance: "25.0000000",
103
- },
104
- ],
105
- });
106
-
107
- (getAssetIdFromAsset as jest.Mock).mockReturnValue("USDT-issuer-address");
108
- (findTokenById as jest.Mock).mockReturnValue(null);
109
-
110
- const result = await getBalance("test-address");
111
-
112
- expect(result).toEqual([
113
- {
114
- value: BigInt(100000000),
115
- asset: { type: "native" },
116
- locked: BigInt(10),
117
- },
118
- {
119
- value: BigInt(0),
120
- asset: {
121
- type: "credit_alphanum4",
122
- assetReference: "USDT",
123
- assetOwner: "issuer-address",
124
- },
125
- },
126
- ]);
127
-
128
- expect(fetchAccount).toHaveBeenCalledWith("test-address");
129
- expect(getAssetIdFromAsset).toHaveBeenCalledWith({
130
- asset_type: "credit_alphanum4",
131
- asset_code: "USDT",
132
- asset_issuer: "issuer-address",
133
- balance: "25.0000000",
134
- });
135
- expect(findTokenById).toHaveBeenCalledWith("stellar/asset/USDT-issuer-address");
136
60
  });
137
61
  });
@@ -1,9 +1,5 @@
1
1
  import { Balance } from "@ledgerhq/coin-framework/api/types";
2
2
  import { fetchAccount } from "../network";
3
- import { findTokenById } from "@ledgerhq/cryptoassets/tokens";
4
- import { getAssetIdFromAsset } from "./utils";
5
- import { parseCurrencyUnit } from "@ledgerhq/coin-framework/currencies/parseCurrencyUnit";
6
- import BigNumber from "bignumber.js";
7
3
 
8
4
  export async function getBalance(addr: string): Promise<Balance[]> {
9
5
  const { balance, assets, spendableBalance } = await fetchAccount(addr);
@@ -18,23 +14,21 @@ export async function getBalance(addr: string): Promise<Balance[]> {
18
14
  if (!assets || assets.length === 0) {
19
15
  return nativeRes;
20
16
  }
21
- const assetBalances: Balance[] = assets.map(asset => {
22
- const token = findTokenById(`stellar/asset/${getAssetIdFromAsset(asset)}`);
23
- let parsedBalance = new BigNumber(0);
24
- if (token) {
25
- parsedBalance = parseCurrencyUnit(token.units[0], asset.balance);
26
- }
27
- // NOTE: parse as-is (assumed decimal string), caller should decide how to render
28
- const intBalance = BigInt(Math.floor(parseFloat(parsedBalance.toString()))); // 7 decimals, per Stellar convention
29
- return {
30
- value: intBalance,
31
- asset: {
32
- type: asset.asset_type,
33
- assetReference: asset.asset_code,
34
- assetOwner: asset.asset_issuer,
35
- },
36
- };
37
- });
17
+ /**
18
+ * https://developers.stellar.org/docs/data/apis/horizon/api-reference/retrieve-an-account
19
+ * `asset.balance` matches [0-9]+\.[0-9]{7}
20
+ * NOTE `Math.floor` is still needed
21
+ * > Number.parseFloat('0.1468328') * 10 ** 7
22
+ * 1468328.0000000002
23
+ */
24
+ const assetBalances: Balance[] = assets.map(asset => ({
25
+ value: BigInt(Math.floor(Number.parseFloat(asset.balance) * 10 ** 7)),
26
+ asset: {
27
+ type: asset.asset_type,
28
+ assetReference: asset.asset_code,
29
+ assetOwner: asset.asset_issuer,
30
+ },
31
+ }));
38
32
 
39
33
  return [...nativeRes, ...assetBalances];
40
34
  }
@@ -1,10 +1,17 @@
1
1
  import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
2
+ import * as tokenModule from "@ledgerhq/cryptoassets/tokens";
2
3
  import { getAssetFromToken, getTokenFromAsset } from "./getTokenFromAsset";
3
4
 
4
5
  describe("getTokenFromAsset", () => {
5
- it("computes the token of the USDC asset", () => {
6
+ afterEach(() => {
7
+ jest.resetAllMocks();
8
+ });
9
+
10
+ it("computes the token of the USDC asset, trusting the CAL", async () => {
11
+ const findTokenById = jest.spyOn(tokenModule, "findTokenById");
12
+
6
13
  expect(
7
- getTokenFromAsset({
14
+ await getTokenFromAsset({
8
15
  type: "token",
9
16
  assetReference: "USDC",
10
17
  assetOwner: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
@@ -14,6 +21,22 @@ describe("getTokenFromAsset", () => {
14
21
  contractAddress: "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
15
22
  name: "USDC",
16
23
  });
24
+ expect(findTokenById).toHaveBeenCalledWith(
25
+ "stellar/asset/USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN",
26
+ );
27
+ });
28
+
29
+ it("does not compute the token of an unknown asset, trusting the CAL", async () => {
30
+ const findTokenById = jest.spyOn(tokenModule, "findTokenById");
31
+
32
+ expect(
33
+ await getTokenFromAsset({
34
+ type: "token",
35
+ assetReference: "unknown-reference",
36
+ assetOwner: "unknown-owner",
37
+ }),
38
+ ).toBeUndefined();
39
+ expect(findTokenById).toHaveBeenCalledWith("stellar/asset/unknown-reference:unknown-owner");
17
40
  });
18
41
  });
19
42
 
@@ -2,7 +2,7 @@ import { AssetInfo } from "@ledgerhq/coin-framework/api/types";
2
2
  import { findTokenById } from "@ledgerhq/cryptoassets/tokens";
3
3
  import { TokenCurrency } from "@ledgerhq/types-cryptoassets";
4
4
 
5
- export function getTokenFromAsset(asset: AssetInfo): TokenCurrency | undefined {
5
+ export async function getTokenFromAsset(asset: AssetInfo): Promise<TokenCurrency | undefined> {
6
6
  const assetId =
7
7
  asset.type !== "native" && "assetReference" in asset && "assetOwner" in asset
8
8
  ? `${asset.assetReference}:${asset.assetOwner}`