@metamask-previews/assets-controllers 81.0.1-preview-e9856975 → 81.0.1-preview-83095132
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 +2 -5
- package/dist/AccountTrackerController.cjs +146 -124
- package/dist/AccountTrackerController.cjs.map +1 -1
- package/dist/AccountTrackerController.d.cts +8 -8
- package/dist/AccountTrackerController.d.cts.map +1 -1
- package/dist/AccountTrackerController.d.mts +8 -8
- package/dist/AccountTrackerController.d.mts.map +1 -1
- package/dist/AccountTrackerController.mjs +146 -124
- package/dist/AccountTrackerController.mjs.map +1 -1
- package/dist/AssetsContractController.cjs.map +1 -1
- package/dist/AssetsContractController.d.cts +2 -2
- package/dist/AssetsContractController.d.cts.map +1 -1
- package/dist/AssetsContractController.d.mts +2 -2
- package/dist/AssetsContractController.d.mts.map +1 -1
- package/dist/AssetsContractController.mjs.map +1 -1
- package/dist/CurrencyRateController.cjs +3 -3
- package/dist/CurrencyRateController.cjs.map +1 -1
- package/dist/CurrencyRateController.d.cts +6 -7
- package/dist/CurrencyRateController.d.cts.map +1 -1
- package/dist/CurrencyRateController.d.mts +6 -7
- package/dist/CurrencyRateController.d.mts.map +1 -1
- package/dist/CurrencyRateController.mjs +3 -3
- package/dist/CurrencyRateController.mjs.map +1 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.cjs +7 -7
- package/dist/DeFiPositionsController/DeFiPositionsController.cjs.map +1 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.d.cts +5 -6
- package/dist/DeFiPositionsController/DeFiPositionsController.d.cts.map +1 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.d.mts +5 -6
- package/dist/DeFiPositionsController/DeFiPositionsController.d.mts.map +1 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.mjs +7 -7
- package/dist/DeFiPositionsController/DeFiPositionsController.mjs.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.cjs +14 -14
- package/dist/MultichainAssetsController/MultichainAssetsController.cjs.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.d.cts +2 -3
- package/dist/MultichainAssetsController/MultichainAssetsController.d.cts.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.d.mts +2 -3
- package/dist/MultichainAssetsController/MultichainAssetsController.d.mts.map +1 -1
- package/dist/MultichainAssetsController/MultichainAssetsController.mjs +13 -13
- package/dist/MultichainAssetsController/MultichainAssetsController.mjs.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs +13 -13
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.cjs.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts +6 -7
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.cts.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts +6 -7
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.d.mts.map +1 -1
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs +13 -13
- package/dist/MultichainAssetsRatesController/MultichainAssetsRatesController.mjs.map +1 -1
- package/dist/MultichainBalancesController/MultichainBalancesController.cjs +11 -11
- package/dist/MultichainBalancesController/MultichainBalancesController.cjs.map +1 -1
- package/dist/MultichainBalancesController/MultichainBalancesController.d.cts +2 -3
- package/dist/MultichainBalancesController/MultichainBalancesController.d.cts.map +1 -1
- package/dist/MultichainBalancesController/MultichainBalancesController.d.mts +2 -3
- package/dist/MultichainBalancesController/MultichainBalancesController.d.mts.map +1 -1
- package/dist/MultichainBalancesController/MultichainBalancesController.mjs +10 -10
- package/dist/MultichainBalancesController/MultichainBalancesController.mjs.map +1 -1
- package/dist/NftController.cjs +27 -27
- package/dist/NftController.cjs.map +1 -1
- package/dist/NftController.d.cts +3 -3
- package/dist/NftController.d.cts.map +1 -1
- package/dist/NftController.d.mts +3 -3
- package/dist/NftController.d.mts.map +1 -1
- package/dist/NftController.mjs +26 -26
- package/dist/NftController.mjs.map +1 -1
- package/dist/NftDetectionController.cjs +8 -7
- package/dist/NftDetectionController.cjs.map +1 -1
- package/dist/NftDetectionController.d.cts +5 -5
- package/dist/NftDetectionController.d.cts.map +1 -1
- package/dist/NftDetectionController.d.mts +5 -5
- package/dist/NftDetectionController.d.mts.map +1 -1
- package/dist/NftDetectionController.mjs +7 -6
- package/dist/NftDetectionController.mjs.map +1 -1
- package/dist/RatesController/RatesController.cjs +7 -7
- package/dist/RatesController/RatesController.cjs.map +1 -1
- package/dist/RatesController/RatesController.d.cts +1 -1
- package/dist/RatesController/RatesController.d.cts.map +1 -1
- package/dist/RatesController/RatesController.d.mts +1 -1
- package/dist/RatesController/RatesController.d.mts.map +1 -1
- package/dist/RatesController/RatesController.mjs +6 -6
- package/dist/RatesController/RatesController.mjs.map +1 -1
- package/dist/RatesController/types.cjs.map +1 -1
- package/dist/RatesController/types.d.cts +2 -3
- package/dist/RatesController/types.d.cts.map +1 -1
- package/dist/RatesController/types.d.mts +2 -3
- package/dist/RatesController/types.d.mts.map +1 -1
- package/dist/RatesController/types.mjs.map +1 -1
- package/dist/TokenBalancesController.cjs +22 -22
- package/dist/TokenBalancesController.cjs.map +1 -1
- package/dist/TokenBalancesController.d.cts +5 -6
- package/dist/TokenBalancesController.d.cts.map +1 -1
- package/dist/TokenBalancesController.d.mts +5 -6
- package/dist/TokenBalancesController.d.mts.map +1 -1
- package/dist/TokenBalancesController.mjs +22 -22
- package/dist/TokenBalancesController.mjs.map +1 -1
- package/dist/TokenDetectionController.cjs +24 -24
- package/dist/TokenDetectionController.cjs.map +1 -1
- package/dist/TokenDetectionController.d.cts +6 -7
- package/dist/TokenDetectionController.d.cts.map +1 -1
- package/dist/TokenDetectionController.d.mts +6 -7
- package/dist/TokenDetectionController.d.mts.map +1 -1
- package/dist/TokenDetectionController.mjs +24 -24
- package/dist/TokenDetectionController.mjs.map +1 -1
- package/dist/TokenListController.cjs +4 -4
- package/dist/TokenListController.cjs.map +1 -1
- package/dist/TokenListController.d.cts +5 -6
- package/dist/TokenListController.d.cts.map +1 -1
- package/dist/TokenListController.d.mts +5 -6
- package/dist/TokenListController.d.mts.map +1 -1
- package/dist/TokenListController.mjs +4 -4
- package/dist/TokenListController.mjs.map +1 -1
- package/dist/TokenRatesController.cjs +6 -6
- package/dist/TokenRatesController.cjs.map +1 -1
- package/dist/TokenRatesController.d.cts +5 -6
- package/dist/TokenRatesController.d.cts.map +1 -1
- package/dist/TokenRatesController.d.mts +5 -6
- package/dist/TokenRatesController.d.mts.map +1 -1
- package/dist/TokenRatesController.mjs +6 -6
- package/dist/TokenRatesController.mjs.map +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.cjs +6 -6
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.cjs.map +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.d.cts +2 -3
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.d.cts.map +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.d.mts +2 -3
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.d.mts.map +1 -1
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.mjs +5 -5
- package/dist/TokenSearchDiscoveryDataController/TokenSearchDiscoveryDataController.mjs.map +1 -1
- package/dist/TokensController.cjs +19 -19
- package/dist/TokensController.cjs.map +1 -1
- package/dist/TokensController.d.cts +3 -4
- package/dist/TokensController.d.cts.map +1 -1
- package/dist/TokensController.d.mts +3 -4
- package/dist/TokensController.d.mts.map +1 -1
- package/dist/TokensController.mjs +18 -18
- package/dist/TokensController.mjs.map +1 -1
- package/package.json +1 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction, AccountsControllerSelectedAccountChangeEvent } from "@metamask/accounts-controller";
|
|
2
|
-
import type { ControllerStateChangeEvent, ControllerGetStateAction } from "@metamask/base-controller
|
|
3
|
-
import type { Messenger } from "@metamask/messenger";
|
|
2
|
+
import type { ControllerStateChangeEvent, ControllerGetStateAction, RestrictedMessenger } from "@metamask/base-controller";
|
|
4
3
|
import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction } from "@metamask/network-controller";
|
|
5
4
|
import type { PreferencesControllerGetStateAction } from "@metamask/preferences-controller";
|
|
5
|
+
import type { TransactionControllerTransactionConfirmedEvent, TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller";
|
|
6
6
|
import { type Hex } from "@metamask/utils";
|
|
7
7
|
import { type AssetsContractController, type StakedBalance } from "./AssetsContractController.cjs";
|
|
8
8
|
/**
|
|
@@ -73,19 +73,19 @@ export type AccountTrackerControllerEvents = AccountTrackerControllerStateChange
|
|
|
73
73
|
/**
|
|
74
74
|
* The external events available to the {@link AccountTrackerController}.
|
|
75
75
|
*/
|
|
76
|
-
export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | AccountsControllerSelectedAccountChangeEvent;
|
|
76
|
+
export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | AccountsControllerSelectedAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent;
|
|
77
77
|
/**
|
|
78
78
|
* The messenger of the {@link AccountTrackerController}.
|
|
79
79
|
*/
|
|
80
|
-
export type AccountTrackerControllerMessenger =
|
|
80
|
+
export type AccountTrackerControllerMessenger = RestrictedMessenger<typeof controllerName, AccountTrackerControllerActions | AllowedActions, AccountTrackerControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
81
81
|
/** The input to start polling for the {@link AccountTrackerController} */
|
|
82
82
|
type AccountTrackerPollingInput = {
|
|
83
83
|
networkClientIds: NetworkClientId[];
|
|
84
84
|
queryAllAccounts?: boolean;
|
|
85
85
|
};
|
|
86
86
|
declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
|
|
87
|
-
readonly "__#
|
|
88
|
-
"__#
|
|
87
|
+
readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
88
|
+
"__#14@#intervalLength": number | undefined;
|
|
89
89
|
setIntervalLength(intervalLength: number): void;
|
|
90
90
|
getIntervalLength(): number | undefined;
|
|
91
91
|
_startPolling(input: AccountTrackerPollingInput): void;
|
|
@@ -97,7 +97,7 @@ declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
|
|
|
97
97
|
stopAllPolling(): void;
|
|
98
98
|
stopPollingByPollingToken(pollingToken: string): void;
|
|
99
99
|
onPollingComplete(input: AccountTrackerPollingInput, callback: (input: AccountTrackerPollingInput) => void): void;
|
|
100
|
-
}) & typeof import("@metamask/base-controller
|
|
100
|
+
}) & typeof import("@metamask/base-controller").BaseController;
|
|
101
101
|
/**
|
|
102
102
|
* Controller that tracks the network balances for all user accounts.
|
|
103
103
|
*/
|
|
@@ -109,7 +109,7 @@ export declare class AccountTrackerController extends AccountTrackerController_b
|
|
|
109
109
|
* @param options - The controller options.
|
|
110
110
|
* @param options.interval - Polling interval used to fetch new account balances.
|
|
111
111
|
* @param options.state - Initial state to set on this controller.
|
|
112
|
-
* @param options.messenger - The controller
|
|
112
|
+
* @param options.messenger - The controller messaging system.
|
|
113
113
|
* @param options.getStakedBalanceForChain - The function to get the staked native asset balance for a chain.
|
|
114
114
|
* @param options.includeStakedAssets - Whether to include staked assets in the account balances.
|
|
115
115
|
* @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
|
|
@@ -1 +1 @@
|
|
|
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,EACpC,4CAA4C,EAC7C,sCAAsC;AACvC,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,
|
|
1
|
+
{"version":3,"file":"AccountTrackerController.d.cts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AccountsControllerSelectedEvmAccountChangeEvent, AccountsControllerGetSelectedAccountAction, AccountsControllerListAccountsAction, AccountsControllerSelectedAccountChangeEvent } from "@metamask/accounts-controller";
|
|
2
|
-
import type { ControllerStateChangeEvent, ControllerGetStateAction } from "@metamask/base-controller
|
|
3
|
-
import type { Messenger } from "@metamask/messenger";
|
|
2
|
+
import type { ControllerStateChangeEvent, ControllerGetStateAction, RestrictedMessenger } from "@metamask/base-controller";
|
|
4
3
|
import type { NetworkClientId, NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction } from "@metamask/network-controller";
|
|
5
4
|
import type { PreferencesControllerGetStateAction } from "@metamask/preferences-controller";
|
|
5
|
+
import type { TransactionControllerTransactionConfirmedEvent, TransactionControllerUnapprovedTransactionAddedEvent } from "@metamask/transaction-controller";
|
|
6
6
|
import { type Hex } from "@metamask/utils";
|
|
7
7
|
import { type AssetsContractController, type StakedBalance } from "./AssetsContractController.mjs";
|
|
8
8
|
/**
|
|
@@ -73,19 +73,19 @@ export type AccountTrackerControllerEvents = AccountTrackerControllerStateChange
|
|
|
73
73
|
/**
|
|
74
74
|
* The external events available to the {@link AccountTrackerController}.
|
|
75
75
|
*/
|
|
76
|
-
export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | AccountsControllerSelectedAccountChangeEvent;
|
|
76
|
+
export type AllowedEvents = AccountsControllerSelectedEvmAccountChangeEvent | AccountsControllerSelectedAccountChangeEvent | TransactionControllerUnapprovedTransactionAddedEvent | TransactionControllerTransactionConfirmedEvent;
|
|
77
77
|
/**
|
|
78
78
|
* The messenger of the {@link AccountTrackerController}.
|
|
79
79
|
*/
|
|
80
|
-
export type AccountTrackerControllerMessenger =
|
|
80
|
+
export type AccountTrackerControllerMessenger = RestrictedMessenger<typeof controllerName, AccountTrackerControllerActions | AllowedActions, AccountTrackerControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
81
81
|
/** The input to start polling for the {@link AccountTrackerController} */
|
|
82
82
|
type AccountTrackerPollingInput = {
|
|
83
83
|
networkClientIds: NetworkClientId[];
|
|
84
84
|
queryAllAccounts?: boolean;
|
|
85
85
|
};
|
|
86
86
|
declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
|
|
87
|
-
readonly "__#
|
|
88
|
-
"__#
|
|
87
|
+
readonly "__#14@#intervalIds": Record<string, NodeJS.Timeout>;
|
|
88
|
+
"__#14@#intervalLength": number | undefined;
|
|
89
89
|
setIntervalLength(intervalLength: number): void;
|
|
90
90
|
getIntervalLength(): number | undefined;
|
|
91
91
|
_startPolling(input: AccountTrackerPollingInput): void;
|
|
@@ -97,7 +97,7 @@ declare const AccountTrackerController_base: (abstract new (...args: any[]) => {
|
|
|
97
97
|
stopAllPolling(): void;
|
|
98
98
|
stopPollingByPollingToken(pollingToken: string): void;
|
|
99
99
|
onPollingComplete(input: AccountTrackerPollingInput, callback: (input: AccountTrackerPollingInput) => void): void;
|
|
100
|
-
}) & typeof import("@metamask/base-controller
|
|
100
|
+
}) & typeof import("@metamask/base-controller").BaseController;
|
|
101
101
|
/**
|
|
102
102
|
* Controller that tracks the network balances for all user accounts.
|
|
103
103
|
*/
|
|
@@ -109,7 +109,7 @@ export declare class AccountTrackerController extends AccountTrackerController_b
|
|
|
109
109
|
* @param options - The controller options.
|
|
110
110
|
* @param options.interval - Polling interval used to fetch new account balances.
|
|
111
111
|
* @param options.state - Initial state to set on this controller.
|
|
112
|
-
* @param options.messenger - The controller
|
|
112
|
+
* @param options.messenger - The controller messaging system.
|
|
113
113
|
* @param options.getStakedBalanceForChain - The function to get the staked native asset balance for a chain.
|
|
114
114
|
* @param options.includeStakedAssets - Whether to include staked assets in the account balances.
|
|
115
115
|
* @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountTrackerController.d.mts","sourceRoot":"","sources":["../src/AccountTrackerController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,+CAA+C,EAC/C,0CAA0C,EAC1C,oCAAoC,EACpC,4CAA4C,EAC7C,sCAAsC;AACvC,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,
|
|
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_getProvider, _AccountTrackerController_getNetworkClient, _AccountTrackerController_createAccountsApiFetcher, _AccountTrackerController_getCorrectNetworkClient, _AccountTrackerController_getNetworkClientIds, _AccountTrackerController_registerMessageHandlers;
|
|
12
|
+
var _AccountTrackerController_instances, _AccountTrackerController_refreshMutex, _AccountTrackerController_includeStakedAssets, _AccountTrackerController_accountsApiChainIds, _AccountTrackerController_getStakedBalanceForChain, _AccountTrackerController_balanceFetchers, _AccountTrackerController_getProvider, _AccountTrackerController_getNetworkClient, _AccountTrackerController_createAccountsApiFetcher, _AccountTrackerController_getCorrectNetworkClient, _AccountTrackerController_getNetworkClientIds, _AccountTrackerController_refreshAddress, _AccountTrackerController_refreshAccounts, _AccountTrackerController_registerMessageHandlers;
|
|
13
13
|
function $importDefault(module) {
|
|
14
14
|
if (module?.__esModule) {
|
|
15
15
|
return module.default;
|
|
@@ -68,7 +68,7 @@ const accountTrackerMetadata = {
|
|
|
68
68
|
accountsByChainId: {
|
|
69
69
|
includeInStateLogs: false,
|
|
70
70
|
persist: true,
|
|
71
|
-
|
|
71
|
+
anonymous: false,
|
|
72
72
|
usedInUi: true,
|
|
73
73
|
},
|
|
74
74
|
};
|
|
@@ -82,7 +82,7 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
82
82
|
* @param options - The controller options.
|
|
83
83
|
* @param options.interval - Polling interval used to fetch new account balances.
|
|
84
84
|
* @param options.state - Initial state to set on this controller.
|
|
85
|
-
* @param options.messenger - The controller
|
|
85
|
+
* @param options.messenger - The controller messaging system.
|
|
86
86
|
* @param options.getStakedBalanceForChain - The function to get the staked native asset balance for a chain.
|
|
87
87
|
* @param options.includeStakedAssets - Whether to include staked assets in the account balances.
|
|
88
88
|
* @param options.accountsApiChainIds - Function that returns array of chainIds that should use Accounts-API strategy (if supported by API).
|
|
@@ -109,17 +109,17 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
109
109
|
_AccountTrackerController_getStakedBalanceForChain.set(this, void 0);
|
|
110
110
|
_AccountTrackerController_balanceFetchers.set(this, void 0);
|
|
111
111
|
_AccountTrackerController_getProvider.set(this, (chainId) => {
|
|
112
|
-
const { networkConfigurationsByChainId } = this.
|
|
112
|
+
const { networkConfigurationsByChainId } = this.messagingSystem.call('NetworkController:getState');
|
|
113
113
|
const cfg = networkConfigurationsByChainId[chainId];
|
|
114
114
|
const { networkClientId } = cfg.rpcEndpoints[cfg.defaultRpcEndpointIndex];
|
|
115
|
-
const client = this.
|
|
115
|
+
const client = this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId);
|
|
116
116
|
return new Web3Provider(client.provider);
|
|
117
117
|
});
|
|
118
118
|
_AccountTrackerController_getNetworkClient.set(this, (chainId) => {
|
|
119
|
-
const { networkConfigurationsByChainId } = this.
|
|
119
|
+
const { networkConfigurationsByChainId } = this.messagingSystem.call('NetworkController:getState');
|
|
120
120
|
const cfg = networkConfigurationsByChainId[chainId];
|
|
121
121
|
const { networkClientId } = cfg.rpcEndpoints[cfg.defaultRpcEndpointIndex];
|
|
122
|
-
return this.
|
|
122
|
+
return this.messagingSystem.call('NetworkController:getNetworkClientById', networkClientId);
|
|
123
123
|
});
|
|
124
124
|
/**
|
|
125
125
|
* Creates an AccountsApiBalanceFetcher that only supports chains in the accountsApiChainIds array
|
|
@@ -150,19 +150,25 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
150
150
|
createAccountTrackerRpcBalanceFetcher(__classPrivateFieldGet(this, _AccountTrackerController_getProvider, "f"), __classPrivateFieldGet(this, _AccountTrackerController_getNetworkClient, "f"), __classPrivateFieldGet(this, _AccountTrackerController_includeStakedAssets, "f")),
|
|
151
151
|
], "f");
|
|
152
152
|
this.setIntervalLength(interval);
|
|
153
|
-
this.
|
|
153
|
+
this.messagingSystem.subscribe('AccountsController:selectedEvmAccountChange', (newAddress, prevAddress) => {
|
|
154
154
|
if (newAddress !== prevAddress) {
|
|
155
155
|
// Making an async call for this new event
|
|
156
156
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
157
157
|
this.refresh(__classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getNetworkClientIds).call(this));
|
|
158
158
|
}
|
|
159
159
|
}, (event) => event.address);
|
|
160
|
+
this.messagingSystem.subscribe('TransactionController:unapprovedTransactionAdded', async (transactionMeta) => {
|
|
161
|
+
await __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_refreshAddress).call(this, [transactionMeta.networkClientId], transactionMeta.txParams.from);
|
|
162
|
+
});
|
|
163
|
+
this.messagingSystem.subscribe('TransactionController:transactionConfirmed', async (transactionMeta) => {
|
|
164
|
+
await __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_refreshAddress).call(this, [transactionMeta.networkClientId], transactionMeta.txParams.from);
|
|
165
|
+
});
|
|
160
166
|
__classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_registerMessageHandlers).call(this);
|
|
161
167
|
}
|
|
162
168
|
syncAccounts(newChainIds) {
|
|
163
169
|
const accountsByChainId = cloneDeep(this.state.accountsByChainId);
|
|
164
|
-
const { selectedNetworkClientId } = this.
|
|
165
|
-
const { configuration: { chainId: currentChainId }, } = this.
|
|
170
|
+
const { selectedNetworkClientId } = this.messagingSystem.call('NetworkController:getState');
|
|
171
|
+
const { configuration: { chainId: currentChainId }, } = this.messagingSystem.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
|
|
166
172
|
const existing = Object.keys(accountsByChainId?.[currentChainId] ?? {});
|
|
167
173
|
// Initialize new chain IDs if they don't exist
|
|
168
174
|
newChainIds.forEach((newChainId) => {
|
|
@@ -175,7 +181,7 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
175
181
|
});
|
|
176
182
|
// Note: The address from the preferences controller are checksummed
|
|
177
183
|
// The addresses from the accounts controller are lowercased
|
|
178
|
-
const addresses = Object.values(this.
|
|
184
|
+
const addresses = Object.values(this.messagingSystem
|
|
179
185
|
.call('AccountsController:listAccounts')
|
|
180
186
|
.map((internalAccount) => toChecksumHexAddress(internalAccount.address)));
|
|
181
187
|
const newAddresses = addresses.filter((address) => !existing.includes(address));
|
|
@@ -219,114 +225,15 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
219
225
|
* @param queryAllAccounts - Whether to query all accounts or just the selected account
|
|
220
226
|
*/
|
|
221
227
|
async refresh(networkClientIds, queryAllAccounts = false) {
|
|
222
|
-
const selectedAccount = this.
|
|
223
|
-
const allAccounts = this.
|
|
224
|
-
const { isMultiAccountBalancesEnabled } = this.
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
this.syncAccounts(chainIds);
|
|
232
|
-
// Use balance fetchers with fallback strategy
|
|
233
|
-
const aggregated = [];
|
|
234
|
-
let remainingChains = [...chainIds];
|
|
235
|
-
// Try each fetcher in order, removing successfully processed chains
|
|
236
|
-
for (const fetcher of __classPrivateFieldGet(this, _AccountTrackerController_balanceFetchers, "f")) {
|
|
237
|
-
const supportedChains = remainingChains.filter((c) => fetcher.supports(c));
|
|
238
|
-
if (!supportedChains.length) {
|
|
239
|
-
continue;
|
|
240
|
-
}
|
|
241
|
-
try {
|
|
242
|
-
const balances = await fetcher.fetch({
|
|
243
|
-
chainIds: supportedChains,
|
|
244
|
-
queryAllAccounts: queryAllAccounts ?? isMultiAccountBalancesEnabled,
|
|
245
|
-
selectedAccount: toChecksumHexAddress(selectedAccount.address),
|
|
246
|
-
allAccounts,
|
|
247
|
-
});
|
|
248
|
-
if (balances && balances.length > 0) {
|
|
249
|
-
aggregated.push(...balances);
|
|
250
|
-
// Remove chains that were successfully processed
|
|
251
|
-
const processedChains = new Set(balances.map((b) => b.chainId));
|
|
252
|
-
remainingChains = remainingChains.filter((chain) => !processedChains.has(chain));
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
catch (error) {
|
|
256
|
-
console.warn(`Balance fetcher failed for chains ${supportedChains.join(', ')}: ${String(error)}`);
|
|
257
|
-
// Continue to next fetcher (fallback)
|
|
258
|
-
}
|
|
259
|
-
// If all chains have been processed, break early
|
|
260
|
-
if (remainingChains.length === 0) {
|
|
261
|
-
break;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
// Build a _copy_ of the current state and track whether anything changed
|
|
265
|
-
const nextAccountsByChainId = cloneDeep(this.state.accountsByChainId);
|
|
266
|
-
let hasChanges = false;
|
|
267
|
-
// Process the aggregated balance results
|
|
268
|
-
const stakedBalancesByChainAndAddress = {};
|
|
269
|
-
aggregated.forEach(({ success, value, account, token, chainId }) => {
|
|
270
|
-
if (success && value !== undefined) {
|
|
271
|
-
const checksumAddress = toChecksumHexAddress(account);
|
|
272
|
-
const hexValue = `0x${value.toString(16)}`;
|
|
273
|
-
if (token === ZERO_ADDRESS) {
|
|
274
|
-
// Native balance
|
|
275
|
-
// Ensure the account entry exists before accessing it
|
|
276
|
-
if (!nextAccountsByChainId[chainId]) {
|
|
277
|
-
nextAccountsByChainId[chainId] = {};
|
|
278
|
-
}
|
|
279
|
-
if (!nextAccountsByChainId[chainId][checksumAddress]) {
|
|
280
|
-
nextAccountsByChainId[chainId][checksumAddress] = {
|
|
281
|
-
balance: '0x0',
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
if (nextAccountsByChainId[chainId][checksumAddress].balance !==
|
|
285
|
-
hexValue) {
|
|
286
|
-
nextAccountsByChainId[chainId][checksumAddress].balance =
|
|
287
|
-
hexValue;
|
|
288
|
-
hasChanges = true;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
else if (STAKING_CONTRACT_ADDRESS_BY_CHAINID[chainId]?.toLowerCase() ===
|
|
292
|
-
token.toLowerCase()) {
|
|
293
|
-
// Staked balance (from staking contract address)
|
|
294
|
-
if (!stakedBalancesByChainAndAddress[chainId]) {
|
|
295
|
-
stakedBalancesByChainAndAddress[chainId] = {};
|
|
296
|
-
}
|
|
297
|
-
stakedBalancesByChainAndAddress[chainId][checksumAddress] =
|
|
298
|
-
hexValue;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
// Apply staked balances
|
|
303
|
-
Object.entries(stakedBalancesByChainAndAddress).forEach(([chainId, balancesByAddress]) => {
|
|
304
|
-
Object.entries(balancesByAddress).forEach(([address, stakedBalance]) => {
|
|
305
|
-
// Ensure account structure exists
|
|
306
|
-
if (!nextAccountsByChainId[chainId]) {
|
|
307
|
-
nextAccountsByChainId[chainId] = {};
|
|
308
|
-
}
|
|
309
|
-
if (!nextAccountsByChainId[chainId][address]) {
|
|
310
|
-
nextAccountsByChainId[chainId][address] = { balance: '0x0' };
|
|
311
|
-
}
|
|
312
|
-
if (nextAccountsByChainId[chainId][address].stakedBalance !==
|
|
313
|
-
stakedBalance) {
|
|
314
|
-
nextAccountsByChainId[chainId][address].stakedBalance =
|
|
315
|
-
stakedBalance;
|
|
316
|
-
hasChanges = true;
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
// Only update state if something changed
|
|
321
|
-
if (hasChanges) {
|
|
322
|
-
this.update((state) => {
|
|
323
|
-
state.accountsByChainId = nextAccountsByChainId;
|
|
324
|
-
});
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
finally {
|
|
328
|
-
releaseLock();
|
|
329
|
-
}
|
|
228
|
+
const selectedAccount = this.messagingSystem.call('AccountsController:getSelectedAccount');
|
|
229
|
+
const allAccounts = this.messagingSystem.call('AccountsController:listAccounts');
|
|
230
|
+
const { isMultiAccountBalancesEnabled } = this.messagingSystem.call('PreferencesController:getState');
|
|
231
|
+
await __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_refreshAccounts).call(this, {
|
|
232
|
+
networkClientIds,
|
|
233
|
+
queryAllAccounts: queryAllAccounts ?? isMultiAccountBalancesEnabled,
|
|
234
|
+
selectedAccount: toChecksumHexAddress(selectedAccount.address),
|
|
235
|
+
allAccounts,
|
|
236
|
+
});
|
|
330
237
|
}
|
|
331
238
|
/**
|
|
332
239
|
* Sync accounts balances with some additional addresses.
|
|
@@ -448,8 +355,9 @@ export class AccountTrackerController extends StaticIntervalPollingController()
|
|
|
448
355
|
}
|
|
449
356
|
_AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerController_includeStakedAssets = new WeakMap(), _AccountTrackerController_accountsApiChainIds = new WeakMap(), _AccountTrackerController_getStakedBalanceForChain = new WeakMap(), _AccountTrackerController_balanceFetchers = new WeakMap(), _AccountTrackerController_getProvider = new WeakMap(), _AccountTrackerController_getNetworkClient = new WeakMap(), _AccountTrackerController_createAccountsApiFetcher = new WeakMap(), _AccountTrackerController_instances = new WeakSet(), _AccountTrackerController_getCorrectNetworkClient = function _AccountTrackerController_getCorrectNetworkClient(networkClientId) {
|
|
450
357
|
const selectedNetworkClientId = networkClientId ??
|
|
451
|
-
this.
|
|
452
|
-
|
|
358
|
+
this.messagingSystem.call('NetworkController:getState')
|
|
359
|
+
.selectedNetworkClientId;
|
|
360
|
+
const { configuration: { chainId }, provider, blockTracker, } = this.messagingSystem.call('NetworkController:getNetworkClientById', selectedNetworkClientId);
|
|
453
361
|
return {
|
|
454
362
|
chainId,
|
|
455
363
|
provider,
|
|
@@ -457,11 +365,125 @@ _AccountTrackerController_refreshMutex = new WeakMap(), _AccountTrackerControlle
|
|
|
457
365
|
blockTracker,
|
|
458
366
|
};
|
|
459
367
|
}, _AccountTrackerController_getNetworkClientIds = function _AccountTrackerController_getNetworkClientIds() {
|
|
460
|
-
const { networkConfigurationsByChainId } = this.
|
|
368
|
+
const { networkConfigurationsByChainId } = this.messagingSystem.call('NetworkController:getState');
|
|
461
369
|
return Object.values(networkConfigurationsByChainId).flatMap((networkConfiguration) => networkConfiguration.rpcEndpoints.map((rpcEndpoint) => rpcEndpoint.networkClientId));
|
|
370
|
+
}, _AccountTrackerController_refreshAddress = async function _AccountTrackerController_refreshAddress(networkClientIds, address) {
|
|
371
|
+
const checksumAddress = toChecksumHexAddress(address);
|
|
372
|
+
await __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_refreshAccounts).call(this, {
|
|
373
|
+
networkClientIds,
|
|
374
|
+
queryAllAccounts: false,
|
|
375
|
+
selectedAccount: checksumAddress,
|
|
376
|
+
allAccounts: [],
|
|
377
|
+
});
|
|
378
|
+
}, _AccountTrackerController_refreshAccounts = async function _AccountTrackerController_refreshAccounts({ networkClientIds, queryAllAccounts, selectedAccount, allAccounts, }) {
|
|
379
|
+
const releaseLock = await __classPrivateFieldGet(this, _AccountTrackerController_refreshMutex, "f").acquire();
|
|
380
|
+
try {
|
|
381
|
+
const chainIds = networkClientIds.map((networkClientId) => {
|
|
382
|
+
const { chainId } = __classPrivateFieldGet(this, _AccountTrackerController_instances, "m", _AccountTrackerController_getCorrectNetworkClient).call(this, networkClientId);
|
|
383
|
+
return chainId;
|
|
384
|
+
});
|
|
385
|
+
this.syncAccounts(chainIds);
|
|
386
|
+
// Use balance fetchers with fallback strategy
|
|
387
|
+
const aggregated = [];
|
|
388
|
+
let remainingChains = [...chainIds];
|
|
389
|
+
// Try each fetcher in order, removing successfully processed chains
|
|
390
|
+
for (const fetcher of __classPrivateFieldGet(this, _AccountTrackerController_balanceFetchers, "f")) {
|
|
391
|
+
const supportedChains = remainingChains.filter((c) => fetcher.supports(c));
|
|
392
|
+
if (!supportedChains.length) {
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
try {
|
|
396
|
+
const balances = await fetcher.fetch({
|
|
397
|
+
chainIds: supportedChains,
|
|
398
|
+
queryAllAccounts,
|
|
399
|
+
selectedAccount,
|
|
400
|
+
allAccounts,
|
|
401
|
+
});
|
|
402
|
+
if (balances && balances.length > 0) {
|
|
403
|
+
aggregated.push(...balances);
|
|
404
|
+
// Remove chains that were successfully processed
|
|
405
|
+
const processedChains = new Set(balances.map((b) => b.chainId));
|
|
406
|
+
remainingChains = remainingChains.filter((chain) => !processedChains.has(chain));
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
catch (error) {
|
|
410
|
+
console.warn(`Balance fetcher failed for chains ${supportedChains.join(', ')}: ${String(error)}`);
|
|
411
|
+
// Continue to next fetcher (fallback)
|
|
412
|
+
}
|
|
413
|
+
// If all chains have been processed, break early
|
|
414
|
+
if (remainingChains.length === 0) {
|
|
415
|
+
break;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
// Build a _copy_ of the current state and track whether anything changed
|
|
419
|
+
const nextAccountsByChainId = cloneDeep(this.state.accountsByChainId);
|
|
420
|
+
let hasChanges = false;
|
|
421
|
+
// Process the aggregated balance results
|
|
422
|
+
const stakedBalancesByChainAndAddress = {};
|
|
423
|
+
aggregated.forEach(({ success, value, account, token, chainId }) => {
|
|
424
|
+
if (success && value !== undefined) {
|
|
425
|
+
const checksumAddress = toChecksumHexAddress(account);
|
|
426
|
+
const hexValue = `0x${value.toString(16)}`;
|
|
427
|
+
if (token === ZERO_ADDRESS) {
|
|
428
|
+
// Native balance
|
|
429
|
+
// Ensure the account entry exists before accessing it
|
|
430
|
+
if (!nextAccountsByChainId[chainId]) {
|
|
431
|
+
nextAccountsByChainId[chainId] = {};
|
|
432
|
+
}
|
|
433
|
+
if (!nextAccountsByChainId[chainId][checksumAddress]) {
|
|
434
|
+
nextAccountsByChainId[chainId][checksumAddress] = {
|
|
435
|
+
balance: '0x0',
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
if (nextAccountsByChainId[chainId][checksumAddress].balance !==
|
|
439
|
+
hexValue) {
|
|
440
|
+
nextAccountsByChainId[chainId][checksumAddress].balance =
|
|
441
|
+
hexValue;
|
|
442
|
+
hasChanges = true;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
else if (STAKING_CONTRACT_ADDRESS_BY_CHAINID[chainId]?.toLowerCase() ===
|
|
446
|
+
token.toLowerCase()) {
|
|
447
|
+
// Staked balance (from staking contract address)
|
|
448
|
+
if (!stakedBalancesByChainAndAddress[chainId]) {
|
|
449
|
+
stakedBalancesByChainAndAddress[chainId] = {};
|
|
450
|
+
}
|
|
451
|
+
stakedBalancesByChainAndAddress[chainId][checksumAddress] =
|
|
452
|
+
hexValue;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
// Apply staked balances
|
|
457
|
+
Object.entries(stakedBalancesByChainAndAddress).forEach(([chainId, balancesByAddress]) => {
|
|
458
|
+
Object.entries(balancesByAddress).forEach(([address, stakedBalance]) => {
|
|
459
|
+
// Ensure account structure exists
|
|
460
|
+
if (!nextAccountsByChainId[chainId]) {
|
|
461
|
+
nextAccountsByChainId[chainId] = {};
|
|
462
|
+
}
|
|
463
|
+
if (!nextAccountsByChainId[chainId][address]) {
|
|
464
|
+
nextAccountsByChainId[chainId][address] = { balance: '0x0' };
|
|
465
|
+
}
|
|
466
|
+
if (nextAccountsByChainId[chainId][address].stakedBalance !==
|
|
467
|
+
stakedBalance) {
|
|
468
|
+
nextAccountsByChainId[chainId][address].stakedBalance =
|
|
469
|
+
stakedBalance;
|
|
470
|
+
hasChanges = true;
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
});
|
|
474
|
+
// Only update state if something changed
|
|
475
|
+
if (hasChanges) {
|
|
476
|
+
this.update((state) => {
|
|
477
|
+
state.accountsByChainId = nextAccountsByChainId;
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
finally {
|
|
482
|
+
releaseLock();
|
|
483
|
+
}
|
|
462
484
|
}, _AccountTrackerController_registerMessageHandlers = function _AccountTrackerController_registerMessageHandlers() {
|
|
463
|
-
this.
|
|
464
|
-
this.
|
|
485
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:updateNativeBalances`, this.updateNativeBalances.bind(this));
|
|
486
|
+
this.messagingSystem.registerActionHandler(`${controllerName}:updateStakedBalances`, this.updateStakedBalances.bind(this));
|
|
465
487
|
};
|
|
466
488
|
export default AccountTrackerController;
|
|
467
489
|
//# sourceMappingURL=AccountTrackerController.mjs.map
|