@ledgerhq/coin-filecoin 1.14.1-nightly.20251113102200 → 1.15.0-nightly.20251115023630

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 (56) hide show
  1. package/.unimportedrc.json +2 -0
  2. package/CHANGELOG.md +11 -7
  3. package/lib/api/api.d.ts +5 -3
  4. package/lib/api/api.d.ts.map +1 -1
  5. package/lib/api/api.js +66 -21
  6. package/lib/api/api.js.map +1 -1
  7. package/lib/common-logic/index.d.ts +1 -1
  8. package/lib/common-logic/index.d.ts.map +1 -1
  9. package/lib/common-logic/index.js +1 -3
  10. package/lib/common-logic/index.js.map +1 -1
  11. package/lib/common-logic/utils.d.ts +0 -2
  12. package/lib/common-logic/utils.d.ts.map +1 -1
  13. package/lib/common-logic/utils.js +16 -68
  14. package/lib/common-logic/utils.js.map +1 -1
  15. package/lib/erc20/tokenAccounts.d.ts +2 -3
  16. package/lib/erc20/tokenAccounts.d.ts.map +1 -1
  17. package/lib/erc20/tokenAccounts.js +46 -32
  18. package/lib/erc20/tokenAccounts.js.map +1 -1
  19. package/lib/test/fixtures.d.ts +87 -0
  20. package/lib/test/fixtures.d.ts.map +1 -0
  21. package/lib/test/fixtures.js +311 -0
  22. package/lib/test/fixtures.js.map +1 -0
  23. package/lib/types/common.d.ts +22 -2
  24. package/lib/types/common.d.ts.map +1 -1
  25. package/lib-es/api/api.d.ts +5 -3
  26. package/lib-es/api/api.d.ts.map +1 -1
  27. package/lib-es/api/api.js +61 -18
  28. package/lib-es/api/api.js.map +1 -1
  29. package/lib-es/common-logic/index.d.ts +1 -1
  30. package/lib-es/common-logic/index.d.ts.map +1 -1
  31. package/lib-es/common-logic/index.js +1 -1
  32. package/lib-es/common-logic/index.js.map +1 -1
  33. package/lib-es/common-logic/utils.d.ts +0 -2
  34. package/lib-es/common-logic/utils.d.ts.map +1 -1
  35. package/lib-es/common-logic/utils.js +16 -66
  36. package/lib-es/common-logic/utils.js.map +1 -1
  37. package/lib-es/erc20/tokenAccounts.d.ts +2 -3
  38. package/lib-es/erc20/tokenAccounts.d.ts.map +1 -1
  39. package/lib-es/erc20/tokenAccounts.js +47 -33
  40. package/lib-es/erc20/tokenAccounts.js.map +1 -1
  41. package/lib-es/test/fixtures.d.ts +87 -0
  42. package/lib-es/test/fixtures.d.ts.map +1 -0
  43. package/lib-es/test/fixtures.js +297 -0
  44. package/lib-es/test/fixtures.js.map +1 -0
  45. package/lib-es/types/common.d.ts +22 -2
  46. package/lib-es/types/common.d.ts.map +1 -1
  47. package/package.json +6 -6
  48. package/src/api/api.ts +107 -26
  49. package/src/api/api.unit.test.ts +217 -0
  50. package/src/common-logic/index.ts +0 -2
  51. package/src/common-logic/utils.ts +19 -90
  52. package/src/common-logic/utils.unit.test.ts +429 -0
  53. package/src/erc20/tokenAccounts.ts +59 -34
  54. package/src/erc20/tokenAccounts.unit.test.ts +73 -0
  55. package/src/test/fixtures.ts +342 -0
  56. package/src/types/common.ts +24 -2
@@ -5,6 +5,7 @@
5
5
  "proxy-from-env"
6
6
  ],
7
7
  "ignoreUnused": [
8
+ "@ledgerhq/cryptoassets",
8
9
  "@ledgerhq/devices",
9
10
  "expect"
10
11
  ],
@@ -15,6 +16,7 @@
15
16
  "src/test/bot-specs.ts",
16
17
  "src/test/bridgeDatasetTest.ts",
17
18
  "src/test/cli.ts",
19
+ "src/test/fixtures.ts",
18
20
  "src/test/index.ts",
19
21
  "src/test/speculos-deviceActions.ts"
20
22
  ]
package/CHANGELOG.md CHANGED
@@ -1,15 +1,19 @@
1
1
  # @ledgerhq/coin-filecoin
2
2
 
