@ledgerhq/coin-multiversx 1.2.0 → 1.2.1-nightly.20260929020940

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @ledgerhq/coin-elrond
2
2
 
3
+ ## 1.2.1-nightly.20260929020940
4
+
5
+ ### Patch Changes
6
+
7
+ - [#21953](https://github.com/LedgerHQ/ledger-live/pull/21953) [`381bd0b`](https://github.com/LedgerHQ/ledger-live/commit/381bd0befb6a09f20f13f65c233f0e1479e7051d) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Consume `@ledgerhq/live-config`, `@ledgerhq/live-env`, `@ledgerhq/live-currency-format`,
8
+ `@ledgerhq/domain-service` and `@ledgerhq/evm-tools` from npm instead of the workspace — they
9
+ now live in the `ts-libs` repository. No API change.
10
+
11
+ - [#22540](https://github.com/LedgerHQ/ledger-live/pull/22540) [`9cafda0`](https://github.com/LedgerHQ/ledger-live/commit/9cafda098001d1912b872e341c4568386b70ed75) Thanks [@koda-apps](https://github.com/apps/koda-apps)! - Fix MultiversX transaction history sync failing on accounts with more than 10,000 transactions. Pagination now moves past the API's 10,000-result window with a `before` cursor, so the full history is fetched.
12
+
13
+ - Updated dependencies [[`2d869a5`](https://github.com/LedgerHQ/ledger-live/commit/2d869a596a4562a00003de01cc657d7277dc6b7c), [`f1d8aac`](https://github.com/LedgerHQ/ledger-live/commit/f1d8aac1c7c0bc0be9beb1508c1a9ef3cf7affae), [`381bd0b`](https://github.com/LedgerHQ/ledger-live/commit/381bd0befb6a09f20f13f65c233f0e1479e7051d), [`a025d7a`](https://github.com/LedgerHQ/ledger-live/commit/a025d7a872b7b1e4681d16b2bfb54f8949bf6626), [`a896fca`](https://github.com/LedgerHQ/ledger-live/commit/a896fca1974a46f10e915d1212e0947e2d808ad5), [`88bae04`](https://github.com/LedgerHQ/ledger-live/commit/88bae04e2f7e7a3de8d55c340fe32b48e37bd78d)]:
14
+ - @ledgerhq/types-live@6.126.0-nightly.20260929020940
15
+ - @ledgerhq/ledger-wallet-framework@3.6.0-nightly.20260929020940
16
+
3
17
  ## 1.2.0
4
18
 
5
19
  ### Minor Changes
@@ -3,6 +3,7 @@ export declare const TRANSACTION_OPTIONS_TX_HASH_SIGN = 1;
3
3
  export declare const TRANSACTION_VERSION_DEFAULT = 2;
4
4
  export declare const METACHAIN_SHARD = 4294967295;
5
5
  export declare const MAX_PAGINATION_SIZE = 50;
6
+ export declare const MAX_PAGINATION_RESULT_WINDOW = 10000;
6
7
  export declare const GAS: {
7
8
  ESDT_TRANSFER: number;
8
9
  DELEGATE: number;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,eAAO,MAAM,gCAAgC,IAAS,CAAC;AACvD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,GAAG;IACd,aAAa;IACb,QAAQ;IACR,KAAK;CACN,CAAC;AACF,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,eAAO,MAAM,qBAAqB,EAAE,SAAgD,CAAC;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AACzE,eAAO,MAAM,uBAAuB,mEAC8B,CAAC;AACnE,eAAO,MAAM,mCAAmC,KAAK,CAAC;AACtD,eAAO,MAAM,wBAAwB,mEAC6B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,eAAO,MAAM,gCAAgC,IAAS,CAAC;AACvD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAClD,eAAO,MAAM,GAAG;IACd,aAAa;IACb,QAAQ;IACR,KAAK;CACN,CAAC;AACF,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,eAAO,MAAM,qBAAqB,EAAE,SAAgD,CAAC;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AACzE,eAAO,MAAM,uBAAuB,mEAC8B,CAAC;AACnE,eAAO,MAAM,mCAAmC,KAAK,CAAC;AACtD,eAAO,MAAM,wBAAwB,mEAC6B,CAAC"}
package/lib/constants.js CHANGED
@@ -3,12 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MULTIVERSX_DUMMY_ADDRESS = exports.MULTIVERSX_LEDGER_VALIDATOR_ADDRESS = exports.MULTIVERSX_STAKING_POOL = exports.MULTIVERSX_EXPLORER_URL = exports.DECIMALS_LIMIT = exports.MIN_DELEGATION_AMOUNT = exports.CHAIN_ID = exports.GAS_PRICE_MODIFIER = exports.GAS_PER_DATA_BYTE = exports.MIN_GAS_LIMIT = exports.GAS_PRICE = exports.GAS = exports.MAX_PAGINATION_SIZE = exports.METACHAIN_SHARD = exports.TRANSACTION_VERSION_DEFAULT = exports.TRANSACTION_OPTIONS_TX_HASH_SIGN = void 0;
6
+ exports.MULTIVERSX_DUMMY_ADDRESS = exports.MULTIVERSX_LEDGER_VALIDATOR_ADDRESS = exports.MULTIVERSX_STAKING_POOL = exports.MULTIVERSX_EXPLORER_URL = exports.DECIMALS_LIMIT = exports.MIN_DELEGATION_AMOUNT = exports.CHAIN_ID = exports.GAS_PRICE_MODIFIER = exports.GAS_PER_DATA_BYTE = exports.MIN_GAS_LIMIT = exports.GAS_PRICE = exports.GAS = exports.MAX_PAGINATION_RESULT_WINDOW = exports.MAX_PAGINATION_SIZE = exports.METACHAIN_SHARD = exports.TRANSACTION_VERSION_DEFAULT = exports.TRANSACTION_OPTIONS_TX_HASH_SIGN = void 0;
7
7
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
8
  exports.TRANSACTION_OPTIONS_TX_HASH_SIGN = 0b0001;
9
9
  exports.TRANSACTION_VERSION_DEFAULT = 2;
10
10
  exports.METACHAIN_SHARD = 4294967295;
11
11
  exports.MAX_PAGINATION_SIZE = 50;
12
+ exports.MAX_PAGINATION_RESULT_WINDOW = 10000;
12
13
  exports.GAS = {
13
14
  ESDT_TRANSFER: 500000,
14
15
  DELEGATE: 75000000,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AAExB,QAAA,gCAAgC,GAAG,MAAM,CAAC;AAC1C,QAAA,2BAA2B,GAAG,CAAC,CAAC;AAChC,QAAA,eAAe,GAAG,UAAU,CAAC;AAC7B,QAAA,mBAAmB,GAAG,EAAE,CAAC;AACzB,QAAA,GAAG,GAAG;IACjB,aAAa,EAAE,MAAM;IACrB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,OAAO;CACf,CAAC;AACW,QAAA,SAAS,GAAG,UAAU,CAAC;AACvB,QAAA,aAAa,GAAG,KAAK,CAAC;AACtB,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACzB,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAC1B,QAAA,QAAQ,GAAG,GAAG,CAAC;AACf,QAAA,qBAAqB,GAAc,IAAI,sBAAS,CAAC,qBAAqB,CAAC,CAAC;AACxE,QAAA,cAAc,GAAG,EAAE,CAAC;AAEpB,QAAA,uBAAuB,GAAG,iCAAiC,CAAC;AAC5D,QAAA,uBAAuB,GAClC,gEAAgE,CAAC;AACtD,QAAA,mCAAmC,GAAG,EAAE,CAAC;AACzC,QAAA,wBAAwB,GACnC,gEAAgE,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AAExB,QAAA,gCAAgC,GAAG,MAAM,CAAC;AAC1C,QAAA,2BAA2B,GAAG,CAAC,CAAC;AAChC,QAAA,eAAe,GAAG,UAAU,CAAC;AAC7B,QAAA,mBAAmB,GAAG,EAAE,CAAC;AACzB,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,GAAG,GAAG;IACjB,aAAa,EAAE,MAAM;IACrB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,OAAO;CACf,CAAC;AACW,QAAA,SAAS,GAAG,UAAU,CAAC;AACvB,QAAA,aAAa,GAAG,KAAK,CAAC;AACtB,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACzB,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAC1B,QAAA,QAAQ,GAAG,GAAG,CAAC;AACf,QAAA,qBAAqB,GAAc,IAAI,sBAAS,CAAC,qBAAqB,CAAC,CAAC;AACxE,QAAA,cAAc,GAAG,EAAE,CAAC;AAEpB,QAAA,uBAAuB,GAAG,iCAAiC,CAAC;AAC5D,QAAA,uBAAuB,GAClC,gEAAgE,CAAC;AACtD,QAAA,mCAAmC,GAAG,EAAE,CAAC;AACzC,QAAA,wBAAwB,GACnC,gEAAgE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAIlB,WAAW,EACZ,MAAM,UAAU,CAAC;AAiClB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAE5C,YAAY,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAGtD;IAEK,iBAAiB,CACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAQjE;IAEK,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAMlD;IAEK,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAmB7C;IAEK,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAelD;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAqBnF;IAEK,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAMzE;IAEK,6BAA6B,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAwBrC;IAEK,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAiBhE;IAEK,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhE;IAEK,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQhD;IAEK,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnD;CACF;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,GAC5B,oBAAoB,CAEtB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAIlB,WAAW,EACZ,MAAM,UAAU,CAAC;AA0ElB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAE5C,YAAY,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAGtD;IAEK,iBAAiB,CACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAQjE;IAEK,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAMlD;IAEK,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAmB7C;IAEK,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAelD;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAenF;IAEK,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAMzE;IAEK,6BAA6B,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAkBrC;IAEK,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAiBhE;IAEK,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhE;IAEK,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQhD;IAEK,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnD;CACF;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,GAC5B,oBAAoB,CAEtB"}
@@ -16,6 +16,40 @@ const decodeTransactionMode = (action) => {
16
16
  return "send";
17
17
  return action.name;
18
18
  };
19
+ async function fetchAllTransactions(url, totalCount) {
20
+ const allTransactions = [];
21
+ const seenHashes = new Set();
22
+ let from = 0;
23
+ let before;
24
+ while (allTransactions.length < totalCount) {
25
+ const beforeParam = before ? `&before=${before}` : "";
26
+ const { data } = await (0, live_network_1.default)({
27
+ method: "GET",
28
+ url: `${url}&from=${from}&size=${constants_1.MAX_PAGINATION_SIZE}${beforeParam}`,
29
+ });
30
+ const transactions = data ?? [];
31
+ for (const transaction of transactions) {
32
+ if (transaction.txHash && seenHashes.has(transaction.txHash))
33
+ continue;
34
+ if (transaction.txHash)
35
+ seenHashes.add(transaction.txHash);
36
+ allTransactions.push(transaction);
37
+ }
38
+ if (transactions.length < constants_1.MAX_PAGINATION_SIZE)
39
+ break;
40
+ from += constants_1.MAX_PAGINATION_SIZE;
41
+ if (from + constants_1.MAX_PAGINATION_SIZE <= constants_1.MAX_PAGINATION_RESULT_WINDOW)
42
+ continue;
43
+ const oldest = transactions[transactions.length - 1].timestamp;
44
+ if (oldest === undefined || oldest + 1 === before) {
45
+ throw new Error("MultiversX pagination cannot move past the API result window");
46
+ }
47
+ // `before` is exclusive: re-read the oldest second so same-timestamp transactions are kept
48
+ before = oldest + 1;
49
+ from = 0;
50
+ }
51
+ return allTransactions;
52
+ }
19
53
  class MultiversXNetworkApi {
20
54
  API_URL;
21
55
  DELEGATION_API_URL;
@@ -62,18 +96,9 @@ class MultiversXNetworkApi {
62
96
  method: "GET",
63
97
  url: `${this.API_URL}/accounts/${addr}/transactions/count?after=${after}`,
64
98
  });
65
- const allTransactions = [];
66
- let from = 0;
67
- while (from < transactionsCount) {
68
- const { data: transactions } = await (0, live_network_1.default)({
69
- method: "GET",
70
- url: `${this.API_URL}/accounts/${addr}/transactions?after=${after}&from=${from}&size=${constants_1.MAX_PAGINATION_SIZE}&withOperations=true&withScResults=true`,
71
- });
72
- for (const transaction of transactions ?? []) {
73
- transaction.mode = decodeTransactionMode(transaction.action);
74
- }
75
- allTransactions.push(...(transactions ?? []));
76
- from = from + constants_1.MAX_PAGINATION_SIZE;
99
+ const allTransactions = await fetchAllTransactions(`${this.API_URL}/accounts/${addr}/transactions?after=${after}&withOperations=true&withScResults=true`, transactionsCount);
100
+ for (const transaction of allTransactions) {
101
+ transaction.mode = decodeTransactionMode(transaction.action);
77
102
  }
78
103
  return allTransactions;
79
104
  }
@@ -90,16 +115,7 @@ class MultiversXNetworkApi {
90
115
  method: "GET",
91
116
  url: `${this.API_URL}/accounts/${addr}/transactions/count?token=${token}&after=${after}`,
92
117
  });
93
- const allTokenTransactions = [];
94
- let from = 0;
95
- while (from < tokenTransactionsCount) {
96
- const { data: tokenTransactions } = await (0, live_network_1.default)({
97
- method: "GET",
98
- url: `${this.API_URL}/accounts/${addr}/transactions?token=${token}&from=${from}&after=${after}&size=${constants_1.MAX_PAGINATION_SIZE}`,
99
- });
100
- allTokenTransactions.push(...(tokenTransactions ?? []));
101
- from = from + constants_1.MAX_PAGINATION_SIZE;
102
- }
118
+ const allTokenTransactions = await fetchAllTransactions(`${this.API_URL}/accounts/${addr}/transactions?token=${token}&after=${after}`, tokenTransactionsCount);
103
119
  for (const esdtTransaction of allTokenTransactions) {
104
120
  esdtTransaction.transfer =
105
121
  "esdt";
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export declare const TRANSACTION_OPTIONS_TX_HASH_SIGN = 1;
3
3
  export declare const TRANSACTION_VERSION_DEFAULT = 2;
4
4
  export declare const METACHAIN_SHARD = 4294967295;
5
5
  export declare const MAX_PAGINATION_SIZE = 50;
6
+ export declare const MAX_PAGINATION_RESULT_WINDOW = 10000;
6
7
  export declare const GAS: {
7
8
  ESDT_TRANSFER: number;
8
9
  DELEGATE: number;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,eAAO,MAAM,gCAAgC,IAAS,CAAC;AACvD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,GAAG;IACd,aAAa;IACb,QAAQ;IACR,KAAK;CACN,CAAC;AACF,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,eAAO,MAAM,qBAAqB,EAAE,SAAgD,CAAC;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AACzE,eAAO,MAAM,uBAAuB,mEAC8B,CAAC;AACnE,eAAO,MAAM,mCAAmC,KAAK,CAAC;AACtD,eAAO,MAAM,wBAAwB,mEAC6B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,eAAO,MAAM,gCAAgC,IAAS,CAAC;AACvD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAClD,eAAO,MAAM,GAAG;IACd,aAAa;IACb,QAAQ;IACR,KAAK;CACN,CAAC;AACF,eAAO,MAAM,SAAS,aAAa,CAAC;AACpC,eAAO,MAAM,aAAa,QAAQ,CAAC;AACnC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,eAAO,MAAM,qBAAqB,EAAE,SAAgD,CAAC;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,eAAO,MAAM,uBAAuB,oCAAoC,CAAC;AACzE,eAAO,MAAM,uBAAuB,mEAC8B,CAAC;AACnE,eAAO,MAAM,mCAAmC,KAAK,CAAC;AACtD,eAAO,MAAM,wBAAwB,mEAC6B,CAAC"}
@@ -3,6 +3,7 @@ export const TRANSACTION_OPTIONS_TX_HASH_SIGN = 0b0001;
3
3
  export const TRANSACTION_VERSION_DEFAULT = 2;
4
4
  export const METACHAIN_SHARD = 4294967295;
5
5
  export const MAX_PAGINATION_SIZE = 50;
6
+ export const MAX_PAGINATION_RESULT_WINDOW = 10000;
6
7
  export const GAS = {
7
8
  ESDT_TRANSFER: 500000,
8
9
  DELEGATE: 75000000,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,aAAa,EAAE,MAAM;IACrB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,OAAO;CACf,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,qBAAqB,GAAc,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;AACzE,MAAM,CAAC,MAAM,uBAAuB,GAClC,gEAAgE,CAAC;AACnE,MAAM,CAAC,MAAM,mCAAmC,GAAG,EAAE,CAAC;AACtD,MAAM,CAAC,MAAM,wBAAwB,GACnC,gEAAgE,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAClD,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,aAAa,EAAE,MAAM;IACrB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,OAAO;CACf,CAAC;AACF,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,qBAAqB,GAAc,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;AACrF,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,uBAAuB,GAAG,iCAAiC,CAAC;AACzE,MAAM,CAAC,MAAM,uBAAuB,GAClC,gEAAgE,CAAC;AACnE,MAAM,CAAC,MAAM,mCAAmC,GAAG,EAAE,CAAC;AACtD,MAAM,CAAC,MAAM,wBAAwB,GACnC,gEAAgE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAIlB,WAAW,EACZ,MAAM,UAAU,CAAC;AAiClB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAE5C,YAAY,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAGtD;IAEK,iBAAiB,CACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAQjE;IAEK,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAMlD;IAEK,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAmB7C;IAEK,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAelD;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAqBnF;IAEK,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAMzE;IAEK,6BAA6B,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAwBrC;IAEK,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAiBhE;IAEK,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhE;IAEK,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQhD;IAEK,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnD;CACF;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,GAC5B,oBAAoB,CAEtB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAIlB,WAAW,EACZ,MAAM,UAAU,CAAC;AA0ElB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAE5C,YAAY,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAGtD;IAEK,iBAAiB,CACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAQjE;IAEK,YAAY,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAMlD;IAEK,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAmB7C;IAEK,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAelD;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAenF;IAEK,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAMzE;IAEK,6BAA6B,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAkBrC;IAEK,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAiBhE;IAEK,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhE;IAEK,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQhD;IAEK,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnD;CACF;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,qBAAqB,EAAE,MAAM,GAC5B,oBAAoB,CAEtB"}
@@ -1,5 +1,5 @@
1
1
  import network from "@ledgerhq/live-network";
2
- import { METACHAIN_SHARD, MAX_PAGINATION_SIZE } from "../constants";
2
+ import { METACHAIN_SHARD, MAX_PAGINATION_SIZE, MAX_PAGINATION_RESULT_WINDOW } from "../constants";
3
3
  const decodeTransactionMode = (action) => {
4
4
  if (!action)
5
5
  return "send";
@@ -9,6 +9,40 @@ const decodeTransactionMode = (action) => {
9
9
  return "send";
10
10
  return action.name;
11
11
  };
12
+ async function fetchAllTransactions(url, totalCount) {
13
+ const allTransactions = [];
14
+ const seenHashes = new Set();
15
+ let from = 0;
16
+ let before;
17
+ while (allTransactions.length < totalCount) {
18
+ const beforeParam = before ? `&before=${before}` : "";
19
+ const { data } = await network({
20
+ method: "GET",
21
+ url: `${url}&from=${from}&size=${MAX_PAGINATION_SIZE}${beforeParam}`,
22
+ });
23
+ const transactions = data ?? [];
24
+ for (const transaction of transactions) {
25
+ if (transaction.txHash && seenHashes.has(transaction.txHash))
26
+ continue;
27
+ if (transaction.txHash)
28
+ seenHashes.add(transaction.txHash);
29
+ allTransactions.push(transaction);
30
+ }
31
+ if (transactions.length < MAX_PAGINATION_SIZE)
32
+ break;
33
+ from += MAX_PAGINATION_SIZE;
34
+ if (from + MAX_PAGINATION_SIZE <= MAX_PAGINATION_RESULT_WINDOW)
35
+ continue;
36
+ const oldest = transactions[transactions.length - 1].timestamp;
37
+ if (oldest === undefined || oldest + 1 === before) {
38
+ throw new Error("MultiversX pagination cannot move past the API result window");
39
+ }
40
+ // `before` is exclusive: re-read the oldest second so same-timestamp transactions are kept
41
+ before = oldest + 1;
42
+ from = 0;
43
+ }
44
+ return allTransactions;
45
+ }
12
46
  export class MultiversXNetworkApi {
13
47
  API_URL;
14
48
  DELEGATION_API_URL;
@@ -55,18 +89,9 @@ export class MultiversXNetworkApi {
55
89
  method: "GET",
56
90
  url: `${this.API_URL}/accounts/${addr}/transactions/count?after=${after}`,
57
91
  });
58
- const allTransactions = [];
59
- let from = 0;
60
- while (from < transactionsCount) {
61
- const { data: transactions } = await network({
62
- method: "GET",
63
- url: `${this.API_URL}/accounts/${addr}/transactions?after=${after}&from=${from}&size=${MAX_PAGINATION_SIZE}&withOperations=true&withScResults=true`,
64
- });
65
- for (const transaction of transactions ?? []) {
66
- transaction.mode = decodeTransactionMode(transaction.action);
67
- }
68
- allTransactions.push(...(transactions ?? []));
69
- from = from + MAX_PAGINATION_SIZE;
92
+ const allTransactions = await fetchAllTransactions(`${this.API_URL}/accounts/${addr}/transactions?after=${after}&withOperations=true&withScResults=true`, transactionsCount);
93
+ for (const transaction of allTransactions) {
94
+ transaction.mode = decodeTransactionMode(transaction.action);
70
95
  }
71
96
  return allTransactions;
72
97
  }
@@ -83,16 +108,7 @@ export class MultiversXNetworkApi {
83
108
  method: "GET",
84
109
  url: `${this.API_URL}/accounts/${addr}/transactions/count?token=${token}&after=${after}`,
85
110
  });
86
- const allTokenTransactions = [];
87
- let from = 0;
88
- while (from < tokenTransactionsCount) {
89
- const { data: tokenTransactions } = await network({
90
- method: "GET",
91
- url: `${this.API_URL}/accounts/${addr}/transactions?token=${token}&from=${from}&after=${after}&size=${MAX_PAGINATION_SIZE}`,
92
- });
93
- allTokenTransactions.push(...(tokenTransactions ?? []));
94
- from = from + MAX_PAGINATION_SIZE;
95
- }
111
+ const allTokenTransactions = await fetchAllTransactions(`${this.API_URL}/accounts/${addr}/transactions?token=${token}&after=${after}`, tokenTransactionsCount);
96
112
  for (const esdtTransaction of allTokenTransactions) {
97
113
  esdtTransaction.transfer =
98
114
  "esdt";
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/network/api.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/coin-multiversx",
3
- "version": "1.2.0",
3
+ "version": "1.2.1-nightly.20260929020940",
4
4
  "description": "Ledger MultiversX Coin integration",
5
5
  "keywords": [
6
6
  "Ledger",
@@ -49,8 +49,9 @@
49
49
  },
50
50
  "license": "Apache-2.0",
51
51
  "dependencies": {
52
- "@ledgerhq/coin-module-framework": "9.1.0",
52
+ "@ledgerhq/coin-module-framework": "9.2.0",
53
53
  "@ledgerhq/devices": "8.18.0",
54
+ "@ledgerhq/live-env": "4.1.0",
54
55
  "@ledgerhq/live-network": "3.1.0",
55
56
  "@ledgerhq/logs": "6.19.0",
56
57
  "@multiversx/sdk-core": "^13.7.0",
@@ -62,9 +63,8 @@
62
63
  "lodash": "4.17.21",
63
64
  "protobufjs": "^7.2.6",
64
65
  "rxjs": "7.8.2",
65
- "@ledgerhq/live-env": "^4.1.0",
66
- "@ledgerhq/types-live": "^6.125.0",
67
- "@ledgerhq/ledger-wallet-framework": "^3.5.0"
66
+ "@ledgerhq/ledger-wallet-framework": "^3.6.0-nightly.20260929020940",
67
+ "@ledgerhq/types-live": "^6.126.0-nightly.20260929020940"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@swc/core": "1.15.11",
@@ -78,8 +78,8 @@
78
78
  "oxfmt": "0.67.0",
79
79
  "oxlint": "1.82.0",
80
80
  "@ledgerhq/test-quarantine": "0.0.0",
81
- "@ledgerhq/disable-network-setup": "^0.3.0",
82
- "@ledgerhq/wallet-framework-test-setup": "^0.1.11"
81
+ "@ledgerhq/wallet-framework-test-setup": "^0.1.12-nightly.20260929020940",
82
+ "@ledgerhq/disable-network-setup": "^0.3.0"
83
83
  },
84
84
  "scripts": {
85
85
  "clean": "rimraf lib lib-es",
@@ -92,6 +92,7 @@
92
92
  "lint:fix": "oxfmt src && oxlint src --fix --quiet",
93
93
  "test": "jest",
94
94
  "test-integ": "node --experimental-vm-modules ./node_modules/jest/bin/jest.js --config=jest.integ.config.js",
95
+ "typecheck": "tsc --noEmit --customConditions node",
95
96
  "unimported": "unimported",
96
97
  "format": "oxfmt src",
97
98
  "format:check": "oxfmt src --check"
package/src/constants.ts CHANGED
@@ -4,6 +4,7 @@ export const TRANSACTION_OPTIONS_TX_HASH_SIGN = 0b0001;
4
4
  export const TRANSACTION_VERSION_DEFAULT = 2;
5
5
  export const METACHAIN_SHARD = 4294967295;
6
6
  export const MAX_PAGINATION_SIZE = 50;
7
+ export const MAX_PAGINATION_RESULT_WINDOW = 10000;
7
8
  export const GAS = {
8
9
  ESDT_TRANSFER: 500000,
9
10
  DELEGATE: 75000000,
@@ -1,4 +1,6 @@
1
1
  import network from "@ledgerhq/live-network";
2
+ import { MAX_PAGINATION_RESULT_WINDOW } from "../constants";
3
+ import type { MultiversXApiTransaction } from "../types";
2
4
  import { MultiversXNetworkApi } from "./api";
3
5
 
4
6
  jest.mock("@ledgerhq/live-network", () => {
@@ -6,16 +8,46 @@ jest.mock("@ledgerhq/live-network", () => {
6
8
  return { __esModule: true, default: fn };
7
9
  });
8
10
 
11
+ const mockedNetwork = network as unknown as jest.Mock;
12
+
13
+ function makeTransactions(count: number, transactionsPerTimestamp = 1): MultiversXApiTransaction[] {
14
+ return Array.from(
15
+ { length: count },
16
+ (_, i) =>
17
+ ({
18
+ txHash: `tx-${i}`,
19
+ timestamp: count - Math.floor(i / transactionsPerTimestamp),
20
+ }) as MultiversXApiTransaction,
21
+ );
22
+ }
23
+
24
+ function mockApi(transactions: MultiversXApiTransaction[], count = transactions.length) {
25
+ mockedNetwork.mockImplementation(async ({ url }: { url: string }) => {
26
+ if (url.includes("/transactions/count")) return { data: count };
27
+ const params = new URL(url).searchParams;
28
+ const from = Number(params.get("from"));
29
+ const size = Number(params.get("size"));
30
+ const before = params.get("before");
31
+ if (from + size > MAX_PAGINATION_RESULT_WINDOW) {
32
+ throw new Error("Result window is too large");
33
+ }
34
+ const filtered = before
35
+ ? transactions.filter(tx => (tx.timestamp ?? 0) < Number(before))
36
+ : transactions;
37
+ return { data: filtered.slice(from, from + size) };
38
+ });
39
+ }
40
+
9
41
  describe("MultiversXNetworkApi startAt clamping", () => {
10
42
  const api = new MultiversXNetworkApi("https://api.example.com", "https://deleg.example.com");
11
43
 
12
44
  beforeEach(() => {
13
- (network as unknown as jest.Mock).mockReset();
45
+ mockedNetwork.mockReset();
14
46
  });
15
47
 
16
48
  test("getHistory clamps startAt=0 to after=1", async () => {
17
49
  // First call gets the count, 0 means no pagination loop
18
- (network as unknown as jest.Mock).mockResolvedValueOnce({ data: 0 });
50
+ mockedNetwork.mockResolvedValueOnce({ data: 0 });
19
51
 
20
52
  await api.getHistory("erd1testaddress", 0);
21
53
 
@@ -28,7 +60,7 @@ describe("MultiversXNetworkApi startAt clamping", () => {
28
60
  });
29
61
 
30
62
  test("getHistory uses positive startAt unchanged", async () => {
31
- (network as unknown as jest.Mock).mockResolvedValueOnce({ data: 0 });
63
+ mockedNetwork.mockResolvedValueOnce({ data: 0 });
32
64
 
33
65
  await api.getHistory("erd1positive", 123);
34
66
 
@@ -41,7 +73,7 @@ describe("MultiversXNetworkApi startAt clamping", () => {
41
73
  });
42
74
 
43
75
  test("getESDTTransactionsForAddress clamps startAt=0 to after=1", async () => {
44
- (network as unknown as jest.Mock).mockResolvedValueOnce({ data: 0 });
76
+ mockedNetwork.mockResolvedValueOnce({ data: 0 });
45
77
 
46
78
  await api.getESDTTransactionsForAddress("erd1tokaddr", "TOKEN-abc", 0);
47
79
 
@@ -56,7 +88,7 @@ describe("MultiversXNetworkApi startAt clamping", () => {
56
88
  });
57
89
 
58
90
  test("getESDTTransactionsForAddress uses positive startAt unchanged", async () => {
59
- (network as unknown as jest.Mock).mockResolvedValueOnce({ data: 0 });
91
+ mockedNetwork.mockResolvedValueOnce({ data: 0 });
60
92
 
61
93
  await api.getESDTTransactionsForAddress("erd1tokaddr", "TOKEN-abc", 456);
62
94
 
@@ -70,3 +102,53 @@ describe("MultiversXNetworkApi startAt clamping", () => {
70
102
  );
71
103
  });
72
104
  });
105
+
106
+ describe("MultiversXNetworkApi pagination past the result window", () => {
107
+ const api = new MultiversXNetworkApi("https://api.example.com", "https://deleg.example.com");
108
+
109
+ beforeEach(() => {
110
+ mockedNetwork.mockReset();
111
+ });
112
+
113
+ test("getHistory returns every transaction beyond the window", async () => {
114
+ const transactions = makeTransactions(MAX_PAGINATION_RESULT_WINDOW + 50);
115
+ mockApi(transactions);
116
+
117
+ const result = await api.getHistory("erd1big", 0);
118
+
119
+ expect(result.map(tx => tx.txHash)).toEqual(transactions.map(tx => tx.txHash));
120
+ });
121
+
122
+ test("getHistory keeps transactions sharing a timestamp across the window boundary", async () => {
123
+ const transactions = makeTransactions(MAX_PAGINATION_RESULT_WINDOW + 50, 7);
124
+ mockApi(transactions);
125
+
126
+ const result = await api.getHistory("erd1big", 0);
127
+
128
+ expect(result.map(tx => tx.txHash)).toEqual(transactions.map(tx => tx.txHash));
129
+ });
130
+
131
+ test("getESDTTransactionsForAddress returns every transaction beyond the window", async () => {
132
+ const transactions = makeTransactions(MAX_PAGINATION_RESULT_WINDOW + 50);
133
+ mockApi(transactions);
134
+
135
+ const result = await api.getESDTTransactionsForAddress("erd1big", "TOKEN-abc", 0);
136
+
137
+ expect(result.map(tx => tx.txHash)).toEqual(transactions.map(tx => tx.txHash));
138
+ });
139
+
140
+ test("getHistory stops on a short page when count overstates the history", async () => {
141
+ const transactions = makeTransactions(5);
142
+ mockApi(transactions, 20);
143
+
144
+ const result = await api.getHistory("erd1short", 0);
145
+
146
+ expect(result.map(tx => tx.txHash)).toEqual(transactions.map(tx => tx.txHash));
147
+ });
148
+
149
+ test("getHistory throws when a full window shares one timestamp", async () => {
150
+ mockApi(makeTransactions(MAX_PAGINATION_RESULT_WINDOW + 50, MAX_PAGINATION_RESULT_WINDOW + 50));
151
+
152
+ await expect(api.getHistory("erd1stuck", 0)).rejects.toThrow("result window");
153
+ });
154
+ });
@@ -1,5 +1,5 @@
1
1
  import network from "@ledgerhq/live-network";
2
- import { METACHAIN_SHARD, MAX_PAGINATION_SIZE } from "../constants";
2
+ import { METACHAIN_SHARD, MAX_PAGINATION_SIZE, MAX_PAGINATION_RESULT_WINDOW } from "../constants";
3
3
  import type {
4
4
  ESDTToken,
5
5
  MultiversXApiTransaction,
@@ -42,6 +42,47 @@ const decodeTransactionMode = (action?: MultiversXTransactionAction): string =>
42
42
  return action.name;
43
43
  };
44
44
 
45
+ async function fetchAllTransactions(
46
+ url: string,
47
+ totalCount: number,
48
+ ): Promise<MultiversXApiTransaction[]> {
49
+ const allTransactions: MultiversXApiTransaction[] = [];
50
+ const seenHashes = new Set<string>();
51
+ let from = 0;
52
+ let before: number | undefined;
53
+
54
+ while (allTransactions.length < totalCount) {
55
+ const beforeParam = before ? `&before=${before}` : "";
56
+ const { data } = await network<MultiversXApiTransaction[]>({
57
+ method: "GET",
58
+ url: `${url}&from=${from}&size=${MAX_PAGINATION_SIZE}${beforeParam}`,
59
+ });
60
+ const transactions = data ?? [];
61
+
62
+ for (const transaction of transactions) {
63
+ if (transaction.txHash && seenHashes.has(transaction.txHash)) continue;
64
+ if (transaction.txHash) seenHashes.add(transaction.txHash);
65
+ allTransactions.push(transaction);
66
+ }
67
+
68
+ if (transactions.length < MAX_PAGINATION_SIZE) break;
69
+
70
+ from += MAX_PAGINATION_SIZE;
71
+ if (from + MAX_PAGINATION_SIZE <= MAX_PAGINATION_RESULT_WINDOW) continue;
72
+
73
+ const oldest = transactions[transactions.length - 1].timestamp;
74
+ if (oldest === undefined || oldest + 1 === before) {
75
+ throw new Error("MultiversX pagination cannot move past the API result window");
76
+ }
77
+
78
+ // `before` is exclusive: re-read the oldest second so same-timestamp transactions are kept
79
+ before = oldest + 1;
80
+ from = 0;
81
+ }
82
+
83
+ return allTransactions;
84
+ }
85
+
45
86
  export class MultiversXNetworkApi {
46
87
  private readonly API_URL: string;
47
88
  private readonly DELEGATION_API_URL: string;
@@ -116,18 +157,12 @@ export class MultiversXNetworkApi {
116
157
  url: `${this.API_URL}/accounts/${addr}/transactions/count?after=${after}`,
117
158
  });
118
159
 
119
- const allTransactions: MultiversXApiTransaction[] = [];
120
- let from = 0;
121
- while (from < transactionsCount) {
122
- const { data: transactions } = await network<MultiversXApiTransaction[]>({
123
- method: "GET",
124
- url: `${this.API_URL}/accounts/${addr}/transactions?after=${after}&from=${from}&size=${MAX_PAGINATION_SIZE}&withOperations=true&withScResults=true`,
125
- });
126
- for (const transaction of transactions ?? []) {
127
- transaction.mode = decodeTransactionMode(transaction.action) as MultiversXTransactionMode;
128
- }
129
- allTransactions.push(...(transactions ?? []));
130
- from = from + MAX_PAGINATION_SIZE;
160
+ const allTransactions = await fetchAllTransactions(
161
+ `${this.API_URL}/accounts/${addr}/transactions?after=${after}&withOperations=true&withScResults=true`,
162
+ transactionsCount,
163
+ );
164
+ for (const transaction of allTransactions) {
165
+ transaction.mode = decodeTransactionMode(transaction.action) as MultiversXTransactionMode;
131
166
  }
132
167
  return allTransactions;
133
168
  }
@@ -151,16 +186,10 @@ export class MultiversXNetworkApi {
151
186
  url: `${this.API_URL}/accounts/${addr}/transactions/count?token=${token}&after=${after}`,
152
187
  });
153
188
 
154
- const allTokenTransactions: MultiversXApiTransaction[] = [];
155
- let from = 0;
156
- while (from < tokenTransactionsCount) {
157
- const { data: tokenTransactions } = await network<MultiversXApiTransaction[]>({
158
- method: "GET",
159
- url: `${this.API_URL}/accounts/${addr}/transactions?token=${token}&from=${from}&after=${after}&size=${MAX_PAGINATION_SIZE}`,
160
- });
161
- allTokenTransactions.push(...(tokenTransactions ?? []));
162
- from = from + MAX_PAGINATION_SIZE;
163
- }
189
+ const allTokenTransactions = await fetchAllTransactions(
190
+ `${this.API_URL}/accounts/${addr}/transactions?token=${token}&after=${after}`,
191
+ tokenTransactionsCount,
192
+ );
164
193
 
165
194
  for (const esdtTransaction of allTokenTransactions) {
166
195
  (esdtTransaction as { transfer?: string }).transfer =