@metamask/assets-controllers 94.0.0 → 95.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/CHANGELOG.md +71 -1
  2. package/dist/AccountTrackerController.cjs +85 -56
  3. package/dist/AccountTrackerController.cjs.map +1 -1
  4. package/dist/AccountTrackerController.d.cts +15 -7
  5. package/dist/AccountTrackerController.d.cts.map +1 -1
  6. package/dist/AccountTrackerController.d.mts +15 -7
  7. package/dist/AccountTrackerController.d.mts.map +1 -1
  8. package/dist/AccountTrackerController.mjs +85 -56
  9. package/dist/AccountTrackerController.mjs.map +1 -1
  10. package/dist/CurrencyRateController.d.cts +2 -2
  11. package/dist/CurrencyRateController.d.mts +2 -2
  12. package/dist/DeFiPositionsController/DeFiPositionsController.d.cts +2 -2
  13. package/dist/DeFiPositionsController/DeFiPositionsController.d.mts +2 -2
  14. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs +8 -2
  15. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs.map +1 -1
  16. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts +2 -2
  17. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts.map +1 -1
  18. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts +2 -2
  19. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts.map +1 -1
  20. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs +8 -2
  21. package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs.map +1 -1
  22. package/dist/TokenBalancesController.cjs +351 -382
  23. package/dist/TokenBalancesController.cjs.map +1 -1
  24. package/dist/TokenBalancesController.d.cts +22 -41
  25. package/dist/TokenBalancesController.d.cts.map +1 -1
  26. package/dist/TokenBalancesController.d.mts +22 -41
  27. package/dist/TokenBalancesController.d.mts.map +1 -1
  28. package/dist/TokenBalancesController.mjs +351 -382
  29. package/dist/TokenBalancesController.mjs.map +1 -1
  30. package/dist/TokenDetectionController.cjs +139 -207
  31. package/dist/TokenDetectionController.cjs.map +1 -1
  32. package/dist/TokenDetectionController.d.cts +40 -14
  33. package/dist/TokenDetectionController.d.cts.map +1 -1
  34. package/dist/TokenDetectionController.d.mts +40 -14
  35. package/dist/TokenDetectionController.d.mts.map +1 -1
  36. package/dist/TokenDetectionController.mjs +140 -208
  37. package/dist/TokenDetectionController.mjs.map +1 -1
  38. package/dist/TokenListController.d.cts +2 -2
  39. package/dist/TokenListController.d.mts +2 -2
  40. package/dist/TokenRatesController.d.cts +2 -2
  41. package/dist/TokenRatesController.d.mts +2 -2
  42. package/dist/index.cjs +2 -1
  43. package/dist/index.cjs.map +1 -1
  44. package/dist/index.d.cts +3 -3
  45. package/dist/index.d.cts.map +1 -1
  46. package/dist/index.d.mts +3 -3
  47. package/dist/index.d.mts.map +1 -1
  48. package/dist/index.mjs +1 -1
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs +13 -2
  51. package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs.map +1 -1
  52. package/dist/multi-chain-accounts-service/api-balance-fetcher.d.cts.map +1 -1
  53. package/dist/multi-chain-accounts-service/api-balance-fetcher.d.mts.map +1 -1
  54. package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs +13 -2
  55. package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs.map +1 -1
  56. package/dist/multi-chain-accounts-service/types.cjs.map +1 -1
  57. package/dist/multi-chain-accounts-service/types.d.cts +2 -1
  58. package/dist/multi-chain-accounts-service/types.d.cts.map +1 -1
  59. package/dist/multi-chain-accounts-service/types.d.mts +2 -1
  60. package/dist/multi-chain-accounts-service/types.d.mts.map +1 -1
  61. package/dist/multi-chain-accounts-service/types.mjs.map +1 -1
  62. package/dist/multicall.cjs +5 -0
  63. package/dist/multicall.cjs.map +1 -1
  64. package/dist/multicall.d.cts.map +1 -1
  65. package/dist/multicall.d.mts.map +1 -1
  66. package/dist/multicall.mjs +5 -0
  67. package/dist/multicall.mjs.map +1 -1
  68. package/dist/selectors/token-selectors.cjs +3 -3
  69. package/dist/selectors/token-selectors.cjs.map +1 -1
  70. package/dist/selectors/token-selectors.d.cts +711 -0
  71. package/dist/selectors/token-selectors.d.cts.map +1 -1
  72. package/dist/selectors/token-selectors.d.mts +711 -0
  73. package/dist/selectors/token-selectors.d.mts.map +1 -1
  74. package/dist/selectors/token-selectors.mjs +1 -1
  75. package/dist/selectors/token-selectors.mjs.map +1 -1
  76. package/dist/token-prices-service/codefi-v2.cjs +79 -91
  77. package/dist/token-prices-service/codefi-v2.cjs.map +1 -1
  78. package/dist/token-prices-service/codefi-v2.d.cts +40 -17
  79. package/dist/token-prices-service/codefi-v2.d.cts.map +1 -1
  80. package/dist/token-prices-service/codefi-v2.d.mts +40 -17
  81. package/dist/token-prices-service/codefi-v2.d.mts.map +1 -1
  82. package/dist/token-prices-service/codefi-v2.mjs +79 -91
  83. package/dist/token-prices-service/codefi-v2.mjs.map +1 -1
  84. package/dist/token-service.cjs +43 -14
  85. package/dist/token-service.cjs.map +1 -1
  86. package/dist/token-service.d.cts +39 -9
  87. package/dist/token-service.d.cts.map +1 -1
  88. package/dist/token-service.d.mts +39 -9
  89. package/dist/token-service.d.mts.map +1 -1
  90. package/dist/token-service.mjs +43 -14
  91. package/dist/token-service.mjs.map +1 -1
  92. package/package.json +10 -10
