@metamask-previews/assets-controllers 100.0.3-preview-685dbf46b → 100.1.0-preview-bc00f2c
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 +11 -2
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs +13 -2
- package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.d.cts.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.d.mts.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs +13 -2
- package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs.map +1 -1
- package/dist/token-service.cjs +76 -3
- package/dist/token-service.cjs.map +1 -1
- package/dist/token-service.d.cts +102 -2
- package/dist/token-service.d.cts.map +1 -1
- package/dist/token-service.d.mts +102 -2
- package/dist/token-service.d.mts.map +1 -1
- package/dist/token-service.mjs +74 -2
- package/dist/token-service.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -7,17 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [100.1.0]
|
|
11
|
+
|
|
10
12
|
### Added
|
|
11
13
|
|
|
12
14
|
- Export `MAP_CAIP_CURRENCIES` from the package (and from `MultichainAssetsRatesController`) so consumers can resolve selected currency to the same CAIP currency string used by MultichainAssetsRatesController ([#8076](https://github.com/MetaMask/core/pull/8076))
|
|
15
|
+
- Add `includeTokenSecurityData` option to `searchTokens` and `getTrendingTokens` to request token security data from the API ([#8106](https://github.com/MetaMask/core/pull/8106))
|
|
16
|
+
- Add `fetchTokenAssets` function to fetch token metadata by CAIP-19 asset IDs from the `/assets` endpoint ([#8106](https://github.com/MetaMask/core/pull/8106))
|
|
17
|
+
- Supports optional flags: `includeAggregators`, `includeCoingeckoId`, `includeLabels`, `includeMarketData`, `includeOccurrences`, `includeTokenSecurityData`, `includeRwaData`
|
|
18
|
+
- Export new types `TokenAsset`, `TokenSecurityData`, `TokenSecurityFeature`, `TokenSecurityHolder`, `TokenSecurityMarket`, `TokenSecurityFees`, `TokenSecurityFinancialStats`, and `TokenSecurityMetadata` ([#8106](https://github.com/MetaMask/core/pull/8106))
|
|
13
19
|
|
|
14
20
|
### Changed
|
|
15
21
|
|
|
16
|
-
- Bump `@metamask/
|
|
22
|
+
- Bump `@metamask/network-enablement-controller` from `^4.1.2` to `^4.2.0` ([#8107](https://github.com/MetaMask/core/pull/8107))
|
|
23
|
+
- Bump `@metamask/transaction-controller` from `^62.18.0` to `^62.20.0` ([#8031](https://github.com/MetaMask/core/pull/8031) [#8104](https://github.com/MetaMask/core/pull/8104))
|
|
17
24
|
|
|
18
25
|
### Fixed
|
|
19
26
|
|
|
20
27
|
- Fix `AccountsApiBalanceFetcher` to apply stricter conditions when zeroing out token balances ([#8044](https://github.com/MetaMask/core/pull/8044))
|
|
28
|
+
- Fix `AccountsApiBalanceFetcher` ERC-20 zeroing to only apply to accounts included in the current request, preventing stale-account entries from being incorrectly reset to zero ([#8095](https://github.com/MetaMask/core/pull/8095))
|
|
21
29
|
|
|
22
30
|
## [100.0.3]
|
|
23
31
|
|
|
@@ -2742,7 +2750,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
2742
2750
|
|
|
2743
2751
|
- Use Ethers for AssetsContractController ([#845](https://github.com/MetaMask/core/pull/845))
|
|
2744
2752
|
|
|
2745
|
-
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@100.0
|
|
2753
|
+
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@100.1.0...HEAD
|
|
2754
|
+
[100.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@100.0.3...@metamask/assets-controllers@100.1.0
|
|
2746
2755
|
[100.0.3]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@100.0.2...@metamask/assets-controllers@100.0.3
|
|
2747
2756
|
[100.0.2]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@100.0.1...@metamask/assets-controllers@100.0.2
|
|
2748
2757
|
[100.0.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controllers@100.0.0...@metamask/assets-controllers@100.0.1
|
package/dist/index.cjs
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.createFormatters = exports.selectAllAssets = exports.selectAssetsBySelectedAccountGroup = exports.calculateBalanceChangeForAccountGroup = exports.calculateBalanceChangeForAllWallets = exports.calculateBalanceForAllWallets = exports.DeFiPositionsController = exports.TokenSearchDiscoveryDataController = exports.MAP_CAIP_CURRENCIES = exports.getDefaultMultichainAssetsRatesControllerState = exports.MultichainAssetsRatesController = exports.getDefaultMultichainAssetsControllerState = exports.MultichainAssetsController = exports.MultichainBalancesController = exports.Cryptocurrency = exports.RatesController = exports.getTrendingTokens = exports.searchTokens = exports.getNativeTokenAddress = exports.SUPPORTED_CHAIN_IDS = exports.CodefiTokenPricesServiceV2 = exports.getKeyByValue = exports.fetchTokenContractExchangeRates = exports.getFormattedIpfsUrl = exports.formatIconUrlWithProxy = exports.isTokenDetectionSupportedForNetwork = exports.TokensController = exports.TokenRatesController = exports.getDefaultTokenRatesControllerState = exports.TokenListController = exports.TokenDetectionController = exports.TokenBalancesController = exports.NftDetectionController = exports.NftController = exports.getDefaultNftControllerState = exports.AssetsContractController = exports.SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID = exports.AccountTrackerController = void 0;
|
|
17
|
+
exports.createFormatters = exports.selectAllAssets = exports.selectAssetsBySelectedAccountGroup = exports.calculateBalanceChangeForAccountGroup = exports.calculateBalanceChangeForAllWallets = exports.calculateBalanceForAllWallets = exports.DeFiPositionsController = exports.TokenSearchDiscoveryDataController = exports.MAP_CAIP_CURRENCIES = exports.getDefaultMultichainAssetsRatesControllerState = exports.MultichainAssetsRatesController = exports.getDefaultMultichainAssetsControllerState = exports.MultichainAssetsController = exports.MultichainBalancesController = exports.Cryptocurrency = exports.RatesController = exports.fetchTokenAssets = exports.getTrendingTokens = exports.searchTokens = exports.getNativeTokenAddress = exports.SUPPORTED_CHAIN_IDS = exports.CodefiTokenPricesServiceV2 = exports.getKeyByValue = exports.fetchTokenContractExchangeRates = exports.getFormattedIpfsUrl = exports.formatIconUrlWithProxy = exports.isTokenDetectionSupportedForNetwork = exports.TokensController = exports.TokenRatesController = exports.getDefaultTokenRatesControllerState = exports.TokenListController = exports.TokenDetectionController = exports.TokenBalancesController = exports.NftDetectionController = exports.NftController = exports.getDefaultNftControllerState = exports.AssetsContractController = exports.SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID = exports.AccountTrackerController = void 0;
|
|
18
18
|
var AccountTrackerController_1 = require("./AccountTrackerController.cjs");
|
|
19
19
|
Object.defineProperty(exports, "AccountTrackerController", { enumerable: true, get: function () { return AccountTrackerController_1.AccountTrackerController; } });
|
|
20
20
|
var AssetsContractController_1 = require("./AssetsContractController.cjs");
|
|
@@ -50,6 +50,7 @@ Object.defineProperty(exports, "getNativeTokenAddress", { enumerable: true, get:
|
|
|
50
50
|
var token_service_1 = require("./token-service.cjs");
|
|
51
51
|
Object.defineProperty(exports, "searchTokens", { enumerable: true, get: function () { return token_service_1.searchTokens; } });
|
|
52
52
|
Object.defineProperty(exports, "getTrendingTokens", { enumerable: true, get: function () { return token_service_1.getTrendingTokens; } });
|
|
53
|
+
Object.defineProperty(exports, "fetchTokenAssets", { enumerable: true, get: function () { return token_service_1.fetchTokenAssets; } });
|
|
53
54
|
var RatesController_1 = require("./RatesController/index.cjs");
|
|
54
55
|
Object.defineProperty(exports, "RatesController", { enumerable: true, get: function () { return RatesController_1.RatesController; } });
|
|
55
56
|
Object.defineProperty(exports, "Cryptocurrency", { enumerable: true, get: function () { return RatesController_1.Cryptocurrency; } });
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAWA,2EAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AAuBjC,2EAGoC;AAFlC,mJAAA,uCAAuC,OAAA;AACvC,oIAAA,wBAAwB,OAAA;AAE1B,+DAAyC;AAYzC,qDAA8E;AAArE,6HAAA,4BAA4B,OAAA;AAAE,8GAAA,aAAa,OAAA;AAwBpD,uEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAU/B,yEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAWhC,2EAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AAWjC,iEAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAa5B,mEAGgC;AAF9B,2IAAA,mCAAmC,OAAA;AACnC,4HAAA,oBAAoB,OAAA;AAYtB,2DAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,+CAMsB;AALpB,iIAAA,mCAAmC,OAAA;AACnC,oHAAA,sBAAsB,OAAA;AACtB,iHAAA,mBAAmB,OAAA;AACnB,6HAAA,+BAA+B,OAAA;AAC/B,2GAAA,aAAa,OAAA;AAEf,yEAIgC;AAH9B,kIAAA,0BAA0B,OAAA;AAC1B,2HAAA,mBAAmB,OAAA;AACnB,6HAAA,qBAAqB,OAAA;AAEvB,
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAWA,2EAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AAuBjC,2EAGoC;AAFlC,mJAAA,uCAAuC,OAAA;AACvC,oIAAA,wBAAwB,OAAA;AAE1B,+DAAyC;AAYzC,qDAA8E;AAArE,6HAAA,4BAA4B,OAAA;AAAE,8GAAA,aAAa,OAAA;AAwBpD,uEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAU/B,yEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAWhC,2EAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AAWjC,iEAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAa5B,mEAGgC;AAF9B,2IAAA,mCAAmC,OAAA;AACnC,4HAAA,oBAAoB,OAAA;AAYtB,2DAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,+CAMsB;AALpB,iIAAA,mCAAmC,OAAA;AACnC,oHAAA,sBAAsB,OAAA;AACtB,iHAAA,mBAAmB,OAAA;AACnB,6HAAA,+BAA+B,OAAA;AAC/B,2GAAA,aAAa,OAAA;AAEf,yEAIgC;AAH9B,kIAAA,0BAA0B,OAAA;AAC1B,2HAAA,mBAAmB,OAAA;AACnB,6HAAA,qBAAqB,OAAA;AAEvB,qDAIyB;AAHvB,6GAAA,YAAY,OAAA;AACZ,kHAAA,iBAAiB,OAAA;AACjB,iHAAA,gBAAgB,OAAA;AAElB,+DAAoE;AAA3D,kHAAA,eAAe,OAAA;AAAE,iHAAA,cAAc,OAAA;AAWxC,yFAA8E;AAArE,4IAAA,4BAA4B,OAAA;AAUrC,qFAGsC;AAFpC,wIAAA,0BAA0B,OAAA;AAC1B,uJAAA,yCAAyC,OAAA;AAa3C,+FAG2C;AAFzC,kJAAA,+BAA+B,OAAA;AAC/B,iKAAA,8CAA8C,OAAA;AAEhD,+FAAwE;AAA/D,sIAAA,mBAAmB,OAAA;AAU5B,qGAA0F;AAAjF,wJAAA,kCAAkC,OAAA;AAU3C,iGAA4F;AAAnF,kIAAA,uBAAuB,OAAA;AAehC,2CAA2D;AAAlD,yHAAA,6BAA6B,OAAA;AAEtC,2CAGoB;AAFlB,+HAAA,mCAAmC,OAAA;AACnC,iIAAA,qCAAqC,OAAA;AAQvC,mEAGqC;AAFnC,qIAAA,kCAAkC,OAAA;AAClC,kHAAA,eAAe,OAAA;AAEjB,qDAAsD;AAA7C,8GAAA,gBAAgB,OAAA","sourcesContent":["export type {\n AccountInformation,\n AccountTrackerControllerMessenger,\n AccountTrackerControllerState,\n AccountTrackerControllerActions,\n AccountTrackerControllerGetStateAction,\n AccountTrackerControllerStateChangeEvent,\n AccountTrackerControllerEvents,\n AccountTrackerUpdateNativeBalancesAction,\n AccountTrackerUpdateStakedBalancesAction,\n} from './AccountTrackerController';\nexport { AccountTrackerController } from './AccountTrackerController';\nexport type {\n AssetsContractControllerActions,\n AssetsContractControllerEvents,\n AssetsContractControllerGetERC20StandardAction,\n AssetsContractControllerGetERC721StandardAction,\n AssetsContractControllerGetERC1155StandardAction,\n AssetsContractControllerGetERC20BalanceOfAction,\n AssetsContractControllerGetERC20TokenDecimalsAction,\n AssetsContractControllerGetERC20TokenNameAction,\n AssetsContractControllerGetERC721NftTokenIdAction,\n AssetsContractControllerGetERC721TokenURIAction,\n AssetsContractControllerGetERC721AssetNameAction,\n AssetsContractControllerGetERC721AssetSymbolAction,\n AssetsContractControllerGetERC721OwnerOfAction,\n AssetsContractControllerGetERC1155TokenURIAction,\n AssetsContractControllerGetERC1155BalanceOfAction,\n AssetsContractControllerTransferSingleERC1155Action,\n AssetsContractControllerGetTokenStandardAndDetailsAction,\n AssetsContractControllerGetBalancesInSingleCallAction,\n AssetsContractControllerMessenger,\n BalanceMap,\n} from './AssetsContractController';\nexport {\n SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID,\n AssetsContractController,\n} from './AssetsContractController';\nexport * from './CurrencyRateController';\nexport type {\n NftControllerState,\n NftControllerMessenger,\n NftControllerActions,\n NftControllerGetStateAction,\n NftControllerEvents,\n NftControllerStateChangeEvent,\n Nft,\n NftContract,\n NftMetadata,\n} from './NftController';\nexport { getDefaultNftControllerState, NftController } from './NftController';\nexport type {\n NftDetectionControllerMessenger,\n ApiNft,\n ApiNftContract,\n ApiNftLastSale,\n ApiNftCreator,\n ReservoirResponse,\n TokensResponse,\n BlockaidResultType,\n Blockaid,\n Market,\n TokenResponse,\n TopBid,\n LastSale,\n FeeBreakdown,\n Attributes,\n Collection,\n Royalties,\n Ownership,\n FloorAsk,\n Price,\n Metadata,\n} from './NftDetectionController';\nexport { NftDetectionController } from './NftDetectionController';\nexport type {\n TokenBalancesControllerActions,\n TokenBalancesControllerGetStateAction,\n TokenBalancesControllerEvents,\n TokenBalancesControllerMessenger,\n TokenBalancesControllerOptions,\n TokenBalancesControllerStateChangeEvent,\n TokenBalancesControllerState,\n} from './TokenBalancesController';\nexport { TokenBalancesController } from './TokenBalancesController';\nexport type {\n TokenDetectionControllerMessenger,\n TokenDetectionControllerActions,\n TokenDetectionControllerGetStateAction,\n TokenDetectionControllerDetectTokensAction,\n TokenDetectionControllerAddDetectedTokensViaWsAction,\n TokenDetectionControllerAddDetectedTokensViaPollingAction,\n TokenDetectionControllerEvents,\n TokenDetectionControllerStateChangeEvent,\n} from './TokenDetectionController';\nexport { TokenDetectionController } from './TokenDetectionController';\nexport type {\n TokenListState,\n TokenListToken,\n TokenListMap,\n TokenListStateChange,\n TokenListControllerEvents,\n GetTokenListState,\n TokenListControllerActions,\n TokenListControllerMessenger,\n} from './TokenListController';\nexport { TokenListController } from './TokenListController';\nexport type {\n ContractExchangeRates,\n ContractMarketData,\n Token,\n TokenRatesControllerActions,\n TokenRatesControllerEvents,\n TokenRatesControllerGetStateAction,\n TokenRatesControllerMessenger,\n TokenRatesControllerState,\n TokenRatesControllerStateChangeEvent,\n MarketDataDetails,\n} from './TokenRatesController';\nexport {\n getDefaultTokenRatesControllerState,\n TokenRatesController,\n} from './TokenRatesController';\nexport type {\n TokensControllerState,\n TokensControllerActions,\n TokensControllerGetStateAction,\n TokensControllerAddDetectedTokensAction,\n TokensControllerAddTokensAction,\n TokensControllerEvents,\n TokensControllerStateChangeEvent,\n TokensControllerMessenger,\n} from './TokensController';\nexport { TokensController } from './TokensController';\nexport {\n isTokenDetectionSupportedForNetwork,\n formatIconUrlWithProxy,\n getFormattedIpfsUrl,\n fetchTokenContractExchangeRates,\n getKeyByValue,\n} from './assetsUtil';\nexport {\n CodefiTokenPricesServiceV2,\n SUPPORTED_CHAIN_IDS,\n getNativeTokenAddress,\n} from './token-prices-service';\nexport {\n searchTokens,\n getTrendingTokens,\n fetchTokenAssets,\n} from './token-service';\nexport { RatesController, Cryptocurrency } from './RatesController';\nexport type {\n RatesControllerState,\n RatesControllerEvents,\n RatesControllerActions,\n RatesControllerMessenger,\n RatesControllerGetStateAction,\n RatesControllerStateChangeEvent,\n RatesControllerPollingStartedEvent,\n RatesControllerPollingStoppedEvent,\n} from './RatesController';\nexport { MultichainBalancesController } from './MultichainBalancesController';\nexport type {\n MultichainBalancesControllerState,\n MultichainBalancesControllerGetStateAction,\n MultichainBalancesControllerStateChange,\n MultichainBalancesControllerActions,\n MultichainBalancesControllerEvents,\n MultichainBalancesControllerMessenger,\n} from './MultichainBalancesController';\n\nexport {\n MultichainAssetsController,\n getDefaultMultichainAssetsControllerState,\n} from './MultichainAssetsController';\n\nexport type {\n MultichainAssetsControllerState,\n MultichainAssetsControllerGetStateAction,\n MultichainAssetsControllerStateChangeEvent,\n MultichainAssetsControllerActions,\n MultichainAssetsControllerEvents,\n MultichainAssetsControllerAccountAssetListUpdatedEvent,\n MultichainAssetsControllerMessenger,\n} from './MultichainAssetsController';\n\nexport {\n MultichainAssetsRatesController,\n getDefaultMultichainAssetsRatesControllerState,\n} from './MultichainAssetsRatesController';\nexport { MAP_CAIP_CURRENCIES } from './MultichainAssetsRatesController';\n\nexport type {\n MultichainAssetsRatesControllerState,\n MultichainAssetsRatesControllerActions,\n MultichainAssetsRatesControllerEvents,\n MultichainAssetsRatesControllerGetStateAction,\n MultichainAssetsRatesControllerStateChange,\n MultichainAssetsRatesControllerMessenger,\n} from './MultichainAssetsRatesController';\nexport { TokenSearchDiscoveryDataController } from './TokenSearchDiscoveryDataController';\nexport type {\n TokenDisplayData,\n TokenSearchDiscoveryDataControllerState,\n TokenSearchDiscoveryDataControllerGetStateAction,\n TokenSearchDiscoveryDataControllerEvents,\n TokenSearchDiscoveryDataControllerStateChangeEvent,\n TokenSearchDiscoveryDataControllerActions,\n TokenSearchDiscoveryDataControllerMessenger,\n} from './TokenSearchDiscoveryDataController';\nexport { DeFiPositionsController } from './DeFiPositionsController/DeFiPositionsController';\nexport type {\n DeFiPositionsControllerState,\n DeFiPositionsControllerActions,\n DeFiPositionsControllerEvents,\n DeFiPositionsControllerGetStateAction,\n DeFiPositionsControllerStateChangeEvent,\n DeFiPositionsControllerMessenger,\n} from './DeFiPositionsController/DeFiPositionsController';\nexport type { GroupedDeFiPositions } from './DeFiPositionsController/group-defi-positions';\nexport type {\n AccountGroupBalance,\n WalletBalance,\n AllWalletsBalance,\n} from './balances';\nexport { calculateBalanceForAllWallets } from './balances';\nexport type { BalanceChangePeriod, BalanceChangeResult } from './balances';\nexport {\n calculateBalanceChangeForAllWallets,\n calculateBalanceChangeForAccountGroup,\n} from './balances';\nexport type {\n AssetsByAccountGroup,\n AccountGroupAssets,\n Asset,\n AssetListState,\n} from './selectors/token-selectors';\nexport {\n selectAssetsBySelectedAccountGroup,\n selectAllAssets,\n} from './selectors/token-selectors';\nexport { createFormatters } from './utils/formatters';\nexport type {\n SortTrendingBy,\n TrendingAsset,\n TokenSearchItem,\n TokenAsset,\n TokenRwaData,\n TokenSecurityData,\n TokenSecurityFeature,\n TokenSecurityHolder,\n TokenSecurityMarket,\n TokenSecurityFees,\n TokenSecurityFinancialStats,\n TokenSecurityMetadata,\n} from './token-service';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -19,7 +19,7 @@ export type { TokensControllerState, TokensControllerActions, TokensControllerGe
|
|
|
19
19
|
export { TokensController } from "./TokensController.cjs";
|
|
20
20
|
export { isTokenDetectionSupportedForNetwork, formatIconUrlWithProxy, getFormattedIpfsUrl, fetchTokenContractExchangeRates, getKeyByValue, } from "./assetsUtil.cjs";
|
|
21
21
|
export { CodefiTokenPricesServiceV2, SUPPORTED_CHAIN_IDS, getNativeTokenAddress, } from "./token-prices-service/index.cjs";
|
|
22
|
-
export { searchTokens, getTrendingTokens } from "./token-service.cjs";
|
|
22
|
+
export { searchTokens, getTrendingTokens, fetchTokenAssets, } from "./token-service.cjs";
|
|
23
23
|
export { RatesController, Cryptocurrency } from "./RatesController/index.cjs";
|
|
24
24
|
export type { RatesControllerState, RatesControllerEvents, RatesControllerActions, RatesControllerMessenger, RatesControllerGetStateAction, RatesControllerStateChangeEvent, RatesControllerPollingStartedEvent, RatesControllerPollingStoppedEvent, } from "./RatesController/index.cjs";
|
|
25
25
|
export { MultichainBalancesController } from "./MultichainBalancesController/index.cjs";
|
|
@@ -41,5 +41,5 @@ export { calculateBalanceChangeForAllWallets, calculateBalanceChangeForAccountGr
|
|
|
41
41
|
export type { AssetsByAccountGroup, AccountGroupAssets, Asset, AssetListState, } from "./selectors/token-selectors.cjs";
|
|
42
42
|
export { selectAssetsBySelectedAccountGroup, selectAllAssets, } from "./selectors/token-selectors.cjs";
|
|
43
43
|
export { createFormatters } from "./utils/formatters.cjs";
|
|
44
|
-
export type { SortTrendingBy, TrendingAsset, TokenSearchItem, TokenRwaData, } from "./token-service.cjs";
|
|
44
|
+
export type { SortTrendingBy, TrendingAsset, TokenSearchItem, TokenAsset, TokenRwaData, TokenSecurityData, TokenSecurityFeature, TokenSecurityHolder, TokenSecurityMarket, TokenSecurityFees, TokenSecurityFinancialStats, TokenSecurityMetadata, } from "./token-service.cjs";
|
|
45
45
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,wCAAwC,EACxC,8BAA8B,EAC9B,wCAAwC,EACxC,wCAAwC,GACzC,uCAAmC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,8CAA8C,EAC9C,+CAA+C,EAC/C,gDAAgD,EAChD,+CAA+C,EAC/C,mDAAmD,EACnD,+CAA+C,EAC/C,iDAAiD,EACjD,+CAA+C,EAC/C,gDAAgD,EAChD,kDAAkD,EAClD,8CAA8C,EAC9C,gDAAgD,EAChD,iDAAiD,EACjD,mDAAmD,EACnD,wDAAwD,EACxD,qDAAqD,EACrD,iCAAiC,EACjC,UAAU,GACX,uCAAmC;AACpC,OAAO,EACL,uCAAuC,EACvC,wBAAwB,GACzB,uCAAmC;AACpC,6CAAyC;AACzC,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,EAC7B,GAAG,EACH,WAAW,EACX,WAAW,GACZ,4BAAwB;AACzB,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,4BAAwB;AAC9E,YAAY,EACV,+BAA+B,EAC/B,MAAM,EACN,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,MAAM,EACN,aAAa,EACb,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,qCAAiC;AAClC,OAAO,EAAE,sBAAsB,EAAE,qCAAiC;AAClE,YAAY,EACV,8BAA8B,EAC9B,qCAAqC,EACrC,6BAA6B,EAC7B,gCAAgC,EAChC,8BAA8B,EAC9B,uCAAuC,EACvC,4BAA4B,GAC7B,sCAAkC;AACnC,OAAO,EAAE,uBAAuB,EAAE,sCAAkC;AACpE,YAAY,EACV,iCAAiC,EACjC,+BAA+B,EAC/B,sCAAsC,EACtC,0CAA0C,EAC1C,oDAAoD,EACpD,yDAAyD,EACzD,8BAA8B,EAC9B,wCAAwC,GACzC,uCAAmC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,4BAA4B,GAC7B,kCAA8B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAC5D,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,kCAAkC,EAClC,6BAA6B,EAC7B,yBAAyB,EACzB,oCAAoC,EACpC,iBAAiB,GAClB,mCAA+B;AAChC,OAAO,EACL,mCAAmC,EACnC,oBAAoB,GACrB,mCAA+B;AAChC,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,uCAAuC,EACvC,+BAA+B,EAC/B,sBAAsB,EACtB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EACL,mCAAmC,EACnC,sBAAsB,EACtB,mBAAmB,EACnB,+BAA+B,EAC/B,aAAa,GACd,yBAAqB;AACtB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,GACtB,yCAA+B;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,wCAAwC,EACxC,8BAA8B,EAC9B,wCAAwC,EACxC,wCAAwC,GACzC,uCAAmC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,8CAA8C,EAC9C,+CAA+C,EAC/C,gDAAgD,EAChD,+CAA+C,EAC/C,mDAAmD,EACnD,+CAA+C,EAC/C,iDAAiD,EACjD,+CAA+C,EAC/C,gDAAgD,EAChD,kDAAkD,EAClD,8CAA8C,EAC9C,gDAAgD,EAChD,iDAAiD,EACjD,mDAAmD,EACnD,wDAAwD,EACxD,qDAAqD,EACrD,iCAAiC,EACjC,UAAU,GACX,uCAAmC;AACpC,OAAO,EACL,uCAAuC,EACvC,wBAAwB,GACzB,uCAAmC;AACpC,6CAAyC;AACzC,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,EAC7B,GAAG,EACH,WAAW,EACX,WAAW,GACZ,4BAAwB;AACzB,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,4BAAwB;AAC9E,YAAY,EACV,+BAA+B,EAC/B,MAAM,EACN,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,MAAM,EACN,aAAa,EACb,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,qCAAiC;AAClC,OAAO,EAAE,sBAAsB,EAAE,qCAAiC;AAClE,YAAY,EACV,8BAA8B,EAC9B,qCAAqC,EACrC,6BAA6B,EAC7B,gCAAgC,EAChC,8BAA8B,EAC9B,uCAAuC,EACvC,4BAA4B,GAC7B,sCAAkC;AACnC,OAAO,EAAE,uBAAuB,EAAE,sCAAkC;AACpE,YAAY,EACV,iCAAiC,EACjC,+BAA+B,EAC/B,sCAAsC,EACtC,0CAA0C,EAC1C,oDAAoD,EACpD,yDAAyD,EACzD,8BAA8B,EAC9B,wCAAwC,GACzC,uCAAmC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,4BAA4B,GAC7B,kCAA8B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAC5D,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,kCAAkC,EAClC,6BAA6B,EAC7B,yBAAyB,EACzB,oCAAoC,EACpC,iBAAiB,GAClB,mCAA+B;AAChC,OAAO,EACL,mCAAmC,EACnC,oBAAoB,GACrB,mCAA+B;AAChC,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,uCAAuC,EACvC,+BAA+B,EAC/B,sBAAsB,EACtB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EACL,mCAAmC,EACnC,sBAAsB,EACtB,mBAAmB,EACnB,+BAA+B,EAC/B,aAAa,GACd,yBAAqB;AACtB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,GACtB,yCAA+B;AAChC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,GACjB,4BAAwB;AACzB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oCAA0B;AACpE,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,+BAA+B,EAC/B,kCAAkC,EAClC,kCAAkC,GACnC,oCAA0B;AAC3B,OAAO,EAAE,4BAA4B,EAAE,iDAAuC;AAC9E,YAAY,EACV,iCAAiC,EACjC,0CAA0C,EAC1C,uCAAuC,EACvC,mCAAmC,EACnC,kCAAkC,EAClC,qCAAqC,GACtC,iDAAuC;AAExC,OAAO,EACL,0BAA0B,EAC1B,yCAAyC,GAC1C,+CAAqC;AAEtC,YAAY,EACV,+BAA+B,EAC/B,wCAAwC,EACxC,0CAA0C,EAC1C,iCAAiC,EACjC,gCAAgC,EAChC,sDAAsD,EACtD,mCAAmC,GACpC,+CAAqC;AAEtC,OAAO,EACL,+BAA+B,EAC/B,8CAA8C,GAC/C,oDAA0C;AAC3C,OAAO,EAAE,mBAAmB,EAAE,oDAA0C;AAExE,YAAY,EACV,oCAAoC,EACpC,sCAAsC,EACtC,qCAAqC,EACrC,6CAA6C,EAC7C,0CAA0C,EAC1C,wCAAwC,GACzC,oDAA0C;AAC3C,OAAO,EAAE,kCAAkC,EAAE,uDAA6C;AAC1F,YAAY,EACV,gBAAgB,EAChB,uCAAuC,EACvC,gDAAgD,EAChD,wCAAwC,EACxC,kDAAkD,EAClD,yCAAyC,EACzC,2CAA2C,GAC5C,uDAA6C;AAC9C,OAAO,EAAE,uBAAuB,EAAE,8DAA0D;AAC5F,YAAY,EACV,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,qCAAqC,EACrC,uCAAuC,EACvC,gCAAgC,GACjC,8DAA0D;AAC3D,YAAY,EAAE,oBAAoB,EAAE,2DAAuD;AAC3F,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,uBAAmB;AACpB,OAAO,EAAE,6BAA6B,EAAE,uBAAmB;AAC3D,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,uBAAmB;AAC3E,OAAO,EACL,mCAAmC,EACnC,qCAAqC,GACtC,uBAAmB;AACpB,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,EACL,cAAc,GACf,wCAAoC;AACrC,OAAO,EACL,kCAAkC,EAClC,eAAe,GAChB,wCAAoC;AACrC,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,YAAY,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,GACtB,4BAAwB"}
|
package/dist/index.d.mts
CHANGED
|
@@ -19,7 +19,7 @@ export type { TokensControllerState, TokensControllerActions, TokensControllerGe
|
|
|
19
19
|
export { TokensController } from "./TokensController.mjs";
|
|
20
20
|
export { isTokenDetectionSupportedForNetwork, formatIconUrlWithProxy, getFormattedIpfsUrl, fetchTokenContractExchangeRates, getKeyByValue, } from "./assetsUtil.mjs";
|
|
21
21
|
export { CodefiTokenPricesServiceV2, SUPPORTED_CHAIN_IDS, getNativeTokenAddress, } from "./token-prices-service/index.mjs";
|
|
22
|
-
export { searchTokens, getTrendingTokens } from "./token-service.mjs";
|
|
22
|
+
export { searchTokens, getTrendingTokens, fetchTokenAssets, } from "./token-service.mjs";
|
|
23
23
|
export { RatesController, Cryptocurrency } from "./RatesController/index.mjs";
|
|
24
24
|
export type { RatesControllerState, RatesControllerEvents, RatesControllerActions, RatesControllerMessenger, RatesControllerGetStateAction, RatesControllerStateChangeEvent, RatesControllerPollingStartedEvent, RatesControllerPollingStoppedEvent, } from "./RatesController/index.mjs";
|
|
25
25
|
export { MultichainBalancesController } from "./MultichainBalancesController/index.mjs";
|
|
@@ -41,5 +41,5 @@ export { calculateBalanceChangeForAllWallets, calculateBalanceChangeForAccountGr
|
|
|
41
41
|
export type { AssetsByAccountGroup, AccountGroupAssets, Asset, AssetListState, } from "./selectors/token-selectors.mjs";
|
|
42
42
|
export { selectAssetsBySelectedAccountGroup, selectAllAssets, } from "./selectors/token-selectors.mjs";
|
|
43
43
|
export { createFormatters } from "./utils/formatters.mjs";
|
|
44
|
-
export type { SortTrendingBy, TrendingAsset, TokenSearchItem, TokenRwaData, } from "./token-service.mjs";
|
|
44
|
+
export type { SortTrendingBy, TrendingAsset, TokenSearchItem, TokenAsset, TokenRwaData, TokenSecurityData, TokenSecurityFeature, TokenSecurityHolder, TokenSecurityMarket, TokenSecurityFees, TokenSecurityFinancialStats, TokenSecurityMetadata, } from "./token-service.mjs";
|
|
45
45
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,wCAAwC,EACxC,8BAA8B,EAC9B,wCAAwC,EACxC,wCAAwC,GACzC,uCAAmC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,8CAA8C,EAC9C,+CAA+C,EAC/C,gDAAgD,EAChD,+CAA+C,EAC/C,mDAAmD,EACnD,+CAA+C,EAC/C,iDAAiD,EACjD,+CAA+C,EAC/C,gDAAgD,EAChD,kDAAkD,EAClD,8CAA8C,EAC9C,gDAAgD,EAChD,iDAAiD,EACjD,mDAAmD,EACnD,wDAAwD,EACxD,qDAAqD,EACrD,iCAAiC,EACjC,UAAU,GACX,uCAAmC;AACpC,OAAO,EACL,uCAAuC,EACvC,wBAAwB,GACzB,uCAAmC;AACpC,6CAAyC;AACzC,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,EAC7B,GAAG,EACH,WAAW,EACX,WAAW,GACZ,4BAAwB;AACzB,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,4BAAwB;AAC9E,YAAY,EACV,+BAA+B,EAC/B,MAAM,EACN,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,MAAM,EACN,aAAa,EACb,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,qCAAiC;AAClC,OAAO,EAAE,sBAAsB,EAAE,qCAAiC;AAClE,YAAY,EACV,8BAA8B,EAC9B,qCAAqC,EACrC,6BAA6B,EAC7B,gCAAgC,EAChC,8BAA8B,EAC9B,uCAAuC,EACvC,4BAA4B,GAC7B,sCAAkC;AACnC,OAAO,EAAE,uBAAuB,EAAE,sCAAkC;AACpE,YAAY,EACV,iCAAiC,EACjC,+BAA+B,EAC/B,sCAAsC,EACtC,0CAA0C,EAC1C,oDAAoD,EACpD,yDAAyD,EACzD,8BAA8B,EAC9B,wCAAwC,GACzC,uCAAmC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,4BAA4B,GAC7B,kCAA8B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAC5D,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,kCAAkC,EAClC,6BAA6B,EAC7B,yBAAyB,EACzB,oCAAoC,EACpC,iBAAiB,GAClB,mCAA+B;AAChC,OAAO,EACL,mCAAmC,EACnC,oBAAoB,GACrB,mCAA+B;AAChC,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,uCAAuC,EACvC,+BAA+B,EAC/B,sBAAsB,EACtB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EACL,mCAAmC,EACnC,sBAAsB,EACtB,mBAAmB,EACnB,+BAA+B,EAC/B,aAAa,GACd,yBAAqB;AACtB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,GACtB,yCAA+B;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,EAC7B,+BAA+B,EAC/B,sCAAsC,EACtC,wCAAwC,EACxC,8BAA8B,EAC9B,wCAAwC,EACxC,wCAAwC,GACzC,uCAAmC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,YAAY,EACV,+BAA+B,EAC/B,8BAA8B,EAC9B,8CAA8C,EAC9C,+CAA+C,EAC/C,gDAAgD,EAChD,+CAA+C,EAC/C,mDAAmD,EACnD,+CAA+C,EAC/C,iDAAiD,EACjD,+CAA+C,EAC/C,gDAAgD,EAChD,kDAAkD,EAClD,8CAA8C,EAC9C,gDAAgD,EAChD,iDAAiD,EACjD,mDAAmD,EACnD,wDAAwD,EACxD,qDAAqD,EACrD,iCAAiC,EACjC,UAAU,GACX,uCAAmC;AACpC,OAAO,EACL,uCAAuC,EACvC,wBAAwB,GACzB,uCAAmC;AACpC,6CAAyC;AACzC,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,EAC7B,GAAG,EACH,WAAW,EACX,WAAW,GACZ,4BAAwB;AACzB,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,4BAAwB;AAC9E,YAAY,EACV,+BAA+B,EAC/B,MAAM,EACN,cAAc,EACd,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,MAAM,EACN,aAAa,EACb,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,qCAAiC;AAClC,OAAO,EAAE,sBAAsB,EAAE,qCAAiC;AAClE,YAAY,EACV,8BAA8B,EAC9B,qCAAqC,EACrC,6BAA6B,EAC7B,gCAAgC,EAChC,8BAA8B,EAC9B,uCAAuC,EACvC,4BAA4B,GAC7B,sCAAkC;AACnC,OAAO,EAAE,uBAAuB,EAAE,sCAAkC;AACpE,YAAY,EACV,iCAAiC,EACjC,+BAA+B,EAC/B,sCAAsC,EACtC,0CAA0C,EAC1C,oDAAoD,EACpD,yDAAyD,EACzD,8BAA8B,EAC9B,wCAAwC,GACzC,uCAAmC;AACpC,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AACtE,YAAY,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,0BAA0B,EAC1B,4BAA4B,GAC7B,kCAA8B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAC5D,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,kCAAkC,EAClC,6BAA6B,EAC7B,yBAAyB,EACzB,oCAAoC,EACpC,iBAAiB,GAClB,mCAA+B;AAChC,OAAO,EACL,mCAAmC,EACnC,oBAAoB,GACrB,mCAA+B;AAChC,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,8BAA8B,EAC9B,uCAAuC,EACvC,+BAA+B,EAC/B,sBAAsB,EACtB,gCAAgC,EAChC,yBAAyB,GAC1B,+BAA2B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EACL,mCAAmC,EACnC,sBAAsB,EACtB,mBAAmB,EACnB,+BAA+B,EAC/B,aAAa,GACd,yBAAqB;AACtB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,GACtB,yCAA+B;AAChC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,GACjB,4BAAwB;AACzB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oCAA0B;AACpE,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,+BAA+B,EAC/B,kCAAkC,EAClC,kCAAkC,GACnC,oCAA0B;AAC3B,OAAO,EAAE,4BAA4B,EAAE,iDAAuC;AAC9E,YAAY,EACV,iCAAiC,EACjC,0CAA0C,EAC1C,uCAAuC,EACvC,mCAAmC,EACnC,kCAAkC,EAClC,qCAAqC,GACtC,iDAAuC;AAExC,OAAO,EACL,0BAA0B,EAC1B,yCAAyC,GAC1C,+CAAqC;AAEtC,YAAY,EACV,+BAA+B,EAC/B,wCAAwC,EACxC,0CAA0C,EAC1C,iCAAiC,EACjC,gCAAgC,EAChC,sDAAsD,EACtD,mCAAmC,GACpC,+CAAqC;AAEtC,OAAO,EACL,+BAA+B,EAC/B,8CAA8C,GAC/C,oDAA0C;AAC3C,OAAO,EAAE,mBAAmB,EAAE,oDAA0C;AAExE,YAAY,EACV,oCAAoC,EACpC,sCAAsC,EACtC,qCAAqC,EACrC,6CAA6C,EAC7C,0CAA0C,EAC1C,wCAAwC,GACzC,oDAA0C;AAC3C,OAAO,EAAE,kCAAkC,EAAE,uDAA6C;AAC1F,YAAY,EACV,gBAAgB,EAChB,uCAAuC,EACvC,gDAAgD,EAChD,wCAAwC,EACxC,kDAAkD,EAClD,yCAAyC,EACzC,2CAA2C,GAC5C,uDAA6C;AAC9C,OAAO,EAAE,uBAAuB,EAAE,8DAA0D;AAC5F,YAAY,EACV,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,qCAAqC,EACrC,uCAAuC,EACvC,gCAAgC,GACjC,8DAA0D;AAC3D,YAAY,EAAE,oBAAoB,EAAE,2DAAuD;AAC3F,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,uBAAmB;AACpB,OAAO,EAAE,6BAA6B,EAAE,uBAAmB;AAC3D,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,uBAAmB;AAC3E,OAAO,EACL,mCAAmC,EACnC,qCAAqC,GACtC,uBAAmB;AACpB,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,EACL,cAAc,GACf,wCAAoC;AACrC,OAAO,EACL,kCAAkC,EAClC,eAAe,GAChB,wCAAoC;AACrC,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,YAAY,EACV,cAAc,EACd,aAAa,EACb,eAAe,EACf,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,GACtB,4BAAwB"}
|
package/dist/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ export { getDefaultTokenRatesControllerState, TokenRatesController } from "./Tok
|
|
|
10
10
|
export { TokensController } from "./TokensController.mjs";
|
|
11
11
|
export { isTokenDetectionSupportedForNetwork, formatIconUrlWithProxy, getFormattedIpfsUrl, fetchTokenContractExchangeRates, getKeyByValue } from "./assetsUtil.mjs";
|
|
12
12
|
export { CodefiTokenPricesServiceV2, SUPPORTED_CHAIN_IDS, getNativeTokenAddress } from "./token-prices-service/index.mjs";
|
|
13
|
-
export { searchTokens, getTrendingTokens } from "./token-service.mjs";
|
|
13
|
+
export { searchTokens, getTrendingTokens, fetchTokenAssets } from "./token-service.mjs";
|
|
14
14
|
export { RatesController, Cryptocurrency } from "./RatesController/index.mjs";
|
|
15
15
|
export { MultichainBalancesController } from "./MultichainBalancesController/index.mjs";
|
|
16
16
|
export { MultichainAssetsController, getDefaultMultichainAssetsControllerState } from "./MultichainAssetsController/index.mjs";
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AAuBtE,OAAO,EACL,uCAAuC,EACvC,wBAAwB,EACzB,uCAAmC;AACpC,6CAAyC;AAYzC,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,4BAAwB;AAwB9E,OAAO,EAAE,sBAAsB,EAAE,qCAAiC;AAUlE,OAAO,EAAE,uBAAuB,EAAE,sCAAkC;AAWpE,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AAWtE,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAa5D,OAAO,EACL,mCAAmC,EACnC,oBAAoB,EACrB,mCAA+B;AAWhC,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EACL,mCAAmC,EACnC,sBAAsB,EACtB,mBAAmB,EACnB,+BAA+B,EAC/B,aAAa,EACd,yBAAqB;AACtB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACtB,yCAA+B;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AAuBtE,OAAO,EACL,uCAAuC,EACvC,wBAAwB,EACzB,uCAAmC;AACpC,6CAAyC;AAYzC,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,4BAAwB;AAwB9E,OAAO,EAAE,sBAAsB,EAAE,qCAAiC;AAUlE,OAAO,EAAE,uBAAuB,EAAE,sCAAkC;AAWpE,OAAO,EAAE,wBAAwB,EAAE,uCAAmC;AAWtE,OAAO,EAAE,mBAAmB,EAAE,kCAA8B;AAa5D,OAAO,EACL,mCAAmC,EACnC,oBAAoB,EACrB,mCAA+B;AAWhC,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EACL,mCAAmC,EACnC,sBAAsB,EACtB,mBAAmB,EACnB,+BAA+B,EAC/B,aAAa,EACd,yBAAqB;AACtB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,EACtB,yCAA+B;AAChC,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EACjB,4BAAwB;AACzB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oCAA0B;AAWpE,OAAO,EAAE,4BAA4B,EAAE,iDAAuC;AAU9E,OAAO,EACL,0BAA0B,EAC1B,yCAAyC,EAC1C,+CAAqC;AAYtC,OAAO,EACL,+BAA+B,EAC/B,8CAA8C,EAC/C,oDAA0C;AAC3C,OAAO,EAAE,mBAAmB,EAAE,oDAA0C;AAUxE,OAAO,EAAE,kCAAkC,EAAE,uDAA6C;AAU1F,OAAO,EAAE,uBAAuB,EAAE,8DAA0D;AAe5F,OAAO,EAAE,6BAA6B,EAAE,uBAAmB;AAE3D,OAAO,EACL,mCAAmC,EACnC,qCAAqC,EACtC,uBAAmB;AAOpB,OAAO,EACL,kCAAkC,EAClC,eAAe,EAChB,wCAAoC;AACrC,OAAO,EAAE,gBAAgB,EAAE,+BAA2B","sourcesContent":["export type {\n AccountInformation,\n AccountTrackerControllerMessenger,\n AccountTrackerControllerState,\n AccountTrackerControllerActions,\n AccountTrackerControllerGetStateAction,\n AccountTrackerControllerStateChangeEvent,\n AccountTrackerControllerEvents,\n AccountTrackerUpdateNativeBalancesAction,\n AccountTrackerUpdateStakedBalancesAction,\n} from './AccountTrackerController';\nexport { AccountTrackerController } from './AccountTrackerController';\nexport type {\n AssetsContractControllerActions,\n AssetsContractControllerEvents,\n AssetsContractControllerGetERC20StandardAction,\n AssetsContractControllerGetERC721StandardAction,\n AssetsContractControllerGetERC1155StandardAction,\n AssetsContractControllerGetERC20BalanceOfAction,\n AssetsContractControllerGetERC20TokenDecimalsAction,\n AssetsContractControllerGetERC20TokenNameAction,\n AssetsContractControllerGetERC721NftTokenIdAction,\n AssetsContractControllerGetERC721TokenURIAction,\n AssetsContractControllerGetERC721AssetNameAction,\n AssetsContractControllerGetERC721AssetSymbolAction,\n AssetsContractControllerGetERC721OwnerOfAction,\n AssetsContractControllerGetERC1155TokenURIAction,\n AssetsContractControllerGetERC1155BalanceOfAction,\n AssetsContractControllerTransferSingleERC1155Action,\n AssetsContractControllerGetTokenStandardAndDetailsAction,\n AssetsContractControllerGetBalancesInSingleCallAction,\n AssetsContractControllerMessenger,\n BalanceMap,\n} from './AssetsContractController';\nexport {\n SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID,\n AssetsContractController,\n} from './AssetsContractController';\nexport * from './CurrencyRateController';\nexport type {\n NftControllerState,\n NftControllerMessenger,\n NftControllerActions,\n NftControllerGetStateAction,\n NftControllerEvents,\n NftControllerStateChangeEvent,\n Nft,\n NftContract,\n NftMetadata,\n} from './NftController';\nexport { getDefaultNftControllerState, NftController } from './NftController';\nexport type {\n NftDetectionControllerMessenger,\n ApiNft,\n ApiNftContract,\n ApiNftLastSale,\n ApiNftCreator,\n ReservoirResponse,\n TokensResponse,\n BlockaidResultType,\n Blockaid,\n Market,\n TokenResponse,\n TopBid,\n LastSale,\n FeeBreakdown,\n Attributes,\n Collection,\n Royalties,\n Ownership,\n FloorAsk,\n Price,\n Metadata,\n} from './NftDetectionController';\nexport { NftDetectionController } from './NftDetectionController';\nexport type {\n TokenBalancesControllerActions,\n TokenBalancesControllerGetStateAction,\n TokenBalancesControllerEvents,\n TokenBalancesControllerMessenger,\n TokenBalancesControllerOptions,\n TokenBalancesControllerStateChangeEvent,\n TokenBalancesControllerState,\n} from './TokenBalancesController';\nexport { TokenBalancesController } from './TokenBalancesController';\nexport type {\n TokenDetectionControllerMessenger,\n TokenDetectionControllerActions,\n TokenDetectionControllerGetStateAction,\n TokenDetectionControllerDetectTokensAction,\n TokenDetectionControllerAddDetectedTokensViaWsAction,\n TokenDetectionControllerAddDetectedTokensViaPollingAction,\n TokenDetectionControllerEvents,\n TokenDetectionControllerStateChangeEvent,\n} from './TokenDetectionController';\nexport { TokenDetectionController } from './TokenDetectionController';\nexport type {\n TokenListState,\n TokenListToken,\n TokenListMap,\n TokenListStateChange,\n TokenListControllerEvents,\n GetTokenListState,\n TokenListControllerActions,\n TokenListControllerMessenger,\n} from './TokenListController';\nexport { TokenListController } from './TokenListController';\nexport type {\n ContractExchangeRates,\n ContractMarketData,\n Token,\n TokenRatesControllerActions,\n TokenRatesControllerEvents,\n TokenRatesControllerGetStateAction,\n TokenRatesControllerMessenger,\n TokenRatesControllerState,\n TokenRatesControllerStateChangeEvent,\n MarketDataDetails,\n} from './TokenRatesController';\nexport {\n getDefaultTokenRatesControllerState,\n TokenRatesController,\n} from './TokenRatesController';\nexport type {\n TokensControllerState,\n TokensControllerActions,\n TokensControllerGetStateAction,\n TokensControllerAddDetectedTokensAction,\n TokensControllerAddTokensAction,\n TokensControllerEvents,\n TokensControllerStateChangeEvent,\n TokensControllerMessenger,\n} from './TokensController';\nexport { TokensController } from './TokensController';\nexport {\n isTokenDetectionSupportedForNetwork,\n formatIconUrlWithProxy,\n getFormattedIpfsUrl,\n fetchTokenContractExchangeRates,\n getKeyByValue,\n} from './assetsUtil';\nexport {\n CodefiTokenPricesServiceV2,\n SUPPORTED_CHAIN_IDS,\n getNativeTokenAddress,\n} from './token-prices-service';\nexport {\n searchTokens,\n getTrendingTokens,\n fetchTokenAssets,\n} from './token-service';\nexport { RatesController, Cryptocurrency } from './RatesController';\nexport type {\n RatesControllerState,\n RatesControllerEvents,\n RatesControllerActions,\n RatesControllerMessenger,\n RatesControllerGetStateAction,\n RatesControllerStateChangeEvent,\n RatesControllerPollingStartedEvent,\n RatesControllerPollingStoppedEvent,\n} from './RatesController';\nexport { MultichainBalancesController } from './MultichainBalancesController';\nexport type {\n MultichainBalancesControllerState,\n MultichainBalancesControllerGetStateAction,\n MultichainBalancesControllerStateChange,\n MultichainBalancesControllerActions,\n MultichainBalancesControllerEvents,\n MultichainBalancesControllerMessenger,\n} from './MultichainBalancesController';\n\nexport {\n MultichainAssetsController,\n getDefaultMultichainAssetsControllerState,\n} from './MultichainAssetsController';\n\nexport type {\n MultichainAssetsControllerState,\n MultichainAssetsControllerGetStateAction,\n MultichainAssetsControllerStateChangeEvent,\n MultichainAssetsControllerActions,\n MultichainAssetsControllerEvents,\n MultichainAssetsControllerAccountAssetListUpdatedEvent,\n MultichainAssetsControllerMessenger,\n} from './MultichainAssetsController';\n\nexport {\n MultichainAssetsRatesController,\n getDefaultMultichainAssetsRatesControllerState,\n} from './MultichainAssetsRatesController';\nexport { MAP_CAIP_CURRENCIES } from './MultichainAssetsRatesController';\n\nexport type {\n MultichainAssetsRatesControllerState,\n MultichainAssetsRatesControllerActions,\n MultichainAssetsRatesControllerEvents,\n MultichainAssetsRatesControllerGetStateAction,\n MultichainAssetsRatesControllerStateChange,\n MultichainAssetsRatesControllerMessenger,\n} from './MultichainAssetsRatesController';\nexport { TokenSearchDiscoveryDataController } from './TokenSearchDiscoveryDataController';\nexport type {\n TokenDisplayData,\n TokenSearchDiscoveryDataControllerState,\n TokenSearchDiscoveryDataControllerGetStateAction,\n TokenSearchDiscoveryDataControllerEvents,\n TokenSearchDiscoveryDataControllerStateChangeEvent,\n TokenSearchDiscoveryDataControllerActions,\n TokenSearchDiscoveryDataControllerMessenger,\n} from './TokenSearchDiscoveryDataController';\nexport { DeFiPositionsController } from './DeFiPositionsController/DeFiPositionsController';\nexport type {\n DeFiPositionsControllerState,\n DeFiPositionsControllerActions,\n DeFiPositionsControllerEvents,\n DeFiPositionsControllerGetStateAction,\n DeFiPositionsControllerStateChangeEvent,\n DeFiPositionsControllerMessenger,\n} from './DeFiPositionsController/DeFiPositionsController';\nexport type { GroupedDeFiPositions } from './DeFiPositionsController/group-defi-positions';\nexport type {\n AccountGroupBalance,\n WalletBalance,\n AllWalletsBalance,\n} from './balances';\nexport { calculateBalanceForAllWallets } from './balances';\nexport type { BalanceChangePeriod, BalanceChangeResult } from './balances';\nexport {\n calculateBalanceChangeForAllWallets,\n calculateBalanceChangeForAccountGroup,\n} from './balances';\nexport type {\n AssetsByAccountGroup,\n AccountGroupAssets,\n Asset,\n AssetListState,\n} from './selectors/token-selectors';\nexport {\n selectAssetsBySelectedAccountGroup,\n selectAllAssets,\n} from './selectors/token-selectors';\nexport { createFormatters } from './utils/formatters';\nexport type {\n SortTrendingBy,\n TrendingAsset,\n TokenSearchItem,\n TokenAsset,\n TokenRwaData,\n TokenSecurityData,\n TokenSecurityFeature,\n TokenSecurityHolder,\n TokenSecurityMarket,\n TokenSecurityFees,\n TokenSecurityFinancialStats,\n TokenSecurityMetadata,\n} from './token-service';\n"]}
|
|
@@ -145,6 +145,9 @@ class AccountsApiBalanceFetcher {
|
|
|
145
145
|
});
|
|
146
146
|
results.push(...apiBalances);
|
|
147
147
|
}
|
|
148
|
+
const isAccountIncludedInRequest = (address) => queryAllAccounts
|
|
149
|
+
? allAccounts.some((currentAccount) => currentAccount.address.toLowerCase() === address.toLowerCase())
|
|
150
|
+
: selectedAccount.toLowerCase() === address.toLowerCase();
|
|
148
151
|
// Add zero native balance entries for addresses that API didn't return
|
|
149
152
|
addressChainMap.forEach((chains, address) => {
|
|
150
153
|
chains.forEach((chainId) => {
|
|
@@ -152,7 +155,11 @@ class AccountsApiBalanceFetcher {
|
|
|
152
155
|
const existingBalance = nativeBalancesFromAPI.get(key);
|
|
153
156
|
const isChainIncludedInRequest = chainIds.includes(chainId);
|
|
154
157
|
const isChainSupported = this.supports(chainId);
|
|
155
|
-
const
|
|
158
|
+
const isAccountIncluded = isAccountIncludedInRequest(address);
|
|
159
|
+
const shouldZeroOutBalance = !existingBalance &&
|
|
160
|
+
isChainIncludedInRequest &&
|
|
161
|
+
isChainSupported &&
|
|
162
|
+
isAccountIncluded;
|
|
156
163
|
if (shouldZeroOutBalance) {
|
|
157
164
|
// Add zero native balance entry if API succeeded but didn't return one
|
|
158
165
|
results.push({
|
|
@@ -177,7 +184,11 @@ class AccountsApiBalanceFetcher {
|
|
|
177
184
|
const existingBalance = nonNativeBalancesFromAPI.get(key);
|
|
178
185
|
const isChainIncludedInRequest = chainIds.includes(chainId);
|
|
179
186
|
const isChainSupported = this.supports(chainId);
|
|
180
|
-
const
|
|
187
|
+
const isAccountIncluded = isAccountIncludedInRequest(account);
|
|
188
|
+
const shouldZeroOutBalance = !existingBalance &&
|
|
189
|
+
isChainIncludedInRequest &&
|
|
190
|
+
isChainSupported &&
|
|
191
|
+
isAccountIncluded;
|
|
181
192
|
if (isERC && shouldZeroOutBalance) {
|
|
182
193
|
results.push({
|
|
183
194
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-balance-fetcher.cjs","sourceRoot":"","sources":["../../src/multi-chain-accounts-service/api-balance-fetcher.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BigNumber } from '@ethersproject/bignumber';\nimport { Contract } from '@ethersproject/contracts';\nimport type { Web3Provider } from '@ethersproject/providers';\nimport {\n safelyExecute,\n safelyExecuteWithTimeout,\n toHex,\n toChecksumHexAddress,\n} from '@metamask/controller-utils';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { CaipAccountAddress, CaipChainId, Hex } from '@metamask/utils';\nimport { parseCaipChainId } from '@metamask/utils';\nimport BN from 'bn.js';\n\nimport { fetchMultiChainBalancesV4 } from './multi-chain-accounts';\nimport type { GetBalancesResponse } from './types';\nimport { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from '../AssetsContractController';\nimport {\n accountAddressToCaipReference,\n reduceInBatchesSerially,\n SupportedStakedBalanceNetworks,\n} from '../assetsUtil';\nimport { SUPPORTED_NETWORKS_ACCOUNTS_API_V4 } from '../constants';\n\n// Maximum number of account addresses that can be sent to the accounts API in a single request\nconst ACCOUNTS_API_BATCH_SIZE = 20;\n\n// Timeout for accounts API requests (10 seconds)\nconst ACCOUNTS_API_TIMEOUT_MS = 10_000;\n\nexport type ChainIdHex = Hex;\nexport type ChecksumAddress = Hex;\n\nexport type ProcessedBalance = {\n success: boolean;\n value?: BN;\n account: ChecksumAddress | string;\n token: ChecksumAddress;\n chainId: ChainIdHex;\n};\n\nexport type BalanceFetchResult = {\n balances: ProcessedBalance[];\n unprocessedChainIds?: ChainIdHex[];\n};\n\nexport type BalanceFetcher = {\n supports(chainId: ChainIdHex): boolean;\n fetch(input: {\n chainIds: ChainIdHex[];\n queryAllAccounts: boolean;\n selectedAccount: ChecksumAddress;\n allAccounts: InternalAccount[];\n jwtToken?: string;\n }): Promise<BalanceFetchResult>;\n};\n\nconst checksum = (addr: string): ChecksumAddress =>\n toChecksumHexAddress(addr) as ChecksumAddress;\n\nconst toCaipAccount = (\n chainId: ChainIdHex,\n account: ChecksumAddress,\n): CaipAccountAddress => accountAddressToCaipReference(chainId, account);\n\nexport type GetProviderFunction = (chainId: ChainIdHex) => Web3Provider;\n\nexport class AccountsApiBalanceFetcher implements BalanceFetcher {\n readonly #platform: 'extension' | 'mobile' = 'extension';\n\n readonly #getProvider?: GetProviderFunction;\n\n readonly #getUserTokens?: () => {\n [accountId: ChecksumAddress]: {\n [chainId: ChainIdHex]: { [tokenAddress: ChecksumAddress]: unknown };\n };\n };\n\n constructor(\n platform: 'extension' | 'mobile' = 'extension',\n getProvider?: GetProviderFunction,\n getUserTokens?: () => {\n [account: ChecksumAddress]: {\n [chainId: ChainIdHex]: { [tokenAddress: ChecksumAddress]: unknown };\n };\n },\n ) {\n this.#platform = platform;\n this.#getProvider = getProvider;\n this.#getUserTokens = getUserTokens;\n }\n\n supports(chainId: ChainIdHex): boolean {\n return SUPPORTED_NETWORKS_ACCOUNTS_API_V4.includes(chainId);\n }\n\n async #fetchStakedBalances(\n addrs: CaipAccountAddress[],\n ): Promise<ProcessedBalance[]> {\n // Return empty array if no provider is available for blockchain calls\n if (!this.#getProvider) {\n return [];\n }\n\n const results: ProcessedBalance[] = [];\n\n // Group addresses by chain ID\n const addressesByChain: Record<ChainIdHex, ChecksumAddress[]> = {};\n\n for (const caipAddr of addrs) {\n const [, chainRef, address] = caipAddr.split(':');\n const chainId = toHex(parseInt(chainRef, 10));\n const checksumAddress = checksum(address);\n\n if (!addressesByChain[chainId]) {\n addressesByChain[chainId] = [];\n }\n addressesByChain[chainId].push(checksumAddress);\n }\n\n // Process each supported chain\n for (const [chainId, addresses] of Object.entries(addressesByChain)) {\n const chainIdHex = chainId as ChainIdHex;\n\n // Only fetch staked balance on supported networks (mainnet and hoodi)\n if (\n ![\n SupportedStakedBalanceNetworks.Mainnet,\n SupportedStakedBalanceNetworks.Hoodi,\n ].includes(chainIdHex as SupportedStakedBalanceNetworks)\n ) {\n continue;\n }\n\n // Only fetch staked balance if contract address exists\n if (!(chainIdHex in STAKING_CONTRACT_ADDRESS_BY_CHAINID)) {\n continue;\n }\n\n const contractAddress = STAKING_CONTRACT_ADDRESS_BY_CHAINID[chainIdHex];\n const provider = this.#getProvider(chainIdHex);\n\n const abi = [\n {\n inputs: [\n { internalType: 'address', name: 'account', type: 'address' },\n ],\n name: 'getShares',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: 'shares', type: 'uint256' },\n ],\n name: 'convertToAssets',\n outputs: [\n { internalType: 'uint256', name: 'assets', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n ];\n\n try {\n const contract = new Contract(contractAddress, abi, provider);\n\n // Get shares for each address\n for (const address of addresses) {\n try {\n const shares = await safelyExecute(() =>\n contract.getShares(address),\n );\n\n if (shares && (shares as BigNumber).gt(0)) {\n // Convert shares to assets (actual staked ETH amount)\n const assets = await safelyExecute(() =>\n contract.convertToAssets(shares),\n );\n\n if (assets) {\n results.push({\n success: true,\n value: new BN((assets as BigNumber).toString()),\n account: address,\n token: checksum(contractAddress),\n chainId: chainIdHex,\n });\n }\n } else {\n // Return zero balance for accounts with no staked assets\n results.push({\n success: true,\n value: new BN('0'),\n account: address,\n token: checksum(contractAddress),\n chainId: chainIdHex,\n });\n }\n } catch (error) {\n // Log error and continue with next address\n console.error(\n `Error fetching staked balance for ${address}:`,\n error,\n );\n results.push({\n success: false,\n account: address,\n token: checksum(contractAddress),\n chainId: chainIdHex,\n });\n }\n }\n } catch (error) {\n console.error(\n `Error setting up staking contract for chain ${chainId}:`,\n error,\n );\n }\n }\n\n return results;\n }\n\n async #fetchBalances(addrs: CaipAccountAddress[], jwtToken?: string) {\n // If we have fewer than or equal to the batch size, make a single request\n if (addrs.length <= ACCOUNTS_API_BATCH_SIZE) {\n return await fetchMultiChainBalancesV4(\n { accountAddresses: addrs },\n this.#platform,\n jwtToken,\n );\n }\n\n // Otherwise, batch the requests to respect the 50-element limit\n type BalanceData = Awaited<\n ReturnType<typeof fetchMultiChainBalancesV4>\n >['balances'][number];\n\n type ResponseData = Awaited<ReturnType<typeof fetchMultiChainBalancesV4>>;\n\n const allUnprocessedNetworks = new Set<number | string>();\n const allBalances = await reduceInBatchesSerially<\n CaipAccountAddress,\n BalanceData[]\n >({\n values: addrs,\n batchSize: ACCOUNTS_API_BATCH_SIZE,\n eachBatch: async (workingResult, batch) => {\n const response = await fetchMultiChainBalancesV4(\n { accountAddresses: batch },\n this.#platform,\n jwtToken,\n );\n // Collect unprocessed networks from each batch\n if (response.unprocessedNetworks) {\n response.unprocessedNetworks.forEach((network) =>\n allUnprocessedNetworks.add(network),\n );\n }\n return [...(workingResult || []), ...response.balances];\n },\n initialResult: [],\n });\n\n return {\n balances: allBalances,\n unprocessedNetworks: Array.from(allUnprocessedNetworks),\n } as ResponseData;\n }\n\n async fetch({\n chainIds,\n queryAllAccounts,\n selectedAccount,\n allAccounts,\n jwtToken,\n }: Parameters<BalanceFetcher['fetch']>[0]): Promise<BalanceFetchResult> {\n const caipAddrs: CaipAccountAddress[] = [];\n\n for (const chainId of chainIds.filter((c) => this.supports(c))) {\n if (queryAllAccounts) {\n allAccounts.forEach((a) =>\n caipAddrs.push(toCaipAccount(chainId, a.address as ChecksumAddress)),\n );\n } else {\n caipAddrs.push(toCaipAccount(chainId, selectedAccount));\n }\n }\n\n if (!caipAddrs.length) {\n return { balances: [] };\n }\n\n // Let errors propagate to TokenBalancesController for RPC fallback\n // Use timeout to prevent hanging API calls (30 seconds)\n const apiResponse = await safelyExecuteWithTimeout(\n () => this.#fetchBalances(caipAddrs, jwtToken),\n false, // don't log error here, let it propagate\n ACCOUNTS_API_TIMEOUT_MS,\n );\n\n // If API call timed out or failed, throw error to trigger RPC fallback\n if (!apiResponse) {\n throw new Error('Accounts API request timed out or failed');\n }\n\n // Extract unprocessed networks and convert to hex chain IDs\n // V4 API returns CAIP chain IDs like 'eip155:1329', need to parse them\n // V2 API returns decimal numbers, handle both cases\n const unprocessedChainIds: ChainIdHex[] | undefined = apiResponse\n .unprocessedNetworks?.length\n ? apiResponse.unprocessedNetworks.map((network) => {\n if (typeof network === 'string') {\n // CAIP chain ID format: 'eip155:1329'\n return toHex(parseCaipChainId(network as CaipChainId).reference);\n }\n // Decimal number format\n return toHex(network);\n })\n : undefined;\n\n const stakedBalances = await this.#fetchStakedBalances(caipAddrs);\n\n const results: ProcessedBalance[] = [];\n\n // Collect all unique addresses and chains from the CAIP addresses\n const addressChainMap = new Map<string, Set<ChainIdHex>>();\n caipAddrs.forEach((caipAddr) => {\n const [, chainRef, address] = caipAddr.split(':');\n const chainId = toHex(parseInt(chainRef, 10));\n const checksumAddress = checksum(address);\n\n if (!addressChainMap.has(checksumAddress)) {\n addressChainMap.set(checksumAddress, new Set());\n }\n addressChainMap.get(checksumAddress)?.add(chainId);\n });\n\n // Ensure native token entries exist for all addresses on all requested chains\n const ZERO_ADDRESS =\n '0x0000000000000000000000000000000000000000' as ChecksumAddress;\n const nativeBalancesFromAPI = new Map<string, BN>(); // key: `${accountAddress}-${chainId}`\n const nonNativeBalancesFromAPI = new Map<string, BN>(); // key: `${accountAddress}-${tokenAddress}-${chainId}`\n\n // Process regular API balances\n if (apiResponse.balances) {\n const apiBalances = apiResponse.balances.flatMap(\n (b: GetBalancesResponse['balances'][number]) => {\n const addressPart = b.accountAddress?.split(':')[2];\n if (!addressPart) {\n return [];\n }\n const account = checksum(addressPart);\n const token = checksum(b.address);\n // Use original address for zero address tokens, checksummed for others\n // TODO: this is a hack to get the correct account address type but needs to be fixed\n // by mgrating tokenBalancesController to checksum addresses\n const finalAccount: ChecksumAddress | string =\n token === ZERO_ADDRESS ? account : addressPart;\n const chainId = toHex(b.chainId);\n\n let value: BN | undefined;\n try {\n // Convert string balance to BN avoiding floating point precision issues\n const { balance: balanceStr, decimals } = b;\n\n // Split the balance string into integer and decimal parts\n const [integerPart = '0', decimalPart = ''] = balanceStr.split('.');\n\n // Pad or truncate decimal part to match token decimals\n const paddedDecimalPart = decimalPart\n .padEnd(decimals, '0')\n .slice(0, decimals);\n\n // Combine and create BN\n const fullIntegerStr = integerPart + paddedDecimalPart;\n value = new BN(fullIntegerStr);\n } catch {\n value = undefined;\n }\n\n // Track native balances for later\n if (token === ZERO_ADDRESS && value !== undefined) {\n nativeBalancesFromAPI.set(`${finalAccount}-${chainId}`, value);\n }\n\n if (token !== ZERO_ADDRESS && value !== undefined) {\n nonNativeBalancesFromAPI.set(\n `${finalAccount.toLowerCase()}-${token.toLowerCase()}-${chainId}`,\n value,\n );\n }\n\n return [\n {\n success: value !== undefined,\n value,\n account: finalAccount,\n token,\n chainId,\n },\n ];\n },\n );\n results.push(...apiBalances);\n }\n\n // Add zero native balance entries for addresses that API didn't return\n addressChainMap.forEach((chains, address) => {\n chains.forEach((chainId) => {\n const key = `${address}-${chainId}`;\n const existingBalance = nativeBalancesFromAPI.get(key);\n const isChainIncludedInRequest = chainIds.includes(chainId);\n const isChainSupported = this.supports(chainId);\n const shouldZeroOutBalance =\n !existingBalance && isChainIncludedInRequest && isChainSupported;\n\n if (shouldZeroOutBalance) {\n // Add zero native balance entry if API succeeded but didn't return one\n results.push({\n success: true,\n value: new BN('0'),\n account: address as ChecksumAddress,\n token: ZERO_ADDRESS,\n chainId,\n });\n }\n });\n });\n\n // Add zero erc-20 balance entries for addresses that API didn't return\n if (this.#getUserTokens) {\n const userTokens = this.#getUserTokens();\n Object.entries(userTokens).forEach(([account, chains]) => {\n Object.entries(chains).forEach(([chainId, tokens]) => {\n Object.entries(tokens).forEach(([tokenAddress]) => {\n const tokenLowerCase = tokenAddress.toLowerCase();\n const key = `${account.toLowerCase()}-${tokenLowerCase}-${chainId}`;\n const isERC = tokenAddress !== ZERO_ADDRESS;\n const existingBalance = nonNativeBalancesFromAPI.get(key);\n const isChainIncludedInRequest = chainIds.includes(chainId as Hex);\n const isChainSupported = this.supports(chainId as Hex);\n const shouldZeroOutBalance =\n !existingBalance && isChainIncludedInRequest && isChainSupported;\n\n if (isERC && shouldZeroOutBalance) {\n results.push({\n success: true,\n value: new BN('0'),\n account: account as ChecksumAddress,\n token: tokenLowerCase as ChecksumAddress,\n chainId: chainId as ChainIdHex,\n });\n }\n });\n });\n });\n }\n\n // Add staked balances\n results.push(...stakedBalances);\n\n return {\n balances: results,\n unprocessedChainIds,\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"api-balance-fetcher.cjs","sourceRoot":"","sources":["../../src/multi-chain-accounts-service/api-balance-fetcher.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BigNumber } from '@ethersproject/bignumber';\nimport { Contract } from '@ethersproject/contracts';\nimport type { Web3Provider } from '@ethersproject/providers';\nimport {\n safelyExecute,\n safelyExecuteWithTimeout,\n toHex,\n toChecksumHexAddress,\n} from '@metamask/controller-utils';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { CaipAccountAddress, CaipChainId, Hex } from '@metamask/utils';\nimport { parseCaipChainId } from '@metamask/utils';\nimport BN from 'bn.js';\n\nimport { fetchMultiChainBalancesV4 } from './multi-chain-accounts';\nimport type { GetBalancesResponse } from './types';\nimport { STAKING_CONTRACT_ADDRESS_BY_CHAINID } from '../AssetsContractController';\nimport {\n accountAddressToCaipReference,\n reduceInBatchesSerially,\n SupportedStakedBalanceNetworks,\n} from '../assetsUtil';\nimport { SUPPORTED_NETWORKS_ACCOUNTS_API_V4 } from '../constants';\n\n// Maximum number of account addresses that can be sent to the accounts API in a single request\nconst ACCOUNTS_API_BATCH_SIZE = 20;\n\n// Timeout for accounts API requests (10 seconds)\nconst ACCOUNTS_API_TIMEOUT_MS = 10_000;\n\nexport type ChainIdHex = Hex;\nexport type ChecksumAddress = Hex;\n\nexport type ProcessedBalance = {\n success: boolean;\n value?: BN;\n account: ChecksumAddress | string;\n token: ChecksumAddress;\n chainId: ChainIdHex;\n};\n\nexport type BalanceFetchResult = {\n balances: ProcessedBalance[];\n unprocessedChainIds?: ChainIdHex[];\n};\n\nexport type BalanceFetcher = {\n supports(chainId: ChainIdHex): boolean;\n fetch(input: {\n chainIds: ChainIdHex[];\n queryAllAccounts: boolean;\n selectedAccount: ChecksumAddress;\n allAccounts: InternalAccount[];\n jwtToken?: string;\n }): Promise<BalanceFetchResult>;\n};\n\nconst checksum = (addr: string): ChecksumAddress =>\n toChecksumHexAddress(addr) as ChecksumAddress;\n\nconst toCaipAccount = (\n chainId: ChainIdHex,\n account: ChecksumAddress,\n): CaipAccountAddress => accountAddressToCaipReference(chainId, account);\n\nexport type GetProviderFunction = (chainId: ChainIdHex) => Web3Provider;\n\nexport class AccountsApiBalanceFetcher implements BalanceFetcher {\n readonly #platform: 'extension' | 'mobile' = 'extension';\n\n readonly #getProvider?: GetProviderFunction;\n\n readonly #getUserTokens?: () => {\n [accountId: ChecksumAddress]: {\n [chainId: ChainIdHex]: { [tokenAddress: ChecksumAddress]: unknown };\n };\n };\n\n constructor(\n platform: 'extension' | 'mobile' = 'extension',\n getProvider?: GetProviderFunction,\n getUserTokens?: () => {\n [account: ChecksumAddress]: {\n [chainId: ChainIdHex]: { [tokenAddress: ChecksumAddress]: unknown };\n };\n },\n ) {\n this.#platform = platform;\n this.#getProvider = getProvider;\n this.#getUserTokens = getUserTokens;\n }\n\n supports(chainId: ChainIdHex): boolean {\n return SUPPORTED_NETWORKS_ACCOUNTS_API_V4.includes(chainId);\n }\n\n async #fetchStakedBalances(\n addrs: CaipAccountAddress[],\n ): Promise<ProcessedBalance[]> {\n // Return empty array if no provider is available for blockchain calls\n if (!this.#getProvider) {\n return [];\n }\n\n const results: ProcessedBalance[] = [];\n\n // Group addresses by chain ID\n const addressesByChain: Record<ChainIdHex, ChecksumAddress[]> = {};\n\n for (const caipAddr of addrs) {\n const [, chainRef, address] = caipAddr.split(':');\n const chainId = toHex(parseInt(chainRef, 10));\n const checksumAddress = checksum(address);\n\n if (!addressesByChain[chainId]) {\n addressesByChain[chainId] = [];\n }\n addressesByChain[chainId].push(checksumAddress);\n }\n\n // Process each supported chain\n for (const [chainId, addresses] of Object.entries(addressesByChain)) {\n const chainIdHex = chainId as ChainIdHex;\n\n // Only fetch staked balance on supported networks (mainnet and hoodi)\n if (\n ![\n SupportedStakedBalanceNetworks.Mainnet,\n SupportedStakedBalanceNetworks.Hoodi,\n ].includes(chainIdHex as SupportedStakedBalanceNetworks)\n ) {\n continue;\n }\n\n // Only fetch staked balance if contract address exists\n if (!(chainIdHex in STAKING_CONTRACT_ADDRESS_BY_CHAINID)) {\n continue;\n }\n\n const contractAddress = STAKING_CONTRACT_ADDRESS_BY_CHAINID[chainIdHex];\n const provider = this.#getProvider(chainIdHex);\n\n const abi = [\n {\n inputs: [\n { internalType: 'address', name: 'account', type: 'address' },\n ],\n name: 'getShares',\n outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n { internalType: 'uint256', name: 'shares', type: 'uint256' },\n ],\n name: 'convertToAssets',\n outputs: [\n { internalType: 'uint256', name: 'assets', type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n ];\n\n try {\n const contract = new Contract(contractAddress, abi, provider);\n\n // Get shares for each address\n for (const address of addresses) {\n try {\n const shares = await safelyExecute(() =>\n contract.getShares(address),\n );\n\n if (shares && (shares as BigNumber).gt(0)) {\n // Convert shares to assets (actual staked ETH amount)\n const assets = await safelyExecute(() =>\n contract.convertToAssets(shares),\n );\n\n if (assets) {\n results.push({\n success: true,\n value: new BN((assets as BigNumber).toString()),\n account: address,\n token: checksum(contractAddress),\n chainId: chainIdHex,\n });\n }\n } else {\n // Return zero balance for accounts with no staked assets\n results.push({\n success: true,\n value: new BN('0'),\n account: address,\n token: checksum(contractAddress),\n chainId: chainIdHex,\n });\n }\n } catch (error) {\n // Log error and continue with next address\n console.error(\n `Error fetching staked balance for ${address}:`,\n error,\n );\n results.push({\n success: false,\n account: address,\n token: checksum(contractAddress),\n chainId: chainIdHex,\n });\n }\n }\n } catch (error) {\n console.error(\n `Error setting up staking contract for chain ${chainId}:`,\n error,\n );\n }\n }\n\n return results;\n }\n\n async #fetchBalances(addrs: CaipAccountAddress[], jwtToken?: string) {\n // If we have fewer than or equal to the batch size, make a single request\n if (addrs.length <= ACCOUNTS_API_BATCH_SIZE) {\n return await fetchMultiChainBalancesV4(\n { accountAddresses: addrs },\n this.#platform,\n jwtToken,\n );\n }\n\n // Otherwise, batch the requests to respect the 50-element limit\n type BalanceData = Awaited<\n ReturnType<typeof fetchMultiChainBalancesV4>\n >['balances'][number];\n\n type ResponseData = Awaited<ReturnType<typeof fetchMultiChainBalancesV4>>;\n\n const allUnprocessedNetworks = new Set<number | string>();\n const allBalances = await reduceInBatchesSerially<\n CaipAccountAddress,\n BalanceData[]\n >({\n values: addrs,\n batchSize: ACCOUNTS_API_BATCH_SIZE,\n eachBatch: async (workingResult, batch) => {\n const response = await fetchMultiChainBalancesV4(\n { accountAddresses: batch },\n this.#platform,\n jwtToken,\n );\n // Collect unprocessed networks from each batch\n if (response.unprocessedNetworks) {\n response.unprocessedNetworks.forEach((network) =>\n allUnprocessedNetworks.add(network),\n );\n }\n return [...(workingResult || []), ...response.balances];\n },\n initialResult: [],\n });\n\n return {\n balances: allBalances,\n unprocessedNetworks: Array.from(allUnprocessedNetworks),\n } as ResponseData;\n }\n\n async fetch({\n chainIds,\n queryAllAccounts,\n selectedAccount,\n allAccounts,\n jwtToken,\n }: Parameters<BalanceFetcher['fetch']>[0]): Promise<BalanceFetchResult> {\n const caipAddrs: CaipAccountAddress[] = [];\n\n for (const chainId of chainIds.filter((c) => this.supports(c))) {\n if (queryAllAccounts) {\n allAccounts.forEach((a) =>\n caipAddrs.push(toCaipAccount(chainId, a.address as ChecksumAddress)),\n );\n } else {\n caipAddrs.push(toCaipAccount(chainId, selectedAccount));\n }\n }\n\n if (!caipAddrs.length) {\n return { balances: [] };\n }\n\n // Let errors propagate to TokenBalancesController for RPC fallback\n // Use timeout to prevent hanging API calls (30 seconds)\n const apiResponse = await safelyExecuteWithTimeout(\n () => this.#fetchBalances(caipAddrs, jwtToken),\n false, // don't log error here, let it propagate\n ACCOUNTS_API_TIMEOUT_MS,\n );\n\n // If API call timed out or failed, throw error to trigger RPC fallback\n if (!apiResponse) {\n throw new Error('Accounts API request timed out or failed');\n }\n\n // Extract unprocessed networks and convert to hex chain IDs\n // V4 API returns CAIP chain IDs like 'eip155:1329', need to parse them\n // V2 API returns decimal numbers, handle both cases\n const unprocessedChainIds: ChainIdHex[] | undefined = apiResponse\n .unprocessedNetworks?.length\n ? apiResponse.unprocessedNetworks.map((network) => {\n if (typeof network === 'string') {\n // CAIP chain ID format: 'eip155:1329'\n return toHex(parseCaipChainId(network as CaipChainId).reference);\n }\n // Decimal number format\n return toHex(network);\n })\n : undefined;\n\n const stakedBalances = await this.#fetchStakedBalances(caipAddrs);\n\n const results: ProcessedBalance[] = [];\n\n // Collect all unique addresses and chains from the CAIP addresses\n const addressChainMap = new Map<string, Set<ChainIdHex>>();\n caipAddrs.forEach((caipAddr) => {\n const [, chainRef, address] = caipAddr.split(':');\n const chainId = toHex(parseInt(chainRef, 10));\n const checksumAddress = checksum(address);\n\n if (!addressChainMap.has(checksumAddress)) {\n addressChainMap.set(checksumAddress, new Set());\n }\n addressChainMap.get(checksumAddress)?.add(chainId);\n });\n\n // Ensure native token entries exist for all addresses on all requested chains\n const ZERO_ADDRESS =\n '0x0000000000000000000000000000000000000000' as ChecksumAddress;\n const nativeBalancesFromAPI = new Map<string, BN>(); // key: `${accountAddress}-${chainId}`\n const nonNativeBalancesFromAPI = new Map<string, BN>(); // key: `${accountAddress}-${tokenAddress}-${chainId}`\n\n // Process regular API balances\n if (apiResponse.balances) {\n const apiBalances = apiResponse.balances.flatMap(\n (b: GetBalancesResponse['balances'][number]) => {\n const addressPart = b.accountAddress?.split(':')[2];\n if (!addressPart) {\n return [];\n }\n const account = checksum(addressPart);\n const token = checksum(b.address);\n // Use original address for zero address tokens, checksummed for others\n // TODO: this is a hack to get the correct account address type but needs to be fixed\n // by mgrating tokenBalancesController to checksum addresses\n const finalAccount: ChecksumAddress | string =\n token === ZERO_ADDRESS ? account : addressPart;\n const chainId = toHex(b.chainId);\n\n let value: BN | undefined;\n try {\n // Convert string balance to BN avoiding floating point precision issues\n const { balance: balanceStr, decimals } = b;\n\n // Split the balance string into integer and decimal parts\n const [integerPart = '0', decimalPart = ''] = balanceStr.split('.');\n\n // Pad or truncate decimal part to match token decimals\n const paddedDecimalPart = decimalPart\n .padEnd(decimals, '0')\n .slice(0, decimals);\n\n // Combine and create BN\n const fullIntegerStr = integerPart + paddedDecimalPart;\n value = new BN(fullIntegerStr);\n } catch {\n value = undefined;\n }\n\n // Track native balances for later\n if (token === ZERO_ADDRESS && value !== undefined) {\n nativeBalancesFromAPI.set(`${finalAccount}-${chainId}`, value);\n }\n\n if (token !== ZERO_ADDRESS && value !== undefined) {\n nonNativeBalancesFromAPI.set(\n `${finalAccount.toLowerCase()}-${token.toLowerCase()}-${chainId}`,\n value,\n );\n }\n\n return [\n {\n success: value !== undefined,\n value,\n account: finalAccount,\n token,\n chainId,\n },\n ];\n },\n );\n results.push(...apiBalances);\n }\n\n const isAccountIncludedInRequest = (address: string): boolean =>\n queryAllAccounts\n ? allAccounts.some(\n (currentAccount) =>\n currentAccount.address.toLowerCase() === address.toLowerCase(),\n )\n : selectedAccount.toLowerCase() === address.toLowerCase();\n\n // Add zero native balance entries for addresses that API didn't return\n addressChainMap.forEach((chains, address) => {\n chains.forEach((chainId) => {\n const key = `${address}-${chainId}`;\n const existingBalance = nativeBalancesFromAPI.get(key);\n const isChainIncludedInRequest = chainIds.includes(chainId);\n const isChainSupported = this.supports(chainId);\n const isAccountIncluded = isAccountIncludedInRequest(address);\n const shouldZeroOutBalance =\n !existingBalance &&\n isChainIncludedInRequest &&\n isChainSupported &&\n isAccountIncluded;\n\n if (shouldZeroOutBalance) {\n // Add zero native balance entry if API succeeded but didn't return one\n results.push({\n success: true,\n value: new BN('0'),\n account: address as ChecksumAddress,\n token: ZERO_ADDRESS,\n chainId,\n });\n }\n });\n });\n\n // Add zero erc-20 balance entries for addresses that API didn't return\n if (this.#getUserTokens) {\n const userTokens = this.#getUserTokens();\n Object.entries(userTokens).forEach(([account, chains]) => {\n Object.entries(chains).forEach(([chainId, tokens]) => {\n Object.entries(tokens).forEach(([tokenAddress]) => {\n const tokenLowerCase = tokenAddress.toLowerCase();\n const key = `${account.toLowerCase()}-${tokenLowerCase}-${chainId}`;\n const isERC = tokenAddress !== ZERO_ADDRESS;\n const existingBalance = nonNativeBalancesFromAPI.get(key);\n const isChainIncludedInRequest = chainIds.includes(chainId as Hex);\n const isChainSupported = this.supports(chainId as Hex);\n const isAccountIncluded = isAccountIncludedInRequest(account);\n const shouldZeroOutBalance =\n !existingBalance &&\n isChainIncludedInRequest &&\n isChainSupported &&\n isAccountIncluded;\n\n if (isERC && shouldZeroOutBalance) {\n results.push({\n success: true,\n value: new BN('0'),\n account: account as ChecksumAddress,\n token: tokenLowerCase as ChecksumAddress,\n chainId: chainId as ChainIdHex,\n });\n }\n });\n });\n });\n }\n\n // Add staked balances\n results.push(...stakedBalances);\n\n return {\n balances: results,\n unprocessedChainIds,\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-balance-fetcher.d.cts","sourceRoot":"","sources":["../../src/multi-chain-accounts-service/api-balance-fetcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,iCAAiC;AAO7D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAmC,GAAG,EAAE,wBAAwB;AAE5E,OAAO,EAAE,cAAc;AAkBvB,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC;AAC7B,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,EAAE,CAAC;IACX,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;IACvC,KAAK,CAAC,KAAK,EAAE;QACX,QAAQ,EAAE,UAAU,EAAE,CAAC;QACvB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,eAAe,EAAE,eAAe,CAAC;QACjC,WAAW,EAAE,eAAe,EAAE,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjC,CAAC;AAUF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,YAAY,CAAC;AAExE,qBAAa,yBAA0B,YAAW,cAAc;;gBAY5D,QAAQ,GAAE,WAAW,GAAG,QAAsB,EAC9C,WAAW,CAAC,EAAE,mBAAmB,EACjC,aAAa,CAAC,EAAE,MAAM;QACpB,CAAC,OAAO,EAAE,eAAe,GAAG;YAC1B,CAAC,OAAO,EAAE,UAAU,GAAG;gBAAE,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO,CAAA;aAAE,CAAC;SACrE,CAAC;KACH;IAOH,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAoLhC,KAAK,CAAC,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,QAAQ,GACT,EAAE,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA+
|
|
1
|
+
{"version":3,"file":"api-balance-fetcher.d.cts","sourceRoot":"","sources":["../../src/multi-chain-accounts-service/api-balance-fetcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,iCAAiC;AAO7D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAmC,GAAG,EAAE,wBAAwB;AAE5E,OAAO,EAAE,cAAc;AAkBvB,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC;AAC7B,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,EAAE,CAAC;IACX,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;IACvC,KAAK,CAAC,KAAK,EAAE;QACX,QAAQ,EAAE,UAAU,EAAE,CAAC;QACvB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,eAAe,EAAE,eAAe,CAAC;QACjC,WAAW,EAAE,eAAe,EAAE,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjC,CAAC;AAUF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,YAAY,CAAC;AAExE,qBAAa,yBAA0B,YAAW,cAAc;;gBAY5D,QAAQ,GAAE,WAAW,GAAG,QAAsB,EAC9C,WAAW,CAAC,EAAE,mBAAmB,EACjC,aAAa,CAAC,EAAE,MAAM;QACpB,CAAC,OAAO,EAAE,eAAe,GAAG;YAC1B,CAAC,OAAO,EAAE,UAAU,GAAG;gBAAE,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO,CAAA;aAAE,CAAC;SACrE,CAAC;KACH;IAOH,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAoLhC,KAAK,CAAC,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,QAAQ,GACT,EAAE,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA+MxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-balance-fetcher.d.mts","sourceRoot":"","sources":["../../src/multi-chain-accounts-service/api-balance-fetcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,iCAAiC;AAO7D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAmC,GAAG,EAAE,wBAAwB;AAE5E,OAAO,EAAE,cAAc;AAkBvB,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC;AAC7B,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,EAAE,CAAC;IACX,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;IACvC,KAAK,CAAC,KAAK,EAAE;QACX,QAAQ,EAAE,UAAU,EAAE,CAAC;QACvB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,eAAe,EAAE,eAAe,CAAC;QACjC,WAAW,EAAE,eAAe,EAAE,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjC,CAAC;AAUF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,YAAY,CAAC;AAExE,qBAAa,yBAA0B,YAAW,cAAc;;gBAY5D,QAAQ,GAAE,WAAW,GAAG,QAAsB,EAC9C,WAAW,CAAC,EAAE,mBAAmB,EACjC,aAAa,CAAC,EAAE,MAAM;QACpB,CAAC,OAAO,EAAE,eAAe,GAAG;YAC1B,CAAC,OAAO,EAAE,UAAU,GAAG;gBAAE,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO,CAAA;aAAE,CAAC;SACrE,CAAC;KACH;IAOH,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAoLhC,KAAK,CAAC,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,QAAQ,GACT,EAAE,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA+
|
|
1
|
+
{"version":3,"file":"api-balance-fetcher.d.mts","sourceRoot":"","sources":["../../src/multi-chain-accounts-service/api-balance-fetcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,iCAAiC;AAO7D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAmC,GAAG,EAAE,wBAAwB;AAE5E,OAAO,EAAE,cAAc;AAkBvB,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC;AAC7B,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,EAAE,CAAC;IACX,OAAO,EAAE,eAAe,GAAG,MAAM,CAAC;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;IACvC,KAAK,CAAC,KAAK,EAAE;QACX,QAAQ,EAAE,UAAU,EAAE,CAAC;QACvB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,eAAe,EAAE,eAAe,CAAC;QACjC,WAAW,EAAE,eAAe,EAAE,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACjC,CAAC;AAUF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,YAAY,CAAC;AAExE,qBAAa,yBAA0B,YAAW,cAAc;;gBAY5D,QAAQ,GAAE,WAAW,GAAG,QAAsB,EAC9C,WAAW,CAAC,EAAE,mBAAmB,EACjC,aAAa,CAAC,EAAE,MAAM;QACpB,CAAC,OAAO,EAAE,eAAe,GAAG;YAC1B,CAAC,OAAO,EAAE,UAAU,GAAG;gBAAE,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO,CAAA;aAAE,CAAC;SACrE,CAAC;KACH;IAOH,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAoLhC,KAAK,CAAC,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,QAAQ,GACT,EAAE,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA+MxE"}
|
|
@@ -146,6 +146,9 @@ export class AccountsApiBalanceFetcher {
|
|
|
146
146
|
});
|
|
147
147
|
results.push(...apiBalances);
|
|
148
148
|
}
|
|
149
|
+
const isAccountIncludedInRequest = (address) => queryAllAccounts
|
|
150
|
+
? allAccounts.some((currentAccount) => currentAccount.address.toLowerCase() === address.toLowerCase())
|
|
151
|
+
: selectedAccount.toLowerCase() === address.toLowerCase();
|
|
149
152
|
// Add zero native balance entries for addresses that API didn't return
|
|
150
153
|
addressChainMap.forEach((chains, address) => {
|
|
151
154
|
chains.forEach((chainId) => {
|
|
@@ -153,7 +156,11 @@ export class AccountsApiBalanceFetcher {
|
|
|
153
156
|
const existingBalance = nativeBalancesFromAPI.get(key);
|
|
154
157
|
const isChainIncludedInRequest = chainIds.includes(chainId);
|
|
155
158
|
const isChainSupported = this.supports(chainId);
|
|
156
|
-
const
|
|
159
|
+
const isAccountIncluded = isAccountIncludedInRequest(address);
|
|
160
|
+
const shouldZeroOutBalance = !existingBalance &&
|
|
161
|
+
isChainIncludedInRequest &&
|
|
162
|
+
isChainSupported &&
|
|
163
|
+
isAccountIncluded;
|
|
157
164
|
if (shouldZeroOutBalance) {
|
|
158
165
|
// Add zero native balance entry if API succeeded but didn't return one
|
|
159
166
|
results.push({
|
|
@@ -178,7 +185,11 @@ export class AccountsApiBalanceFetcher {
|
|
|
178
185
|
const existingBalance = nonNativeBalancesFromAPI.get(key);
|
|
179
186
|
const isChainIncludedInRequest = chainIds.includes(chainId);
|
|
180
187
|
const isChainSupported = this.supports(chainId);
|
|
181
|
-
const
|
|
188
|
+
const isAccountIncluded = isAccountIncludedInRequest(account);
|
|
189
|
+
const shouldZeroOutBalance = !existingBalance &&
|
|
190
|
+
isChainIncludedInRequest &&
|
|
191
|
+
isChainSupported &&
|
|
192
|
+
isAccountIncluded;
|
|
182
193
|
if (isERC && shouldZeroOutBalance) {
|
|
183
194
|
results.push({
|
|
184
195
|
success: true,
|