@metamask/assets-controller 0.2.0 → 2.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.
- package/CHANGELOG.md +39 -1
- package/dist/AssetsController-method-action-types.cjs +7 -0
- package/dist/AssetsController-method-action-types.cjs.map +1 -0
- package/dist/AssetsController-method-action-types.d.cts +78 -0
- package/dist/AssetsController-method-action-types.d.cts.map +1 -0
- package/dist/AssetsController-method-action-types.d.mts +78 -0
- package/dist/AssetsController-method-action-types.d.mts.map +1 -0
- package/dist/AssetsController-method-action-types.mjs +6 -0
- package/dist/AssetsController-method-action-types.mjs.map +1 -0
- package/dist/AssetsController.cjs +346 -271
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +92 -96
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +92 -96
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +347 -272
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/AbstractDataSource.cjs +8 -0
- package/dist/data-sources/AbstractDataSource.cjs.map +1 -1
- package/dist/data-sources/AbstractDataSource.d.cts +16 -1
- package/dist/data-sources/AbstractDataSource.d.cts.map +1 -1
- package/dist/data-sources/AbstractDataSource.d.mts +16 -1
- package/dist/data-sources/AbstractDataSource.d.mts.map +1 -1
- package/dist/data-sources/AbstractDataSource.mjs +8 -0
- package/dist/data-sources/AbstractDataSource.mjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.cjs +92 -111
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.cts +27 -70
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.d.mts +27 -70
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
- package/dist/data-sources/AccountsApiDataSource.mjs +88 -107
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.cjs +141 -46
- package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.cts +19 -66
- package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.d.mts +19 -66
- package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
- package/dist/data-sources/BackendWebsocketDataSource.mjs +141 -46
- package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +39 -48
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts +13 -92
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts +13 -92
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +39 -48
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +184 -142
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts +29 -114
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts +29 -114
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +185 -143
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/SnapDataSource.cjs +53 -39
- package/dist/data-sources/SnapDataSource.cjs.map +1 -1
- package/dist/data-sources/SnapDataSource.d.cts +9 -45
- package/dist/data-sources/SnapDataSource.d.cts.map +1 -1
- package/dist/data-sources/SnapDataSource.d.mts +9 -45
- package/dist/data-sources/SnapDataSource.d.mts.map +1 -1
- package/dist/data-sources/SnapDataSource.mjs +53 -39
- package/dist/data-sources/SnapDataSource.mjs.map +1 -1
- package/dist/data-sources/StakedBalanceDataSource.cjs +609 -0
- package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.d.cts +72 -0
- package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.d.mts +72 -0
- package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.mjs +605 -0
- package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -0
- package/dist/data-sources/TokenDataSource.cjs +15 -21
- package/dist/data-sources/TokenDataSource.cjs.map +1 -1
- package/dist/data-sources/TokenDataSource.d.cts +3 -25
- package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
- package/dist/data-sources/TokenDataSource.d.mts +3 -25
- package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
- package/dist/data-sources/TokenDataSource.mjs +15 -21
- package/dist/data-sources/TokenDataSource.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/index.cjs +5 -1
- package/dist/data-sources/evm-rpc-services/index.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/index.d.cts +1 -1
- package/dist/data-sources/evm-rpc-services/index.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/index.d.mts +1 -1
- package/dist/data-sources/evm-rpc-services/index.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/index.mjs +1 -1
- package/dist/data-sources/evm-rpc-services/index.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs +132 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts +78 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts +78 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs +126 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs +16 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.cts +5 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts +5 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs +16 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/index.cjs +6 -1
- package/dist/data-sources/evm-rpc-services/services/index.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/index.d.cts +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/index.d.mts +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/index.mjs +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/services.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/services.d.cts +4 -0
- package/dist/data-sources/evm-rpc-services/types/services.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/services.d.mts +4 -0
- package/dist/data-sources/evm-rpc-services/types/services.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/services.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/state.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/state.d.cts +3 -3
- package/dist/data-sources/evm-rpc-services/types/state.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/state.d.mts +3 -3
- package/dist/data-sources/evm-rpc-services/types/state.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/types/state.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/index.cjs +9 -1
- package/dist/data-sources/evm-rpc-services/utils/index.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/index.d.cts +2 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/index.d.mts +2 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/index.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/utils/index.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/utils/parsing.cjs +47 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts +25 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts +25 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.mjs +39 -0
- package/dist/data-sources/evm-rpc-services/utils/parsing.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs +68 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts +25 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts +25 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs +62 -0
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs.map +1 -0
- package/dist/data-sources/index.cjs +3 -6
- package/dist/data-sources/index.cjs.map +1 -1
- package/dist/data-sources/index.d.cts +7 -7
- package/dist/data-sources/index.d.cts.map +1 -1
- package/dist/data-sources/index.d.mts +7 -7
- package/dist/data-sources/index.d.mts.map +1 -1
- package/dist/data-sources/index.mjs +2 -3
- package/dist/data-sources/index.mjs.map +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -11
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +11 -11
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/dist/middlewares/DetectionMiddleware.cjs +8 -28
- package/dist/middlewares/DetectionMiddleware.cjs.map +1 -1
- package/dist/middlewares/DetectionMiddleware.d.cts +4 -26
- package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -1
- package/dist/middlewares/DetectionMiddleware.d.mts +4 -26
- package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -1
- package/dist/middlewares/DetectionMiddleware.mjs +8 -28
- package/dist/middlewares/DetectionMiddleware.mjs.map +1 -1
- package/dist/middlewares/index.cjs.map +1 -1
- package/dist/middlewares/index.d.cts +1 -1
- package/dist/middlewares/index.d.cts.map +1 -1
- package/dist/middlewares/index.d.mts +1 -1
- package/dist/middlewares/index.d.mts.map +1 -1
- package/dist/middlewares/index.mjs.map +1 -1
- package/dist/selectors/balance.cjs +306 -0
- package/dist/selectors/balance.cjs.map +1 -0
- package/dist/selectors/balance.d.cts +22 -0
- package/dist/selectors/balance.d.cts.map +1 -0
- package/dist/selectors/balance.d.mts +22 -0
- package/dist/selectors/balance.d.mts.map +1 -0
- package/dist/selectors/balance.mjs +297 -0
- package/dist/selectors/balance.mjs.map +1 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +56 -21
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +56 -21
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +13 -10
- package/dist/data-sources/initDataSources.cjs +0 -215
- package/dist/data-sources/initDataSources.cjs.map +0 -1
- package/dist/data-sources/initDataSources.d.cts +0 -140
- package/dist/data-sources/initDataSources.d.cts.map +0 -1
- package/dist/data-sources/initDataSources.d.mts +0 -140
- package/dist/data-sources/initDataSources.d.mts.map +0 -1
- package/dist/data-sources/initDataSources.mjs +0 -210
- package/dist/data-sources/initDataSources.mjs.map +0 -1
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import type { AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, AccountTreeControllerSelectedAccountGroupChangeEvent } from "@metamask/account-tree-controller";
|
|
2
|
+
import type { GetTokenListState } from "@metamask/assets-controllers";
|
|
2
3
|
import { BaseController } from "@metamask/base-controller";
|
|
3
4
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
5
|
+
import type { ApiPlatformClient, BackendWebSocketServiceActions, BackendWebSocketServiceEvents } from "@metamask/core-backend";
|
|
4
6
|
import type { KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
5
7
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
6
8
|
import type { Messenger } from "@metamask/messenger";
|
|
9
|
+
import type { NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, NetworkControllerStateChangeEvent } from "@metamask/network-controller";
|
|
7
10
|
import type { NetworkEnablementControllerGetStateAction, NetworkEnablementControllerEvents } from "@metamask/network-enablement-controller";
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
import type {
|
|
11
|
-
import type {
|
|
12
|
-
import type {
|
|
13
|
-
import type {
|
|
14
|
-
import type {
|
|
11
|
+
import type { GetPermissions, PermissionControllerStateChange } from "@metamask/permission-controller";
|
|
12
|
+
import type { PreferencesControllerStateChangeEvent } from "@metamask/preferences-controller";
|
|
13
|
+
import type { GetRunnableSnaps, HandleSnapRequest } from "@metamask/snaps-controllers";
|
|
14
|
+
import type { TransactionControllerIncomingTransactionsReceivedEvent, TransactionControllerTransactionConfirmedEvent } from "@metamask/transaction-controller";
|
|
15
|
+
import type { AssetsControllerMethodActions } from "./AssetsController-method-action-types.cjs";
|
|
16
|
+
import type { AccountsApiDataSourceConfig } from "./data-sources/AccountsApiDataSource.cjs";
|
|
17
|
+
import type { PriceDataSourceConfig } from "./data-sources/PriceDataSource.cjs";
|
|
18
|
+
import type { RpcDataSourceConfig } from "./data-sources/RpcDataSource.cjs";
|
|
19
|
+
import type { AccountsControllerAccountBalancesUpdatedEvent } from "./data-sources/SnapDataSource.cjs";
|
|
20
|
+
import type { StakedBalanceDataSourceConfig } from "./data-sources/StakedBalanceDataSource.cjs";
|
|
21
|
+
import type { AccountId, AssetPreferences, ChainId, Caip19AssetId, AssetMetadata, AssetPrice, AssetBalance, AssetType, DataType, DataRequest, DataResponse, Asset } from "./types.cjs";
|
|
15
22
|
declare const CONTROLLER_NAME: "AssetsController";
|
|
16
23
|
/**
|
|
17
24
|
* State structure for AssetsController.
|
|
@@ -23,7 +30,7 @@ declare const CONTROLLER_NAME: "AssetsController";
|
|
|
23
30
|
*/
|
|
24
31
|
export type AssetsControllerState = {
|
|
25
32
|
/** Shared metadata for all assets (stored once per asset) */
|
|
26
|
-
|
|
33
|
+
assetsInfo: {
|
|
27
34
|
[assetId: string]: AssetMetadata;
|
|
28
35
|
};
|
|
29
36
|
/** Per-account balance data */
|
|
@@ -52,51 +59,7 @@ export type AssetsControllerState = {
|
|
|
52
59
|
*/
|
|
53
60
|
export declare function getDefaultAssetsControllerState(): AssetsControllerState;
|
|
54
61
|
export type AssetsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, AssetsControllerState>;
|
|
55
|
-
export type
|
|
56
|
-
type: `${typeof CONTROLLER_NAME}:getAssets`;
|
|
57
|
-
handler: AssetsController['getAssets'];
|
|
58
|
-
};
|
|
59
|
-
export type AssetsControllerGetAssetsBalanceAction = {
|
|
60
|
-
type: `${typeof CONTROLLER_NAME}:getAssetsBalance`;
|
|
61
|
-
handler: AssetsController['getAssetsBalance'];
|
|
62
|
-
};
|
|
63
|
-
export type AssetsControllerGetAssetMetadataAction = {
|
|
64
|
-
type: `${typeof CONTROLLER_NAME}:getAssetMetadata`;
|
|
65
|
-
handler: AssetsController['getAssetMetadata'];
|
|
66
|
-
};
|
|
67
|
-
export type AssetsControllerGetAssetsPriceAction = {
|
|
68
|
-
type: `${typeof CONTROLLER_NAME}:getAssetsPrice`;
|
|
69
|
-
handler: AssetsController['getAssetsPrice'];
|
|
70
|
-
};
|
|
71
|
-
export type AssetsControllerActiveChainsUpdateAction = {
|
|
72
|
-
type: `${typeof CONTROLLER_NAME}:activeChainsUpdate`;
|
|
73
|
-
handler: AssetsController['handleActiveChainsUpdate'];
|
|
74
|
-
};
|
|
75
|
-
export type AssetsControllerAssetsUpdateAction = {
|
|
76
|
-
type: `${typeof CONTROLLER_NAME}:assetsUpdate`;
|
|
77
|
-
handler: AssetsController['handleAssetsUpdate'];
|
|
78
|
-
};
|
|
79
|
-
export type AssetsControllerAddCustomAssetAction = {
|
|
80
|
-
type: `${typeof CONTROLLER_NAME}:addCustomAsset`;
|
|
81
|
-
handler: AssetsController['addCustomAsset'];
|
|
82
|
-
};
|
|
83
|
-
export type AssetsControllerRemoveCustomAssetAction = {
|
|
84
|
-
type: `${typeof CONTROLLER_NAME}:removeCustomAsset`;
|
|
85
|
-
handler: AssetsController['removeCustomAsset'];
|
|
86
|
-
};
|
|
87
|
-
export type AssetsControllerGetCustomAssetsAction = {
|
|
88
|
-
type: `${typeof CONTROLLER_NAME}:getCustomAssets`;
|
|
89
|
-
handler: AssetsController['getCustomAssets'];
|
|
90
|
-
};
|
|
91
|
-
export type AssetsControllerHideAssetAction = {
|
|
92
|
-
type: `${typeof CONTROLLER_NAME}:hideAsset`;
|
|
93
|
-
handler: AssetsController['hideAsset'];
|
|
94
|
-
};
|
|
95
|
-
export type AssetsControllerUnhideAssetAction = {
|
|
96
|
-
type: `${typeof CONTROLLER_NAME}:unhideAsset`;
|
|
97
|
-
handler: AssetsController['unhideAsset'];
|
|
98
|
-
};
|
|
99
|
-
export type AssetsControllerActions = AssetsControllerGetStateAction | AssetsControllerGetAssetsAction | AssetsControllerGetAssetsBalanceAction | AssetsControllerGetAssetMetadataAction | AssetsControllerGetAssetsPriceAction | AssetsControllerActiveChainsUpdateAction | AssetsControllerAssetsUpdateAction | AssetsControllerAddCustomAssetAction | AssetsControllerRemoveCustomAssetAction | AssetsControllerGetCustomAssetsAction | AssetsControllerHideAssetAction | AssetsControllerUnhideAssetAction;
|
|
62
|
+
export type AssetsControllerActions = AssetsControllerGetStateAction | AssetsControllerMethodActions;
|
|
100
63
|
export type AssetsControllerStateChangeEvent = ControllerStateChangeEvent<typeof CONTROLLER_NAME, AssetsControllerState>;
|
|
101
64
|
export type AssetsControllerBalanceChangedEvent = {
|
|
102
65
|
type: `${typeof CONTROLLER_NAME}:balanceChanged`;
|
|
@@ -123,23 +86,25 @@ export type AssetsControllerAssetsDetectedEvent = {
|
|
|
123
86
|
}];
|
|
124
87
|
};
|
|
125
88
|
export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
|
|
126
|
-
type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction |
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
*/
|
|
130
|
-
export type AppStateControllerAppOpenedEvent = {
|
|
131
|
-
type: 'AppStateController:appOpened';
|
|
132
|
-
payload: [];
|
|
133
|
-
};
|
|
89
|
+
type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | GetTokenListState | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | GetRunnableSnaps | HandleSnapRequest | GetPermissions | BackendWebSocketServiceActions;
|
|
90
|
+
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent | TransactionControllerIncomingTransactionsReceivedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | BackendWebSocketServiceEvents;
|
|
91
|
+
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
134
92
|
/**
|
|
135
|
-
*
|
|
93
|
+
* Payload for the first init/fetch MetaMetrics event.
|
|
94
|
+
* Passed to the optional trackMetaMetricsEvent callback when the initial
|
|
95
|
+
* asset fetch completes after unlock or app open.
|
|
136
96
|
*/
|
|
137
|
-
export type
|
|
138
|
-
|
|
139
|
-
|
|
97
|
+
export type AssetsControllerFirstInitFetchMetaMetricsPayload = {
|
|
98
|
+
/** Duration of the first init fetch in milliseconds (wall-clock). */
|
|
99
|
+
durationMs: number;
|
|
100
|
+
/** Chain IDs requested in the fetch (e.g. ['eip155:1', 'eip155:137']). */
|
|
101
|
+
chainIds: string[];
|
|
102
|
+
/**
|
|
103
|
+
* Exclusive latency in ms per data source (time spent in that source only).
|
|
104
|
+
* Sum of values approximates durationMs. Order: same as middleware chain.
|
|
105
|
+
*/
|
|
106
|
+
durationByDataSource: Record<string, number>;
|
|
140
107
|
};
|
|
141
|
-
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | NetworkEnablementControllerEvents | AppStateControllerAppOpenedEvent | AppStateControllerAppClosedEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent;
|
|
142
|
-
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
143
108
|
export type AssetsControllerOptions = {
|
|
144
109
|
messenger: AssetsControllerMessenger;
|
|
145
110
|
state?: Partial<AssetsControllerState>;
|
|
@@ -147,6 +112,41 @@ export type AssetsControllerOptions = {
|
|
|
147
112
|
defaultUpdateInterval?: number;
|
|
148
113
|
/** Function to determine if the controller is enabled. Defaults to true. */
|
|
149
114
|
isEnabled?: () => boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Getter for basic functionality (matches the "Basic functionality" setting in the UI).
|
|
117
|
+
* When it returns true, internet services are on: token/price APIs are used for metadata, price,
|
|
118
|
+
* and price subscription. When false, only RPC is used (no token/price APIs).
|
|
119
|
+
* No value is stored; the getter is invoked when needed.
|
|
120
|
+
* Defaults to () => true when not provided (APIs enabled).
|
|
121
|
+
*/
|
|
122
|
+
isBasicFunctionality?: () => boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Called by the controller with an onChange callback. The consumer subscribes to its own
|
|
125
|
+
* basic-functionality source (e.g. PreferencesController:stateChange in extension, or a
|
|
126
|
+
* different mechanism in mobile) and invokes onChange(isBasic) when the value changes.
|
|
127
|
+
* The controller will then refresh its subscriptions. May return an unsubscribe function
|
|
128
|
+
* called on controller destroy. Optional; when omitted, basic-functionality changes are not
|
|
129
|
+
* subscribed to (e.g. host can notify via root messenger or another path).
|
|
130
|
+
*/
|
|
131
|
+
subscribeToBasicFunctionalityChange?: (onChange: (isBasic: boolean) => void) => void | (() => void);
|
|
132
|
+
/**
|
|
133
|
+
* API client for balance/price/metadata. The controller instantiates data sources
|
|
134
|
+
* and uses them directly when this is provided.
|
|
135
|
+
*/
|
|
136
|
+
queryApiClient: ApiPlatformClient;
|
|
137
|
+
/** Optional configuration for RpcDataSource. */
|
|
138
|
+
rpcDataSourceConfig?: RpcDataSourceConfig;
|
|
139
|
+
/**
|
|
140
|
+
* Optional callback invoked when the first init/fetch completes (e.g. after unlock).
|
|
141
|
+
* Use this to track first init fetch duration in MetaMetrics.
|
|
142
|
+
*/
|
|
143
|
+
trackMetaMetricsEvent?: (payload: AssetsControllerFirstInitFetchMetaMetricsPayload) => void;
|
|
144
|
+
/** Optional configuration for AccountsApiDataSource. */
|
|
145
|
+
accountsApiDataSourceConfig?: AccountsApiDataSourceConfig;
|
|
146
|
+
/** Optional configuration for PriceDataSource. */
|
|
147
|
+
priceDataSourceConfig?: PriceDataSourceConfig;
|
|
148
|
+
/** Optional configuration for StakedBalanceDataSource. */
|
|
149
|
+
stakedBalanceDataSourceConfig?: StakedBalanceDataSourceConfig;
|
|
150
150
|
};
|
|
151
151
|
/**
|
|
152
152
|
* AssetsController provides a unified interface for managing asset balances
|
|
@@ -164,13 +164,8 @@ export type AssetsControllerOptions = {
|
|
|
164
164
|
* based on which chains they support. When active chains change, the controller
|
|
165
165
|
* dynamically adjusts subscriptions.
|
|
166
166
|
*
|
|
167
|
-
* 4. **
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* ## App Lifecycle
|
|
171
|
-
*
|
|
172
|
-
* - **App Opened** (`AppStateController:appOpened`): Starts subscriptions, fetches initial data
|
|
173
|
-
* - **App Closed** (`AppStateController:appClosed`): Stops all subscriptions to conserve resources
|
|
167
|
+
* 4. **Keyring Lifecycle**: Listens to KeyringController unlock/lock events to
|
|
168
|
+
* start/stop subscriptions when the wallet is unlocked or locked.
|
|
174
169
|
*
|
|
175
170
|
* ## Architecture
|
|
176
171
|
*
|
|
@@ -180,27 +175,21 @@ export type AssetsControllerOptions = {
|
|
|
180
175
|
*/
|
|
181
176
|
export declare class AssetsController extends BaseController<typeof CONTROLLER_NAME, AssetsControllerState, AssetsControllerMessenger> {
|
|
182
177
|
#private;
|
|
183
|
-
constructor({ messenger, state, defaultUpdateInterval, isEnabled, }: AssetsControllerOptions);
|
|
178
|
+
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trackMetaMetricsEvent, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }: AssetsControllerOptions);
|
|
184
179
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
180
|
+
* Handle when a data source's supported chains change.
|
|
181
|
+
* Used to refresh balance subscriptions and run a one-time fetch when a new chain is supported.
|
|
187
182
|
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* @param dataSourceIds - Array of data source identifiers to register.
|
|
191
|
-
*/
|
|
192
|
-
registerDataSources(dataSourceIds: DataSourceDefinition[]): void;
|
|
193
|
-
/**
|
|
194
|
-
* Handle when a data source's active chains change.
|
|
195
|
-
* Active chains are chains that are both supported AND available.
|
|
196
|
-
* Updates centralized chain tracking and triggers re-selection if needed.
|
|
183
|
+
* - On any add/remove: re-subscribes to data sources so chain assignment stays correct.
|
|
184
|
+
* - When chains are added: fetches balances for the new chains (for selected accounts on enabled networks).
|
|
197
185
|
*
|
|
198
|
-
*
|
|
186
|
+
* Controller does not store chains; sources report via this callback. previousChains is required for diff.
|
|
199
187
|
*
|
|
200
188
|
* @param dataSourceId - The identifier of the data source reporting the change.
|
|
201
|
-
* @param activeChains -
|
|
189
|
+
* @param activeChains - Currently active (supported and available) chain IDs for this source.
|
|
190
|
+
* @param previousChains - Previous chains; used to compute added/removed.
|
|
202
191
|
*/
|
|
203
|
-
handleActiveChainsUpdate(dataSourceId: string, activeChains: ChainId[]): void;
|
|
192
|
+
handleActiveChainsUpdate(dataSourceId: string, activeChains: ChainId[], previousChains: ChainId[]): void;
|
|
204
193
|
getAssets(accounts: InternalAccount[], options?: {
|
|
205
194
|
chainIds?: ChainId[];
|
|
206
195
|
assetTypes?: AssetType[];
|
|
@@ -261,24 +250,31 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
261
250
|
*
|
|
262
251
|
* @param accounts - Accounts to subscribe price updates for.
|
|
263
252
|
* @param chainIds - Chain IDs to filter prices for.
|
|
264
|
-
* @param options - Subscription options.
|
|
265
|
-
* @param options.updateInterval - Polling interval in ms.
|
|
266
253
|
*/
|
|
267
|
-
subscribeAssetsPrice(accounts: InternalAccount[], chainIds: ChainId[]
|
|
268
|
-
updateInterval?: number;
|
|
269
|
-
}): void;
|
|
254
|
+
subscribeAssetsPrice(accounts: InternalAccount[], chainIds: ChainId[]): void;
|
|
270
255
|
/**
|
|
271
256
|
* Unsubscribe from price updates.
|
|
272
257
|
*/
|
|
273
258
|
unsubscribeAssetsPrice(): void;
|
|
259
|
+
/**
|
|
260
|
+
* Handle basic functionality toggle change. Call this from the consumer (extension or mobile)
|
|
261
|
+
* when the user changes the "Basic functionality" setting. Refreshes subscriptions so the
|
|
262
|
+
* current {@link AssetsControllerOptions.isBasicFunctionality} getter is used (true = APIs on,
|
|
263
|
+
* false = RPC only).
|
|
264
|
+
*
|
|
265
|
+
* @param _isBasic - The new value (for call-site clarity; the getter is the source of truth).
|
|
266
|
+
*/
|
|
267
|
+
handleBasicFunctionalityChange(_isBasic: boolean): void;
|
|
274
268
|
/**
|
|
275
269
|
* Handle assets updated from a data source.
|
|
276
|
-
* Called via
|
|
270
|
+
* Called via the onAssetsUpdate callback passed in SubscriptionRequest when the controller subscribes to a data source.
|
|
271
|
+
* Enriches the response with token metadata (via middlewares) before updating state.
|
|
277
272
|
*
|
|
278
273
|
* @param response - The data response with updated assets
|
|
279
274
|
* @param sourceId - The data source ID reporting the update
|
|
275
|
+
* @param request - Optional original request for context when enriching
|
|
280
276
|
*/
|
|
281
|
-
handleAssetsUpdate(response: DataResponse, sourceId: string): Promise<void>;
|
|
277
|
+
handleAssetsUpdate(response: DataResponse, sourceId: string, request?: DataRequest): Promise<void>;
|
|
282
278
|
destroy(): void;
|
|
283
279
|
}
|
|
284
280
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACrD,0CAA0C;AAC3C,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC7B,qCAAqC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,yCAAyC,EACzC,iCAAiC,EAElC,gDAAgD;
|
|
1
|
+
{"version":3,"file":"AssetsController.d.cts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import type { AccountTreeControllerGetAccountsFromSelectedAccountGroupAction, AccountTreeControllerSelectedAccountGroupChangeEvent } from "@metamask/account-tree-controller";
|
|
2
|
+
import type { GetTokenListState } from "@metamask/assets-controllers";
|
|
2
3
|
import { BaseController } from "@metamask/base-controller";
|
|
3
4
|
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
5
|
+
import type { ApiPlatformClient, BackendWebSocketServiceActions, BackendWebSocketServiceEvents } from "@metamask/core-backend";
|
|
4
6
|
import type { KeyringControllerLockEvent, KeyringControllerUnlockEvent } from "@metamask/keyring-controller";
|
|
5
7
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
6
8
|
import type { Messenger } from "@metamask/messenger";
|
|
9
|
+
import type { NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, NetworkControllerStateChangeEvent } from "@metamask/network-controller";
|
|
7
10
|
import type { NetworkEnablementControllerGetStateAction, NetworkEnablementControllerEvents } from "@metamask/network-enablement-controller";
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
import type {
|
|
11
|
-
import type {
|
|
12
|
-
import type {
|
|
13
|
-
import type {
|
|
14
|
-
import type {
|
|
11
|
+
import type { GetPermissions, PermissionControllerStateChange } from "@metamask/permission-controller";
|
|
12
|
+
import type { PreferencesControllerStateChangeEvent } from "@metamask/preferences-controller";
|
|
13
|
+
import type { GetRunnableSnaps, HandleSnapRequest } from "@metamask/snaps-controllers";
|
|
14
|
+
import type { TransactionControllerIncomingTransactionsReceivedEvent, TransactionControllerTransactionConfirmedEvent } from "@metamask/transaction-controller";
|
|
15
|
+
import type { AssetsControllerMethodActions } from "./AssetsController-method-action-types.mjs";
|
|
16
|
+
import type { AccountsApiDataSourceConfig } from "./data-sources/AccountsApiDataSource.mjs";
|
|
17
|
+
import type { PriceDataSourceConfig } from "./data-sources/PriceDataSource.mjs";
|
|
18
|
+
import type { RpcDataSourceConfig } from "./data-sources/RpcDataSource.mjs";
|
|
19
|
+
import type { AccountsControllerAccountBalancesUpdatedEvent } from "./data-sources/SnapDataSource.mjs";
|
|
20
|
+
import type { StakedBalanceDataSourceConfig } from "./data-sources/StakedBalanceDataSource.mjs";
|
|
21
|
+
import type { AccountId, AssetPreferences, ChainId, Caip19AssetId, AssetMetadata, AssetPrice, AssetBalance, AssetType, DataType, DataRequest, DataResponse, Asset } from "./types.mjs";
|
|
15
22
|
declare const CONTROLLER_NAME: "AssetsController";
|
|
16
23
|
/**
|
|
17
24
|
* State structure for AssetsController.
|
|
@@ -23,7 +30,7 @@ declare const CONTROLLER_NAME: "AssetsController";
|
|
|
23
30
|
*/
|
|
24
31
|
export type AssetsControllerState = {
|
|
25
32
|
/** Shared metadata for all assets (stored once per asset) */
|
|
26
|
-
|
|
33
|
+
assetsInfo: {
|
|
27
34
|
[assetId: string]: AssetMetadata;
|
|
28
35
|
};
|
|
29
36
|
/** Per-account balance data */
|
|
@@ -52,51 +59,7 @@ export type AssetsControllerState = {
|
|
|
52
59
|
*/
|
|
53
60
|
export declare function getDefaultAssetsControllerState(): AssetsControllerState;
|
|
54
61
|
export type AssetsControllerGetStateAction = ControllerGetStateAction<typeof CONTROLLER_NAME, AssetsControllerState>;
|
|
55
|
-
export type
|
|
56
|
-
type: `${typeof CONTROLLER_NAME}:getAssets`;
|
|
57
|
-
handler: AssetsController['getAssets'];
|
|
58
|
-
};
|
|
59
|
-
export type AssetsControllerGetAssetsBalanceAction = {
|
|
60
|
-
type: `${typeof CONTROLLER_NAME}:getAssetsBalance`;
|
|
61
|
-
handler: AssetsController['getAssetsBalance'];
|
|
62
|
-
};
|
|
63
|
-
export type AssetsControllerGetAssetMetadataAction = {
|
|
64
|
-
type: `${typeof CONTROLLER_NAME}:getAssetMetadata`;
|
|
65
|
-
handler: AssetsController['getAssetMetadata'];
|
|
66
|
-
};
|
|
67
|
-
export type AssetsControllerGetAssetsPriceAction = {
|
|
68
|
-
type: `${typeof CONTROLLER_NAME}:getAssetsPrice`;
|
|
69
|
-
handler: AssetsController['getAssetsPrice'];
|
|
70
|
-
};
|
|
71
|
-
export type AssetsControllerActiveChainsUpdateAction = {
|
|
72
|
-
type: `${typeof CONTROLLER_NAME}:activeChainsUpdate`;
|
|
73
|
-
handler: AssetsController['handleActiveChainsUpdate'];
|
|
74
|
-
};
|
|
75
|
-
export type AssetsControllerAssetsUpdateAction = {
|
|
76
|
-
type: `${typeof CONTROLLER_NAME}:assetsUpdate`;
|
|
77
|
-
handler: AssetsController['handleAssetsUpdate'];
|
|
78
|
-
};
|
|
79
|
-
export type AssetsControllerAddCustomAssetAction = {
|
|
80
|
-
type: `${typeof CONTROLLER_NAME}:addCustomAsset`;
|
|
81
|
-
handler: AssetsController['addCustomAsset'];
|
|
82
|
-
};
|
|
83
|
-
export type AssetsControllerRemoveCustomAssetAction = {
|
|
84
|
-
type: `${typeof CONTROLLER_NAME}:removeCustomAsset`;
|
|
85
|
-
handler: AssetsController['removeCustomAsset'];
|
|
86
|
-
};
|
|
87
|
-
export type AssetsControllerGetCustomAssetsAction = {
|
|
88
|
-
type: `${typeof CONTROLLER_NAME}:getCustomAssets`;
|
|
89
|
-
handler: AssetsController['getCustomAssets'];
|
|
90
|
-
};
|
|
91
|
-
export type AssetsControllerHideAssetAction = {
|
|
92
|
-
type: `${typeof CONTROLLER_NAME}:hideAsset`;
|
|
93
|
-
handler: AssetsController['hideAsset'];
|
|
94
|
-
};
|
|
95
|
-
export type AssetsControllerUnhideAssetAction = {
|
|
96
|
-
type: `${typeof CONTROLLER_NAME}:unhideAsset`;
|
|
97
|
-
handler: AssetsController['unhideAsset'];
|
|
98
|
-
};
|
|
99
|
-
export type AssetsControllerActions = AssetsControllerGetStateAction | AssetsControllerGetAssetsAction | AssetsControllerGetAssetsBalanceAction | AssetsControllerGetAssetMetadataAction | AssetsControllerGetAssetsPriceAction | AssetsControllerActiveChainsUpdateAction | AssetsControllerAssetsUpdateAction | AssetsControllerAddCustomAssetAction | AssetsControllerRemoveCustomAssetAction | AssetsControllerGetCustomAssetsAction | AssetsControllerHideAssetAction | AssetsControllerUnhideAssetAction;
|
|
62
|
+
export type AssetsControllerActions = AssetsControllerGetStateAction | AssetsControllerMethodActions;
|
|
100
63
|
export type AssetsControllerStateChangeEvent = ControllerStateChangeEvent<typeof CONTROLLER_NAME, AssetsControllerState>;
|
|
101
64
|
export type AssetsControllerBalanceChangedEvent = {
|
|
102
65
|
type: `${typeof CONTROLLER_NAME}:balanceChanged`;
|
|
@@ -123,23 +86,25 @@ export type AssetsControllerAssetsDetectedEvent = {
|
|
|
123
86
|
}];
|
|
124
87
|
};
|
|
125
88
|
export type AssetsControllerEvents = AssetsControllerStateChangeEvent | AssetsControllerBalanceChangedEvent | AssetsControllerPriceChangedEvent | AssetsControllerAssetsDetectedEvent;
|
|
126
|
-
type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction |
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
*/
|
|
130
|
-
export type AppStateControllerAppOpenedEvent = {
|
|
131
|
-
type: 'AppStateController:appOpened';
|
|
132
|
-
payload: [];
|
|
133
|
-
};
|
|
89
|
+
type AllowedActions = AccountTreeControllerGetAccountsFromSelectedAccountGroupAction | GetTokenListState | NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction | NetworkEnablementControllerGetStateAction | GetRunnableSnaps | HandleSnapRequest | GetPermissions | BackendWebSocketServiceActions;
|
|
90
|
+
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent | PreferencesControllerStateChangeEvent | NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent | TransactionControllerIncomingTransactionsReceivedEvent | NetworkEnablementControllerEvents | AccountsControllerAccountBalancesUpdatedEvent | PermissionControllerStateChange | BackendWebSocketServiceEvents;
|
|
91
|
+
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
134
92
|
/**
|
|
135
|
-
*
|
|
93
|
+
* Payload for the first init/fetch MetaMetrics event.
|
|
94
|
+
* Passed to the optional trackMetaMetricsEvent callback when the initial
|
|
95
|
+
* asset fetch completes after unlock or app open.
|
|
136
96
|
*/
|
|
137
|
-
export type
|
|
138
|
-
|
|
139
|
-
|
|
97
|
+
export type AssetsControllerFirstInitFetchMetaMetricsPayload = {
|
|
98
|
+
/** Duration of the first init fetch in milliseconds (wall-clock). */
|
|
99
|
+
durationMs: number;
|
|
100
|
+
/** Chain IDs requested in the fetch (e.g. ['eip155:1', 'eip155:137']). */
|
|
101
|
+
chainIds: string[];
|
|
102
|
+
/**
|
|
103
|
+
* Exclusive latency in ms per data source (time spent in that source only).
|
|
104
|
+
* Sum of values approximates durationMs. Order: same as middleware chain.
|
|
105
|
+
*/
|
|
106
|
+
durationByDataSource: Record<string, number>;
|
|
140
107
|
};
|
|
141
|
-
type AllowedEvents = AccountTreeControllerSelectedAccountGroupChangeEvent | NetworkEnablementControllerEvents | AppStateControllerAppOpenedEvent | AppStateControllerAppClosedEvent | KeyringControllerLockEvent | KeyringControllerUnlockEvent;
|
|
142
|
-
export type AssetsControllerMessenger = Messenger<typeof CONTROLLER_NAME, AssetsControllerActions | AllowedActions, AssetsControllerEvents | AllowedEvents>;
|
|
143
108
|
export type AssetsControllerOptions = {
|
|
144
109
|
messenger: AssetsControllerMessenger;
|
|
145
110
|
state?: Partial<AssetsControllerState>;
|
|
@@ -147,6 +112,41 @@ export type AssetsControllerOptions = {
|
|
|
147
112
|
defaultUpdateInterval?: number;
|
|
148
113
|
/** Function to determine if the controller is enabled. Defaults to true. */
|
|
149
114
|
isEnabled?: () => boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Getter for basic functionality (matches the "Basic functionality" setting in the UI).
|
|
117
|
+
* When it returns true, internet services are on: token/price APIs are used for metadata, price,
|
|
118
|
+
* and price subscription. When false, only RPC is used (no token/price APIs).
|
|
119
|
+
* No value is stored; the getter is invoked when needed.
|
|
120
|
+
* Defaults to () => true when not provided (APIs enabled).
|
|
121
|
+
*/
|
|
122
|
+
isBasicFunctionality?: () => boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Called by the controller with an onChange callback. The consumer subscribes to its own
|
|
125
|
+
* basic-functionality source (e.g. PreferencesController:stateChange in extension, or a
|
|
126
|
+
* different mechanism in mobile) and invokes onChange(isBasic) when the value changes.
|
|
127
|
+
* The controller will then refresh its subscriptions. May return an unsubscribe function
|
|
128
|
+
* called on controller destroy. Optional; when omitted, basic-functionality changes are not
|
|
129
|
+
* subscribed to (e.g. host can notify via root messenger or another path).
|
|
130
|
+
*/
|
|
131
|
+
subscribeToBasicFunctionalityChange?: (onChange: (isBasic: boolean) => void) => void | (() => void);
|
|
132
|
+
/**
|
|
133
|
+
* API client for balance/price/metadata. The controller instantiates data sources
|
|
134
|
+
* and uses them directly when this is provided.
|
|
135
|
+
*/
|
|
136
|
+
queryApiClient: ApiPlatformClient;
|
|
137
|
+
/** Optional configuration for RpcDataSource. */
|
|
138
|
+
rpcDataSourceConfig?: RpcDataSourceConfig;
|
|
139
|
+
/**
|
|
140
|
+
* Optional callback invoked when the first init/fetch completes (e.g. after unlock).
|
|
141
|
+
* Use this to track first init fetch duration in MetaMetrics.
|
|
142
|
+
*/
|
|
143
|
+
trackMetaMetricsEvent?: (payload: AssetsControllerFirstInitFetchMetaMetricsPayload) => void;
|
|
144
|
+
/** Optional configuration for AccountsApiDataSource. */
|
|
145
|
+
accountsApiDataSourceConfig?: AccountsApiDataSourceConfig;
|
|
146
|
+
/** Optional configuration for PriceDataSource. */
|
|
147
|
+
priceDataSourceConfig?: PriceDataSourceConfig;
|
|
148
|
+
/** Optional configuration for StakedBalanceDataSource. */
|
|
149
|
+
stakedBalanceDataSourceConfig?: StakedBalanceDataSourceConfig;
|
|
150
150
|
};
|
|
151
151
|
/**
|
|
152
152
|
* AssetsController provides a unified interface for managing asset balances
|
|
@@ -164,13 +164,8 @@ export type AssetsControllerOptions = {
|
|
|
164
164
|
* based on which chains they support. When active chains change, the controller
|
|
165
165
|
* dynamically adjusts subscriptions.
|
|
166
166
|
*
|
|
167
|
-
* 4. **
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* ## App Lifecycle
|
|
171
|
-
*
|
|
172
|
-
* - **App Opened** (`AppStateController:appOpened`): Starts subscriptions, fetches initial data
|
|
173
|
-
* - **App Closed** (`AppStateController:appClosed`): Stops all subscriptions to conserve resources
|
|
167
|
+
* 4. **Keyring Lifecycle**: Listens to KeyringController unlock/lock events to
|
|
168
|
+
* start/stop subscriptions when the wallet is unlocked or locked.
|
|
174
169
|
*
|
|
175
170
|
* ## Architecture
|
|
176
171
|
*
|
|
@@ -180,27 +175,21 @@ export type AssetsControllerOptions = {
|
|
|
180
175
|
*/
|
|
181
176
|
export declare class AssetsController extends BaseController<typeof CONTROLLER_NAME, AssetsControllerState, AssetsControllerMessenger> {
|
|
182
177
|
#private;
|
|
183
|
-
constructor({ messenger, state, defaultUpdateInterval, isEnabled, }: AssetsControllerOptions);
|
|
178
|
+
constructor({ messenger, state, defaultUpdateInterval, isEnabled, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trackMetaMetricsEvent, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }: AssetsControllerOptions);
|
|
184
179
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
180
|
+
* Handle when a data source's supported chains change.
|
|
181
|
+
* Used to refresh balance subscriptions and run a one-time fetch when a new chain is supported.
|
|
187
182
|
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* @param dataSourceIds - Array of data source identifiers to register.
|
|
191
|
-
*/
|
|
192
|
-
registerDataSources(dataSourceIds: DataSourceDefinition[]): void;
|
|
193
|
-
/**
|
|
194
|
-
* Handle when a data source's active chains change.
|
|
195
|
-
* Active chains are chains that are both supported AND available.
|
|
196
|
-
* Updates centralized chain tracking and triggers re-selection if needed.
|
|
183
|
+
* - On any add/remove: re-subscribes to data sources so chain assignment stays correct.
|
|
184
|
+
* - When chains are added: fetches balances for the new chains (for selected accounts on enabled networks).
|
|
197
185
|
*
|
|
198
|
-
*
|
|
186
|
+
* Controller does not store chains; sources report via this callback. previousChains is required for diff.
|
|
199
187
|
*
|
|
200
188
|
* @param dataSourceId - The identifier of the data source reporting the change.
|
|
201
|
-
* @param activeChains -
|
|
189
|
+
* @param activeChains - Currently active (supported and available) chain IDs for this source.
|
|
190
|
+
* @param previousChains - Previous chains; used to compute added/removed.
|
|
202
191
|
*/
|
|
203
|
-
handleActiveChainsUpdate(dataSourceId: string, activeChains: ChainId[]): void;
|
|
192
|
+
handleActiveChainsUpdate(dataSourceId: string, activeChains: ChainId[], previousChains: ChainId[]): void;
|
|
204
193
|
getAssets(accounts: InternalAccount[], options?: {
|
|
205
194
|
chainIds?: ChainId[];
|
|
206
195
|
assetTypes?: AssetType[];
|
|
@@ -261,24 +250,31 @@ export declare class AssetsController extends BaseController<typeof CONTROLLER_N
|
|
|
261
250
|
*
|
|
262
251
|
* @param accounts - Accounts to subscribe price updates for.
|
|
263
252
|
* @param chainIds - Chain IDs to filter prices for.
|
|
264
|
-
* @param options - Subscription options.
|
|
265
|
-
* @param options.updateInterval - Polling interval in ms.
|
|
266
253
|
*/
|
|
267
|
-
subscribeAssetsPrice(accounts: InternalAccount[], chainIds: ChainId[]
|
|
268
|
-
updateInterval?: number;
|
|
269
|
-
}): void;
|
|
254
|
+
subscribeAssetsPrice(accounts: InternalAccount[], chainIds: ChainId[]): void;
|
|
270
255
|
/**
|
|
271
256
|
* Unsubscribe from price updates.
|
|
272
257
|
*/
|
|
273
258
|
unsubscribeAssetsPrice(): void;
|
|
259
|
+
/**
|
|
260
|
+
* Handle basic functionality toggle change. Call this from the consumer (extension or mobile)
|
|
261
|
+
* when the user changes the "Basic functionality" setting. Refreshes subscriptions so the
|
|
262
|
+
* current {@link AssetsControllerOptions.isBasicFunctionality} getter is used (true = APIs on,
|
|
263
|
+
* false = RPC only).
|
|
264
|
+
*
|
|
265
|
+
* @param _isBasic - The new value (for call-site clarity; the getter is the source of truth).
|
|
266
|
+
*/
|
|
267
|
+
handleBasicFunctionalityChange(_isBasic: boolean): void;
|
|
274
268
|
/**
|
|
275
269
|
* Handle assets updated from a data source.
|
|
276
|
-
* Called via
|
|
270
|
+
* Called via the onAssetsUpdate callback passed in SubscriptionRequest when the controller subscribes to a data source.
|
|
271
|
+
* Enriches the response with token metadata (via middlewares) before updating state.
|
|
277
272
|
*
|
|
278
273
|
* @param response - The data response with updated assets
|
|
279
274
|
* @param sourceId - The data source ID reporting the update
|
|
275
|
+
* @param request - Optional original request for context when enriching
|
|
280
276
|
*/
|
|
281
|
-
handleAssetsUpdate(response: DataResponse, sourceId: string): Promise<void>;
|
|
277
|
+
handleAssetsUpdate(response: DataResponse, sourceId: string, request?: DataRequest): Promise<void>;
|
|
282
278
|
destroy(): void;
|
|
283
279
|
}
|
|
284
280
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,8DAA8D,EAC9D,oDAAoD,EACrD,0CAA0C;AAC3C,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAC3D,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,kCAAkC;AACnC,OAAO,KAAK,EACV,0BAA0B,EAC1B,4BAA4B,EAC7B,qCAAqC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,4BAA4B;AACrD,OAAO,KAAK,EACV,yCAAyC,EACzC,iCAAiC,EAElC,gDAAgD;
|
|
1
|
+
{"version":3,"file":"AssetsController.d.mts","sourceRoot":"","sources":["../src/AssetsController.ts"],"names":[],"mappings":"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"}
|