@@ -1,6 +1,6 @@
1
1
  import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction } from "@metamask/accounts-controller";
2
2
  import type { ControllerStateChangeEvent, ControllerGetStateAction } from "@metamask/base-controller";
3
- import type { KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
3
+ import type { KeyringControllerGetStateAction, KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
4
4
  import type { Messenger } from "@metamask/messenger";
5
5
  import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, NetworkControllerNetworkAddedEvent } from "@metamask/network-controller";
6
6
  import type { TransactionControllerTransactionConfirmedEvent, TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller";
@@ -67,7 +67,7 @@ export type AllowedActions = AccountsControllerListAccountsAction | {
67
67
  handler: () => {
68
68
  isMultiAccountBalancesEnabled: boolean;
69
69
  };
70
- } | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction;
70
+ } | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | KeyringControllerGetStateAction;
71
71
  /**
72
72
  * The event that {@link AccountTrackerController} can emit.
73
73
  */
@@ -79,7 +79,7 @@ export type AccountTrackerControllerEvents = AccountTrackerControllerStateChange
79
79
  /**
80
80
  * The external events available to the {@link AccountTrackerController}.
81
81
  */
82
- export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkAddedEvent | KeyringControllerUnlockEvent;
82
+ export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkAddedEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent;
83
83
  /**
84
84
  * The messenger of the {@link AccountTrackerController}.
85
85
  */
@@ -90,8 +90,8 @@ type AccountTrackerPollingInput = {
90
90
  queryAllAccounts?: boolean;
91
91
  };
92
92
  declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
93
- readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
94
- "__#15@#intervalLength": number | undefined;
93
+ readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
94
+ "__#14@#intervalLength": number | undefined;
95
95
  setIntervalLength(intervalLength: number): void;
96
96
  getIntervalLength(): number | undefined;
97
97
  _startPolling(input: AccountTrackerPollingInput): void;
@@ -121,8 +121,9 @@ export declare class AccountTrackerController extends AccountTrackerController_b
121
121
  * @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
122
122
  * @param options.allowExternalServices - Disable external HTTP calls (privacy / offline mode).
123
123
  * @param options.fetchingEnabled - Function that returns whether the controller is fetching enabled.
124
+ * @param options.isOnboarded - Whether the user has completed onboarding. If false, balance updates are skipped.
124
125
  */
125
- constructor({ interval, state, messenger, getStakedBalanceForChain, includeStakedAssets, accountsApiChainIds, allowExternalServices, fetchingEnabled, }: {
126
+ constructor({ interval, state, messenger, getStakedBalanceForChain, includeStakedAssets, accountsApiChainIds, allowExternalServices, fetchingEnabled, isOnboarded, }: {
126
127
  interval?: number;
127
128
  state?: Partial<AccountTrackerControllerState>;
128
129
  messenger: AccountTrackerControllerMessenger;
@@ -131,8 +132,15 @@ export declare class AccountTrackerController extends AccountTrackerController_b
131
132
  accountsApiChainIds?: () => ChainIdHex[];
132
133
  allowExternalServices?: () => boolean;
133
134
  fetchingEnabled?: () => boolean;
135
+ isOnboarded?: () => boolean;
134
136
  });
135
- private syncAccounts;
137
+ /**
138
+ * Whether the controller is active (keyring is unlocked and user is onboarded).
139
+ * When locked or not onboarded, balance updates should be skipped.
140
+ *
141
+ * @returns Whether the controller should perform balance updates.
142
+ */
143
+ get isActive(): boolean;
136
144
  /**
137
145
  * Refreshes the balances of the accounts using the networkClientId
138
146
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AccountTrackerController.d.cts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountTrackerController.d.cts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,oCAAoC,EACrC,sCAAsC;AACvC,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EAEzB,kCAAkC;AAOnC,OAAO,KAAK,EACV,+BAA+B,EAC/B,0BAA0B,EAC1B,4BAA4B,EAC7B,qCAAqC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EAEV,eAAe,EACf,2CAA2C,EAC3C,+BAA+B,EAC/B,kCAAkC,EACnC,qCAAqC;AAEtC,OAAO,KAAK,EACV,8CAA8C,EAC9C,oDAAoD,EAErD,yCAAyC;AAE1C,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAK3C,OAAO,KAAK,EACV,wBAAwB,EACxB,aAAa,EACd,uCAAmC;AASpC;;GAEG;AACH,QAAA,MAAM,cAAc,6BAA6B,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC;AAC7B,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AA4DlC;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAAA;KAAE,CAAC,CAAC;CAC9E,CAAC;AAWF;;GAEG;AACH,MAAM,MAAM,sCAAsC,GAAG,wBAAwB,CAC3E,OAAO,cAAc,EACrB,6BAA6B,CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG;IACrD,IAAI,EAAE,GAAG,OAAO,cAAc,uBAAuB,CAAC;IACtD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;CAC3D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAAG;IACrD,IAAI,EAAE,GAAG,OAAO,cAAc,uBAAuB,CAAC;IACtD,OAAO,EAAE,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;CAC3D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GACvC,sCAAsC,GACtC,wCAAwC,GACxC,wCAAwC,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,oCAAoC,GACpC;IACE,IAAI,EAAE,gCAAgC,CAAC;IACvC,OAAO,EAAE,MAAM;QAAE,6BAA6B,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D,GACD,0CAA0C,GAC1C,+BAA+B,GAC/B,2CAA2C,GAC3C,+BAA+B,CAAC;AAEpC;;GAEG;AACH,MAAM,MAAM,wCAAwC,GAClD,0BAA0B,CACxB,OAAO,cAAc,EACrB,6BAA6B,CAC9B,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,8BAA8B,GACxC,wCAAwC,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,+CAA+C,GAC/C,oDAAoD,GACpD,8CAA8C,GAC9C,kCAAkC,GAClC,0BAA0B,GAC1B,4BAA4B,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,iCAAiC,GAAG,SAAS,CACvD,OAAO,cAAc,EACrB,+BAA+B,GAAG,cAAc,EAChD,8BAA8B,GAAG,aAAa,CAC/C,CAAC;AAEF,0EAA0E;AAC1E,KAAK,0BAA0B,GAAG;IAChC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;;;;;;;;;;;;;;;;AAEF;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,8BAC5C,OAAO,cAAc,EACrB,6BAA6B,EAC7B,iCAAiC,CAClC;;IAkBC;;;;;;;;;;;;;OAaG;gBACS,EACV,QAAgB,EAChB,KAAK,EACL,SAAS,EACT,wBAAwB,EACxB,mBAA2B,EAC3B,mBAA4C,EAC5C,qBAA2C,EAC3C,eAAqC,EACrC,WAAiC,GAClC,EAAE;QACD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC/C,SAAS,EAAE,iCAAiC,CAAC;QAC7C,wBAAwB,EAAE,wBAAwB,CAAC,0BAA0B,CAAC,CAAC;QAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,UAAU,EAAE,CAAC;QACzC,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC;QACtC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;QAChC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;KAC7B;IAkHD;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAoKD;;;;;;OAMG;IACG,YAAY,CAAC,EACjB,gBAAgB,EAChB,gBAAwB,GACzB,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C;;;;;;;OAOG;IACG,OAAO,CACX,gBAAgB,EAAE,eAAe,EAAE,EACnC,gBAAgB,GAAE,OAAe,GAChC,OAAO,CAAC,IAAI,CAAC;IAmBV,gBAAgB,CAAC,EACrB,gBAAgB,EAChB,SAAS,GACV,EAAE;QACD,gBAAgB,EAAE,eAAe,EAAE,CAAC;QACpC,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoMjB;;;;;;OAMG;IACG,wBAAwB,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CACR,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE,CAAC,CACnE;IA4CD;;;;;;OAMG;IACH,oBAAoB,CAClB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,EAAE,GAC1D,IAAI;IA2CP;;;;;;OAMG;IACH,oBAAoB,CAClB,cAAc,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,GAAG,CAAC;QACb,aAAa,EAAE,aAAa,CAAC;KAC9B,EAAE,GACF,IAAI;CAuDR;AAED,eAAe,wBAAwB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction } from "@metamask/accounts-controller";
2
2
  import type { ControllerStateChangeEvent, ControllerGetStateAction } from "@metamask/base-controller";
3
- import type { KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
3
+ import type { KeyringControllerGetStateAction, KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
4
4
  import type { Messenger } from "@metamask/messenger";
5
5
  import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, NetworkControllerNetworkAddedEvent } from "@metamask/network-controller";
6
6
  import type { TransactionControllerTransactionConfirmedEvent, TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller";
@@ -67,7 +67,7 @@ export type AllowedActions = AccountsControllerListAccountsAction | {
67
67
  handler: () => {
68
68
  isMultiAccountBalancesEnabled: boolean;
69
69
  };
70
- } | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction;
70
+ } | AccountsControllerGetSelectedAccountAction | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | KeyringControllerGetStateAction;
71
71
  /**
72
72
  * The event that {@link AccountTrackerController} can emit.
73
73
  */
@@ -79,7 +79,7 @@ export type AccountTrackerControllerEvents = AccountTrackerControllerStateChange
79
79
  /**
80
80
  * The external events available to the {@link AccountTrackerController}.
81
81
  */
82
- export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkAddedEvent | KeyringControllerUnlockEvent;
82
+ export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent | NetworkControllerNetworkAddedEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent;
83
83
  /**
84
84
  * The messenger of the {@link AccountTrackerController}.
85
85
  */
@@ -90,8 +90,8 @@ type AccountTrackerPollingInput = {
90
90
  queryAllAccounts?: boolean;
91
91
  };
92
92
  declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
93
- readonly "__#15@#intervalIds": Record<string, NodeJS.Timeout>;
94
- "__#15@#intervalLength": number | undefined;
93
+ readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
94
+ "__#14@#intervalLength": number | undefined;
95
95
  setIntervalLength(intervalLength: number): void;
96
96
  getIntervalLength(): number | undefined;
97
97
  _startPolling(input: AccountTrackerPollingInput): void;
@@ -121,8 +121,9 @@ export declare class AccountTrackerController extends AccountTrackerController_b
121
121
  * @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
122
122
  * @param options.allowExternalServices - Disable external HTTP calls (privacy / offline mode).
123
123
  * @param options.fetchingEnabled - Function that returns whether the controller is fetching enabled.
124
+ * @param options.isOnboarded - Whether the user has completed onboarding. If false, balance updates are skipped.
124
125
  */
125
- constructor({ interval, state, messenger, getStakedBalanceForChain, includeStakedAssets, accountsApiChainIds, allowExternalServices, fetchingEnabled, }: {
126
+ constructor({ interval, state, messenger, getStakedBalanceForChain, includeStakedAssets, accountsApiChainIds, allowExternalServices, fetchingEnabled, isOnboarded, }: {
126
127
  interval?: number;
127
128
  state?: Partial<AccountTrackerControllerState>;
128
129
  messenger: AccountTrackerControllerMessenger;
@@ -131,8 +132,15 @@ export declare class AccountTrackerController extends AccountTrackerController_b
131
132
  accountsApiChainIds?: () => ChainIdHex[];
132
133
  allowExternalServices?: () => boolean;
133
134
  fetchingEnabled?: () => boolean;
135
+ isOnboarded?: () => boolean;
134
136
  });
135
- private syncAccounts;
137
+ /**
138
+ * Whether the controller is active (keyring is unlocked and user is onboarded).
139
+ * When locked or not onboarded, balance updates should be skipped.
140
+ *
141
+ * @returns Whether the controller should perform balance updates.
142
+ */
143
+ get isActive(): boolean;
136
144
  /**
137
145
  * Refreshes the balances of the accounts using the networkClientId
138
146
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AccountTrackerController.d.mts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountTrackerController.d.mts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _AccountTrackerController_instances, _AccountTrackerController_refreshMutex, _AccountTrackerController_includeStakedAssets, _AccountTrackerController_accountsApiChainIds, _AccountTrackerController_getStakedBalanceForChain, _AccountTrackerController_balanceFetchers, _AccountTrackerController_fetchingEnabled, _AccountTrackerController_getProvider, _AccountTrackerController_getNetworkClient, _AccountTrackerController_createAccountsApiFetcher, _AccountTrackerController_getCorrectNetworkClient, _AccountTrackerController_getNetworkClientIds, _AccountTrackerController_refreshAccounts, _AccountTrackerController_registerMessageHandlers;
12
+ var _AccountTrackerController_instances, _AccountTrackerController_refreshMutex, _AccountTrackerController_includeStakedAssets, _AccountTrackerController_accountsApiChainIds, _AccountTrackerController_getStakedBalanceForChain, _AccountTrackerController_balanceFetchers, _AccountTrackerController_fetchingEnabled, _AccountTrackerController_isOnboarded, _AccountTrackerController_isLocked, _AccountTrackerController_syncAccounts, _AccountTrackerController_getProvider, _AccountTrackerController_getNetworkClient, _AccountTrackerController_createAccountsApiFetcher, _AccountTrackerController_getCorrectNetworkClient, _AccountTrackerController_getNetworkClientIds, _AccountTrackerController_refreshAccounts, _AccountTrackerController_registerMessageHandlers;
13
13
  function $importDefault(module) {
14
14
  if (module?.__esModule) {
15
15
  return module.default;
@@ -91,8 +91,9 @@ export class AccountTrackerController extends StaticIntervalPollingController()
91
91
  * @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
92
92
  * @param options.allowExternalServices - Disable external HTTP calls (privacy / offline mode).
93
93
  * @param options.fetchingEnabled - Function that returns whether the controller is fetching enabled.
94
+ * @param options.isOnboarded - Whether the user has completed onboarding. If false, balance updates are skipped.
94
95
  */
95
- constructor({ interval = 10000, state, messenger, getStakedBalanceForChain, includeStakedAssets = false, accountsApiChainIds = () => [], allowExternalServices = () => true, fetchingEnabled = () => true, }) {
96
+ constructor({ interval = 10000, state, messenger, getStakedBalanceForChain, includeStakedAssets = false, accountsApiChainIds = () => [], allowExternalServices = () => true, fetchingEnabled = () => true, isOnboarded = () => true, }) {
96
97
  const { selectedNetworkClientId } = messenger.call('NetworkController:getState');
97
98
  const { configuration: { chainId }, } = messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
98
99
  super({
@@ -113,17 +114,20 @@ export class AccountTrackerController extends StaticIntervalPollingController()
113
114
  _AccountTrackerController_getStakedBalanceForChain.set(this, void 0);
114
115
  _AccountTrackerController_balanceFetchers.set(this, void 0);
115
116
  _AccountTrackerController_fetchingEnabled.set(this, void 0);
117
+ _AccountTrackerController_isOnboarded.set(this, void 0);
118
+ /** Track if the keyring is locked */
119
+ _AccountTrackerController_isLocked.set(this, true);
116
120
  _AccountTrackerController_getProvider.set(this, (chainId) => {
117
121
  const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
118
- const cfg = networkConfigurationsByChainId[chainId];
119
- const { networkClientId } = cfg.rpcEndpoints[cfg.defaultRpcEndpointIndex];
122
+ const networkConfig = networkConfigurationsByChainId[chainId];
123
+ const { networkClientId } = networkConfig.rpcEndpoints[networkConfig.defaultRpcEndpointIndex];
120
124
  const client = this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
121
125
  return new Web3Provider(client.provider);
122
126
  });
123
127
  _AccountTrackerController_getNetworkClient.set(this, (chainId) => {
124
128
  const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
125
- const cfg = networkConfigurationsByChainId[chainId];
126
- const { networkClientId } = cfg.rpcEndpoints[cfg.defaultRpcEndpointIndex];
129
+ const networkConfig = networkConfigurationsByChainId[chainId];
130
+ const { networkClientId } = networkConfig.rpcEndpoints[networkConfig.defaultRpcEndpointIndex];
127
131
  return this.messenger.call('NetworkController:getNetworkClientById', networkClientId);
128
132
  });
129
133
  /**
@@ -155,6 +159,9 @@ export class AccountTrackerController extends StaticIntervalPollingController()
155
159
  createAccountTrackerRpcBalanceFetcher(__classPrivateFieldGet(this, _AccountTrackerController_getProvider, "f"), __classPrivateFieldGet(this, _AccountTrackerController_getNetworkClient, "f"), __classPrivateFieldGet(this, _AccountTrackerController_includeStakedAssets, "f")),
156
160
  ], "f");
157
161
  __classPrivateFieldSet(this, _AccountTrackerController_fetchingEnabled, fetchingEnabled, "f");
162
+ __classPrivateFieldSet(this, _AccountTrackerController_isOnboarded, isOnboarded, "f");
163
+ const { isUnlocked } = this.messenger.call('KeyringController:getState');
164
+ __classPrivateFieldSet(this, _AccountTrackerController_isLocked, !isUnlocked, "f");
158
165
  this.setIntervalLength(interval);
159
166
  this.messenger.subscribe('AccountsController:selectedEvmAccountChange', (newAddress, prevAddress) => {
160
167
  if (newAddress !== prevAddress) {
@@ -163,72 +170,52 @@ export class AccountTrackerController extends StaticIntervalPollingController()
163
170
  this.refresh(__classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getNetworkClientIds).call(this));
164
171
  }
165
172
  }, (event) => event.address);
166
- this.messenger.subscribe('NetworkController:networkAdded', async () => {
167
- await this.refresh(__classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getNetworkClientIds).call(this));
173
+ this.messenger.subscribe('NetworkController:networkAdded', (networkConfiguration) => {
174
+ const { networkClientId } = networkConfiguration.rpcEndpoints[networkConfiguration.defaultRpcEndpointIndex];
175
+ this.refresh([networkClientId]).catch(() => {
176
+ // Silently handle refresh errors
177
+ });
178
+ });
179
+ this.messenger.subscribe('KeyringController:unlock', () => {
180
+ __classPrivateFieldSet(this, _AccountTrackerController_isLocked, false, "f");
168
181
  });
169
- this.messenger.subscribe('KeyringController:unlock', async () => {
170
- await this.refresh(__classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getNetworkClientIds).call(this));
182
+ this.messenger.subscribe('KeyringController:lock', () => {
183
+ __classPrivateFieldSet(this, _AccountTrackerController_isLocked, true, "f");
171
184
  });
172
- this.messenger.subscribe('TransactionController:unapprovedTransactionAdded', async (transactionMeta) => {
185
+ this.messenger.subscribe('TransactionController:unapprovedTransactionAdded', (transactionMeta) => {
173
186
  const addresses = [transactionMeta.txParams.from];
174
187
  if (transactionMeta.txParams.to) {
175
188
  addresses.push(transactionMeta.txParams.to);
176
189
  }
177
- await this.refreshAddresses({
190
+ this.refreshAddresses({
178
191
  networkClientIds: [transactionMeta.networkClientId],
179
192
  addresses,
193
+ }).catch(() => {
194
+ // Silently handle refresh errors
180
195
  });
181
196
  });
182
- this.messenger.subscribe('TransactionController:transactionConfirmed', async (transactionMeta) => {
197
+ this.messenger.subscribe('TransactionController:transactionConfirmed', (transactionMeta) => {
183
198
  const addresses = [transactionMeta.txParams.from];
184
199
  if (transactionMeta.txParams.to) {
185
200
  addresses.push(transactionMeta.txParams.to);
186
201
  }
187
- await this.refreshAddresses({
202
+ this.refreshAddresses({
188
203
  networkClientIds: [transactionMeta.networkClientId],
189
204
  addresses,
205
+ }).catch(() => {
206
+ // Silently handle refresh errors
190
207
  });
191
208
  });
192
209
  __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_registerMessageHandlers).call(this);
193
210
  }
194
- syncAccounts(newChainIds) {
195
- const accountsByChainId = cloneDeep(this.state.accountsByChainId);
196
- const { selectedNetworkClientId } = this.messenger.call('NetworkController:getState');
197
- const { configuration: { chainId: currentChainId }, } = this.messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
198
- const existing = Object.keys(accountsByChainId?.[currentChainId] ?? {});
199
- // Initialize new chain IDs if they don't exist
200
- newChainIds.forEach((newChainId) => {
201
- if (!accountsByChainId[newChainId]) {
202
- accountsByChainId[newChainId] = {};
203
- existing.forEach((address) => {
204
- accountsByChainId[newChainId][address] = { balance: '0x0' };
205
- });
206
- }
207
- });
208
- // Note: The address from the preferences controller are checksummed
209
- // The addresses from the accounts controller are lowercased
210
- const addresses = Object.values(this.messenger
211
- .call('AccountsController:listAccounts')
212
- .map((internalAccount) => toChecksumHexAddress(internalAccount.address)));
213
- const newAddresses = addresses.filter((address) => !existing.includes(address));
214
- const oldAddresses = existing.filter((address) => !addresses.includes(address));
215
- Object.keys(accountsByChainId).forEach((chainId) => {
216
- newAddresses.forEach((address) => {
217
- accountsByChainId[chainId][address] = {
218
- balance: '0x0',
219
- };
220
- });
221
- });
222
- Object.keys(accountsByChainId).forEach((chainId) => {
223
- oldAddresses.forEach((address) => {
224
- delete accountsByChainId[chainId][address];
225
- });
226
- });
227
- if (!isEqual(this.state.accountsByChainId, accountsByChainId)) {
228
- this.update((state) => {
229
- state.accountsByChainId = accountsByChainId;
230
- });
231
- }
211
+ /**
212
+ * Whether the controller is active (keyring is unlocked and user is onboarded).
213
+ * When locked or not onboarded, balance updates should be skipped.
214
+ *
215
+ * @returns Whether the controller should perform balance updates.
216
+ */
217
+ get isActive() {
218
+ return !__classPrivateFieldGet(this, _AccountTrackerController_isLocked, "f") && __classPrivateFieldGet(this, _AccountTrackerController_isOnboarded, "f").call(this);
232
219
  }
233
220
  /**
234
221
  * Refreshes the balances of the accounts using the networkClientId
@@ -281,6 +268,10 @@ export class AccountTrackerController extends StaticIntervalPollingController()
281
268
  * @returns accounts - addresses with synced balance
282
269
  */
283
270
  async syncBalanceWithAddresses(addresses, networkClientId) {
271
+ // Skip balance fetching if locked or not onboarded to avoid unnecessary RPC calls
272
+ if (!this.isActive) {
273
+ return {};
274
+ }
284
275
  const { ethQuery } = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCorrectNetworkClient).call(this, networkClientId);
285
276
  // TODO: This should use multicall when enabled by the user.
286
277
  return await Promise.all(addresses.map((address) => {
@@ -391,7 +382,45 @@ export class AccountTrackerController extends StaticIntervalPollingController()
391
382
  }
392
383
  }
393
384
  }
394
- _AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerController_includeStakedAssets = new WeakMap(), _AccountTrackerController_accountsApiChainIds = new WeakMap(), _AccountTrackerController_getStakedBalanceForChain = new WeakMap(), _AccountTrackerController_balanceFetchers = new WeakMap(), _AccountTrackerController_fetchingEnabled = new WeakMap(), _AccountTrackerController_getProvider = new WeakMap(), _AccountTrackerController_getNetworkClient = new WeakMap(), _AccountTrackerController_createAccountsApiFetcher = new WeakMap(), _AccountTrackerController_instances = new WeakSet(), _AccountTrackerController_getCorrectNetworkClient = function _AccountTrackerController_getCorrectNetworkClient(networkClientId) {
385
+ _AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerController_includeStakedAssets = new WeakMap(), _AccountTrackerController_accountsApiChainIds = new WeakMap(), _AccountTrackerController_getStakedBalanceForChain = new WeakMap(), _AccountTrackerController_balanceFetchers = new WeakMap(), _AccountTrackerController_fetchingEnabled = new WeakMap(), _AccountTrackerController_isOnboarded = new WeakMap(), _AccountTrackerController_isLocked = new WeakMap(), _AccountTrackerController_getProvider = new WeakMap(), _AccountTrackerController_getNetworkClient = new WeakMap(), _AccountTrackerController_createAccountsApiFetcher = new WeakMap(), _AccountTrackerController_instances = new WeakSet(), _AccountTrackerController_syncAccounts = function _AccountTrackerController_syncAccounts(newChainIds) {
386
+ const accountsByChainId = cloneDeep(this.state.accountsByChainId);
387
+ const { selectedNetworkClientId } = this.messenger.call('NetworkController:getState');
388
+ const { configuration: { chainId: currentChainId }, } = this.messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
389
+ const existing = Object.keys(accountsByChainId?.[currentChainId] ?? {});
390
+ // Initialize new chain IDs if they don't exist
391
+ newChainIds.forEach((newChainId) => {
392
+ if (!accountsByChainId[newChainId]) {
393
+ accountsByChainId[newChainId] = {};
394
+ existing.forEach((address) => {
395
+ accountsByChainId[newChainId][address] = { balance: '0x0' };
396
+ });
397
+ }
398
+ });
399
+ // Note: The address from the preferences controller are checksummed
400
+ // The addresses from the accounts controller are lowercased
401
+ const addresses = Object.values(this.messenger
402
+ .call('AccountsController:listAccounts')
403
+ .map((internalAccount) => toChecksumHexAddress(internalAccount.address)));
404
+ const newAddresses = addresses.filter((address) => !existing.includes(address));
405
+ const oldAddresses = existing.filter((address) => !addresses.includes(address));
406
+ Object.keys(accountsByChainId).forEach((chainId) => {
407
+ newAddresses.forEach((address) => {
408
+ accountsByChainId[chainId][address] = {
409
+ balance: '0x0',
410
+ };
411
+ });
412
+ });
413
+ Object.keys(accountsByChainId).forEach((chainId) => {
414
+ oldAddresses.forEach((address) => {
415
+ delete accountsByChainId[chainId][address];
416
+ });
417
+ });
418
+ if (!isEqual(this.state.accountsByChainId, accountsByChainId)) {
419
+ this.update((state) => {
420
+ state.accountsByChainId = accountsByChainId;
421
+ });
422
+ }
423
+ }, _AccountTrackerController_getCorrectNetworkClient = function _AccountTrackerController_getCorrectNetworkClient(networkClientId) {
395
424
  const selectedNetworkClientId = networkClientId ??
396
425
  this.messenger.call('NetworkController:getState').selectedNetworkClientId;
397
426
  const { configuration: { chainId }, provider, blockTracker, } = this.messenger.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
@@ -411,8 +440,8 @@ _AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerControlle
411
440
  const { chainId } = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCorrectNetworkClient).call(this, networkClientId);
412
441
  return chainId;
413
442
  });
414
- this.syncAccounts(chainIds);
415
- if (!__classPrivateFieldGet(this, _AccountTrackerController_fetchingEnabled, "f").call(this)) {
443
+ __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_syncAccounts).call(this, chainIds);
444
+ if (!__classPrivateFieldGet(this, _AccountTrackerController_fetchingEnabled, "f").call(this) || !this.isActive) {
416
445
  return;
417
446
  }
418
447
  // Use balance fetchers with fallback strategy
@@ -426,7 +455,7 @@ _AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerControlle
426
455
  }));
427
456
  // Try each fetcher in order, removing successfully processed chains
428
457
  for (const fetcher of __classPrivateFieldGet(this, _AccountTrackerController_balanceFetchers, "f")) {
429
- const supportedChains = remainingChains.filter((c) => fetcher.supports(c));
458
+ const supportedChains = remainingChains.filter((chainId) => fetcher.supports(chainId));
430
459
  if (!supportedChains.length) {
431
460
  continue;
432
461
  }