3
- ## 1.14.1-nightly.20251113102200
3
+ ## 1.15.0-nightly.20251115023630
4
+
5
+ ### Minor Changes
6
+
7
+ - [#12304](https://github.com/LedgerHQ/ledger-live/pull/12304) [`bb5420d`](https://github.com/LedgerHQ/ledger-live/commit/bb5420df34ae3020f3c9e6270e85dda230922612) Thanks [@scavassa-yld](https://github.com/scavassa-yld)! - Add incremental sync and network api upgrade
4
8
 
5
9
  ### Patch Changes
6
10
 
7
- - Updated dependencies [[`74a340b`](https://github.com/LedgerHQ/ledger-live/commit/74a340b258589c9c37476103029eb036b930616c), [`a6bc24e`](https://github.com/LedgerHQ/ledger-live/commit/a6bc24ee988b98bf82f807ac5ce731ba79813901), [`b69c97d`](https://github.com/LedgerHQ/ledger-live/commit/b69c97d979ba97154c9abfda6abfc2a36becee4f), [`544721d`](https://github.com/LedgerHQ/ledger-live/commit/544721d198454526ef83516619d59c881ba34eb9), [`1c6f5f5`](https://github.com/LedgerHQ/ledger-live/commit/1c6f5f5843349b1955f7ca466f98cbe4ffcdaddf), [`d5d838a`](https://github.com/LedgerHQ/ledger-live/commit/d5d838a23e00edd53293843781c559c41db4e854), [`9f61dcf`](https://github.com/LedgerHQ/ledger-live/commit/9f61dcf6163fd66657e5be732c28bea623a40515), [`938b970`](https://github.com/LedgerHQ/ledger-live/commit/938b970e15118dc706c759a3bec27dc01c3dd268), [`c40e9da`](https://github.com/LedgerHQ/ledger-live/commit/c40e9da68452fe9827b9435ff2d162291186be73), [`c0b5b9f`](https://github.com/LedgerHQ/ledger-live/commit/c0b5b9f4cdcb2ea3e15419cbf3d1a14f725c3e6a), [`70049be`](https://github.com/LedgerHQ/ledger-live/commit/70049bed0cd0a8c7a9e4947a63af82061dad46c0), [`5b41dd5`](https://github.com/LedgerHQ/ledger-live/commit/5b41dd56e024a5d03ba0e49084113c04887395db), [`eb5a17e`](https://github.com/LedgerHQ/ledger-live/commit/eb5a17e4db336eaa871eaeb52ffa5248e0f78bec), [`9659a34`](https://github.com/LedgerHQ/ledger-live/commit/9659a34d9998d5c4dff8618bf6cef7d16403680d), [`c70f6a8`](https://github.com/LedgerHQ/ledger-live/commit/c70f6a8370056b6fd8f236205471359d6f9b846f)]:
8
- - @ledgerhq/types-live@6.89.0-nightly.20251113102200
9
- - @ledgerhq/cryptoassets@13.33.0-nightly.20251113102200
10
- - @ledgerhq/coin-framework@6.9.0-nightly.20251113102200
11
- - @ledgerhq/live-env@2.21.0-nightly.20251113102200
12
- - @ledgerhq/live-network@2.1.1-nightly.20251113102200
11
+ - Updated dependencies [[`74a340b`](https://github.com/LedgerHQ/ledger-live/commit/74a340b258589c9c37476103029eb036b930616c), [`a6bc24e`](https://github.com/LedgerHQ/ledger-live/commit/a6bc24ee988b98bf82f807ac5ce731ba79813901), [`b69c97d`](https://github.com/LedgerHQ/ledger-live/commit/b69c97d979ba97154c9abfda6abfc2a36becee4f), [`544721d`](https://github.com/LedgerHQ/ledger-live/commit/544721d198454526ef83516619d59c881ba34eb9), [`fe81926`](https://github.com/LedgerHQ/ledger-live/commit/fe81926afeb2df8e917e6bd1e4cbab13f09647fd), [`1c6f5f5`](https://github.com/LedgerHQ/ledger-live/commit/1c6f5f5843349b1955f7ca466f98cbe4ffcdaddf), [`d5d838a`](https://github.com/LedgerHQ/ledger-live/commit/d5d838a23e00edd53293843781c559c41db4e854), [`9f61dcf`](https://github.com/LedgerHQ/ledger-live/commit/9f61dcf6163fd66657e5be732c28bea623a40515), [`903ea9c`](https://github.com/LedgerHQ/ledger-live/commit/903ea9cdacf704a0119de2803a4f409b775391a5), [`938b970`](https://github.com/LedgerHQ/ledger-live/commit/938b970e15118dc706c759a3bec27dc01c3dd268), [`c40e9da`](https://github.com/LedgerHQ/ledger-live/commit/c40e9da68452fe9827b9435ff2d162291186be73), [`02ef98f`](https://github.com/LedgerHQ/ledger-live/commit/02ef98faeb13c182ef255e06a43c39abeb55ecc7), [`c0b5b9f`](https://github.com/LedgerHQ/ledger-live/commit/c0b5b9f4cdcb2ea3e15419cbf3d1a14f725c3e6a), [`70049be`](https://github.com/LedgerHQ/ledger-live/commit/70049bed0cd0a8c7a9e4947a63af82061dad46c0), [`0d33751`](https://github.com/LedgerHQ/ledger-live/commit/0d33751bb2ae599d0d26ce6a8efdbe01757f12fb), [`5b41dd5`](https://github.com/LedgerHQ/ledger-live/commit/5b41dd56e024a5d03ba0e49084113c04887395db), [`eb5a17e`](https://github.com/LedgerHQ/ledger-live/commit/eb5a17e4db336eaa871eaeb52ffa5248e0f78bec), [`9659a34`](https://github.com/LedgerHQ/ledger-live/commit/9659a34d9998d5c4dff8618bf6cef7d16403680d), [`c70f6a8`](https://github.com/LedgerHQ/ledger-live/commit/c70f6a8370056b6fd8f236205471359d6f9b846f)]:
12
+ - @ledgerhq/types-live@6.89.0-nightly.20251115023630
13
+ - @ledgerhq/cryptoassets@13.33.0-nightly.20251115023630
14
+ - @ledgerhq/coin-framework@6.9.0-nightly.20251115023630
15
+ - @ledgerhq/live-env@2.21.0-nightly.20251115023630
16
+ - @ledgerhq/live-network@2.1.1-nightly.20251115023630
13
17
 
14
18
  ## 1.14.0
15
19
 
package/lib/api/api.d.ts CHANGED
@@ -1,9 +1,11 @@
1
- import { BalanceResponse, BroadcastTransactionRequest, BroadcastTransactionResponse, EstimatedFeesRequest, EstimatedFeesResponse, NetworkStatusResponse, TransactionResponse, ERC20Transfer } from "../types";
1
+ import { BalanceResponse, BroadcastTransactionRequest, BroadcastTransactionResponse, EstimatedFeesRequest, EstimatedFeesResponse, NetworkStatusResponse, TransactionResponse, TransactionsResponse, FetchERC20TransactionsResponse, ERC20Transfer } from "../types";
2
2
  export declare const fetchBalances: (addr: string) => Promise<BalanceResponse>;
3
3
  export declare const fetchEstimatedFees: import("@ledgerhq/live-network/cache").CacheRes<[request: EstimatedFeesRequest], EstimatedFeesResponse>;
4
4
  export declare const fetchBlockHeight: () => Promise<NetworkStatusResponse>;
5
- export declare const fetchTxs: (addr: string) => Promise<TransactionResponse[]>;
5
+ export declare const fetchTxs: (addr: string, lastHeight: number, offset?: number, limit?: number) => Promise<TransactionsResponse>;
6
+ export declare const fetchTxsWithPages: (addr: string, lastHeight: number) => Promise<TransactionResponse[]>;
6
7
  export declare const broadcastTx: (message: BroadcastTransactionRequest) => Promise<BroadcastTransactionResponse>;
7
8
  export declare const fetchERC20TokenBalance: (ethAddr: string, contractAddr: string) => Promise<string>;
8
- export declare const fetchERC20Transactions: (ethAddr: string) => Promise<ERC20Transfer[]>;
9
+ export declare const fetchERC20Transactions: (ethAddr: string, lastHeight: number, offset?: number, limit?: number) => Promise<FetchERC20TransactionsResponse>;
10
+ export declare const fetchERC20TransactionsWithPages: (addr: string, lastHeight: number) => Promise<ERC20Transfer[]>;
9
11
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EAGnB,aAAa,EAEd,MAAM,UAAU,CAAC;AA+ClB,eAAO,MAAM,aAAa,SAAgB,MAAM,KAAG,QAAQ,eAAe,CAGzE,CAAC;AAEF,eAAO,MAAM,kBAAkB,yGAc9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAa,QAAQ,qBAAqB,CAGtE,CAAC;AAEF,eAAO,MAAM,QAAQ,SAAgB,MAAM,KAAG,QAAQ,mBAAmB,EAAE,CAG1E,CAAC;AAEF,eAAO,MAAM,WAAW,YACb,2BAA2B,KACnC,QAAQ,4BAA4B,CAGtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,YACxB,MAAM,gBACD,MAAM,KACnB,QAAQ,MAAM,CAUhB,CAAC;AAEF,eAAO,MAAM,sBAAsB,YAAmB,MAAM,KAAG,QAAQ,aAAa,EAAE,CAKrF,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,8BAA8B,EAC9B,aAAa,EAEd,MAAM,UAAU,CAAC;AA4DlB,eAAO,MAAM,aAAa,SAAgB,MAAM,KAAG,QAAQ,eAAe,CAKzE,CAAC;AAEF,eAAO,MAAM,kBAAkB,yGAiB9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAa,QAAQ,qBAAqB,CAKtE,CAAC;AAEF,eAAO,MAAM,QAAQ,SACb,MAAM,cACA,MAAM,WACV,MAAM,UACP,MAAM,KACZ,QAAQ,oBAAoB,CAQ9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,SACtB,MAAM,cACA,MAAM,KACjB,QAAQ,mBAAmB,EAAE,CAc/B,CAAC;AAEF,eAAO,MAAM,WAAW,YACb,2BAA2B,KACnC,QAAQ,4BAA4B,CAMtC,CAAC;AAEF,eAAO,MAAM,sBAAsB,YACxB,MAAM,gBACD,MAAM,KACnB,QAAQ,MAAM,CAahB,CAAC;AAEF,eAAO,MAAM,sBAAsB,YACxB,MAAM,cACH,MAAM,WACV,MAAM,UACP,MAAM,KACZ,QAAQ,8BAA8B,CAQxC,CAAC;AAEF,eAAO,MAAM,+BAA+B,SACpC,MAAM,cACA,MAAM,KACjB,QAAQ,aAAa,EAAE,CAczB,CAAC"}
package/lib/api/api.js CHANGED
@@ -3,53 +3,61 @@ 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.fetchERC20Transactions = exports.fetchERC20TokenBalance = exports.broadcastTx = exports.fetchTxs = exports.fetchBlockHeight = exports.fetchEstimatedFees = exports.fetchBalances = void 0;
6
+ exports.fetchERC20TransactionsWithPages = exports.fetchERC20Transactions = exports.fetchERC20TokenBalance = exports.broadcastTx = exports.fetchTxsWithPages = exports.fetchTxs = exports.fetchBlockHeight = exports.fetchEstimatedFees = exports.fetchBalances = void 0;
7
7
  const logs_1 = require("@ledgerhq/logs");
8
- const network_1 = __importDefault(require("@ledgerhq/live-network/network"));
8
+ const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
9
9
  const cache_1 = require("@ledgerhq/live-network/cache");
10
10
  const live_env_1 = require("@ledgerhq/live-env");
11
11
  const errors_1 = require("../errors");
12
- const getFilecoinURL = (path) => {
12
+ const txsPerPageLimit = 1000;
13
+ const currentVersion = "/v2";
14
+ const fromHeightQueryParam = "from_height";
15
+ const getFilecoinURL = (version = currentVersion, path) => {
13
16
  const baseUrl = (0, live_env_1.getEnv)("API_FILECOIN_ENDPOINT");
14
17
  if (!baseUrl)
15
18
  throw new Error("API base URL not available");
16
- return `${baseUrl}${path ? path : ""}`;
19
+ return `${baseUrl}${version ? version : ""}${path ? path : ""}`;
17
20
  };
18
- const fetch = async (path) => {
19
- const url = getFilecoinURL(path);
21
+ const fetch = async (path, { version }) => {
22
+ const url = getFilecoinURL(version, path);
20
23
  // We force data to this way as network func is not using the correct param type. Changing that func will generate errors in other implementations
21
24
  const opts = {
22
25
  method: "GET",
23
26
  url,
24
27
  };
25
- const rawResponse = await (0, network_1.default)(opts);
28
+ const rawResponse = await (0, live_network_1.default)(opts);
26
29
  // We force data to this way as network func is not using the correct param type. Changing that func will generate errors in other implementations
27
30
  const { data } = rawResponse;
28
31
  (0, logs_1.log)("http", url);
29
32
  return data;
30
33
  };
31
- const send = async (path, data) => {
32
- const url = getFilecoinURL(path);
34
+ const send = async (path, { version, data }) => {
35
+ const url = getFilecoinURL(version, path);
33
36
  const opts = {
34
37
  method: "POST",
35
38
  url,
36
39
  data: JSON.stringify(data),
37
40
  headers: { "Content-Type": "application/json" },
38
41
  };
39
- const rawResponse = await (0, network_1.default)(opts);
42
+ const rawResponse = await (0, live_network_1.default)(opts);
40
43
  // We force data to this way as network func is not using generics. Changing that func will generate errors in other implementations
41
44
  const { data: responseData } = rawResponse;
42
45
  (0, logs_1.log)("http", url);
43
46
  return responseData;
44
47
  };
45
48
  const fetchBalances = async (addr) => {
46
- const data = await fetch(`/addresses/${addr}/balance`);
49
+ const data = await fetch(`/addresses/${addr}/balance`, {
50
+ version: currentVersion,
51
+ });
47
52
  return data; // TODO Validate if the response fits this interface
48
53
  };
49
54
  exports.fetchBalances = fetchBalances;
50
55
  exports.fetchEstimatedFees = (0, cache_1.makeLRUCache)(async (request) => {
51
56
  try {
52
- const data = await send(`/fees/estimate`, request);
57
+ const data = await send(`/fees/estimate`, {
58
+ version: currentVersion,
59
+ data: request,
60
+ });
53
61
  return data; // TODO Validate if the response fits this interface
54
62
  }
55
63
  catch (e) {
@@ -60,31 +68,68 @@ exports.fetchEstimatedFees = (0, cache_1.makeLRUCache)(async (request) => {
60
68
  ttl: 5 * 1000, // 5 seconds
61
69
  });
62
70
  const fetchBlockHeight = async () => {
63
- const data = await fetch("/network/status");
71
+ const data = await fetch("/network/status", {
72
+ version: currentVersion,
73
+ });
64
74
  return data; // TODO Validate if the response fits this interface
65
75
  };
66
76
  exports.fetchBlockHeight = fetchBlockHeight;
67
- const fetchTxs = async (addr) => {
68
- const response = await fetch(`/addresses/${addr}/transactions`);
69
- return response.txs; // TODO Validate if the response fits this interface
77
+ const fetchTxs = async (addr, lastHeight, offset = 0, limit = 0) => {
78
+ const response = await fetch(`/addresses/${addr}/transactions?${fromHeightQueryParam}=${lastHeight}&offset=${offset}&limit=${limit}`, {
79
+ version: currentVersion,
80
+ });
81
+ return response; // TODO Validate if the response fits this interface
70
82
  };
71
83
  exports.fetchTxs = fetchTxs;
84
+ const fetchTxsWithPages = async (addr, lastHeight) => {
85
+ let result = [];
86
+ let offset = 0;
87
+ let txsLen = txsPerPageLimit;
88
+ while (txsLen === txsPerPageLimit) {
89
+ const { txs } = await (0, exports.fetchTxs)(addr, lastHeight, offset, txsPerPageLimit);
90
+ result = result.concat(txs);
91
+ txsLen = txs.length;
92
+ offset += txsLen;
93
+ }
94
+ return result;
95
+ };
96
+ exports.fetchTxsWithPages = fetchTxsWithPages;
72
97
  const broadcastTx = async (message) => {
73
- const response = await send(`/transaction/broadcast`, message);
98
+ const response = await send(`/transaction/broadcast`, {
99
+ version: currentVersion,
100
+ data: message,
101
+ });
74
102
  return response; // TODO Validate if the response fits this interface
75
103
  };
76
104
  exports.broadcastTx = broadcastTx;
77
105
  const fetchERC20TokenBalance = async (ethAddr, contractAddr) => {
78
- const res = await fetch(`/contract/${contractAddr}/address/${ethAddr}/balance/erc20`);
106
+ const res = await fetch(`/contract/${contractAddr}/address/${ethAddr}/balance/erc20`, {
107
+ version: currentVersion,
108
+ });
79
109
  if (res.data.length) {
80
110
  return res.data[0].balance;
81
111
  }
82
112
  return "0";
83
113
  };
84
114
  exports.fetchERC20TokenBalance = fetchERC20TokenBalance;
85
- const fetchERC20Transactions = async (ethAddr) => {
86
- const res = await fetch(`/addresses/${ethAddr}/transactions/erc20`);
87
- return res.txs.sort((a, b) => b.timestamp - a.timestamp);
115
+ const fetchERC20Transactions = async (ethAddr, lastHeight, offset = 0, limit = 0) => {
116
+ const res = await fetch(`/addresses/${ethAddr}/transactions/erc20?${fromHeightQueryParam}=${lastHeight}&offset=${offset}&limit=${limit}`, {
117
+ version: currentVersion,
118
+ });
119
+ return res;
88
120
  };
89
121
  exports.fetchERC20Transactions = fetchERC20Transactions;
122
+ const fetchERC20TransactionsWithPages = async (addr, lastHeight) => {
123
+ let result = [];
124
+ let offset = 0;
125
+ let txsLen = txsPerPageLimit;
126
+ while (txsLen === txsPerPageLimit) {
127
+ const { txs } = await (0, exports.fetchERC20Transactions)(addr, lastHeight, offset, txsPerPageLimit);
128
+ result = result.concat(txs);
129
+ txsLen = txs.length;
130
+ offset += txsLen;
131
+ }
132
+ return result.sort((a, b) => b.timestamp - a.timestamp);
133
+ };
134
+ exports.fetchERC20TransactionsWithPages = fetchERC20TransactionsWithPages;
90
135
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api/api.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { getUnit, processTxs, mapTxToOps, getAddress, getTxToBroadcast, getAccountShape, getSubAccount, valueFromUnit, } from "./utils";
1
+ export { mapTxToOps, getAddress, getTxToBroadcast, getAccountShape, getSubAccount, valueFromUnit, } from "./utils";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.valueFromUnit = exports.getSubAccount = exports.getAccountShape = exports.getTxToBroadcast = exports.getAddress = exports.mapTxToOps = exports.processTxs = exports.getUnit = void 0;
3
+ exports.valueFromUnit = exports.getSubAccount = exports.getAccountShape = exports.getTxToBroadcast = exports.getAddress = exports.mapTxToOps = void 0;
4
4
  var utils_1 = require("./utils");
5
- Object.defineProperty(exports, "getUnit", { enumerable: true, get: function () { return utils_1.getUnit; } });
6
- Object.defineProperty(exports, "processTxs", { enumerable: true, get: function () { return utils_1.processTxs; } });
7
5
  Object.defineProperty(exports, "mapTxToOps", { enumerable: true, get: function () { return utils_1.mapTxToOps; } });
8
6
  Object.defineProperty(exports, "getAddress", { enumerable: true, get: function () { return utils_1.getAddress; } });
9
7
  Object.defineProperty(exports, "getTxToBroadcast", { enumerable: true, get: function () { return utils_1.getTxToBroadcast; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":";;;AAAA,iCASiB;AARf,gGAAA,OAAO,OAAA;AACP,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,yGAAA,gBAAgB,OAAA;AAChB,wGAAA,eAAe,OAAA;AACf,sGAAA,aAAa,OAAA;AACb,sGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common-logic/index.ts"],"names":[],"mappings":";;;AAAA,iCAOiB;AANf,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,yGAAA,gBAAgB,OAAA;AAChB,wGAAA,eAAe,OAAA;AACf,sGAAA,aAAa,OAAA;AACb,sGAAA,aAAa,OAAA"}
@@ -3,8 +3,6 @@ import type { Unit } from "@ledgerhq/types-cryptoassets";
3
3
  import { BigNumber } from "bignumber.js";
4
4
  import { BroadcastTransactionRequest, TransactionResponse, Transaction } from "../types";
5
5
  import { GetAccountShape, AccountShapeInfo } from "@ledgerhq/coin-framework/bridge/jsHelpers";
6
- export declare const getUnit: () => Unit;
7
- export declare const processTxs: (txs: TransactionResponse[]) => TransactionResponse[];
8
6
  export declare const mapTxToOps: (accountId: string, { address }: AccountShapeInfo) => (tx: TransactionResponse) => Operation[];
9
7
  export declare const getAddress: (a: Account) => {
10
8
  address: string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAIzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAY,WAAW,EAAE,MAAM,UAAU,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAmB9F,eAAO,MAAM,OAAO,YAAmD,CAAC;AAExE,eAAO,MAAM,UAAU,QAAS,mBAAmB,EAAE,KAAG,mBAAmB,EAyD1E,CAAC;AAEF,eAAO,MAAM,UAAU,cACT,MAAM,eAAe,gBAAgB,UAC5C,mBAAmB,KAAG,SAAS,EAkDnC,CAAC;AAEJ,eAAO,MAAM,UAAU,MAClB,OAAO,KACT;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CAC6C,CAAC;AAEvE,eAAO,MAAM,gBAAgB,cAChB,SAAS,aACT,MAAM,WACR,OAAO,MAAM,EAAE,GAAG,CAAC,KAC3B,2BAiCF,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eA6B7B,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,OAAO,MAAM,WAAW,mEAO9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,gBAAiB,SAAS,QAAQ,IAAI,cACN,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,mBAAmB,EAAY,WAAW,EAAE,MAAM,UAAU,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAO9F,eAAO,MAAM,UAAU,cACT,MAAM,eAAe,gBAAgB,UAC5C,mBAAmB,KAAG,SAAS,EAmDnC,CAAC;AAEJ,eAAO,MAAM,UAAU,MAClB,OAAO,KACT;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CAC6C,CAAC;AAEvE,eAAO,MAAM,gBAAgB,cAChB,SAAS,aACT,MAAM,WACR,OAAO,MAAM,EAAE,GAAG,CAAC,KAC3B,2BAiCF,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAiC7B,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,OAAO,MAAM,WAAW,mEAO9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,gBAAiB,SAAS,QAAQ,IAAI,cACN,CAAC"}
@@ -3,10 +3,7 @@ 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.valueFromUnit = exports.getSubAccount = exports.getAccountShape = exports.getTxToBroadcast = exports.getAddress = exports.mapTxToOps = exports.processTxs = exports.getUnit = void 0;
7
- const logs_1 = require("@ledgerhq/logs");
8
- const currencies_1 = require("@ledgerhq/coin-framework/currencies");
9
- const cryptoassets_1 = require("@ledgerhq/cryptoassets");
6
+ exports.valueFromUnit = exports.getSubAccount = exports.getAccountShape = exports.getTxToBroadcast = exports.getAddress = exports.mapTxToOps = void 0;
10
7
  const bignumber_js_1 = require("bignumber.js");
11
8
  const types_1 = require("../types");
12
9
  const api_1 = require("../api/api");
@@ -14,65 +11,12 @@ const account_1 = require("@ledgerhq/coin-framework/account");
14
11
  const operation_1 = require("@ledgerhq/coin-framework/operation");
15
12
  const flatMap_1 = __importDefault(require("lodash/flatMap"));
16
13
  const tokenAccounts_1 = require("../erc20/tokenAccounts");
17
- const getUnit = () => (0, cryptoassets_1.getCryptoCurrencyById)("filecoin").units[0];
18
- exports.getUnit = getUnit;
19
- const processTxs = (txs) => {
20
- // Group all tx types related to same tx cid into the same object
21
- const txsByTxCid = txs.reduce((txsByTxCidResult, currentTx) => {
22
- const { hash: txCid, type: txType } = currentTx;
23
- const txByType = txsByTxCidResult[txCid] || {};
24
- switch (txType) {
25
- case "Send":
26
- txByType.Send = currentTx;
27
- break;
28
- case "InvokeContract":
29
- txByType.InvokeContract = currentTx;
30
- break;
31
- case "Fee":
32
- txByType.Fee = currentTx;
33
- break;
34
- default:
35
- (0, logs_1.log)("warn", `tx type [${txType}] on tx cid [${txCid}] was not recognized.`);
36
- break;
37
- }
38
- txsByTxCidResult[txCid] = txByType;
39
- return txsByTxCidResult;
40
- }, {});
41
- // Once all tx types have been grouped, we want to find
42
- const processedTxs = [];
43
- for (const txCid in txsByTxCid) {
44
- const item = txsByTxCid[txCid];
45
- const feeTx = item.Fee;
46
- let mainTx;
47
- if ("Send" in item) {
48
- mainTx = item.Send;
49
- }
50
- else if ("InvokeContract" in item) {
51
- mainTx = item.InvokeContract;
52
- }
53
- else {
54
- (0, logs_1.log)("warn", `unexpected tx type, tx with cid [${txCid}] and payload [${JSON.stringify(item)}]`);
55
- }
56
- if (!mainTx) {
57
- if (feeTx) {
58
- (0, logs_1.log)("warn", `feeTx [${feeTx.hash}] found without a mainTx linked to it.`);
59
- }
60
- continue;
61
- }
62
- if (feeTx) {
63
- mainTx.fee = feeTx.amount;
64
- }
65
- processedTxs.push(mainTx);
66
- }
67
- return processedTxs;
68
- };
69
- exports.processTxs = processTxs;
70
14
  const mapTxToOps = (accountId, { address }) => (tx) => {
71
- const { to, from, hash, timestamp, amount, fee, status } = tx;
15
+ const { to, from, hash, timestamp, amount, fee_data, status } = tx;
72
16
  const ops = [];
73
17
  const date = new Date(timestamp * 1000);
74
- const value = (0, currencies_1.parseCurrencyUnit)((0, exports.getUnit)(), amount.toString());
75
- const feeToUse = (0, currencies_1.parseCurrencyUnit)((0, exports.getUnit)(), (fee || 0).toString());
18
+ const value = new bignumber_js_1.BigNumber(amount);
19
+ const feeToUse = new bignumber_js_1.BigNumber(fee_data?.TotalCost || 0);
76
20
  const isSending = address === from;
77
21
  const isReceiving = address === to;
78
22
  const hasFailed = status !== types_1.TxStatus.Ok;
@@ -140,7 +84,11 @@ const getTxToBroadcast = (operation, signature, rawData) => {
140
84
  };
141
85
  exports.getTxToBroadcast = getTxToBroadcast;
142
86
  const getAccountShape = async (info) => {
143
- const { address, currency, derivationMode } = info;
87
+ const { address, currency, derivationMode, initialAccount } = info;
88
+ const blockSafeDelta = 1200;
89
+ let lastHeight = (initialAccount?.blockHeight ?? 0) - blockSafeDelta;
90
+ if (lastHeight < 0)
91
+ lastHeight = 0;
144
92
  const accountId = (0, account_1.encodeAccountId)({
145
93
  type: "js",
146
94
  version: "2",
@@ -148,18 +96,18 @@ const getAccountShape = async (info) => {
148
96
  xpubOrAddress: address,
149
97
  derivationMode,
150
98
  });
151
- const blockHeight = await (0, api_1.fetchBlockHeight)();
152
- const balance = await (0, api_1.fetchBalances)(address);
153
- const rawTxs = await (0, api_1.fetchTxs)(address);
154
- const tokenAccounts = await (0, tokenAccounts_1.buildTokenAccounts)(address, accountId, info.initialAccount);
155
- const operations = (0, flatMap_1.default)((0, exports.processTxs)(rawTxs), (0, exports.mapTxToOps)(accountId, info)).sort((a, b) => b.date.getTime() - a.date.getTime());
99
+ const [blockHeight, balance, rawTxs, tokenAccounts] = await Promise.all([
100
+ (0, api_1.fetchBlockHeight)(),
101
+ (0, api_1.fetchBalances)(address),
102
+ (0, api_1.fetchTxsWithPages)(address, lastHeight),
103
+ (0, tokenAccounts_1.buildTokenAccounts)(address, lastHeight, accountId, info.initialAccount),
104
+ ]);
156
105
  const result = {
157
106
  id: accountId,
158
107
  subAccounts: tokenAccounts,
159
108
  balance: new bignumber_js_1.BigNumber(balance.total_balance),
160
109
  spendableBalance: new bignumber_js_1.BigNumber(balance.spendable_balance),
161
- operations,
162
- operationsCount: operations.length,
110
+ operations: (0, flatMap_1.default)(rawTxs, (0, exports.mapTxToOps)(accountId, info)).sort((a, b) => b.date.getTime() - a.date.getTime()),
163
111
  blockHeight: blockHeight.current_block_identifier.index,
164
112
  };
165
113
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common-logic/utils.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import { Account, Operation, TokenAccount } from "@ledgerhq/types-live";
2
2
  import { ERC20Transfer } from "../types";
3
3
  import BigNumber from "bignumber.js";
4
- import { Unit } from "@ledgerhq/types-cryptoassets";
5
- export declare const erc20TxnToOperation: (tx: ERC20Transfer, address: string, accountId: string, unit: Unit) => Operation[];
6
- export declare function buildTokenAccounts(filAddr: string, parentAccountId: string, initialAccount?: Account): Promise<TokenAccount[]>;
4
+ export declare const erc20TxnToOperation: (tx: ERC20Transfer, address: string, accountId: string) => Operation[];
5
+ export declare function buildTokenAccounts(filAddr: string, lastHeight: number, parentAccountId: string, initialAccount?: Account): Promise<TokenAccount[]>;
7
6
  export declare const encodeTxnParams: (abiEncodedParams: string) => string;
8
7
  export declare const abiEncodeTransferParams: (recipient: string, amount: string) => string;
9
8
  export declare const generateTokenTxnParams: (recipient: string, amount: BigNumber) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"tokenAccounts.d.ts","sourceRoot":"","sources":["../../src/erc20/tokenAccounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAInD,OAAO,SAAS,MAAM,cAAc,CAAC;AAMrC,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAIpD,eAAO,MAAM,mBAAmB,OAC1B,aAAa,WACR,MAAM,aACJ,MAAM,QACX,IAAI,KACT,SAAS,EA0DX,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,YAAY,EAAE,CAAC,CAiEzB;AAED,eAAO,MAAM,eAAe,qBAAsB,MAAM,WAUvD,CAAC;AAEF,eAAO,MAAM,uBAAuB,cAAe,MAAM,UAAU,MAAM,WAIxE,CAAC;AAEF,eAAO,MAAM,sBAAsB,cAAe,MAAM,UAAU,SAAS,WAU1E,CAAC"}
1
+ {"version":3,"file":"tokenAccounts.d.ts","sourceRoot":"","sources":["../../src/erc20/tokenAccounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAInD,OAAO,SAAS,MAAM,cAAc,CAAC;AASrC,eAAO,MAAM,mBAAmB,OAC1B,aAAa,WACR,MAAM,aACJ,MAAM,KAChB,SAAS,EA0DX,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,YAAY,EAAE,CAAC,CA2FzB;AAED,eAAO,MAAM,eAAe,qBAAsB,MAAM,WAUvD,CAAC;AAEF,eAAO,MAAM,uBAAuB,cAAe,MAAM,UAAU,MAAM,WAIxE,CAAC;AAEF,eAAO,MAAM,sBAAsB,cAAe,MAAM,UAAU,SAAS,WAU1E,CAAC"}
@@ -18,11 +18,11 @@ const ethers_1 = require("ethers");
18
18
  const ERC20_json_1 = __importDefault(require("./ERC20.json"));
19
19
  const errors_1 = require("@ledgerhq/errors");
20
20
  const utils_1 = require("../bridge/utils");
21
- const utils_2 = require("../common-logic/utils");
22
- const erc20TxnToOperation = (tx, address, accountId, unit) => {
21
+ const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
22
+ const erc20TxnToOperation = (tx, address, accountId) => {
23
23
  try {
24
24
  const { to, from, timestamp, tx_hash, tx_cid, amount, height, status } = tx;
25
- const value = (0, utils_2.valueFromUnit)(new bignumber_js_1.default(amount), unit);
25
+ const txAmount = new bignumber_js_1.default(amount);
26
26
  const isSending = address.toLowerCase() === from.toLowerCase();
27
27
  const isReceiving = address.toLowerCase() === to.toLowerCase();
28
28
  const fee = new bignumber_js_1.default(0);
@@ -35,7 +35,7 @@ const erc20TxnToOperation = (tx, address, accountId, unit) => {
35
35
  id: (0, operation_1.encodeOperationId)(accountId, hash, "OUT"),
36
36
  hash,
37
37
  type: "OUT",
38
- value: value,
38
+ value: txAmount,
39
39
  fee,
40
40
  blockHeight: height,
41
41
  blockHash: "",
@@ -52,7 +52,7 @@ const erc20TxnToOperation = (tx, address, accountId, unit) => {
52
52
  id: (0, operation_1.encodeOperationId)(accountId, hash, "IN"),
53
53
  hash,
54
54
  type: "IN",
55
- value,
55
+ value: txAmount,
56
56
  fee,
57
57
  blockHeight: height,
58
58
  blockHash: "",
@@ -73,40 +73,48 @@ const erc20TxnToOperation = (tx, address, accountId, unit) => {
73
73
  }
74
74
  };
75
75
  exports.erc20TxnToOperation = erc20TxnToOperation;
76
- async function buildTokenAccounts(filAddr, parentAccountId, initialAccount) {
76
+ async function buildTokenAccounts(filAddr, lastHeight, parentAccountId, initialAccount) {
77
77
  try {
78
- const transfers = await (0, api_1.fetchERC20Transactions)(filAddr);
79
- const transfersUntangled = transfers.reduce((prev, curr) => {
80
- curr.contract_address = curr.contract_address.toLowerCase();
81
- if (prev[curr.contract_address]) {
82
- prev[curr.contract_address] = [...prev[curr.contract_address], curr];
83
- }
84
- else {
85
- prev[curr.contract_address] = [curr];
78
+ const transfers = await (0, api_1.fetchERC20TransactionsWithPages)(filAddr, lastHeight);
79
+ if (!transfers.length) {
80
+ return initialAccount?.subAccounts ?? [];
81
+ }
82
+ // Group transfers by contract address (normalized to lowercase)
83
+ const transfersByContract = transfers.reduce((acc, transfer) => {
84
+ const contractAddr = transfer.contract_address.toLowerCase();
85
+ transfer.contract_address = contractAddr;
86
+ if (!acc[contractAddr]) {
87
+ acc[contractAddr] = [];
86
88
  }
87
- return prev;
89
+ acc[contractAddr].push(transfer);
90
+ return acc;
88
91
  }, {});
89
- const subs = [];
90
- for (const [cAddr, txns] of Object.entries(transfersUntangled)) {
91
- const token = await (0, index_2.getCryptoAssetsStore)().findTokenByAddressInCurrency(cAddr, "filecoin");
92
+ // Create lookup map for existing sub-accounts
93
+ const existingSubAccounts = new Map(initialAccount?.subAccounts?.map(sa => [sa.token.contractAddress.toLowerCase(), sa]) ?? []);
94
+ // Track which existing accounts we've processed
95
+ const processedContracts = new Set();
96
+ const tokenAccounts = [];
97
+ // Process accounts with new transfers
98
+ for (const [contractAddr, txns] of Object.entries(transfersByContract)) {
99
+ processedContracts.add(contractAddr);
100
+ const token = await (0, index_2.getCryptoAssetsStore)().findTokenByAddressInCurrency(contractAddr, "filecoin");
92
101
  if (!token) {
93
- (0, logs_1.log)("error", `filecoin token not found, addr: ${cAddr}`);
102
+ (0, logs_1.log)("error", `filecoin token not found, addr: ${contractAddr}`);
94
103
  continue;
95
104
  }
96
- const balance = await (0, api_1.fetchERC20TokenBalance)(filAddr, cAddr);
97
- const bnBalance = new bignumber_js_1.default(balance.toString());
105
+ const balance = await (0, api_1.fetchERC20TokenBalance)(filAddr, contractAddr);
106
+ const bnBalance = new bignumber_js_1.default(balance);
98
107
  const tokenAccountId = (0, index_1.encodeTokenAccountId)(parentAccountId, token);
99
108
  const operations = txns
100
- .flatMap(txn => (0, exports.erc20TxnToOperation)(txn, filAddr, tokenAccountId, token.units[0]))
109
+ .flatMap(txn => (0, exports.erc20TxnToOperation)(txn, filAddr, tokenAccountId))
101
110
  .flat()
102
111
  .sort((a, b) => b.date.getTime() - a.date.getTime());
112
+ // Skip if no operations and zero balance
103
113
  if (operations.length === 0 && bnBalance.isZero()) {
104
114
  continue;
105
115
  }
106
- const maybeExistingSubAccount = initialAccount &&
107
- initialAccount.subAccounts &&
108
- initialAccount.subAccounts.find(a => a.id === tokenAccountId);
109
- const sub = {
116
+ const existingAccount = existingSubAccounts.get(contractAddr);
117
+ const tokenAccount = {
110
118
  type: utils_1.AccountType.TokenAccount,
111
119
  id: tokenAccountId,
112
120
  parentId: parentAccountId,
@@ -114,15 +122,21 @@ async function buildTokenAccounts(filAddr, parentAccountId, initialAccount) {
114
122
  balance: bnBalance,
115
123
  spendableBalance: bnBalance,
116
124
  operationsCount: txns.length,
117
- operations,
118
- pendingOperations: maybeExistingSubAccount ? maybeExistingSubAccount.pendingOperations : [],
119
- creationDate: operations.length > 0 ? operations[0].date : new Date(),
120
- swapHistory: maybeExistingSubAccount ? maybeExistingSubAccount.swapHistory : [],
125
+ operations: (0, jsHelpers_1.mergeOps)(existingAccount?.operations ?? [], operations),
126
+ pendingOperations: existingAccount?.pendingOperations ?? [],
127
+ creationDate: operations[operations.length - 1]?.date ?? new Date(),
128
+ swapHistory: existingAccount?.swapHistory ?? [],
121
129
  balanceHistoryCache: index_1.emptyHistoryCache, // calculated in the jsHelpers
122
130
  };
123
- subs.push(sub);
131
+ tokenAccounts.push(tokenAccount);
132
+ }
133
+ // Add existing accounts that didn't have new transfers
134
+ for (const [contractAddr, existingAccount] of existingSubAccounts) {
135
+ if (!processedContracts.has(contractAddr)) {
136
+ tokenAccounts.push(existingAccount);
137
+ }
124
138
  }
125
- return subs;
139
+ return tokenAccounts;
126
140
  }
127
141
  catch (e) {
128
142
  (0, logs_1.log)("error", "filecoin error building token accounts", e);