@ledgerhq/live-wallet 0.17.0-nightly.20251219024040 → 0.17.0-nightly.20251223024125

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,6 +1,6 @@
1
1
  # @ledgerhq/live-wallet
2
2
 
3
- ## 0.17.0-nightly.20251219024040
3
+ ## 0.17.0-nightly.20251223024125
4
4
 
5
5
  ### Minor Changes
6
6
 
@@ -10,18 +10,20 @@
10
10
 
11
11
  - [#13155](https://github.com/LedgerHQ/ledger-live/pull/13155) [`aadb3d5`](https://github.com/LedgerHQ/ledger-live/commit/aadb3d57f5719cc2cc397975eafec8094b160afe) Thanks [@gre-ledger](https://github.com/gre-ledger)! - rxjs@7.8.2 everywhere
12
12
 
13
+ - [#13400](https://github.com/LedgerHQ/ledger-live/pull/13400) [`ffa9e7e`](https://github.com/LedgerHQ/ledger-live/commit/ffa9e7e58dd60d0f568362a95e14ba5d130c2d07) Thanks [@dilaouid](https://github.com/dilaouid)! - feat: save timestamp in the recentlAddresses store
14
+
13
15
  - [#13156](https://github.com/LedgerHQ/ledger-live/pull/13156) [`fb3631e`](https://github.com/LedgerHQ/ledger-live/commit/fb3631ef74e9f10fea15fd7daf812306f6d2bc07) Thanks [@gre-ledger](https://github.com/gre-ledger)! - isomorphic-ws@5.0.0 in catalog
14
16
 
15
17
  ### Patch Changes
16
18
 
17
- - Updated dependencies [[`480a08a`](https://github.com/LedgerHQ/ledger-live/commit/480a08ae190119829910b46ecc6d2a9fb11bb7c2), [`19a54fd`](https://github.com/LedgerHQ/ledger-live/commit/19a54fd89a2d3c7481aebc28817870875f9d44dc), [`e63194f`](https://github.com/LedgerHQ/ledger-live/commit/e63194f7dbd5ff2b0135c26aac3842a2be676b0a), [`bc76d51`](https://github.com/LedgerHQ/ledger-live/commit/bc76d5154d35f8340b6b282c4909cd26920b8d40), [`7ae71b6`](https://github.com/LedgerHQ/ledger-live/commit/7ae71b64161424b398b63f77da5127085143fcdc), [`5fa83e4`](https://github.com/LedgerHQ/ledger-live/commit/5fa83e49c5fb103da7ecf0777b7e75bb35d5ed61), [`c5da2ce`](https://github.com/LedgerHQ/ledger-live/commit/c5da2cef7cded2b53c1af9aa3174cd27e5c92e0a), [`450f518`](https://github.com/LedgerHQ/ledger-live/commit/450f518d4cedb828c5fe1e7ccffaabd483f53226), [`adbabc7`](https://github.com/LedgerHQ/ledger-live/commit/adbabc7d3b7ed8915503120a027d19304adc1fc8), [`30be235`](https://github.com/LedgerHQ/ledger-live/commit/30be2354822b3497c69322294ff1dab43375be50), [`bdacedf`](https://github.com/LedgerHQ/ledger-live/commit/bdacedfe32bea8ffce96ab675a44c0d7cf395143), [`fba1e31`](https://github.com/LedgerHQ/ledger-live/commit/fba1e31386e589a93adb19bc4f6eae55129e19ea), [`0924eed`](https://github.com/LedgerHQ/ledger-live/commit/0924eed6a633793999e8657076140523e30ae40b), [`5e8d6be`](https://github.com/LedgerHQ/ledger-live/commit/5e8d6be609dd37c48d747890e56189e0716d5273), [`768718d`](https://github.com/LedgerHQ/ledger-live/commit/768718df029bc8799b88c0299925dc56302b0c53), [`a5ad7d4`](https://github.com/LedgerHQ/ledger-live/commit/a5ad7d4578c06db3e40f260451b644c27e20cb62), [`3e70677`](https://github.com/LedgerHQ/ledger-live/commit/3e706774f8c4e9b768ab18b67abc3471cf61b6b6), [`aadb3d5`](https://github.com/LedgerHQ/ledger-live/commit/aadb3d57f5719cc2cc397975eafec8094b160afe), [`e44d216`](https://github.com/LedgerHQ/ledger-live/commit/e44d216d516df87e13f033ed64fedc1ce96380f4), [`d4bad44`](https://github.com/LedgerHQ/ledger-live/commit/d4bad4433c3fb083d95820d2927a9e8beeaf244f), [`8d8e1b7`](https://github.com/LedgerHQ/ledger-live/commit/8d8e1b7bb26305af326ea21710248223d1e8653b), [`07de7a8`](https://github.com/LedgerHQ/ledger-live/commit/07de7a87415ae4d1126e751d6a4d521ced3065e3), [`d37fa4b`](https://github.com/LedgerHQ/ledger-live/commit/d37fa4baf4534161bffe5033ce44fc7780c79d89), [`5e0556a`](https://github.com/LedgerHQ/ledger-live/commit/5e0556a3bd0ea60277462eed10c997b17b09d299), [`bce6610`](https://github.com/LedgerHQ/ledger-live/commit/bce6610ca8554a85f8f17b6014e921fdecd3fa4f), [`ddd40b4`](https://github.com/LedgerHQ/ledger-live/commit/ddd40b4cae93ecf3139fd33dc0f4dd1c8366d628), [`2a60165`](https://github.com/LedgerHQ/ledger-live/commit/2a601656b7a23a424a29f006ec53090648fdae4f), [`34248c3`](https://github.com/LedgerHQ/ledger-live/commit/34248c306479dafe6335b2c176daf25064c85b3b), [`2d9f320`](https://github.com/LedgerHQ/ledger-live/commit/2d9f32087eea12ae9d5ea2347b277b8bf4e60f55), [`c56ab86`](https://github.com/LedgerHQ/ledger-live/commit/c56ab86ab65597caf87a09b7596faa54f3104bd4), [`fb3631e`](https://github.com/LedgerHQ/ledger-live/commit/fb3631ef74e9f10fea15fd7daf812306f6d2bc07)]:
18
- - @ledgerhq/coin-framework@6.11.0-nightly.20251219024040
19
- - @ledgerhq/types-live@6.91.0-nightly.20251219024040
20
- - @ledgerhq/cryptoassets@13.35.0-nightly.20251219024040
21
- - @ledgerhq/ledger-key-ring-protocol@0.9.0-nightly.20251219024040
22
- - @ledgerhq/live-env@2.23.0-nightly.20251219024040
23
- - @ledgerhq/types-cryptoassets@7.31.0-nightly.20251219024040
24
- - @ledgerhq/live-network@2.1.4-nightly.20251219024040
19
+ - Updated dependencies [[`480a08a`](https://github.com/LedgerHQ/ledger-live/commit/480a08ae190119829910b46ecc6d2a9fb11bb7c2), [`19a54fd`](https://github.com/LedgerHQ/ledger-live/commit/19a54fd89a2d3c7481aebc28817870875f9d44dc), [`e63194f`](https://github.com/LedgerHQ/ledger-live/commit/e63194f7dbd5ff2b0135c26aac3842a2be676b0a), [`bc76d51`](https://github.com/LedgerHQ/ledger-live/commit/bc76d5154d35f8340b6b282c4909cd26920b8d40), [`7ae71b6`](https://github.com/LedgerHQ/ledger-live/commit/7ae71b64161424b398b63f77da5127085143fcdc), [`5fa83e4`](https://github.com/LedgerHQ/ledger-live/commit/5fa83e49c5fb103da7ecf0777b7e75bb35d5ed61), [`c5da2ce`](https://github.com/LedgerHQ/ledger-live/commit/c5da2cef7cded2b53c1af9aa3174cd27e5c92e0a), [`450f518`](https://github.com/LedgerHQ/ledger-live/commit/450f518d4cedb828c5fe1e7ccffaabd483f53226), [`adbabc7`](https://github.com/LedgerHQ/ledger-live/commit/adbabc7d3b7ed8915503120a027d19304adc1fc8), [`8cb7d40`](https://github.com/LedgerHQ/ledger-live/commit/8cb7d40e0a55e47f42adc5cd522740cab1fd4de4), [`30be235`](https://github.com/LedgerHQ/ledger-live/commit/30be2354822b3497c69322294ff1dab43375be50), [`bdacedf`](https://github.com/LedgerHQ/ledger-live/commit/bdacedfe32bea8ffce96ab675a44c0d7cf395143), [`fba1e31`](https://github.com/LedgerHQ/ledger-live/commit/fba1e31386e589a93adb19bc4f6eae55129e19ea), [`0924eed`](https://github.com/LedgerHQ/ledger-live/commit/0924eed6a633793999e8657076140523e30ae40b), [`5e8d6be`](https://github.com/LedgerHQ/ledger-live/commit/5e8d6be609dd37c48d747890e56189e0716d5273), [`768718d`](https://github.com/LedgerHQ/ledger-live/commit/768718df029bc8799b88c0299925dc56302b0c53), [`a5ad7d4`](https://github.com/LedgerHQ/ledger-live/commit/a5ad7d4578c06db3e40f260451b644c27e20cb62), [`3e70677`](https://github.com/LedgerHQ/ledger-live/commit/3e706774f8c4e9b768ab18b67abc3471cf61b6b6), [`81a193d`](https://github.com/LedgerHQ/ledger-live/commit/81a193da5abf0d5f3a129bd78895dd450ce29ca1), [`aadb3d5`](https://github.com/LedgerHQ/ledger-live/commit/aadb3d57f5719cc2cc397975eafec8094b160afe), [`e44d216`](https://github.com/LedgerHQ/ledger-live/commit/e44d216d516df87e13f033ed64fedc1ce96380f4), [`d4bad44`](https://github.com/LedgerHQ/ledger-live/commit/d4bad4433c3fb083d95820d2927a9e8beeaf244f), [`8d8e1b7`](https://github.com/LedgerHQ/ledger-live/commit/8d8e1b7bb26305af326ea21710248223d1e8653b), [`07de7a8`](https://github.com/LedgerHQ/ledger-live/commit/07de7a87415ae4d1126e751d6a4d521ced3065e3), [`d37fa4b`](https://github.com/LedgerHQ/ledger-live/commit/d37fa4baf4534161bffe5033ce44fc7780c79d89), [`5e0556a`](https://github.com/LedgerHQ/ledger-live/commit/5e0556a3bd0ea60277462eed10c997b17b09d299), [`bce6610`](https://github.com/LedgerHQ/ledger-live/commit/bce6610ca8554a85f8f17b6014e921fdecd3fa4f), [`ddd40b4`](https://github.com/LedgerHQ/ledger-live/commit/ddd40b4cae93ecf3139fd33dc0f4dd1c8366d628), [`2a60165`](https://github.com/LedgerHQ/ledger-live/commit/2a601656b7a23a424a29f006ec53090648fdae4f), [`ffa9e7e`](https://github.com/LedgerHQ/ledger-live/commit/ffa9e7e58dd60d0f568362a95e14ba5d130c2d07), [`34248c3`](https://github.com/LedgerHQ/ledger-live/commit/34248c306479dafe6335b2c176daf25064c85b3b), [`2d9f320`](https://github.com/LedgerHQ/ledger-live/commit/2d9f32087eea12ae9d5ea2347b277b8bf4e60f55), [`c56ab86`](https://github.com/LedgerHQ/ledger-live/commit/c56ab86ab65597caf87a09b7596faa54f3104bd4), [`fb3631e`](https://github.com/LedgerHQ/ledger-live/commit/fb3631ef74e9f10fea15fd7daf812306f6d2bc07)]:
20
+ - @ledgerhq/coin-framework@6.11.0-nightly.20251223024125
21
+ - @ledgerhq/types-live@6.91.0-nightly.20251223024125
22
+ - @ledgerhq/cryptoassets@13.35.0-nightly.20251223024125
23
+ - @ledgerhq/ledger-key-ring-protocol@0.9.0-nightly.20251223024125
24
+ - @ledgerhq/live-env@2.23.0-nightly.20251223024125
25
+ - @ledgerhq/types-cryptoassets@7.31.0-nightly.20251223024125
26
+ - @ledgerhq/live-network@2.1.4-nightly.20251223024125
25
27
 
26
28
  ## 0.16.2
27
29
 
package/lib/store.d.ts CHANGED
@@ -131,6 +131,7 @@ export declare const walletSyncUpdate: (data: DistantState | null, version: numb
131
131
  recentAddresses?: Record<string, {
132
132
  index: number;
133
133
  address: string;
134
+ lastUsed?: number | undefined;
134
135
  }[]> | undefined;
135
136
  } | null;
136
137
  version: number;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recentAddresses.d.ts","sourceRoot":"","sources":["../../../../src/walletsync/__mocks__/modules/recentAddresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,2BAA2B,EAG5B,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,UAAU,IAAK,CAAC;AAE7B,eAAO,MAAM,QAAQ,UAAW,MAAM,yBAWrC,CAAC;AAEF,eAAO,MAAM,0BAA0B,eAAgB,oBAAoB,gCAC/C,CAAC;AAE7B,eAAO,MAAM,0BAA0B,iBAAkB,2BAA2B,yBAC7D,CAAC;AAExB,eAAO,MAAM,iBAAiB,UACrB,oBAAoB,cACf,oBAAoB,YAcjC,CAAC"}
1
+ {"version":3,"file":"recentAddresses.d.ts","sourceRoot":"","sources":["../../../../src/walletsync/__mocks__/modules/recentAddresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,2BAA2B,EAG5B,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,UAAU,IAAK,CAAC;AAE7B,eAAO,MAAM,QAAQ,UAAW,MAAM,yBAcrC,CAAC;AAEF,eAAO,MAAM,0BAA0B,eAAgB,oBAAoB,gCAC/C,CAAC;AAE7B,eAAO,MAAM,0BAA0B,iBAAkB,2BAA2B,yBAC7D,CAAC;AAExB,eAAO,MAAM,iBAAiB,UACrB,oBAAoB,cACf,oBAAoB,YAgBjC,CAAC"}
@@ -8,7 +8,10 @@ const genState = (index) => {
8
8
  for (let i = 0; i < index + 1; i++) {
9
9
  recentAddressesState["currency-" + i.toString()] = [];
10
10
  for (let j = 0; j < 12; j++) {
11
- recentAddressesState["currency-" + i.toString()].push(`some random address at index ${j}`);
11
+ recentAddressesState["currency-" + i.toString()].push({
12
+ address: `some random address at index ${j}`,
13
+ lastUsed: Date.now(),
14
+ });
12
15
  }
13
16
  }
14
17
  return recentAddressesState;
@@ -25,7 +28,7 @@ const similarLocalState = (state, otherState) => {
25
28
  otherStateKeys.every(key => {
26
29
  return (state[key] &&
27
30
  state[key].length === otherState[key].length &&
28
- otherState[key].every(address => state[key].includes(address)));
31
+ otherState[key].every(otherAddr => state[key].some(stateAddr => stateAddr.address === otherAddr.address)));
29
32
  }));
30
33
  };
31
34
  exports.similarLocalState = similarLocalState;
@@ -1 +1 @@
1
- {"version":3,"file":"recentAddresses.js","sourceRoot":"","sources":["../../../../src/walletsync/__mocks__/modules/recentAddresses.ts"],"names":[],"mappings":";;;AACA,mEAIuC;AAE1B,QAAA,UAAU,GAAG,EAAE,CAAC;AAEtB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,MAAM,oBAAoB,GAAyB,EAAE,CAAC;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAXW,QAAA,QAAQ,YAWnB;AAEK,MAAM,0BAA0B,GAAG,CAAC,UAAgC,EAAE,EAAE,CAC7E,IAAA,gCAAc,EAAC,UAAU,CAAC,CAAC;AADhB,QAAA,0BAA0B,8BACV;AAEtB,MAAM,0BAA0B,GAAG,CAAC,YAAyC,EAAE,EAAE,CACtF,IAAA,yBAAO,EAAC,YAAY,CAAC,CAAC;AADX,QAAA,0BAA0B,8BACf;AAEjB,MAAM,iBAAiB,GAAG,CAC/B,KAA2B,EAC3B,UAAgC,EAChC,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,CACL,SAAS,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAC1C,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,CACL,KAAK,CAAC,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM;gBAC5C,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAC/D,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,iBAAiB,qBAgB5B"}
1
+ {"version":3,"file":"recentAddresses.js","sourceRoot":"","sources":["../../../../src/walletsync/__mocks__/modules/recentAddresses.ts"],"names":[],"mappings":";;;AACA,mEAIuC;AAE1B,QAAA,UAAU,GAAG,EAAE,CAAC;AAEtB,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,MAAM,oBAAoB,GAAyB,EAAE,CAAC;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC;gBACpD,OAAO,EAAE,gCAAgC,CAAC,EAAE;gBAC5C,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAdW,QAAA,QAAQ,YAcnB;AAEK,MAAM,0BAA0B,GAAG,CAAC,UAAgC,EAAE,EAAE,CAC7E,IAAA,gCAAc,EAAC,UAAU,CAAC,CAAC;AADhB,QAAA,0BAA0B,8BACV;AAEtB,MAAM,0BAA0B,GAAG,CAAC,YAAyC,EAAE,EAAE,CACtF,IAAA,yBAAO,EAAC,YAAY,CAAC,CAAC;AADX,QAAA,0BAA0B,8BACf;AAEjB,MAAM,iBAAiB,GAAG,CAC/B,KAA2B,EAC3B,UAAgC,EAChC,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,CACL,SAAS,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAC1C,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,CACL,KAAK,CAAC,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM;gBAC5C,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAChC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC,CACtE,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,iBAAiB,qBAkB5B"}
@@ -29,18 +29,22 @@ import { RecentAddressesState } from "@ledgerhq/types-live";
29
29
  export type DistantRecentAddressesState = Record<string, {
30
30
  address: string;
31
31
  index: number;
32
+ lastUsed?: number;
32
33
  }[]>;
33
34
  export declare function toDistantState(addressesByCurrency: RecentAddressesState): DistantRecentAddressesState;
34
35
  export declare function toState(addressesByCurrency: DistantRecentAddressesState): RecentAddressesState;
35
36
  declare const schema: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
36
37
  address: z.ZodString;
37
38
  index: z.ZodNumber;
39
+ lastUsed: z.ZodOptional<z.ZodNumber>;
38
40
  }, "strip", z.ZodTypeAny, {
39
41
  index: number;
40
42
  address: string;
43
+ lastUsed?: number | undefined;
41
44
  }, {
42
45
  index: number;
43
46
  address: string;
47
+ lastUsed?: number | undefined;
44
48
  }>, "many">>;
45
49
  declare const manager: WalletSyncDataManager<RecentAddressesState, RecentAddressesState, typeof schema>;
46
50
  export default manager;
@@ -1 +1 @@
1
- {"version":3,"file":"recentAddresses.d.ts","sourceRoot":"","sources":["../../../src/walletsync/modules/recentAddresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,EAAE,CACJ,CAAC;AAEF,wBAAgB,cAAc,CAC5B,mBAAmB,EAAE,oBAAoB,GACxC,2BAA2B,CAO7B;AAED,wBAAgB,OAAO,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,oBAAoB,CAS9F;AA8BD,QAAA,MAAM,MAAM;;;;;;;;;YAAuD,CAAC;AAEpE,QAAA,MAAM,OAAO,EAAE,qBAAqB,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,OAAO,MAAM,CAgC7F,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"recentAddresses.d.ts","sourceRoot":"","sources":["../../../src/walletsync/modules/recentAddresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EAAE,CACJ,CAAC;AAEF,wBAAgB,cAAc,CAC5B,mBAAmB,EAAE,oBAAoB,GACxC,2BAA2B,CAW7B;AAED,wBAAgB,OAAO,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,oBAAoB,CAY9F;AA6BD,QAAA,MAAM,MAAM;;;;;;;;;;;;YAAuD,CAAC;AAEpE,QAAA,MAAM,OAAO,EAAE,qBAAqB,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,OAAO,MAAM,CAgC7F,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -26,7 +26,11 @@ const zod_1 = require("zod");
26
26
  function toDistantState(addressesByCurrency) {
27
27
  const state = {};
28
28
  Object.keys(addressesByCurrency).forEach(key => {
29
- state[key] = addressesByCurrency[key].map((address, index) => ({ address, index }));
29
+ state[key] = addressesByCurrency[key].map((entry, index) => ({
30
+ address: entry.address,
31
+ index,
32
+ lastUsed: entry.lastUsed,
33
+ }));
30
34
  });
31
35
  return state;
32
36
  }
@@ -36,7 +40,10 @@ function toState(addressesByCurrency) {
36
40
  Object.keys(addressesByCurrency).forEach(key => {
37
41
  state[key] = addressesByCurrency[key]
38
42
  .sort((current, other) => current.index - other.index)
39
- .map(data => data.address);
43
+ .map(data => ({
44
+ address: data.address,
45
+ lastUsed: data.lastUsed ?? Date.now(),
46
+ }));
40
47
  });
41
48
  return state;
42
49
  }
@@ -48,14 +55,17 @@ function sameDistantState(localData, distantState) {
48
55
  distantStateKeys.every(key => {
49
56
  return (localData[key] &&
50
57
  localData[key].length === distantState[key].length &&
51
- !distantState[key].some(data => data.index < 0 ||
52
- data.index >= localData[key].length ||
53
- localData[key][data.index] !== data.address));
58
+ !distantState[key].some(data => {
59
+ if (data.index < 0 || data.index >= localData[key].length)
60
+ return true;
61
+ return localData[key][data.index].address !== data.address;
62
+ }));
54
63
  }));
55
64
  }
56
65
  const recentAddressesSchema = zod_1.z.object({
57
66
  address: zod_1.z.string(),
58
67
  index: zod_1.z.number(),
68
+ lastUsed: zod_1.z.number().optional(),
59
69
  });
60
70
  const schema = zod_1.z.record(zod_1.z.string(), zod_1.z.array(recentAddressesSchema));
61
71
  const manager = {
@@ -1 +1 @@
1
- {"version":3,"file":"recentAddresses.js","sourceRoot":"","sources":["../../../src/walletsync/modules/recentAddresses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recentAddresses.js","sourceRoot":"","sources":["../../../src/walletsync/modules/recentAddresses.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,6BAAwB;AAiBxB,SAAgB,cAAc,CAC5B,mBAAyC;IAEzC,MAAM,KAAK,GAAgC,EAAE,CAAC;IAC9C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3D,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAbD,wCAaC;AAED,SAAgB,OAAO,CAAC,mBAAgD;IACtE,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC;aAClC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;aACrD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE;SACtC,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,0BAYC;AAED,SAAS,gBAAgB,CACvB,SAA+B,EAC/B,YAAyC;IAEzC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,CACL,aAAa,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM;QAChD,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC3B,OAAO,CACL,SAAS,CAAC,GAAG,CAAC;gBACd,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM;gBAClD,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC7B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM;wBAAE,OAAO,IAAI,CAAC;oBACvE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;gBAC7D,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAEpE,MAAM,OAAO,GAAqF;IAChG,MAAM;IACN,kBAAkB,CAAC,SAAS,EAAE,WAAW;QACvC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;YACpD,OAAO;gBACL,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC;aACrC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,WAAW,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,wBAAwB,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa;QACxE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,WAAW,KAAK,aAAa,IAAI,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;YAChF,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;QAED,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC;SAC/B,CAAC;IACJ,CAAC;IACD,WAAW,CAAC,UAAU,EAAE,MAAM;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC;AAEF,kBAAe,OAAO,CAAC"}
@@ -49,12 +49,15 @@ declare const root: import("./types").WalletSyncDataManager<{
49
49
  recentAddresses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
50
50
  address: z.ZodString;
51
51
  index: z.ZodNumber;
52
+ lastUsed: z.ZodOptional<z.ZodNumber>;
52
53
  }, "strip", z.ZodTypeAny, {
53
54
  index: number;
54
55
  address: string;
56
+ lastUsed?: number | undefined;
55
57
  }, {
56
58
  index: number;
57
59
  address: string;
60
+ lastUsed?: number | undefined;
58
61
  }>, "many">>>;
59
62
  }, "strip", z.ZodTypeAny, {
60
63
  accounts?: {
@@ -69,6 +72,7 @@ declare const root: import("./types").WalletSyncDataManager<{
69
72
  recentAddresses?: Record<string, {
70
73
  index: number;
71
74
  address: string;
75
+ lastUsed?: number | undefined;
72
76
  }[]> | undefined;
73
77
  }, {
74
78
  accounts?: {
@@ -83,6 +87,7 @@ declare const root: import("./types").WalletSyncDataManager<{
83
87
  recentAddresses?: Record<string, {
84
88
  index: number;
85
89
  address: string;
90
+ lastUsed?: number | undefined;
86
91
  }[]> | undefined;
87
92
  }>, {
88
93
  accounts?: {
@@ -97,6 +102,7 @@ declare const root: import("./types").WalletSyncDataManager<{
97
102
  recentAddresses?: Record<string, {
98
103
  index: number;
99
104
  address: string;
105
+ lastUsed?: number | undefined;
100
106
  }[]> | undefined;
101
107
  }>;
102
108
  type Root = typeof root;
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/walletsync/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAgB/E;;;;GAIG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA4B,CAAC;AAEvC,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AACxB,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACnD,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAE3C,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/walletsync/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAgB/E;;;;GAIG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA4B,CAAC;AAEvC,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AACxB,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACnD,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAE3C,eAAe,IAAI,CAAC"}
package/lib-es/store.d.ts CHANGED
@@ -131,6 +131,7 @@ export declare const walletSyncUpdate: (data: DistantState | null, version: numb
131
131
  recentAddresses?: Record<string, {
132
132
  index: number;
133
133
  address: string;
134
+ lastUsed?: number | undefined;
134
135
  }[]> | undefined;
135
136
  } | null;
136
137
  version: number;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recentAddresses.d.ts","sourceRoot":"","sources":["../../../../src/walletsync/__mocks__/modules/recentAddresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,2BAA2B,EAG5B,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,UAAU,IAAK,CAAC;AAE7B,eAAO,MAAM,QAAQ,UAAW,MAAM,yBAWrC,CAAC;AAEF,eAAO,MAAM,0BAA0B,eAAgB,oBAAoB,gCAC/C,CAAC;AAE7B,eAAO,MAAM,0BAA0B,iBAAkB,2BAA2B,yBAC7D,CAAC;AAExB,eAAO,MAAM,iBAAiB,UACrB,oBAAoB,cACf,oBAAoB,YAcjC,CAAC"}
1
+ {"version":3,"file":"recentAddresses.d.ts","sourceRoot":"","sources":["../../../../src/walletsync/__mocks__/modules/recentAddresses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,2BAA2B,EAG5B,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,UAAU,IAAK,CAAC;AAE7B,eAAO,MAAM,QAAQ,UAAW,MAAM,yBAcrC,CAAC;AAEF,eAAO,MAAM,0BAA0B,eAAgB,oBAAoB,gCAC/C,CAAC;AAE7B,eAAO,MAAM,0BAA0B,iBAAkB,2BAA2B,yBAC7D,CAAC;AAExB,eAAO,MAAM,iBAAiB,UACrB,oBAAoB,cACf,oBAAoB,YAgBjC,CAAC"}
@@ -5,7 +5,10 @@ export const genState = (index) => {
5
5
  for (let i = 0; i < index + 1; i++) {
6
6
  recentAddressesState["currency-" + i.toString()] = [];
7
7
  for (let j = 0; j < 12; j++) {
8
- recentAddressesState["currency-" + i.toString()].push(`some random address at index ${j}`);
8
+ recentAddressesState["currency-" + i.toString()].push({
9
+ address: `some random address at index ${j}`,
10
+ lastUsed: Date.now(),
11
+ });
9
12
  }
10
13
  }
11
14
  return recentAddressesState;
@@ -19,7 +22,7 @@ export const similarLocalState = (state, otherState) => {
19
22
  otherStateKeys.every(key => {
20
23
  return (state[key] &&
21
24
  state[key].length === otherState[key].length &&
22
- otherState[key].every(address => state[key].includes(address)));
25
+ otherState[key].every(otherAddr => state[key].some(stateAddr => stateAddr.address === otherAddr.address)));
23
26
  }));
24
27
  };
25
28
  //# sourceMappingURL=recentAddresses.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recentAddresses.js","sourceRoot":"","sources":["../../../../src/walletsync/__mocks__/modules/recentAddresses.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,cAAc,EACd,OAAO,GACR,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,MAAM,oBAAoB,GAAyB,EAAE,CAAC;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,UAAgC,EAAE,EAAE,CAC7E,cAAc,CAAC,UAAU,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,YAAyC,EAAE,EAAE,CACtF,OAAO,CAAC,YAAY,CAAC,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAA2B,EAC3B,UAAgC,EAChC,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,CACL,SAAS,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAC1C,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,CACL,KAAK,CAAC,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM;gBAC5C,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAC/D,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"recentAddresses.js","sourceRoot":"","sources":["../../../../src/walletsync/__mocks__/modules/recentAddresses.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,cAAc,EACd,OAAO,GACR,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE;IACxC,MAAM,oBAAoB,GAAyB,EAAE,CAAC;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,oBAAoB,CAAC,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC;gBACpD,OAAO,EAAE,gCAAgC,CAAC,EAAE;gBAC5C,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,UAAgC,EAAE,EAAE,CAC7E,cAAc,CAAC,UAAU,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,YAAyC,EAAE,EAAE,CACtF,OAAO,CAAC,YAAY,CAAC,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAA2B,EAC3B,UAAgC,EAChC,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,CACL,SAAS,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;QAC1C,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,CACL,KAAK,CAAC,GAAG,CAAC;gBACV,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM;gBAC5C,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAChC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC,CACtE,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -29,18 +29,22 @@ import { RecentAddressesState } from "@ledgerhq/types-live";
29
29
  export type DistantRecentAddressesState = Record<string, {
30
30
  address: string;
31
31
  index: number;
32
+ lastUsed?: number;
32
33
  }[]>;
33
34
  export declare function toDistantState(addressesByCurrency: RecentAddressesState): DistantRecentAddressesState;
34
35
  export declare function toState(addressesByCurrency: DistantRecentAddressesState): RecentAddressesState;
35
36
  declare const schema: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
36
37
  address: z.ZodString;
37
38
  index: z.ZodNumber;
39
+ lastUsed: z.ZodOptional<z.ZodNumber>;
38
40
  }, "strip", z.ZodTypeAny, {
39
41
  index: number;
40
42
  address: string;
43
+ lastUsed?: number | undefined;
41
44
  }, {
42
45
  index: number;
43
46
  address: string;
47
+ lastUsed?: number | undefined;
44
48
  }>, "many">>;
45
49
  declare const manager: WalletSyncDataManager<RecentAddressesState, RecentAddressesState, typeof schema>;
46
50
  export default manager;
@@ -1 +1 @@
1
- {"version":3,"file":"recentAddresses.d.ts","sourceRoot":"","sources":["../../../src/walletsync/modules/recentAddresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,EAAE,CACJ,CAAC;AAEF,wBAAgB,cAAc,CAC5B,mBAAmB,EAAE,oBAAoB,GACxC,2BAA2B,CAO7B;AAED,wBAAgB,OAAO,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,oBAAoB,CAS9F;AA8BD,QAAA,MAAM,MAAM;;;;;;;;;YAAuD,CAAC;AAEpE,QAAA,MAAM,OAAO,EAAE,qBAAqB,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,OAAO,MAAM,CAgC7F,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"recentAddresses.d.ts","sourceRoot":"","sources":["../../../src/walletsync/modules/recentAddresses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EAAE,CACJ,CAAC;AAEF,wBAAgB,cAAc,CAC5B,mBAAmB,EAAE,oBAAoB,GACxC,2BAA2B,CAW7B;AAED,wBAAgB,OAAO,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,oBAAoB,CAY9F;AA6BD,QAAA,MAAM,MAAM;;;;;;;;;;;;YAAuD,CAAC;AAEpE,QAAA,MAAM,OAAO,EAAE,qBAAqB,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,OAAO,MAAM,CAgC7F,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -23,7 +23,11 @@ import { z } from "zod";
23
23
  export function toDistantState(addressesByCurrency) {
24
24
  const state = {};
25
25
  Object.keys(addressesByCurrency).forEach(key => {
26
- state[key] = addressesByCurrency[key].map((address, index) => ({ address, index }));
26
+ state[key] = addressesByCurrency[key].map((entry, index) => ({
27
+ address: entry.address,
28
+ index,
29
+ lastUsed: entry.lastUsed,
30
+ }));
27
31
  });
28
32
  return state;
29
33
  }
@@ -32,7 +36,10 @@ export function toState(addressesByCurrency) {
32
36
  Object.keys(addressesByCurrency).forEach(key => {
33
37
  state[key] = addressesByCurrency[key]
34
38
  .sort((current, other) => current.index - other.index)
35
- .map(data => data.address);
39
+ .map(data => ({
40
+ address: data.address,
41
+ lastUsed: data.lastUsed ?? Date.now(),
42
+ }));
36
43
  });
37
44
  return state;
38
45
  }
@@ -43,14 +50,17 @@ function sameDistantState(localData, distantState) {
43
50
  distantStateKeys.every(key => {
44
51
  return (localData[key] &&
45
52
  localData[key].length === distantState[key].length &&
46
- !distantState[key].some(data => data.index < 0 ||
47
- data.index >= localData[key].length ||
48
- localData[key][data.index] !== data.address));
53
+ !distantState[key].some(data => {
54
+ if (data.index < 0 || data.index >= localData[key].length)
55
+ return true;
56
+ return localData[key][data.index].address !== data.address;
57
+ }));
49
58
  }));
50
59
  }
51
60
  const recentAddressesSchema = z.object({
52
61
  address: z.string(),
53
62
  index: z.number(),
63
+ lastUsed: z.number().optional(),
54
64
  });
55
65
  const schema = z.record(z.string(), z.array(recentAddressesSchema));
56
66
  const manager = {
@@ -1 +1 @@
1
- {"version":3,"file":"recentAddresses.js","sourceRoot":"","sources":["../../../src/walletsync/modules/recentAddresses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recentAddresses.js","sourceRoot":"","sources":["../../../src/walletsync/modules/recentAddresses.ts"],"names":[],"mappings":"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"}
@@ -49,12 +49,15 @@ declare const root: import("./types").WalletSyncDataManager<{
49
49
  recentAddresses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
50
50
  address: z.ZodString;
51
51
  index: z.ZodNumber;
52
+ lastUsed: z.ZodOptional<z.ZodNumber>;
52
53
  }, "strip", z.ZodTypeAny, {
53
54
  index: number;
54
55
  address: string;
56
+ lastUsed?: number | undefined;
55
57
  }, {
56
58
  index: number;
57
59
  address: string;
60
+ lastUsed?: number | undefined;
58
61
  }>, "many">>>;
59
62
  }, "strip", z.ZodTypeAny, {
60
63
  accounts?: {
@@ -69,6 +72,7 @@ declare const root: import("./types").WalletSyncDataManager<{
69
72
  recentAddresses?: Record<string, {
70
73
  index: number;
71
74
  address: string;
75
+ lastUsed?: number | undefined;
72
76
  }[]> | undefined;
73
77
  }, {
74
78
  accounts?: {
@@ -83,6 +87,7 @@ declare const root: import("./types").WalletSyncDataManager<{
83
87
  recentAddresses?: Record<string, {
84
88
  index: number;
85
89
  address: string;
90
+ lastUsed?: number | undefined;
86
91
  }[]> | undefined;
87
92
  }>, {
88
93
  accounts?: {
@@ -97,6 +102,7 @@ declare const root: import("./types").WalletSyncDataManager<{
97
102
  recentAddresses?: Record<string, {
98
103
  index: number;
99
104
  address: string;
105
+ lastUsed?: number | undefined;
100
106
  }[]> | undefined;
101
107
  }>;
102
108
  type Root = typeof root;
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/walletsync/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAgB/E;;;;GAIG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA4B,CAAC;AAEvC,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AACxB,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACnD,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAE3C,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/walletsync/root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAgB/E;;;;GAIG;AACH,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA4B,CAAC;AAEvC,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;AACxB,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjD,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACnD,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AACzC,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAE3C,eAAe,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/live-wallet",
3
- "version": "0.17.0-nightly.20251219024040",
3
+ "version": "0.17.0-nightly.20251223024125",
4
4
  "description": "Ledger Live wallet",
5
5
  "keywords": [
6
6
  "Ledger"
@@ -28,15 +28,15 @@
28
28
  "pako": "^2.0.4",
29
29
  "rxjs": "7.8.2",
30
30
  "zod": "^3.22.4",
31
- "@ledgerhq/cryptoassets": "13.35.0-nightly.20251219024040",
32
- "@ledgerhq/live-env": "2.23.0-nightly.20251219024040",
33
- "@ledgerhq/live-network": "2.1.4-nightly.20251219024040",
31
+ "@ledgerhq/coin-framework": "6.11.0-nightly.20251223024125",
32
+ "@ledgerhq/cryptoassets": "13.35.0-nightly.20251223024125",
33
+ "@ledgerhq/live-env": "2.23.0-nightly.20251223024125",
34
+ "@ledgerhq/live-network": "2.1.4-nightly.20251223024125",
34
35
  "@ledgerhq/live-promise": "0.1.1",
35
36
  "@ledgerhq/logs": "6.13.0",
36
- "@ledgerhq/ledger-key-ring-protocol": "0.9.0-nightly.20251219024040",
37
- "@ledgerhq/types-cryptoassets": "7.31.0-nightly.20251219024040",
38
- "@ledgerhq/types-live": "6.91.0-nightly.20251219024040",
39
- "@ledgerhq/coin-framework": "6.11.0-nightly.20251219024040"
37
+ "@ledgerhq/ledger-key-ring-protocol": "0.9.0-nightly.20251223024125",
38
+ "@ledgerhq/types-cryptoassets": "7.31.0-nightly.20251223024125",
39
+ "@ledgerhq/types-live": "6.91.0-nightly.20251223024125"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/jest": "^29.5.10",
@@ -48,7 +48,7 @@
48
48
  "timemachine": "^0.3.2",
49
49
  "ts-jest": "^29.1.1",
50
50
  "ws": "^8.16.0",
51
- "@ledgerhq/hw-transport-mocker": "^6.30.0-nightly.20251219024040"
51
+ "@ledgerhq/hw-transport-mocker": "^6.30.0-nightly.20251223024125"
52
52
  },
53
53
  "typesVersions": {
54
54
  "*": {
@@ -13,7 +13,10 @@ export const genState = (index: number) => {
13
13
  for (let i = 0; i < index + 1; i++) {
14
14
  recentAddressesState["currency-" + i.toString()] = [];
15
15
  for (let j = 0; j < 12; j++) {
16
- recentAddressesState["currency-" + i.toString()].push(`some random address at index ${j}`);
16
+ recentAddressesState["currency-" + i.toString()].push({
17
+ address: `some random address at index ${j}`,
18
+ lastUsed: Date.now(),
19
+ });
17
20
  }
18
21
  }
19
22
 
@@ -38,7 +41,9 @@ export const similarLocalState = (
38
41
  return (
39
42
  state[key] &&
40
43
  state[key].length === otherState[key].length &&
41
- otherState[key].every(address => state[key].includes(address))
44
+ otherState[key].every(otherAddr =>
45
+ state[key].some(stateAddr => stateAddr.address === otherAddr.address),
46
+ )
42
47
  );
43
48
  })
44
49
  );
@@ -10,67 +10,76 @@ describe("recentAddress", () => {
10
10
  {
11
11
  localData: {} as RecentAddressesState,
12
12
  latestState: {
13
- ethereum: [{ address: "some random address", index: 0 }],
13
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
14
14
  } as DistantRecentAddressesState,
15
15
  },
16
16
  {
17
17
  localData: {} as RecentAddressesState,
18
18
  latestState: {
19
- ethereum: [{ address: "some random address", index: 0 }],
20
- solana: [{ address: "some random address on Solana", index: 0 }],
19
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
20
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
21
21
  } as DistantRecentAddressesState,
22
22
  },
23
23
  {
24
24
  localData: {
25
- ethereum: ["some random address"],
26
- },
25
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
26
+ } as RecentAddressesState,
27
27
  latestState: {} as DistantRecentAddressesState,
28
28
  },
29
29
  {
30
30
  localData: {
31
- ethereum: ["some random address", "some random address 2"],
32
- },
31
+ ethereum: [
32
+ { address: "some random address", lastUsed: 1 },
33
+ { address: "some random address 2", lastUsed: 2 },
34
+ ],
35
+ } as RecentAddressesState,
33
36
  latestState: {
34
- ethereum: [{ address: "some random address", index: 0 }],
37
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
35
38
  } as DistantRecentAddressesState,
36
39
  },
37
40
  {
38
41
  localData: {
39
- solana: ["some random address"],
40
- },
42
+ solana: [{ address: "some random address", lastUsed: 1 }],
43
+ } as RecentAddressesState,
41
44
  latestState: {
42
- ethereum: [{ address: "some random address", index: 0 }],
45
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
43
46
  } as DistantRecentAddressesState,
44
47
  },
45
48
  {
46
49
  localData: {
47
- ethereum: ["some random address"],
48
- solana: ["some random address on Solana"],
49
- },
50
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
51
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
52
+ } as RecentAddressesState,
50
53
  latestState: {
51
- ethereum: [{ address: "some random address", index: 0 }],
54
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
52
55
  } as DistantRecentAddressesState,
53
56
  },
54
57
  {
55
58
  localData: {
56
- ethereum: ["some random address"],
57
- solana: ["some random address on Solana", "some random address on Solana 2"],
58
- },
59
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
60
+ solana: [
61
+ { address: "some random address on Solana", lastUsed: 1 },
62
+ { address: "some random address on Solana 2", lastUsed: 2 },
63
+ ],
64
+ } as RecentAddressesState,
59
65
  latestState: {
60
- ethereum: [{ address: "some random address", index: 0 }],
61
- solana: [{ address: "some random address on Solana", index: 0 }],
66
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
67
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
62
68
  } as DistantRecentAddressesState,
63
69
  },
64
70
  {
65
71
  localData: {
66
- ethereum: ["some random address"],
67
- solana: ["some random address on Solana 2", "some random address on Solana 3"],
68
- },
72
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
73
+ solana: [
74
+ { address: "some random address on Solana 2", lastUsed: 2 },
75
+ { address: "some random address on Solana 3", lastUsed: 3 },
76
+ ],
77
+ } as RecentAddressesState,
69
78
  latestState: {
70
- ethereum: [{ address: "some random address", index: 0 }],
79
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
71
80
  solana: [
72
- { address: "some random address on Solana", index: 0 },
73
- { address: "some random address on Solana 2", index: 1 },
81
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
82
+ { address: "some random address on Solana 2", index: 1, lastUsed: 2 },
74
83
  ],
75
84
  } as DistantRecentAddressesState,
76
85
  },
@@ -87,7 +96,13 @@ describe("recentAddress", () => {
87
96
  Object.entries(localData).forEach(([key, value]) => {
88
97
  const nextState = result.nextState;
89
98
  expect(nextState[key]).toEqual(
90
- expect.arrayContaining(value.map((address, index) => ({ address, index }))),
99
+ expect.arrayContaining(
100
+ value.map((entry, index) => ({
101
+ address: entry.address,
102
+ index,
103
+ lastUsed: entry.lastUsed,
104
+ })),
105
+ ),
91
106
  );
92
107
  });
93
108
  },
@@ -99,114 +114,146 @@ describe("recentAddress", () => {
99
114
  latestState: {} as DistantRecentAddressesState,
100
115
  },
101
116
  {
102
- localData: { ethereum: ["some random address"] } as RecentAddressesState,
117
+ localData: {
118
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
119
+ } as RecentAddressesState,
103
120
  latestState: {
104
- ethereum: [{ address: "some random address", index: 0 }],
121
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
105
122
  } as DistantRecentAddressesState,
106
123
  },
107
124
  {
108
125
  localData: {
109
- ethereum: ["some random address", "some random address 2"],
126
+ ethereum: [
127
+ { address: "some random address", lastUsed: 1 },
128
+ { address: "some random address 2", lastUsed: 2 },
129
+ ],
110
130
  } as RecentAddressesState,
111
131
  latestState: {
112
132
  ethereum: [
113
- { address: "some random address", index: 0 },
114
- { address: "some random address 2", index: 1 },
133
+ { address: "some random address", index: 0, lastUsed: 1 },
134
+ { address: "some random address 2", index: 1, lastUsed: 2 },
115
135
  ],
116
136
  } as DistantRecentAddressesState,
117
137
  },
118
138
  {
119
139
  localData: {
120
- ethereum: ["some random address", "some random address 2"],
140
+ ethereum: [
141
+ { address: "some random address", lastUsed: 1 },
142
+ { address: "some random address 2", lastUsed: 2 },
143
+ ],
121
144
  } as RecentAddressesState,
122
145
  latestState: {
123
146
  ethereum: [
124
- { address: "some random address 2", index: 1 },
125
- { address: "some random address", index: 0 },
147
+ { address: "some random address 2", index: 1, lastUsed: 2 },
148
+ { address: "some random address", index: 0, lastUsed: 1 },
126
149
  ],
127
150
  } as DistantRecentAddressesState,
128
151
  },
129
152
  {
130
153
  localData: {
131
- ethereum: ["some random address"],
132
- solana: ["some random address on Solana"],
154
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
155
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
133
156
  } as RecentAddressesState,
134
157
  latestState: {
135
- ethereum: [{ address: "some random address", index: 0 }],
136
- solana: [{ address: "some random address on Solana", index: 0 }],
158
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
159
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
137
160
  } as DistantRecentAddressesState,
138
161
  },
139
162
  {
140
163
  localData: {
141
- ethereum: ["some random address", "some random address 2"],
142
- solana: ["some random address on Solana"],
164
+ ethereum: [
165
+ { address: "some random address", lastUsed: 1 },
166
+ { address: "some random address 2", lastUsed: 2 },
167
+ ],
168
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
143
169
  } as RecentAddressesState,
144
170
  latestState: {
145
171
  ethereum: [
146
- { address: "some random address", index: 0 },
147
- { address: "some random address 2", index: 1 },
172
+ { address: "some random address", index: 0, lastUsed: 1 },
173
+ { address: "some random address 2", index: 1, lastUsed: 2 },
148
174
  ],
149
- solana: [{ address: "some random address on Solana", index: 0 }],
175
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
150
176
  } as DistantRecentAddressesState,
151
177
  },
152
178
  {
153
179
  localData: {
154
- ethereum: ["some random address", "some random address 2"],
155
- solana: ["some random address on Solana"],
180
+ ethereum: [
181
+ { address: "some random address", lastUsed: 1 },
182
+ { address: "some random address 2", lastUsed: 2 },
183
+ ],
184
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
156
185
  } as RecentAddressesState,
157
186
  latestState: {
158
187
  ethereum: [
159
- { address: "some random address 2", index: 1 },
160
- { address: "some random address", index: 0 },
188
+ { address: "some random address 2", index: 1, lastUsed: 2 },
189
+ { address: "some random address", index: 0, lastUsed: 1 },
161
190
  ],
162
- solana: [{ address: "some random address on Solana", index: 0 }],
191
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
163
192
  } as DistantRecentAddressesState,
164
193
  },
165
194
  {
166
195
  localData: {
167
- ethereum: ["some random address", "some random address 2"],
168
- solana: ["some random address on Solana", "some random address 2 on Solana"],
196
+ ethereum: [
197
+ { address: "some random address", lastUsed: 1 },
198
+ { address: "some random address 2", lastUsed: 2 },
199
+ ],
200
+ solana: [
201
+ { address: "some random address on Solana", lastUsed: 1 },
202
+ { address: "some random address 2 on Solana", lastUsed: 2 },
203
+ ],
169
204
  } as RecentAddressesState,
170
205
  latestState: {
171
206
  ethereum: [
172
- { address: "some random address", index: 0 },
173
- { address: "some random address 2", index: 1 },
207
+ { address: "some random address", index: 0, lastUsed: 1 },
208
+ { address: "some random address 2", index: 1, lastUsed: 2 },
174
209
  ],
175
210
  solana: [
176
- { address: "some random address on Solana", index: 0 },
177
- { address: "some random address 2 on Solana", index: 1 },
211
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
212
+ { address: "some random address 2 on Solana", index: 1, lastUsed: 2 },
178
213
  ],
179
214
  } as DistantRecentAddressesState,
180
215
  },
181
216
  {
182
217
  localData: {
183
- ethereum: ["some random address", "some random address 2"],
184
- solana: ["some random address on Solana", "some random address 2 on Solana"],
218
+ ethereum: [
219
+ { address: "some random address", lastUsed: 1 },
220
+ { address: "some random address 2", lastUsed: 2 },
221
+ ],
222
+ solana: [
223
+ { address: "some random address on Solana", lastUsed: 1 },
224
+ { address: "some random address 2 on Solana", lastUsed: 2 },
225
+ ],
185
226
  } as RecentAddressesState,
186
227
  latestState: {
187
228
  ethereum: [
188
- { address: "some random address", index: 0 },
189
- { address: "some random address 2", index: 1 },
229
+ { address: "some random address", index: 0, lastUsed: 1 },
230
+ { address: "some random address 2", index: 1, lastUsed: 2 },
190
231
  ],
191
232
  solana: [
192
- { address: "some random address 2 on Solana", index: 1 },
193
- { address: "some random address on Solana", index: 0 },
233
+ { address: "some random address 2 on Solana", index: 1, lastUsed: 2 },
234
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
194
235
  ],
195
236
  } as DistantRecentAddressesState,
196
237
  },
197
238
  {
198
239
  localData: {
199
- ethereum: ["some random address", "some random address 2"],
200
- solana: ["some random address on Solana", "some random address 2 on Solana"],
240
+ ethereum: [
241
+ { address: "some random address", lastUsed: 1 },
242
+ { address: "some random address 2", lastUsed: 2 },
243
+ ],
244
+ solana: [
245
+ { address: "some random address on Solana", lastUsed: 1 },
246
+ { address: "some random address 2 on Solana", lastUsed: 2 },
247
+ ],
201
248
  } as RecentAddressesState,
202
249
  latestState: {
203
250
  ethereum: [
204
- { address: "some random address 2", index: 1 },
205
- { address: "some random address", index: 0 },
251
+ { address: "some random address 2", index: 1, lastUsed: 2 },
252
+ { address: "some random address", index: 0, lastUsed: 1 },
206
253
  ],
207
254
  solana: [
208
- { address: "some random address 2 on Solana", index: 1 },
209
- { address: "some random address on Solana", index: 0 },
255
+ { address: "some random address 2 on Solana", index: 1, lastUsed: 2 },
256
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
210
257
  ],
211
258
  } as DistantRecentAddressesState,
212
259
  },
@@ -237,12 +284,16 @@ describe("recentAddress", () => {
237
284
 
238
285
  it.each([
239
286
  [{} as DistantRecentAddressesState],
240
- [{ ethereum: [{ address: "some random address", index: 0 }] } as DistantRecentAddressesState],
287
+ [
288
+ {
289
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
290
+ } as DistantRecentAddressesState,
291
+ ],
241
292
  [
242
293
  {
243
294
  ethereum: [
244
- { address: "some random address", index: 0 },
245
- { address: "some random address 2", index: 1 },
295
+ { address: "some random address", index: 0, lastUsed: 1 },
296
+ { address: "some random address 2", index: 1, lastUsed: 2 },
246
297
  ],
247
298
  } as DistantRecentAddressesState,
248
299
  ],
@@ -267,114 +318,146 @@ describe("recentAddress", () => {
267
318
  incomingState: {} as DistantRecentAddressesState,
268
319
  },
269
320
  {
270
- localData: { ethereum: ["some random address"] } as RecentAddressesState,
321
+ localData: {
322
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
323
+ } as RecentAddressesState,
271
324
  incomingState: {
272
- ethereum: [{ address: "some random address", index: 0 }],
325
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
273
326
  } as DistantRecentAddressesState,
274
327
  },
275
328
  {
276
329
  localData: {
277
- ethereum: ["some random address", "some random address 2"],
330
+ ethereum: [
331
+ { address: "some random address", lastUsed: 1 },
332
+ { address: "some random address 2", lastUsed: 2 },
333
+ ],
278
334
  } as RecentAddressesState,
279
335
  incomingState: {
280
336
  ethereum: [
281
- { address: "some random address", index: 0 },
282
- { address: "some random address 2", index: 1 },
337
+ { address: "some random address", index: 0, lastUsed: 1 },
338
+ { address: "some random address 2", index: 1, lastUsed: 2 },
283
339
  ],
284
340
  } as DistantRecentAddressesState,
285
341
  },
286
342
  {
287
343
  localData: {
288
- ethereum: ["some random address", "some random address 2"],
344
+ ethereum: [
345
+ { address: "some random address", lastUsed: 1 },
346
+ { address: "some random address 2", lastUsed: 2 },
347
+ ],
289
348
  } as RecentAddressesState,
290
349
  incomingState: {
291
350
  ethereum: [
292
- { address: "some random address 2", index: 1 },
293
- { address: "some random address", index: 0 },
351
+ { address: "some random address 2", index: 1, lastUsed: 2 },
352
+ { address: "some random address", index: 0, lastUsed: 1 },
294
353
  ],
295
354
  } as DistantRecentAddressesState,
296
355
  },
297
356
  {
298
357
  localData: {
299
- ethereum: ["some random address"],
300
- solana: ["some random address on Solana"],
358
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
359
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
301
360
  } as RecentAddressesState,
302
361
  incomingState: {
303
- ethereum: [{ address: "some random address", index: 0 }],
304
- solana: [{ address: "some random address on Solana", index: 0 }],
362
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
363
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
305
364
  } as DistantRecentAddressesState,
306
365
  },
307
366
  {
308
367
  localData: {
309
- ethereum: ["some random address", "some random address 2"],
310
- solana: ["some random address on Solana"],
368
+ ethereum: [
369
+ { address: "some random address", lastUsed: 1 },
370
+ { address: "some random address 2", lastUsed: 2 },
371
+ ],
372
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
311
373
  } as RecentAddressesState,
312
374
  incomingState: {
313
375
  ethereum: [
314
- { address: "some random address", index: 0 },
315
- { address: "some random address 2", index: 1 },
376
+ { address: "some random address", index: 0, lastUsed: 1 },
377
+ { address: "some random address 2", index: 1, lastUsed: 2 },
316
378
  ],
317
- solana: [{ address: "some random address on Solana", index: 0 }],
379
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
318
380
  } as DistantRecentAddressesState,
319
381
  },
320
382
  {
321
383
  localData: {
322
- ethereum: ["some random address", "some random address 2"],
323
- solana: ["some random address on Solana"],
384
+ ethereum: [
385
+ { address: "some random address", lastUsed: 1 },
386
+ { address: "some random address 2", lastUsed: 2 },
387
+ ],
388
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
324
389
  } as RecentAddressesState,
325
390
  incomingState: {
326
391
  ethereum: [
327
- { address: "some random address 2", index: 1 },
328
- { address: "some random address", index: 0 },
392
+ { address: "some random address 2", index: 1, lastUsed: 2 },
393
+ { address: "some random address", index: 0, lastUsed: 1 },
329
394
  ],
330
- solana: [{ address: "some random address on Solana", index: 0 }],
395
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
331
396
  } as DistantRecentAddressesState,
332
397
  },
333
398
  {
334
399
  localData: {
335
- ethereum: ["some random address", "some random address 2"],
336
- solana: ["some random address on Solana", "some random address 2 on Solana"],
400
+ ethereum: [
401
+ { address: "some random address", lastUsed: 1 },
402
+ { address: "some random address 2", lastUsed: 2 },
403
+ ],
404
+ solana: [
405
+ { address: "some random address on Solana", lastUsed: 1 },
406
+ { address: "some random address 2 on Solana", lastUsed: 2 },
407
+ ],
337
408
  } as RecentAddressesState,
338
409
  incomingState: {
339
410
  ethereum: [
340
- { address: "some random address", index: 0 },
341
- { address: "some random address 2", index: 1 },
411
+ { address: "some random address", index: 0, lastUsed: 1 },
412
+ { address: "some random address 2", index: 1, lastUsed: 2 },
342
413
  ],
343
414
  solana: [
344
- { address: "some random address on Solana", index: 0 },
345
- { address: "some random address 2 on Solana", index: 1 },
415
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
416
+ { address: "some random address 2 on Solana", index: 1, lastUsed: 2 },
346
417
  ],
347
418
  } as DistantRecentAddressesState,
348
419
  },
349
420
  {
350
421
  localData: {
351
- ethereum: ["some random address", "some random address 2"],
352
- solana: ["some random address on Solana", "some random address 2 on Solana"],
422
+ ethereum: [
423
+ { address: "some random address", lastUsed: 1 },
424
+ { address: "some random address 2", lastUsed: 2 },
425
+ ],
426
+ solana: [
427
+ { address: "some random address on Solana", lastUsed: 1 },
428
+ { address: "some random address 2 on Solana", lastUsed: 2 },
429
+ ],
353
430
  } as RecentAddressesState,
354
431
  incomingState: {
355
432
  ethereum: [
356
- { address: "some random address", index: 0 },
357
- { address: "some random address 2", index: 1 },
433
+ { address: "some random address", index: 0, lastUsed: 1 },
434
+ { address: "some random address 2", index: 1, lastUsed: 2 },
358
435
  ],
359
436
  solana: [
360
- { address: "some random address 2 on Solana", index: 1 },
361
- { address: "some random address on Solana", index: 0 },
437
+ { address: "some random address 2 on Solana", index: 1, lastUsed: 2 },
438
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
362
439
  ],
363
440
  } as DistantRecentAddressesState,
364
441
  },
365
442
  {
366
443
  localData: {
367
- ethereum: ["some random address", "some random address 2"],
368
- solana: ["some random address on Solana", "some random address 2 on Solana"],
444
+ ethereum: [
445
+ { address: "some random address", lastUsed: 1 },
446
+ { address: "some random address 2", lastUsed: 2 },
447
+ ],
448
+ solana: [
449
+ { address: "some random address on Solana", lastUsed: 1 },
450
+ { address: "some random address 2 on Solana", lastUsed: 2 },
451
+ ],
369
452
  } as RecentAddressesState,
370
453
  incomingState: {
371
454
  ethereum: [
372
- { address: "some random address 2", index: 1 },
373
- { address: "some random address", index: 0 },
455
+ { address: "some random address 2", index: 1, lastUsed: 2 },
456
+ { address: "some random address", index: 0, lastUsed: 1 },
374
457
  ],
375
458
  solana: [
376
- { address: "some random address 2 on Solana", index: 1 },
377
- { address: "some random address on Solana", index: 0 },
459
+ { address: "some random address 2 on Solana", index: 1, lastUsed: 2 },
460
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
378
461
  ],
379
462
  } as DistantRecentAddressesState,
380
463
  },
@@ -397,53 +480,55 @@ describe("recentAddress", () => {
397
480
  {
398
481
  localData: {} as RecentAddressesState,
399
482
  incomingState: {
400
- ethereum: [{ address: "some random address", index: 0 }],
483
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
401
484
  } as DistantRecentAddressesState,
402
485
  },
403
486
  {
404
- localData: { ethereum: ["some random address"] } as RecentAddressesState,
487
+ localData: {
488
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
489
+ } as RecentAddressesState,
405
490
  incomingState: {
406
491
  ethereum: [
407
- { address: "some random address", index: 0 },
408
- { address: "some random address 2", index: 1 },
492
+ { address: "some random address", index: 0, lastUsed: 1 },
493
+ { address: "some random address 2", index: 1, lastUsed: 2 },
409
494
  ],
410
495
  } as DistantRecentAddressesState,
411
496
  },
412
497
  {
413
498
  localData: {
414
- ethereum: ["some random address"],
415
- },
499
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
500
+ } as RecentAddressesState,
416
501
  incomingState: {
417
- ethereum: [{ address: "some random address", index: 0 }],
418
- solana: [{ address: "some random address on Solana", index: 0 }],
502
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
503
+ solana: [{ address: "some random address on Solana", index: 0, lastUsed: 1 }],
419
504
  } as DistantRecentAddressesState,
420
505
  },
421
506
  {
422
507
  localData: {
423
- ethereum: ["some random address"],
424
- solana: ["some random address on Solana"],
425
- },
508
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
509
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
510
+ } as RecentAddressesState,
426
511
  incomingState: {
427
- ethereum: [{ address: "some random address", index: 0 }],
512
+ ethereum: [{ address: "some random address", index: 0, lastUsed: 1 }],
428
513
  solana: [
429
- { address: "some random address on Solana", index: 0 },
430
- { address: "some random address on Solana 2", index: 1 },
514
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
515
+ { address: "some random address on Solana 2", index: 1, lastUsed: 2 },
431
516
  ],
432
517
  } as DistantRecentAddressesState,
433
518
  },
434
519
  {
435
520
  localData: {
436
- ethereum: ["some random address"],
437
- solana: ["some random address on Solana"],
438
- },
521
+ ethereum: [{ address: "some random address", lastUsed: 1 }],
522
+ solana: [{ address: "some random address on Solana", lastUsed: 1 }],
523
+ } as RecentAddressesState,
439
524
  incomingState: {
440
525
  ethereum: [
441
- { address: "some random address", index: 0 },
442
- { address: "some random address 2", index: 1 },
526
+ { address: "some random address", index: 0, lastUsed: 1 },
527
+ { address: "some random address 2", index: 1, lastUsed: 2 },
443
528
  ],
444
529
  solana: [
445
- { address: "some random address on Solana", index: 0 },
446
- { address: "some random address on Solana 2", index: 1 },
530
+ { address: "some random address on Solana", index: 0, lastUsed: 1 },
531
+ { address: "some random address on Solana 2", index: 1, lastUsed: 2 },
447
532
  ],
448
533
  } as DistantRecentAddressesState,
449
534
  },
@@ -461,7 +546,7 @@ describe("recentAddress", () => {
461
546
  Object.keys(incomingState).forEach(key => {
462
547
  update[key] = incomingState[key]
463
548
  .sort((current, other) => current.index - other.index)
464
- .map(data => data.address);
549
+ .map(data => ({ address: data.address, lastUsed: data.lastUsed ?? Date.now() }));
465
550
  });
466
551
 
467
552
  expect(result).toEqual({
@@ -475,8 +560,15 @@ describe("recentAddress", () => {
475
560
  describe("applyUpdate", () => {
476
561
  it.each([
477
562
  [{}],
478
- [{ ethereum: ["some random address"] }],
479
- [{ ethereum: ["some random address", "some random address 2"] }],
563
+ [{ ethereum: [{ address: "some random address", lastUsed: 1 }] }],
564
+ [
565
+ {
566
+ ethereum: [
567
+ { address: "some random address", lastUsed: 1 },
568
+ { address: "some random address 2", lastUsed: 2 },
569
+ ],
570
+ },
571
+ ],
480
572
  ])("should return updated data #%#", (update: RecentAddressesState) => {
481
573
  const result = manager.applyUpdate({}, update);
482
574
  expect(result).toEqual(update);
@@ -33,6 +33,7 @@ export type DistantRecentAddressesState = Record<
33
33
  {
34
34
  address: string;
35
35
  index: number;
36
+ lastUsed?: number;
36
37
  }[]
37
38
  >;
38
39
 
@@ -41,7 +42,11 @@ export function toDistantState(
41
42
  ): DistantRecentAddressesState {
42
43
  const state: DistantRecentAddressesState = {};
43
44
  Object.keys(addressesByCurrency).forEach(key => {
44
- state[key] = addressesByCurrency[key].map((address, index) => ({ address, index }));
45
+ state[key] = addressesByCurrency[key].map((entry, index) => ({
46
+ address: entry.address,
47
+ index,
48
+ lastUsed: entry.lastUsed,
49
+ }));
45
50
  });
46
51
 
47
52
  return state;
@@ -52,7 +57,10 @@ export function toState(addressesByCurrency: DistantRecentAddressesState): Recen
52
57
  Object.keys(addressesByCurrency).forEach(key => {
53
58
  state[key] = addressesByCurrency[key]
54
59
  .sort((current, other) => current.index - other.index)
55
- .map(data => data.address);
60
+ .map(data => ({
61
+ address: data.address,
62
+ lastUsed: data.lastUsed ?? Date.now(),
63
+ }));
56
64
  });
57
65
 
58
66
  return state;
@@ -70,12 +78,10 @@ function sameDistantState(
70
78
  return (
71
79
  localData[key] &&
72
80
  localData[key].length === distantState[key].length &&
73
- !distantState[key].some(
74
- data =>
75
- data.index < 0 ||
76
- data.index >= localData[key].length ||
77
- localData[key][data.index] !== data.address,
78
- )
81
+ !distantState[key].some(data => {
82
+ if (data.index < 0 || data.index >= localData[key].length) return true;
83
+ return localData[key][data.index].address !== data.address;
84
+ })
79
85
  );
80
86
  })
81
87
  );
@@ -84,6 +90,7 @@ function sameDistantState(
84
90
  const recentAddressesSchema = z.object({
85
91
  address: z.string(),
86
92
  index: z.number(),
93
+ lastUsed: z.number().optional(),
87
94
  });
88
95
 
89
96
  const schema = z.record(z.string(), z.array(recentAddressesSchema));