@metamask-previews/assets-controller 14.0.2-preview-4f4c98e → 14.0.2-preview-eb263b0ee
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 +0 -5
- 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.ts → AssetsController-method-action-types.d.cts} +2 -2
- package/dist/AssetsController-method-action-types.d.cts.map +1 -0
- package/dist/AssetsController-method-action-types.d.mts +181 -0
- package/dist/AssetsController-method-action-types.d.mts.map +1 -0
- package/dist/{AssetsController-method-action-types.js → AssetsController-method-action-types.mjs} +1 -1
- package/dist/AssetsController-method-action-types.mjs.map +1 -0
- package/dist/AssetsController.cjs +2559 -0
- package/dist/AssetsController.cjs.map +1 -0
- package/dist/{AssetsController.d.ts → AssetsController.d.cts} +30 -30
- package/dist/AssetsController.d.cts.map +1 -0
- package/dist/AssetsController.d.mts +395 -0
- package/dist/AssetsController.d.mts.map +1 -0
- package/dist/{AssetsController.js → AssetsController.mjs} +29 -28
- package/dist/AssetsController.mjs.map +1 -0
- package/dist/data-sources/AbstractDataSource.cjs +111 -0
- package/dist/data-sources/AbstractDataSource.cjs.map +1 -0
- package/dist/data-sources/{AbstractDataSource.d.ts → AbstractDataSource.d.cts} +2 -2
- package/dist/data-sources/AbstractDataSource.d.cts.map +1 -0
- package/dist/data-sources/AbstractDataSource.d.mts +113 -0
- package/dist/data-sources/AbstractDataSource.d.mts.map +1 -0
- package/dist/data-sources/{AbstractDataSource.js → AbstractDataSource.mjs} +1 -1
- package/dist/data-sources/AbstractDataSource.mjs.map +1 -0
- package/dist/data-sources/AccountActivityDataSource.cjs +267 -0
- package/dist/data-sources/AccountActivityDataSource.cjs.map +1 -0
- package/dist/data-sources/{AccountActivityDataSource.d.ts → AccountActivityDataSource.d.cts} +6 -6
- package/dist/data-sources/AccountActivityDataSource.d.cts.map +1 -0
- package/dist/data-sources/AccountActivityDataSource.d.mts +80 -0
- package/dist/data-sources/AccountActivityDataSource.d.mts.map +1 -0
- package/dist/data-sources/{AccountActivityDataSource.js → AccountActivityDataSource.mjs} +11 -11
- package/dist/data-sources/AccountActivityDataSource.mjs.map +1 -0
- package/dist/data-sources/AccountsApiDataSource.cjs +586 -0
- package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -0
- package/dist/data-sources/{AccountsApiDataSource.d.ts → AccountsApiDataSource.d.cts} +7 -7
- package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -0
- package/dist/data-sources/AccountsApiDataSource.d.mts +82 -0
- package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -0
- package/dist/data-sources/{AccountsApiDataSource.js → AccountsApiDataSource.mjs} +8 -7
- package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -0
- package/dist/data-sources/PriceDataSource.cjs +466 -0
- package/dist/data-sources/PriceDataSource.cjs.map +1 -0
- package/dist/data-sources/{PriceDataSource.d.ts → PriceDataSource.d.cts} +5 -5
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -0
- package/dist/data-sources/PriceDataSource.d.mts +100 -0
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -0
- package/dist/data-sources/{PriceDataSource.js → PriceDataSource.mjs} +8 -7
- package/dist/data-sources/PriceDataSource.mjs.map +1 -0
- package/dist/data-sources/RpcDataSource.cjs +1021 -0
- package/dist/data-sources/RpcDataSource.cjs.map +1 -0
- package/dist/data-sources/{RpcDataSource.d.ts → RpcDataSource.d.cts} +10 -10
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -0
- package/dist/data-sources/RpcDataSource.d.mts +174 -0
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -0
- package/dist/data-sources/{RpcDataSource.js → RpcDataSource.mjs} +11 -11
- package/dist/data-sources/RpcDataSource.mjs.map +1 -0
- package/dist/data-sources/SnapDataSource.cjs +443 -0
- package/dist/data-sources/SnapDataSource.cjs.map +1 -0
- package/dist/data-sources/{SnapDataSource.d.ts → SnapDataSource.d.cts} +8 -8
- package/dist/data-sources/SnapDataSource.d.cts.map +1 -0
- package/dist/data-sources/SnapDataSource.d.mts +127 -0
- package/dist/data-sources/SnapDataSource.d.mts.map +1 -0
- package/dist/data-sources/{SnapDataSource.js → SnapDataSource.mjs} +6 -6
- package/dist/data-sources/SnapDataSource.mjs.map +1 -0
- package/dist/data-sources/StakedBalanceDataSource.cjs +616 -0
- package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -0
- package/dist/data-sources/{StakedBalanceDataSource.d.ts → StakedBalanceDataSource.d.cts} +5 -5
- 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.js → StakedBalanceDataSource.mjs} +7 -7
- package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -0
- package/dist/data-sources/TokenDataSource.cjs +583 -0
- package/dist/data-sources/TokenDataSource.cjs.map +1 -0
- package/dist/data-sources/{TokenDataSource.d.ts → TokenDataSource.d.cts} +5 -5
- package/dist/data-sources/TokenDataSource.d.cts.map +1 -0
- package/dist/data-sources/TokenDataSource.d.mts +81 -0
- package/dist/data-sources/TokenDataSource.d.mts.map +1 -0
- package/dist/data-sources/{TokenDataSource.js → TokenDataSource.mjs} +8 -7
- package/dist/data-sources/TokenDataSource.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs +705 -0
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/{MulticallClient.d.ts → MulticallClient.d.cts} +3 -3
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts +65 -0
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/{MulticallClient.js → MulticallClient.mjs} +5 -5
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs +312 -0
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/{TokensApiClient.d.ts → TokensApiClient.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts +61 -0
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/{TokensApiClient.js → TokensApiClient.mjs} +2 -2
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/index.cjs +10 -0
- package/dist/data-sources/evm-rpc-services/clients/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/index.d.cts +4 -0
- package/dist/data-sources/evm-rpc-services/clients/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/index.d.mts +4 -0
- package/dist/data-sources/evm-rpc-services/clients/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/clients/index.mjs +3 -0
- package/dist/data-sources/evm-rpc-services/clients/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/index.cjs +17 -0
- package/dist/data-sources/evm-rpc-services/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/{index.d.ts → index.d.cts} +5 -5
- package/dist/data-sources/evm-rpc-services/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/index.d.mts +5 -0
- package/dist/data-sources/evm-rpc-services/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/index.mjs +4 -0
- package/dist/data-sources/evm-rpc-services/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs +247 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{BalanceFetcher.d.ts → BalanceFetcher.d.cts} +11 -11
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts +96 -0
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{BalanceFetcher.js → BalanceFetcher.mjs} +5 -5
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs.map +1 -0
- 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.ts → StakedBalanceFetcher.d.cts} +14 -13
- 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 +81 -0
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{StakedBalanceFetcher.js → StakedBalanceFetcher.mjs} +6 -5
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs +230 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{TokenDetector.d.ts → TokenDetector.d.cts} +12 -12
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts +78 -0
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{TokenDetector.js → TokenDetector.mjs} +4 -4
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.cjs +13 -0
- package/dist/data-sources/evm-rpc-services/services/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/{index.d.ts → index.d.cts} +4 -4
- package/dist/data-sources/evm-rpc-services/services/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.d.mts +4 -0
- package/dist/data-sources/evm-rpc-services/services/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/services/index.mjs +4 -0
- package/dist/data-sources/evm-rpc-services/services/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/assets.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/assets.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{assets.d.ts → assets.d.cts} +3 -3
- package/dist/data-sources/evm-rpc-services/types/assets.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/assets.d.mts +53 -0
- package/dist/data-sources/evm-rpc-services/types/assets.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/assets.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/assets.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/config.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/config.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{config.d.ts → config.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/types/config.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/config.d.mts +18 -0
- package/dist/data-sources/evm-rpc-services/types/config.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/config.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/config.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/core.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/core.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{core.d.ts → core.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/types/core.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/core.d.mts +19 -0
- package/dist/data-sources/evm-rpc-services/types/core.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/core.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/core.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/index.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/index.d.cts +7 -0
- package/dist/data-sources/evm-rpc-services/types/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/index.d.mts +7 -0
- package/dist/data-sources/evm-rpc-services/types/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/index.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/index.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{multicall.d.ts → multicall.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/types/multicall.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.d.mts +24 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/multicall.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/services.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/services.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{services.d.ts → services.d.cts} +3 -3
- package/dist/data-sources/evm-rpc-services/types/services.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/services.d.mts +70 -0
- package/dist/data-sources/evm-rpc-services/types/services.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/services.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/services.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/state.cjs +3 -0
- package/dist/data-sources/evm-rpc-services/types/state.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/{state.d.ts → state.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/types/state.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/state.d.mts +58 -0
- package/dist/data-sources/evm-rpc-services/types/state.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/types/state.mjs +2 -0
- package/dist/data-sources/evm-rpc-services/types/state.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/assets.cjs +9 -0
- package/dist/data-sources/evm-rpc-services/utils/assets.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{assets.d.ts → assets.d.cts} +2 -2
- package/dist/data-sources/evm-rpc-services/utils/assets.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/assets.d.mts +3 -0
- package/dist/data-sources/evm-rpc-services/utils/assets.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{assets.js → assets.mjs} +2 -2
- package/dist/data-sources/evm-rpc-services/utils/assets.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/batch.cjs +45 -0
- package/dist/data-sources/evm-rpc-services/utils/batch.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{batch.d.ts → batch.d.cts} +1 -1
- package/dist/data-sources/evm-rpc-services/utils/batch.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/batch.d.mts +28 -0
- package/dist/data-sources/evm-rpc-services/utils/batch.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/{batch.js → batch.mjs} +1 -1
- package/dist/data-sources/evm-rpc-services/utils/batch.mjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/index.cjs +15 -0
- package/dist/data-sources/evm-rpc-services/utils/index.cjs.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.cts +4 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.cts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.mts +4 -0
- package/dist/data-sources/evm-rpc-services/utils/index.d.mts.map +1 -0
- package/dist/data-sources/evm-rpc-services/utils/index.mjs +4 -0
- package/dist/data-sources/evm-rpc-services/utils/index.mjs.map +1 -0
- 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.ts → parsing.d.cts} +3 -3
- 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.js → parsing.mjs} +3 -3
- 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.ts → staking-contracts.d.cts} +1 -1
- 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.js → staking-contracts.mjs} +3 -3
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.mjs.map +1 -0
- package/dist/data-sources/index.cjs +30 -0
- package/dist/data-sources/index.cjs.map +1 -0
- package/dist/data-sources/{index.d.ts → index.d.cts} +9 -9
- package/dist/data-sources/index.d.cts.map +1 -0
- package/dist/data-sources/index.d.mts +9 -0
- package/dist/data-sources/index.d.mts.map +1 -0
- package/dist/data-sources/index.mjs +14 -0
- package/dist/data-sources/index.mjs.map +1 -0
- package/dist/defaults.cjs +125 -0
- package/dist/defaults.cjs.map +1 -0
- package/dist/{defaults.d.ts → defaults.d.cts} +2 -2
- package/dist/defaults.d.cts.map +1 -0
- package/dist/defaults.d.mts +50 -0
- package/dist/defaults.d.mts.map +1 -0
- package/dist/{defaults.js → defaults.mjs} +1 -1
- package/dist/defaults.mjs.map +1 -0
- package/dist/errors.cjs +25 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/{errors.d.ts → errors.d.cts} +1 -1
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.mts +25 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/{errors.js → errors.mjs} +1 -1
- package/dist/errors.mjs.map +1 -0
- package/dist/index.cjs +67 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{index.d.ts → index.d.cts} +26 -26
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +26 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/{index.js → index.mjs} +13 -13
- package/dist/index.mjs.map +1 -0
- package/dist/logger.cjs +7 -0
- package/dist/logger.cjs.map +1 -0
- package/dist/logger.d.cts +5 -0
- package/dist/logger.d.cts.map +1 -0
- package/dist/logger.d.mts +5 -0
- package/dist/logger.d.mts.map +1 -0
- package/dist/logger.mjs +4 -0
- package/dist/logger.mjs.map +1 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs +132 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.cjs.map +1 -0
- package/dist/middlewares/{CustomAssetGraduationMiddleware.d.ts → CustomAssetGraduationMiddleware.d.cts} +2 -2
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.cts.map +1 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts +32 -0
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.mts.map +1 -0
- package/dist/middlewares/{CustomAssetGraduationMiddleware.js → CustomAssetGraduationMiddleware.mjs} +5 -5
- package/dist/middlewares/CustomAssetGraduationMiddleware.mjs.map +1 -0
- package/dist/middlewares/DetectionMiddleware.cjs +154 -0
- package/dist/middlewares/DetectionMiddleware.cjs.map +1 -0
- package/dist/middlewares/{DetectionMiddleware.d.ts → DetectionMiddleware.d.cts} +2 -2
- package/dist/middlewares/DetectionMiddleware.d.cts.map +1 -0
- package/dist/middlewares/DetectionMiddleware.d.mts +40 -0
- package/dist/middlewares/DetectionMiddleware.d.mts.map +1 -0
- package/dist/middlewares/{DetectionMiddleware.js → DetectionMiddleware.mjs} +4 -4
- package/dist/middlewares/DetectionMiddleware.mjs.map +1 -0
- package/dist/middlewares/ParallelMiddleware.cjs +263 -0
- package/dist/middlewares/ParallelMiddleware.cjs.map +1 -0
- package/dist/middlewares/{ParallelMiddleware.d.ts → ParallelMiddleware.d.cts} +2 -2
- package/dist/middlewares/ParallelMiddleware.d.cts.map +1 -0
- package/dist/middlewares/ParallelMiddleware.d.mts +41 -0
- package/dist/middlewares/ParallelMiddleware.d.mts.map +1 -0
- package/dist/middlewares/{ParallelMiddleware.js → ParallelMiddleware.mjs} +9 -2
- package/dist/middlewares/{ParallelMiddleware.js.map → ParallelMiddleware.mjs.map} +1 -1
- package/dist/middlewares/RpcFallbackMiddleware.cjs +90 -0
- package/dist/middlewares/RpcFallbackMiddleware.cjs.map +1 -0
- package/dist/middlewares/{RpcFallbackMiddleware.d.ts → RpcFallbackMiddleware.d.cts} +2 -2
- package/dist/middlewares/RpcFallbackMiddleware.d.cts.map +1 -0
- package/dist/middlewares/RpcFallbackMiddleware.d.mts +23 -0
- package/dist/middlewares/RpcFallbackMiddleware.d.mts.map +1 -0
- package/dist/middlewares/{RpcFallbackMiddleware.js → RpcFallbackMiddleware.mjs} +4 -4
- package/dist/middlewares/RpcFallbackMiddleware.mjs.map +1 -0
- package/dist/middlewares/index.cjs +14 -0
- package/dist/middlewares/index.cjs.map +1 -0
- package/dist/middlewares/index.d.cts +9 -0
- package/dist/middlewares/index.d.cts.map +1 -0
- package/dist/middlewares/index.d.mts +9 -0
- package/dist/middlewares/index.d.mts.map +1 -0
- package/dist/middlewares/index.mjs +5 -0
- package/dist/middlewares/index.mjs.map +1 -0
- package/dist/migrations/healAssetsInfoMetadata.cjs +385 -0
- package/dist/migrations/healAssetsInfoMetadata.cjs.map +1 -0
- package/dist/migrations/{healAssetsInfoMetadata.d.ts → healAssetsInfoMetadata.d.cts} +4 -4
- package/dist/migrations/healAssetsInfoMetadata.d.cts.map +1 -0
- package/dist/migrations/healAssetsInfoMetadata.d.mts +106 -0
- package/dist/migrations/healAssetsInfoMetadata.d.mts.map +1 -0
- package/dist/migrations/{healAssetsInfoMetadata.js → healAssetsInfoMetadata.mjs} +5 -4
- package/dist/migrations/healAssetsInfoMetadata.mjs.map +1 -0
- package/dist/selectors/balance.cjs +532 -0
- package/dist/selectors/balance.cjs.map +1 -0
- package/dist/selectors/{balance.d.ts → balance.d.cts} +6 -6
- package/dist/selectors/balance.d.cts.map +1 -0
- package/dist/selectors/balance.d.mts +103 -0
- package/dist/selectors/balance.d.mts.map +1 -0
- package/dist/selectors/{balance.js → balance.mjs} +5 -5
- package/dist/selectors/balance.mjs.map +1 -0
- package/dist/types.cjs +39 -0
- package/dist/types.cjs.map +1 -0
- package/dist/{types.d.ts → types.d.cts} +4 -4
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +533 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/{types.js → types.mjs} +1 -1
- package/dist/types.mjs.map +1 -0
- package/dist/utils/constants.cjs +5 -0
- package/dist/utils/constants.cjs.map +1 -0
- package/dist/utils/constants.d.cts +2 -0
- package/dist/utils/constants.d.cts.map +1 -0
- package/dist/utils/constants.d.mts +2 -0
- package/dist/utils/constants.d.mts.map +1 -0
- package/dist/utils/{constants.js → constants.mjs} +1 -1
- package/dist/utils/constants.mjs.map +1 -0
- package/dist/utils/customAssetsRpcSupplement.cjs +72 -0
- package/dist/utils/customAssetsRpcSupplement.cjs.map +1 -0
- package/dist/utils/{customAssetsRpcSupplement.d.ts → customAssetsRpcSupplement.d.cts} +2 -2
- package/dist/utils/customAssetsRpcSupplement.d.cts.map +1 -0
- package/dist/utils/customAssetsRpcSupplement.d.mts +60 -0
- package/dist/utils/customAssetsRpcSupplement.d.mts.map +1 -0
- package/dist/utils/{customAssetsRpcSupplement.js → customAssetsRpcSupplement.mjs} +2 -2
- package/dist/utils/customAssetsRpcSupplement.mjs.map +1 -0
- package/dist/utils/dedupingBatchFetcher.cjs +168 -0
- package/dist/utils/dedupingBatchFetcher.cjs.map +1 -0
- package/dist/utils/{dedupingBatchFetcher.d.ts → dedupingBatchFetcher.d.cts} +1 -1
- package/dist/utils/dedupingBatchFetcher.d.cts.map +1 -0
- package/dist/utils/dedupingBatchFetcher.d.mts +72 -0
- package/dist/utils/dedupingBatchFetcher.d.mts.map +1 -0
- package/dist/utils/{dedupingBatchFetcher.js → dedupingBatchFetcher.mjs} +1 -1
- package/dist/utils/dedupingBatchFetcher.mjs.map +1 -0
- package/dist/utils/fetchWithTimeout.cjs +30 -0
- package/dist/utils/fetchWithTimeout.cjs.map +1 -0
- package/dist/utils/{fetchWithTimeout.d.ts → fetchWithTimeout.d.cts} +1 -1
- package/dist/utils/fetchWithTimeout.d.cts.map +1 -0
- package/dist/utils/fetchWithTimeout.d.mts +11 -0
- package/dist/utils/fetchWithTimeout.d.mts.map +1 -0
- package/dist/utils/{fetchWithTimeout.js → fetchWithTimeout.mjs} +1 -1
- package/dist/utils/fetchWithTimeout.mjs.map +1 -0
- package/dist/utils/formatExchangeRatesForBridge.cjs +161 -0
- package/dist/utils/formatExchangeRatesForBridge.cjs.map +1 -0
- package/dist/utils/{formatExchangeRatesForBridge.d.ts → formatExchangeRatesForBridge.d.cts} +3 -3
- package/dist/utils/formatExchangeRatesForBridge.d.cts.map +1 -0
- package/dist/utils/formatExchangeRatesForBridge.d.mts +43 -0
- package/dist/utils/formatExchangeRatesForBridge.d.mts.map +1 -0
- package/dist/utils/{formatExchangeRatesForBridge.js → formatExchangeRatesForBridge.mjs} +7 -6
- package/dist/utils/formatExchangeRatesForBridge.mjs.map +1 -0
- package/dist/utils/formatStateForTransactionPay.cjs +174 -0
- package/dist/utils/formatStateForTransactionPay.cjs.map +1 -0
- package/dist/utils/{formatStateForTransactionPay.d.ts → formatStateForTransactionPay.d.cts} +3 -3
- package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -0
- package/dist/utils/formatStateForTransactionPay.d.mts +72 -0
- package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -0
- package/dist/utils/{formatStateForTransactionPay.js → formatStateForTransactionPay.mjs} +8 -7
- package/dist/utils/formatStateForTransactionPay.mjs.map +1 -0
- package/dist/utils/index.cjs +21 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +9 -0
- package/dist/utils/index.d.cts.map +1 -0
- package/dist/utils/index.d.mts +9 -0
- package/dist/utils/index.d.mts.map +1 -0
- package/dist/utils/index.mjs +7 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/native-assets.cjs +64 -0
- package/dist/utils/native-assets.cjs.map +1 -0
- package/dist/utils/{native-assets.d.ts → native-assets.d.cts} +2 -2
- package/dist/utils/native-assets.d.cts.map +1 -0
- package/dist/utils/native-assets.d.mts +19 -0
- package/dist/utils/native-assets.d.mts.map +1 -0
- package/dist/utils/{native-assets.js → native-assets.mjs} +5 -5
- package/dist/utils/native-assets.mjs.map +1 -0
- package/dist/utils/normalizeAmountString.cjs +64 -0
- package/dist/utils/normalizeAmountString.cjs.map +1 -0
- package/dist/utils/{normalizeAmountString.d.ts → normalizeAmountString.d.cts} +1 -1
- package/dist/utils/normalizeAmountString.d.cts.map +1 -0
- package/dist/utils/normalizeAmountString.d.mts +35 -0
- package/dist/utils/normalizeAmountString.d.mts.map +1 -0
- package/dist/utils/{normalizeAmountString.js → normalizeAmountString.mjs} +2 -2
- package/dist/utils/normalizeAmountString.mjs.map +1 -0
- package/dist/utils/normalizeAssetId.cjs +60 -0
- package/dist/utils/normalizeAssetId.cjs.map +1 -0
- package/dist/utils/{normalizeAssetId.d.ts → normalizeAssetId.d.cts} +3 -3
- package/dist/utils/normalizeAssetId.d.cts.map +1 -0
- package/dist/utils/normalizeAssetId.d.mts +32 -0
- package/dist/utils/normalizeAssetId.d.mts.map +1 -0
- package/dist/utils/{normalizeAssetId.js → normalizeAssetId.mjs} +11 -4
- package/dist/utils/normalizeAssetId.mjs.map +1 -0
- package/dist/utils/snaps-assets-migration.cjs +171 -0
- package/dist/utils/snaps-assets-migration.cjs.map +1 -0
- package/dist/utils/{snaps-assets-migration.d.ts → snaps-assets-migration.d.cts} +5 -5
- package/dist/utils/snaps-assets-migration.d.cts.map +1 -0
- package/dist/utils/snaps-assets-migration.d.mts +113 -0
- package/dist/utils/snaps-assets-migration.d.mts.map +1 -0
- package/dist/utils/{snaps-assets-migration.js → snaps-assets-migration.mjs} +2 -2
- package/dist/utils/snaps-assets-migration.mjs.map +1 -0
- package/dist/utils/trace.cjs +120 -0
- package/dist/utils/trace.cjs.map +1 -0
- package/dist/utils/{trace.d.ts → trace.d.cts} +2 -2
- package/dist/utils/trace.d.cts.map +1 -0
- package/dist/utils/trace.d.mts +52 -0
- package/dist/utils/trace.d.mts.map +1 -0
- package/dist/utils/{trace.js → trace.mjs} +1 -1
- package/dist/utils/trace.mjs.map +1 -0
- package/package.json +18 -15
- package/dist/AssetsController-method-action-types.d.ts.map +0 -1
- package/dist/AssetsController-method-action-types.js.map +0 -1
- package/dist/AssetsController.d.ts.map +0 -1
- package/dist/AssetsController.js.map +0 -1
- package/dist/data-sources/AbstractDataSource.d.ts.map +0 -1
- package/dist/data-sources/AbstractDataSource.js.map +0 -1
- package/dist/data-sources/AccountActivityDataSource.d.ts.map +0 -1
- package/dist/data-sources/AccountActivityDataSource.js.map +0 -1
- package/dist/data-sources/AccountsApiDataSource.d.ts.map +0 -1
- package/dist/data-sources/AccountsApiDataSource.js.map +0 -1
- package/dist/data-sources/PriceDataSource.d.ts.map +0 -1
- package/dist/data-sources/PriceDataSource.js.map +0 -1
- package/dist/data-sources/RpcDataSource.d.ts.map +0 -1
- package/dist/data-sources/RpcDataSource.js.map +0 -1
- package/dist/data-sources/SnapDataSource.d.ts.map +0 -1
- package/dist/data-sources/SnapDataSource.js.map +0 -1
- package/dist/data-sources/StakedBalanceDataSource.d.ts.map +0 -1
- package/dist/data-sources/StakedBalanceDataSource.js.map +0 -1
- package/dist/data-sources/TokenDataSource.d.ts.map +0 -1
- package/dist/data-sources/TokenDataSource.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/MulticallClient.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/index.d.ts +0 -4
- package/dist/data-sources/evm-rpc-services/clients/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/clients/index.js +0 -3
- package/dist/data-sources/evm-rpc-services/clients/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/index.js +0 -4
- package/dist/data-sources/evm-rpc-services/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/StakedBalanceFetcher.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/TokenDetector.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/services/index.js +0 -4
- package/dist/data-sources/evm-rpc-services/services/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/assets.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/assets.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/assets.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/config.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/config.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/config.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/core.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/core.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/core.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/index.d.ts +0 -7
- package/dist/data-sources/evm-rpc-services/types/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/index.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/multicall.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/multicall.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/multicall.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/services.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/services.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/services.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/state.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/types/state.js +0 -2
- package/dist/data-sources/evm-rpc-services/types/state.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/assets.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/assets.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/batch.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/batch.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/index.d.ts +0 -4
- package/dist/data-sources/evm-rpc-services/utils/index.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/index.js +0 -4
- package/dist/data-sources/evm-rpc-services/utils/index.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/parsing.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/parsing.js.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.d.ts.map +0 -1
- package/dist/data-sources/evm-rpc-services/utils/staking-contracts.js.map +0 -1
- package/dist/data-sources/index.d.ts.map +0 -1
- package/dist/data-sources/index.js +0 -14
- package/dist/data-sources/index.js.map +0 -1
- package/dist/defaults.d.ts.map +0 -1
- package/dist/defaults.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.d.ts +0 -4
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -4
- package/dist/logger.js.map +0 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.d.ts.map +0 -1
- package/dist/middlewares/CustomAssetGraduationMiddleware.js.map +0 -1
- package/dist/middlewares/DetectionMiddleware.d.ts.map +0 -1
- package/dist/middlewares/DetectionMiddleware.js.map +0 -1
- package/dist/middlewares/ParallelMiddleware.d.ts.map +0 -1
- package/dist/middlewares/RpcFallbackMiddleware.d.ts.map +0 -1
- package/dist/middlewares/RpcFallbackMiddleware.js.map +0 -1
- package/dist/middlewares/index.d.ts +0 -9
- package/dist/middlewares/index.d.ts.map +0 -1
- package/dist/middlewares/index.js +0 -5
- package/dist/middlewares/index.js.map +0 -1
- package/dist/migrations/healAssetsInfoMetadata.d.ts.map +0 -1
- package/dist/migrations/healAssetsInfoMetadata.js.map +0 -1
- package/dist/selectors/balance.d.ts.map +0 -1
- package/dist/selectors/balance.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils/constants.d.ts +0 -2
- package/dist/utils/constants.d.ts.map +0 -1
- package/dist/utils/constants.js.map +0 -1
- package/dist/utils/customAssetsRpcSupplement.d.ts.map +0 -1
- package/dist/utils/customAssetsRpcSupplement.js.map +0 -1
- package/dist/utils/dedupingBatchFetcher.d.ts.map +0 -1
- package/dist/utils/dedupingBatchFetcher.js.map +0 -1
- package/dist/utils/fetchWithTimeout.d.ts.map +0 -1
- package/dist/utils/fetchWithTimeout.js.map +0 -1
- package/dist/utils/formatExchangeRatesForBridge.d.ts.map +0 -1
- package/dist/utils/formatExchangeRatesForBridge.js.map +0 -1
- package/dist/utils/formatStateForTransactionPay.d.ts.map +0 -1
- package/dist/utils/formatStateForTransactionPay.js.map +0 -1
- package/dist/utils/index.d.ts +0 -9
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -7
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/native-assets.d.ts.map +0 -1
- package/dist/utils/native-assets.js.map +0 -1
- package/dist/utils/normalizeAmountString.d.ts.map +0 -1
- package/dist/utils/normalizeAmountString.js.map +0 -1
- package/dist/utils/normalizeAssetId.d.ts.map +0 -1
- package/dist/utils/normalizeAssetId.js.map +0 -1
- package/dist/utils/snaps-assets-migration.d.ts.map +0 -1
- package/dist/utils/snaps-assets-migration.js.map +0 -1
- package/dist/utils/trace.d.ts.map +0 -1
- package/dist/utils/trace.js.map +0 -1
|
@@ -0,0 +1,586 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
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");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _AccountsApiDataSource_instances, _AccountsApiDataSource_onActiveChainsUpdated, _AccountsApiDataSource_pollInterval, _AccountsApiDataSource_fetchTimeoutMs, _AccountsApiDataSource_tokenDetectionEnabled, _AccountsApiDataSource_messenger, _AccountsApiDataSource_apiClient, _AccountsApiDataSource_chainsRefreshTimer, _AccountsApiDataSource_getAssetsState, _AccountsApiDataSource_handleMigrationFeatureFlagsChanged, _AccountsApiDataSource_isBalanceV6Enabled, _AccountsApiDataSource_initializeActiveChains, _AccountsApiDataSource_refreshActiveChains, _AccountsApiDataSource_fetchActiveChains, _AccountsApiDataSource_fetchV5Balances, _AccountsApiDataSource_fetchV6Balances, _AccountsApiDataSource_buildAddressToAccountIdMap, _AccountsApiDataSource_processV5Balances, _AccountsApiDataSource_processV6Balances;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AccountsApiDataSource = exports.filterResponseToKnownAssets = void 0;
|
|
16
|
+
const core_backend_1 = require("@metamask/core-backend");
|
|
17
|
+
const utils_1 = require("@metamask/utils");
|
|
18
|
+
const logger_js_1 = require("../logger.cjs");
|
|
19
|
+
const index_js_1 = require("../utils/index.cjs");
|
|
20
|
+
const snaps_assets_migration_js_1 = require("../utils/snaps-assets-migration.cjs");
|
|
21
|
+
const AbstractDataSource_js_1 = require("./AbstractDataSource.cjs");
|
|
22
|
+
const index_js_2 = require("./evm-rpc-services/index.cjs");
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// CONSTANTS
|
|
25
|
+
// ============================================================================
|
|
26
|
+
const CONTROLLER_NAME = 'AccountsApiDataSource';
|
|
27
|
+
const DEFAULT_POLL_INTERVAL = 30000;
|
|
28
|
+
const DEFAULT_FETCH_TIMEOUT_MS = 15000;
|
|
29
|
+
const log = (0, logger_js_1.createModuleLogger)(logger_js_1.projectLogger, CONTROLLER_NAME);
|
|
30
|
+
const defaultState = {
|
|
31
|
+
activeChains: [],
|
|
32
|
+
};
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// HELPER FUNCTIONS
|
|
35
|
+
// ============================================================================
|
|
36
|
+
function decimalToChainId(decimalChainId) {
|
|
37
|
+
// Handle both decimal numbers and already-formatted CAIP chain IDs
|
|
38
|
+
if (typeof decimalChainId === 'string') {
|
|
39
|
+
if ((0, utils_1.isCaipChainId)(decimalChainId)) {
|
|
40
|
+
return decimalChainId;
|
|
41
|
+
}
|
|
42
|
+
return (0, utils_1.toCaipChainId)(utils_1.KnownCaipNamespace.Eip155, decimalChainId);
|
|
43
|
+
}
|
|
44
|
+
return (0, utils_1.toCaipChainId)(utils_1.KnownCaipNamespace.Eip155, String(decimalChainId));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Convert a CAIP-2 chain ID from the API response to our ChainId type.
|
|
48
|
+
* Handles both formats: "eip155:1" or just "1" (decimal).
|
|
49
|
+
* Uses @metamask/utils for CAIP parsing.
|
|
50
|
+
*
|
|
51
|
+
* @param chainIdStr - The chain ID string to convert.
|
|
52
|
+
* @returns The normalized ChainId.
|
|
53
|
+
*/
|
|
54
|
+
function caipChainIdToChainId(chainIdStr) {
|
|
55
|
+
if ((0, utils_1.isCaipChainId)(chainIdStr)) {
|
|
56
|
+
return chainIdStr;
|
|
57
|
+
}
|
|
58
|
+
return (0, utils_1.toCaipChainId)(utils_1.KnownCaipNamespace.Eip155, chainIdStr);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Filter a response to only include balances for assets already in state.
|
|
62
|
+
* Used when tokenDetectionEnabled is false to prevent adding new tokens.
|
|
63
|
+
*
|
|
64
|
+
* @param response - The fetch response to filter.
|
|
65
|
+
* @param assetsState - Current assets controller state to check existing balances against.
|
|
66
|
+
* @returns A new response with only known asset balances.
|
|
67
|
+
*/
|
|
68
|
+
function filterResponseToKnownAssets(response, assetsState) {
|
|
69
|
+
if (!response.assetsBalance) {
|
|
70
|
+
return response;
|
|
71
|
+
}
|
|
72
|
+
const filteredBalance = {};
|
|
73
|
+
for (const [accountId, accountBalances] of Object.entries(response.assetsBalance)) {
|
|
74
|
+
const existingBalances = assetsState.assetsBalance[accountId];
|
|
75
|
+
if (!existingBalances) {
|
|
76
|
+
// Account has no balances in state yet — skip all its tokens
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const filtered = {};
|
|
80
|
+
for (const [assetId, balance] of Object.entries(accountBalances)) {
|
|
81
|
+
// Only include assets already tracked in state
|
|
82
|
+
if (assetId in existingBalances) {
|
|
83
|
+
filtered[assetId] = balance;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (Object.keys(filtered).length > 0) {
|
|
87
|
+
filteredBalance[accountId] = filtered;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
...response,
|
|
92
|
+
assetsBalance: Object.keys(filteredBalance).length > 0 ? filteredBalance : undefined,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
exports.filterResponseToKnownAssets = filterResponseToKnownAssets;
|
|
96
|
+
// ============================================================================
|
|
97
|
+
// ACCOUNTS API DATA SOURCE
|
|
98
|
+
// ============================================================================
|
|
99
|
+
/**
|
|
100
|
+
* Data source for fetching balances from the MetaMask Accounts API.
|
|
101
|
+
*
|
|
102
|
+
* Uses ApiPlatformClient (queryApiClient) for all API calls. Does not use the
|
|
103
|
+
* messenger. Reports active chains via onActiveChainsUpdated callback.
|
|
104
|
+
*/
|
|
105
|
+
class AccountsApiDataSource extends AbstractDataSource_js_1.AbstractDataSource {
|
|
106
|
+
constructor(options) {
|
|
107
|
+
super(CONTROLLER_NAME, {
|
|
108
|
+
...defaultState,
|
|
109
|
+
...options.state,
|
|
110
|
+
});
|
|
111
|
+
_AccountsApiDataSource_instances.add(this);
|
|
112
|
+
_AccountsApiDataSource_onActiveChainsUpdated.set(this, void 0);
|
|
113
|
+
_AccountsApiDataSource_pollInterval.set(this, void 0);
|
|
114
|
+
_AccountsApiDataSource_fetchTimeoutMs.set(this, void 0);
|
|
115
|
+
/** Getter avoids stale value when user toggles token detection at runtime. */
|
|
116
|
+
_AccountsApiDataSource_tokenDetectionEnabled.set(this, void 0);
|
|
117
|
+
/** Shared AssetsController messenger, used to read remote feature flags. */
|
|
118
|
+
_AccountsApiDataSource_messenger.set(this, void 0);
|
|
119
|
+
/** ApiPlatformClient for cached API calls */
|
|
120
|
+
_AccountsApiDataSource_apiClient.set(this, void 0);
|
|
121
|
+
/** Chains refresh timer */
|
|
122
|
+
_AccountsApiDataSource_chainsRefreshTimer.set(this, null);
|
|
123
|
+
/** State accessor from subscriptions (for filtering when tokenDetectionEnabled is false) */
|
|
124
|
+
_AccountsApiDataSource_getAssetsState.set(this, void 0);
|
|
125
|
+
__classPrivateFieldSet(this, _AccountsApiDataSource_onActiveChainsUpdated, options.onActiveChainsUpdated, "f");
|
|
126
|
+
__classPrivateFieldSet(this, _AccountsApiDataSource_pollInterval, options.pollInterval ?? DEFAULT_POLL_INTERVAL, "f");
|
|
127
|
+
__classPrivateFieldSet(this, _AccountsApiDataSource_fetchTimeoutMs, options.fetchTimeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS, "f");
|
|
128
|
+
__classPrivateFieldSet(this, _AccountsApiDataSource_tokenDetectionEnabled, options.tokenDetectionEnabled ?? (() => true), "f");
|
|
129
|
+
__classPrivateFieldSet(this, _AccountsApiDataSource_messenger, options.messenger, "f");
|
|
130
|
+
__classPrivateFieldSet(this, _AccountsApiDataSource_apiClient, options.queryApiClient, "f");
|
|
131
|
+
// The Snaps → AssetsController migration flags gate which migration networks
|
|
132
|
+
// (Solana, Stellar, Tron) are surfaced as active chains (see
|
|
133
|
+
// `#shouldSupportChain`). Mirror core-backend's AccountActivityService and
|
|
134
|
+
// react to remote feature flag changes so newly-enabled chains are picked up
|
|
135
|
+
// (and disabled ones dropped) without waiting for the periodic refresh.
|
|
136
|
+
__classPrivateFieldGet(this, _AccountsApiDataSource_messenger, "f").subscribe(
|
|
137
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
138
|
+
'RemoteFeatureFlagController:stateChange',
|
|
139
|
+
// Promise result intentionally not awaited
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
141
|
+
async () => await __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_handleMigrationFeatureFlagsChanged).call(this),
|
|
142
|
+
// Only react to changes in the set of migration stages. The messenger
|
|
143
|
+
// compares selector results with strict equality, so the selector must
|
|
144
|
+
// return a primitive rather than a fresh object.
|
|
145
|
+
(state) => (0, snaps_assets_migration_js_1.getMigrationStages)(state.remoteFeatureFlags).join(','));
|
|
146
|
+
__classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_initializeActiveChains).call(this).catch(console.error);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Re-fetch supported networks from the Accounts API and update `activeChains`
|
|
150
|
+
* when the list changed. Used when the selected EVM network switches so
|
|
151
|
+
* chain claiming is not stuck on an empty init-time list.
|
|
152
|
+
*
|
|
153
|
+
* @returns Resolves when supported networks have been re-fetched.
|
|
154
|
+
*/
|
|
155
|
+
refreshActiveChains() {
|
|
156
|
+
return __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_refreshActiveChains).call(this);
|
|
157
|
+
}
|
|
158
|
+
// ============================================================================
|
|
159
|
+
// ACCOUNT SCOPE HELPERS
|
|
160
|
+
// ============================================================================
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// FETCH
|
|
163
|
+
// ============================================================================
|
|
164
|
+
async fetch(request) {
|
|
165
|
+
let response = {};
|
|
166
|
+
// Filter to only chains supported by Accounts API
|
|
167
|
+
const supportedChains = new Set(this.state.activeChains);
|
|
168
|
+
const chainsToFetch = request.chainIds.filter((chainId) => supportedChains.has(chainId));
|
|
169
|
+
if (chainsToFetch.length === 0) {
|
|
170
|
+
// Mark unsupported chains as errors so they pass to next middleware
|
|
171
|
+
for (const chainId of request.chainIds) {
|
|
172
|
+
if (!supportedChains.has(chainId)) {
|
|
173
|
+
response.errors = response.errors ?? {};
|
|
174
|
+
response.errors[chainId] = 'Chain not supported by Accounts API';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return response;
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
// Build CAIP-10 account IDs (e.g., "eip155:1:0x1234...")
|
|
181
|
+
// Use pre-computed supportedChains per account from the request
|
|
182
|
+
const accountIds = request.accountsWithSupportedChains.flatMap(({ account, supportedChains: accountChains }) => chainsToFetch
|
|
183
|
+
.filter((chainId) => accountChains.includes(chainId))
|
|
184
|
+
.map((chainId) => `${chainId}:${account.address}`));
|
|
185
|
+
// Skip API call if no valid account-chain combinations
|
|
186
|
+
if (accountIds.length === 0) {
|
|
187
|
+
return response;
|
|
188
|
+
}
|
|
189
|
+
const fetchOptions = request.forceUpdate
|
|
190
|
+
? { staleTime: 0, gcTime: 0 }
|
|
191
|
+
: undefined;
|
|
192
|
+
// Feature-flagged: v6 endpoint with a fallback to legacy v5. The flag is
|
|
193
|
+
// read here (not cached) so a runtime toggle can revert v6 -> v5.
|
|
194
|
+
const { unprocessedNetworks, assetsBalance } = __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_isBalanceV6Enabled).call(this)
|
|
195
|
+
? await __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_fetchV6Balances).call(this, accountIds, fetchOptions, request)
|
|
196
|
+
: await __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_fetchV5Balances).call(this, accountIds, fetchOptions, request);
|
|
197
|
+
// Handle unprocessed networks - these will be passed to next middleware
|
|
198
|
+
if (unprocessedNetworks.length > 0) {
|
|
199
|
+
const unprocessedChainIds = unprocessedNetworks.map(caipChainIdToChainId);
|
|
200
|
+
// Add unprocessed chains to errors so middleware passes them to next data source
|
|
201
|
+
response.errors = response.errors ?? {};
|
|
202
|
+
for (const chainId of unprocessedChainIds) {
|
|
203
|
+
response.errors[chainId] = 'Unprocessed by Accounts API';
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
response.assetsBalance = assetsBalance;
|
|
207
|
+
response.updateMode = 'merge';
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
log('Fetch FAILED', { error, chains: chainsToFetch });
|
|
211
|
+
// On error, mark all chains as errors so they can be handled by next middleware
|
|
212
|
+
response.errors = response.errors ?? {};
|
|
213
|
+
for (const chainId of chainsToFetch) {
|
|
214
|
+
response.errors[chainId] =
|
|
215
|
+
`Fetch failed: ${error instanceof Error ? error.message : String(error)}`;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Mark unsupported chains as errors so they pass to next middleware
|
|
219
|
+
for (const chainId of request.chainIds) {
|
|
220
|
+
if (!supportedChains.has(chainId)) {
|
|
221
|
+
response.errors = response.errors ?? {};
|
|
222
|
+
response.errors[chainId] = 'Chain not supported by Accounts API';
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// When token detection is disabled, filter out tokens not already in state
|
|
226
|
+
if (!__classPrivateFieldGet(this, _AccountsApiDataSource_tokenDetectionEnabled, "f").call(this) && __classPrivateFieldGet(this, _AccountsApiDataSource_getAssetsState, "f")) {
|
|
227
|
+
response = filterResponseToKnownAssets(response, __classPrivateFieldGet(this, _AccountsApiDataSource_getAssetsState, "f").call(this));
|
|
228
|
+
}
|
|
229
|
+
return response;
|
|
230
|
+
}
|
|
231
|
+
// ============================================================================
|
|
232
|
+
// MIDDLEWARE
|
|
233
|
+
// ============================================================================
|
|
234
|
+
/**
|
|
235
|
+
* Get the middleware for fetching balances via Accounts API.
|
|
236
|
+
* This middleware:
|
|
237
|
+
* - Supports multiple accounts in a single request
|
|
238
|
+
* - Uses unprocessedNetworks from API response to determine what to pass to next middleware
|
|
239
|
+
* - Merges response into context
|
|
240
|
+
* - Removes handled chains from request for next middleware
|
|
241
|
+
*
|
|
242
|
+
* @returns The middleware function for the assets pipeline.
|
|
243
|
+
*/
|
|
244
|
+
get assetsMiddleware() {
|
|
245
|
+
return async (context, next) => {
|
|
246
|
+
var _a;
|
|
247
|
+
const { request } = context;
|
|
248
|
+
// Price/metadata-only requests must not hit the Accounts API.
|
|
249
|
+
if (!request.dataTypes.includes('balance')) {
|
|
250
|
+
return next(context);
|
|
251
|
+
}
|
|
252
|
+
// If no chains requested, skip to next middleware
|
|
253
|
+
if (request.chainIds.length === 0) {
|
|
254
|
+
return next(context);
|
|
255
|
+
}
|
|
256
|
+
let successfullyHandledChains = [];
|
|
257
|
+
try {
|
|
258
|
+
const response = await this.fetch(request);
|
|
259
|
+
// Merge response into context
|
|
260
|
+
if (response.assetsBalance) {
|
|
261
|
+
(_a = context.response).assetsBalance ?? (_a.assetsBalance = {});
|
|
262
|
+
for (const [accountId, accountBalances] of Object.entries(response.assetsBalance)) {
|
|
263
|
+
context.response.assetsBalance[accountId] = {
|
|
264
|
+
...context.response.assetsBalance[accountId],
|
|
265
|
+
...accountBalances,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Determine successfully handled chains (exclude unprocessed/error chains)
|
|
270
|
+
const unprocessedChains = new Set(Object.keys(response.errors ?? {}));
|
|
271
|
+
successfullyHandledChains = request.chainIds.filter((chainId) => !unprocessedChains.has(chainId));
|
|
272
|
+
// When token detection is off and we filtered out all balance data (e.g. new
|
|
273
|
+
// account with empty state), do not claim any chain as handled so that RPC
|
|
274
|
+
// middleware can still process them and fetch native balances (ETH, MATIC, etc.).
|
|
275
|
+
if (!__classPrivateFieldGet(this, _AccountsApiDataSource_tokenDetectionEnabled, "f").call(this) &&
|
|
276
|
+
(!response.assetsBalance ||
|
|
277
|
+
Object.keys(response.assetsBalance).length === 0)) {
|
|
278
|
+
successfullyHandledChains = [];
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
log('Middleware fetch failed', { error });
|
|
283
|
+
successfullyHandledChains = [];
|
|
284
|
+
}
|
|
285
|
+
// Remove successfully handled chains from request for next middleware
|
|
286
|
+
if (successfullyHandledChains.length > 0) {
|
|
287
|
+
const remainingChains = request.chainIds.filter((chainId) => !successfullyHandledChains.includes(chainId));
|
|
288
|
+
return next({
|
|
289
|
+
...context,
|
|
290
|
+
request: {
|
|
291
|
+
...request,
|
|
292
|
+
chainIds: remainingChains,
|
|
293
|
+
},
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
// No chains handled - pass context unchanged
|
|
297
|
+
return next(context);
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
// ============================================================================
|
|
301
|
+
// SUBSCRIBE
|
|
302
|
+
// ============================================================================
|
|
303
|
+
async subscribe(subscriptionRequest) {
|
|
304
|
+
const { request, subscriptionId, isUpdate, skipInitialFetch } = subscriptionRequest;
|
|
305
|
+
// Store state accessor for filtering when tokenDetectionEnabled is false
|
|
306
|
+
if (subscriptionRequest.getAssetsState) {
|
|
307
|
+
__classPrivateFieldSet(this, _AccountsApiDataSource_getAssetsState, subscriptionRequest.getAssetsState, "f");
|
|
308
|
+
}
|
|
309
|
+
// Try all requested chains - API will handle unsupported ones via unprocessedNetworks
|
|
310
|
+
const chainsToSubscribe = request.chainIds;
|
|
311
|
+
if (chainsToSubscribe.length === 0) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
// Handle subscription update - update both chains AND request (for accounts)
|
|
315
|
+
if (isUpdate) {
|
|
316
|
+
const existing = this.activeSubscriptions.get(subscriptionId);
|
|
317
|
+
if (existing) {
|
|
318
|
+
const previousChains = existing.chains;
|
|
319
|
+
existing.chains = chainsToSubscribe;
|
|
320
|
+
existing.request = request;
|
|
321
|
+
// Chains handed off from another data source (e.g. the websocket
|
|
322
|
+
// source releasing a chain that went down) would otherwise stay
|
|
323
|
+
// stale until the next poll tick — fetch them immediately.
|
|
324
|
+
const addedChains = chainsToSubscribe.filter((chainId) => !previousChains.includes(chainId));
|
|
325
|
+
if (addedChains.length > 0) {
|
|
326
|
+
try {
|
|
327
|
+
const fetchResponse = await this.fetch({
|
|
328
|
+
...request,
|
|
329
|
+
chainIds: addedChains,
|
|
330
|
+
forceUpdate: true,
|
|
331
|
+
});
|
|
332
|
+
await existing.onAssetsUpdate(fetchResponse);
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
log('Initial fetch for added chains failed', {
|
|
336
|
+
subscriptionId,
|
|
337
|
+
addedChains,
|
|
338
|
+
error,
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Clean up existing subscription if any
|
|
346
|
+
await this.unsubscribe(subscriptionId);
|
|
347
|
+
const pollInterval = request.updateInterval ?? __classPrivateFieldGet(this, _AccountsApiDataSource_pollInterval, "f");
|
|
348
|
+
// Create poll function for this subscription
|
|
349
|
+
const pollFn = async () => {
|
|
350
|
+
try {
|
|
351
|
+
const subscription = this.activeSubscriptions.get(subscriptionId);
|
|
352
|
+
if (!subscription?.request) {
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
// Use stored request (which gets updated on account changes).
|
|
356
|
+
// forceUpdate so we don't get a stale response from the cache
|
|
357
|
+
// (STALE_TIMES.BALANCES is 60s, longer than our 30s poll interval).
|
|
358
|
+
const fetchResponse = await this.fetch({
|
|
359
|
+
...subscription.request,
|
|
360
|
+
chainIds: subscription.chains,
|
|
361
|
+
forceUpdate: true,
|
|
362
|
+
});
|
|
363
|
+
// Report update to AssetsController via callback
|
|
364
|
+
await subscription.onAssetsUpdate(fetchResponse);
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
log('Subscription poll failed', { subscriptionId, error });
|
|
368
|
+
}
|
|
369
|
+
};
|
|
370
|
+
// Set up polling
|
|
371
|
+
const timer = setInterval(() => {
|
|
372
|
+
pollFn().catch(console.error);
|
|
373
|
+
}, pollInterval);
|
|
374
|
+
// Store subscription with request for account updates
|
|
375
|
+
this.activeSubscriptions.set(subscriptionId, {
|
|
376
|
+
cleanup: () => {
|
|
377
|
+
clearInterval(timer);
|
|
378
|
+
},
|
|
379
|
+
chains: chainsToSubscribe,
|
|
380
|
+
request,
|
|
381
|
+
onAssetsUpdate: subscriptionRequest.onAssetsUpdate,
|
|
382
|
+
});
|
|
383
|
+
// Interval above still polls on the normal cadence. This only skips the
|
|
384
|
+
// one-shot fetch at subscribe time when the controller already ran a
|
|
385
|
+
// force getAssets for the same scope (startup / group refresh).
|
|
386
|
+
if (!skipInitialFetch) {
|
|
387
|
+
await pollFn();
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
// ============================================================================
|
|
391
|
+
// CLEANUP
|
|
392
|
+
// ============================================================================
|
|
393
|
+
destroy() {
|
|
394
|
+
if (__classPrivateFieldGet(this, _AccountsApiDataSource_chainsRefreshTimer, "f")) {
|
|
395
|
+
clearInterval(__classPrivateFieldGet(this, _AccountsApiDataSource_chainsRefreshTimer, "f"));
|
|
396
|
+
}
|
|
397
|
+
super.destroy();
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
exports.AccountsApiDataSource = AccountsApiDataSource;
|
|
401
|
+
_AccountsApiDataSource_onActiveChainsUpdated = new WeakMap(), _AccountsApiDataSource_pollInterval = new WeakMap(), _AccountsApiDataSource_fetchTimeoutMs = new WeakMap(), _AccountsApiDataSource_tokenDetectionEnabled = new WeakMap(), _AccountsApiDataSource_messenger = new WeakMap(), _AccountsApiDataSource_apiClient = new WeakMap(), _AccountsApiDataSource_chainsRefreshTimer = new WeakMap(), _AccountsApiDataSource_getAssetsState = new WeakMap(), _AccountsApiDataSource_instances = new WeakSet(), _AccountsApiDataSource_handleMigrationFeatureFlagsChanged =
|
|
402
|
+
/**
|
|
403
|
+
* Handle a change to the Snaps → AssetsController migration flags: re-fetch
|
|
404
|
+
* active chains so newly-enabled migration networks are surfaced (and disabled
|
|
405
|
+
* ones dropped) without waiting for the periodic refresh. The refresh invokes
|
|
406
|
+
* `onActiveChainsUpdated` when the set changes, which drives re-subscription.
|
|
407
|
+
*/
|
|
408
|
+
async function _AccountsApiDataSource_handleMigrationFeatureFlagsChanged() {
|
|
409
|
+
try {
|
|
410
|
+
await __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_refreshActiveChains).call(this);
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
log('Failed to refresh active chains after feature flag change', {
|
|
414
|
+
error,
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
}, _AccountsApiDataSource_isBalanceV6Enabled = function _AccountsApiDataSource_isBalanceV6Enabled() {
|
|
418
|
+
try {
|
|
419
|
+
const { remoteFeatureFlags } = __classPrivateFieldGet(this, _AccountsApiDataSource_messenger, "f").call('RemoteFeatureFlagController:getState');
|
|
420
|
+
const flag = remoteFeatureFlags?.assetsAccountsApiV6;
|
|
421
|
+
return (typeof flag === 'object' &&
|
|
422
|
+
flag !== null &&
|
|
423
|
+
Boolean(flag.value));
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
428
|
+
}, _AccountsApiDataSource_initializeActiveChains =
|
|
429
|
+
// ============================================================================
|
|
430
|
+
// INITIALIZATION
|
|
431
|
+
// ============================================================================
|
|
432
|
+
async function _AccountsApiDataSource_initializeActiveChains() {
|
|
433
|
+
try {
|
|
434
|
+
const chains = await __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_fetchActiveChains).call(this);
|
|
435
|
+
const previous = [...this.state.activeChains];
|
|
436
|
+
this.updateActiveChains(chains, (updatedChains) => __classPrivateFieldGet(this, _AccountsApiDataSource_onActiveChainsUpdated, "f").call(this, this.getName(), updatedChains, previous));
|
|
437
|
+
// Periodically refresh active chains (every 20 minutes)
|
|
438
|
+
__classPrivateFieldSet(this, _AccountsApiDataSource_chainsRefreshTimer, setInterval(() => {
|
|
439
|
+
__classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_refreshActiveChains).call(this).catch(console.error);
|
|
440
|
+
}, 20 * 60 * 1000), "f");
|
|
441
|
+
}
|
|
442
|
+
catch (error) {
|
|
443
|
+
log('Failed to fetch active chains', error);
|
|
444
|
+
}
|
|
445
|
+
}, _AccountsApiDataSource_refreshActiveChains = async function _AccountsApiDataSource_refreshActiveChains() {
|
|
446
|
+
try {
|
|
447
|
+
const chains = await __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_fetchActiveChains).call(this);
|
|
448
|
+
const previousChains = new Set(this.state.activeChains);
|
|
449
|
+
const newChains = new Set(chains);
|
|
450
|
+
// Check if chains changed
|
|
451
|
+
const added = chains.filter((chain) => !previousChains.has(chain));
|
|
452
|
+
const removed = Array.from(previousChains).filter((chain) => !newChains.has(chain));
|
|
453
|
+
if (added.length > 0 || removed.length > 0) {
|
|
454
|
+
const previous = [...this.state.activeChains];
|
|
455
|
+
this.updateActiveChains(chains, (updatedChains) => __classPrivateFieldGet(this, _AccountsApiDataSource_onActiveChainsUpdated, "f").call(this, this.getName(), updatedChains, previous));
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
catch (error) {
|
|
459
|
+
log('Failed to refresh active chains', error);
|
|
460
|
+
}
|
|
461
|
+
}, _AccountsApiDataSource_fetchActiveChains = async function _AccountsApiDataSource_fetchActiveChains() {
|
|
462
|
+
const response = await __classPrivateFieldGet(this, _AccountsApiDataSource_apiClient, "f").accounts.fetchV2SupportedNetworks();
|
|
463
|
+
// Use fullSupport networks as active chains, gated by the Snaps →
|
|
464
|
+
// AssetsController migration FF: non-migration namespaces (e.g. `eip155`)
|
|
465
|
+
// are always surfaced, while migration networks (Solana, Stellar, Tron) are
|
|
466
|
+
// only surfaced once their per-network stage reaches
|
|
467
|
+
// ReadAssetsControllerWithFallback.
|
|
468
|
+
const { remoteFeatureFlags } = __classPrivateFieldGet(this, _AccountsApiDataSource_messenger, "f").call('RemoteFeatureFlagController:getState');
|
|
469
|
+
return response.fullSupport
|
|
470
|
+
.map(decimalToChainId)
|
|
471
|
+
.filter((chainId) => (0, snaps_assets_migration_js_1.shouldSupportChain)(chainId, remoteFeatureFlags));
|
|
472
|
+
}, _AccountsApiDataSource_fetchV5Balances =
|
|
473
|
+
/**
|
|
474
|
+
* Fetch balances from the legacy v5 endpoint and process them.
|
|
475
|
+
*
|
|
476
|
+
* @param accountIds - CAIP-10 account IDs to fetch balances for.
|
|
477
|
+
* @param fetchOptions - Cache/fetch options (e.g. force update settings).
|
|
478
|
+
* @param request - The original data request containing accounts to map.
|
|
479
|
+
* @returns Unprocessed networks and processed asset balances by account.
|
|
480
|
+
*/
|
|
481
|
+
async function _AccountsApiDataSource_fetchV5Balances(accountIds, fetchOptions, request) {
|
|
482
|
+
const apiResponse = await (0, index_js_1.fetchWithTimeout)(() => __classPrivateFieldGet(this, _AccountsApiDataSource_apiClient, "f").accounts.fetchV5MultiAccountBalances(accountIds, undefined, fetchOptions), __classPrivateFieldGet(this, _AccountsApiDataSource_fetchTimeoutMs, "f"));
|
|
483
|
+
const { assetsBalance } = __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_processV5Balances).call(this, apiResponse.balances, request);
|
|
484
|
+
return {
|
|
485
|
+
unprocessedNetworks: apiResponse.unprocessedNetworks,
|
|
486
|
+
assetsBalance,
|
|
487
|
+
};
|
|
488
|
+
}, _AccountsApiDataSource_fetchV6Balances =
|
|
489
|
+
/**
|
|
490
|
+
* Fetch balances from the v6 endpoint and process them.
|
|
491
|
+
*
|
|
492
|
+
* @param accountIds - CAIP-10 account IDs to fetch balances for.
|
|
493
|
+
* @param fetchOptions - Cache/fetch options (e.g. force update settings).
|
|
494
|
+
* @param request - The original data request containing accounts to map.
|
|
495
|
+
* @returns Unprocessed networks and processed asset balances by account.
|
|
496
|
+
*/
|
|
497
|
+
async function _AccountsApiDataSource_fetchV6Balances(accountIds, fetchOptions, request) {
|
|
498
|
+
const apiResponse = await (0, index_js_1.fetchWithTimeout)(() => __classPrivateFieldGet(this, _AccountsApiDataSource_apiClient, "f").accounts.fetchV6MultiAccountBalances(accountIds, undefined, fetchOptions), __classPrivateFieldGet(this, _AccountsApiDataSource_fetchTimeoutMs, "f"));
|
|
499
|
+
const { assetsBalance } = __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_processV6Balances).call(this, apiResponse.balances, request);
|
|
500
|
+
return {
|
|
501
|
+
unprocessedNetworks: apiResponse.unprocessedNetworks,
|
|
502
|
+
assetsBalance,
|
|
503
|
+
};
|
|
504
|
+
}, _AccountsApiDataSource_buildAddressToAccountIdMap = function _AccountsApiDataSource_buildAddressToAccountIdMap(request) {
|
|
505
|
+
const addressToAccountId = new Map();
|
|
506
|
+
for (const { account } of request.accountsWithSupportedChains) {
|
|
507
|
+
if (account.address) {
|
|
508
|
+
addressToAccountId.set(account.address.toLowerCase(), account.id);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
return addressToAccountId;
|
|
512
|
+
}, _AccountsApiDataSource_processV5Balances = function _AccountsApiDataSource_processV5Balances(balances, request) {
|
|
513
|
+
const assetsBalance = {};
|
|
514
|
+
// Build a map of lowercase addresses to account IDs for efficient lookup
|
|
515
|
+
const addressToAccountId = __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_buildAddressToAccountIdMap).call(this, request);
|
|
516
|
+
// V5 response: array of { accountId, assetId, balance, ... }
|
|
517
|
+
for (const item of balances) {
|
|
518
|
+
// Extract address from CAIP-10 account ID (e.g., "eip155:1:0x1234..." -> "0x1234...")
|
|
519
|
+
const addressParts = item.accountId.split(':');
|
|
520
|
+
if (addressParts.length < 3) {
|
|
521
|
+
continue;
|
|
522
|
+
}
|
|
523
|
+
const address = addressParts[2].toLowerCase();
|
|
524
|
+
// Find the matching account ID from request
|
|
525
|
+
const accountId = addressToAccountId.get(address);
|
|
526
|
+
if (!accountId) {
|
|
527
|
+
// This is normal - API returns balances for all chains, but request may only have one account
|
|
528
|
+
continue;
|
|
529
|
+
}
|
|
530
|
+
if (!assetsBalance[accountId]) {
|
|
531
|
+
assetsBalance[accountId] = {};
|
|
532
|
+
}
|
|
533
|
+
// Normalize asset ID (checksum EVM addresses for ERC20 tokens)
|
|
534
|
+
const normalizedAssetId = (0, index_js_1.normalizeAssetId)(item.assetId);
|
|
535
|
+
// Staked balances are owned by StakedBalanceDataSource. Accounts API may
|
|
536
|
+
// return the vault share token as a normal ERC-20 (often 0 or stale),
|
|
537
|
+
// which would overwrite or wipe the on-chain staked amount on merge.
|
|
538
|
+
if ((0, index_js_2.isStakingContractAssetId)(normalizedAssetId)) {
|
|
539
|
+
continue;
|
|
540
|
+
}
|
|
541
|
+
// Store balance as returned by API
|
|
542
|
+
assetsBalance[accountId][normalizedAssetId] = {
|
|
543
|
+
amount: item.balance,
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
return { assetsBalance };
|
|
547
|
+
}, _AccountsApiDataSource_processV6Balances = function _AccountsApiDataSource_processV6Balances(balances, request) {
|
|
548
|
+
const assetsBalance = Object.create(null);
|
|
549
|
+
// Build a map of lowercase addresses to account IDs for efficient lookup
|
|
550
|
+
const addressToAccountId = __classPrivateFieldGet(this, _AccountsApiDataSource_instances, "m", _AccountsApiDataSource_buildAddressToAccountIdMap).call(this, request);
|
|
551
|
+
for (const item of balances) {
|
|
552
|
+
// Extract address from CAIP-10 account ID (e.g., "eip155:1:0x1234..." -> "0x1234...")
|
|
553
|
+
const addressParts = item.accountId.split(':');
|
|
554
|
+
if (addressParts.length < 3) {
|
|
555
|
+
continue;
|
|
556
|
+
}
|
|
557
|
+
const address = addressParts[2].toLowerCase();
|
|
558
|
+
// Find the matching account ID from request
|
|
559
|
+
const accountId = addressToAccountId.get(address);
|
|
560
|
+
if (!accountId) {
|
|
561
|
+
// This is normal - API returns balances for all chains, but request may only have one account
|
|
562
|
+
continue;
|
|
563
|
+
}
|
|
564
|
+
// Only consume token balances; DeFi positions are handled elsewhere.
|
|
565
|
+
if (item.object !== 'token') {
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
if (!assetsBalance[accountId]) {
|
|
569
|
+
assetsBalance[accountId] = Object.create(null);
|
|
570
|
+
}
|
|
571
|
+
// Normalize asset ID (checksum EVM addresses for ERC20 tokens)
|
|
572
|
+
const normalizedAssetId = (0, index_js_1.normalizeAssetId)(item.assetId);
|
|
573
|
+
// Staked balances are owned by StakedBalanceDataSource. Accounts API may
|
|
574
|
+
// return the vault share token as a normal ERC-20 (often 0 or stale),
|
|
575
|
+
// which would overwrite or wipe the on-chain staked amount on merge.
|
|
576
|
+
if ((0, index_js_2.isStakingContractAssetId)(normalizedAssetId)) {
|
|
577
|
+
continue;
|
|
578
|
+
}
|
|
579
|
+
// Store balance as returned by API
|
|
580
|
+
assetsBalance[accountId][normalizedAssetId] = {
|
|
581
|
+
amount: item.balance,
|
|
582
|
+
};
|
|
583
|
+
}
|
|
584
|
+
return { assetsBalance };
|
|
585
|
+
};
|
|
586
|
+
//# sourceMappingURL=AccountsApiDataSource.cjs.map
|