@metamask/assets-controllers 73.0.2 → 73.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -1
- package/dist/AccountTrackerController.cjs +69 -12
- package/dist/AccountTrackerController.cjs.map +1 -1
- package/dist/AccountTrackerController.d.cts +40 -1
- package/dist/AccountTrackerController.d.cts.map +1 -1
- package/dist/AccountTrackerController.d.mts +40 -1
- package/dist/AccountTrackerController.d.mts.map +1 -1
- package/dist/AccountTrackerController.mjs +69 -12
- package/dist/AccountTrackerController.mjs.map +1 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.cjs +1 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.cjs.map +1 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.mjs +1 -1
- package/dist/DeFiPositionsController/DeFiPositionsController.mjs.map +1 -1
- package/dist/TokenBalancesController.cjs +278 -319
- package/dist/TokenBalancesController.cjs.map +1 -1
- package/dist/TokenBalancesController.d.cts +51 -93
- package/dist/TokenBalancesController.d.cts.map +1 -1
- package/dist/TokenBalancesController.d.mts +51 -93
- package/dist/TokenBalancesController.d.mts.map +1 -1
- package/dist/TokenBalancesController.mjs +277 -317
- package/dist/TokenBalancesController.mjs.map +1 -1
- package/dist/assetsUtil.cjs +13 -1
- package/dist/assetsUtil.cjs.map +1 -1
- package/dist/assetsUtil.d.cts +8 -0
- package/dist/assetsUtil.d.cts.map +1 -1
- package/dist/assetsUtil.d.mts +8 -0
- package/dist/assetsUtil.d.mts.map +1 -1
- package/dist/assetsUtil.mjs +12 -1
- package/dist/assetsUtil.mjs.map +1 -1
- package/dist/balances.cjs +447 -0
- package/dist/balances.cjs.map +1 -0
- package/dist/balances.d.cts +88 -0
- package/dist/balances.d.cts.map +1 -0
- package/dist/balances.d.mts +88 -0
- package/dist/balances.d.mts.map +1 -0
- package/dist/balances.mjs +441 -0
- package/dist/balances.mjs.map +1 -0
- package/dist/constants.cjs +13 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +1 -0
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +1 -0
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs +12 -0
- package/dist/constants.mjs.map +1 -1
- package/dist/index.cjs +6 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +6 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs +247 -0
- package/dist/multi-chain-accounts-service/api-balance-fetcher.cjs.map +1 -0
- package/dist/multi-chain-accounts-service/api-balance-fetcher.d.cts +30 -0
- package/dist/multi-chain-accounts-service/api-balance-fetcher.d.cts.map +1 -0
- package/dist/multi-chain-accounts-service/api-balance-fetcher.d.mts +30 -0
- package/dist/multi-chain-accounts-service/api-balance-fetcher.d.mts.map +1 -0
- package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs +247 -0
- package/dist/multi-chain-accounts-service/api-balance-fetcher.mjs.map +1 -0
- package/dist/multi-chain-accounts-service/multi-chain-accounts.cjs +35 -1
- package/dist/multi-chain-accounts-service/multi-chain-accounts.cjs.map +1 -1
- package/dist/multi-chain-accounts-service/multi-chain-accounts.d.cts +16 -0
- package/dist/multi-chain-accounts-service/multi-chain-accounts.d.cts.map +1 -1
- package/dist/multi-chain-accounts-service/multi-chain-accounts.d.mts +16 -0
- package/dist/multi-chain-accounts-service/multi-chain-accounts.d.mts.map +1 -1
- package/dist/multi-chain-accounts-service/multi-chain-accounts.mjs +33 -0
- package/dist/multi-chain-accounts-service/multi-chain-accounts.mjs.map +1 -1
- package/dist/multi-chain-accounts-service/types.cjs.map +1 -1
- package/dist/multi-chain-accounts-service/types.d.cts +8 -0
- package/dist/multi-chain-accounts-service/types.d.cts.map +1 -1
- package/dist/multi-chain-accounts-service/types.d.mts +8 -0
- package/dist/multi-chain-accounts-service/types.d.mts.map +1 -1
- package/dist/multi-chain-accounts-service/types.mjs.map +1 -1
- package/dist/multicall.cjs +457 -1
- package/dist/multicall.cjs.map +1 -1
- package/dist/multicall.d.cts +51 -0
- package/dist/multicall.d.cts.map +1 -1
- package/dist/multicall.d.mts +51 -0
- package/dist/multicall.d.mts.map +1 -1
- package/dist/multicall.mjs +457 -0
- package/dist/multicall.mjs.map +1 -1
- package/dist/rpc-service/rpc-balance-fetcher.cjs +184 -0
- package/dist/rpc-service/rpc-balance-fetcher.cjs.map +1 -0
- package/dist/rpc-service/rpc-balance-fetcher.d.cts +34 -0
- package/dist/rpc-service/rpc-balance-fetcher.d.cts.map +1 -0
- package/dist/rpc-service/rpc-balance-fetcher.d.mts +34 -0
- package/dist/rpc-service/rpc-balance-fetcher.d.mts.map +1 -0
- package/dist/rpc-service/rpc-balance-fetcher.mjs +184 -0
- package/dist/rpc-service/rpc-balance-fetcher.mjs.map +1 -0
- package/package.json +15 -10
package/dist/constants.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,uBAAa,CAAA;IACb,+BAAqB,CAAA;AACvB,CAAC,EAJW,MAAM,sBAAN,MAAM,QAIjB","sourcesContent":["export enum Source {\n Custom = 'custom',\n Dapp = 'dapp',\n Detected = 'detected',\n}\n"]}
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,uBAAa,CAAA;IACb,+BAAqB,CAAA;AACvB,CAAC,EAJW,MAAM,sBAAN,MAAM,QAIjB;AAED,wEAAwE;AAC3D,QAAA,kCAAkC,GAAG;IAChD,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,SAAS;IACT,OAAO,EAAE,OAAO;CACjB,CAAC","sourcesContent":["export enum Source {\n Custom = 'custom',\n Dapp = 'dapp',\n Detected = 'detected',\n}\n\n// TODO: delete this once we have the v4 endpoint for supported networks\nexport const SUPPORTED_NETWORKS_ACCOUNTS_API_V4 = [\n '0x1', // 1\n '0x89', // 137\n '0x38', // 56\n '0xe728', // 59144\n '0x2105', // 8453\n '0xa', // 10\n '0xa4b1', // 42161\n '0x82750', // 534352\n '0x531', // 1329\n];\n"]}
|
package/dist/constants.d.cts
CHANGED
package/dist/constants.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAChB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;CACtB"}
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAChB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;CACtB;AAGD,eAAO,MAAM,kCAAkC,UAU9C,CAAC"}
|
package/dist/constants.d.mts
CHANGED
package/dist/constants.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAChB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;CACtB"}
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAChB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;CACtB;AAGD,eAAO,MAAM,kCAAkC,UAU9C,CAAC"}
|
package/dist/constants.mjs
CHANGED
|
@@ -4,4 +4,16 @@ export var Source;
|
|
|
4
4
|
Source["Dapp"] = "dapp";
|
|
5
5
|
Source["Detected"] = "detected";
|
|
6
6
|
})(Source || (Source = {}));
|
|
7
|
+
// TODO: delete this once we have the v4 endpoint for supported networks
|
|
8
|
+
export const SUPPORTED_NETWORKS_ACCOUNTS_API_V4 = [
|
|
9
|
+
'0x1',
|
|
10
|
+
'0x89',
|
|
11
|
+
'0x38',
|
|
12
|
+
'0xe728',
|
|
13
|
+
'0x2105',
|
|
14
|
+
'0xa',
|
|
15
|
+
'0xa4b1',
|
|
16
|
+
'0x82750',
|
|
17
|
+
'0x531', // 1329
|
|
18
|
+
];
|
|
7
19
|
//# sourceMappingURL=constants.mjs.map
|
package/dist/constants.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,uBAAa,CAAA;IACb,+BAAqB,CAAA;AACvB,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB","sourcesContent":["export enum Source {\n Custom = 'custom',\n Dapp = 'dapp',\n Detected = 'detected',\n}\n"]}
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,2BAAiB,CAAA;IACjB,uBAAa,CAAA;IACb,+BAAqB,CAAA;AACvB,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,SAAS;IACT,OAAO,EAAE,OAAO;CACjB,CAAC","sourcesContent":["export enum Source {\n Custom = 'custom',\n Dapp = 'dapp',\n Detected = 'detected',\n}\n\n// TODO: delete this once we have the v4 endpoint for supported networks\nexport const SUPPORTED_NETWORKS_ACCOUNTS_API_V4 = [\n '0x1', // 1\n '0x89', // 137\n '0x38', // 56\n '0xe728', // 59144\n '0x2105', // 8453\n '0xa', // 10\n '0xa4b1', // 42161\n '0x82750', // 534352\n '0x531', // 1329\n];\n"]}
|
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.DeFiPositionsController = exports.TokenSearchDiscoveryDataController = exports.getDefaultMultichainAssetsRatesControllerState = exports.MultichainAssetsRatesController = exports.getDefaultMultichainAssetsControllerState = exports.MultichainAssetsController = exports.MultichainBalancesController = exports.Cryptocurrency = exports.RatesController = 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.calculateBalanceChangeForAccountGroup = exports.calculateBalanceChangeForAllWallets = exports.calculateBalanceForAllWallets = exports.DeFiPositionsController = exports.TokenSearchDiscoveryDataController = exports.getDefaultMultichainAssetsRatesControllerState = exports.MultichainAssetsRatesController = exports.getDefaultMultichainAssetsControllerState = exports.MultichainAssetsController = exports.MultichainBalancesController = exports.Cryptocurrency = exports.RatesController = 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");
|
|
@@ -62,4 +62,9 @@ var TokenSearchDiscoveryDataController_1 = require("./TokenSearchDiscoveryDataCo
|
|
|
62
62
|
Object.defineProperty(exports, "TokenSearchDiscoveryDataController", { enumerable: true, get: function () { return TokenSearchDiscoveryDataController_1.TokenSearchDiscoveryDataController; } });
|
|
63
63
|
var DeFiPositionsController_1 = require("./DeFiPositionsController/DeFiPositionsController.cjs");
|
|
64
64
|
Object.defineProperty(exports, "DeFiPositionsController", { enumerable: true, get: function () { return DeFiPositionsController_1.DeFiPositionsController; } });
|
|
65
|
+
var balances_1 = require("./balances.cjs");
|
|
66
|
+
Object.defineProperty(exports, "calculateBalanceForAllWallets", { enumerable: true, get: function () { return balances_1.calculateBalanceForAllWallets; } });
|
|
67
|
+
var balances_2 = require("./balances.cjs");
|
|
68
|
+
Object.defineProperty(exports, "calculateBalanceChangeForAllWallets", { enumerable: true, get: function () { return balances_2.calculateBalanceChangeForAllWallets; } });
|
|
69
|
+
Object.defineProperty(exports, "calculateBalanceChangeForAccountGroup", { enumerable: true, get: function () { return balances_2.calculateBalanceChangeForAccountGroup; } });
|
|
65
70
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
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;AAQhC,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,+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;AAWhD,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","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 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 { 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';\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';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { AccountInformation, AccountTrackerControllerMessenger, AccountTrackerControllerState, AccountTrackerControllerActions, AccountTrackerControllerGetStateAction, AccountTrackerControllerStateChangeEvent, AccountTrackerControllerEvents, } from "./AccountTrackerController.cjs";
|
|
1
|
+
export type { AccountInformation, AccountTrackerControllerMessenger, AccountTrackerControllerState, AccountTrackerControllerActions, AccountTrackerControllerGetStateAction, AccountTrackerControllerStateChangeEvent, AccountTrackerControllerEvents, AccountTrackerUpdateNativeBalancesAction, AccountTrackerUpdateStakedBalancesAction, } from "./AccountTrackerController.cjs";
|
|
2
2
|
export { AccountTrackerController } from "./AccountTrackerController.cjs";
|
|
3
3
|
export type { AssetsContractControllerActions, AssetsContractControllerEvents, AssetsContractControllerGetERC20StandardAction, AssetsContractControllerGetERC721StandardAction, AssetsContractControllerGetERC1155StandardAction, AssetsContractControllerGetERC20BalanceOfAction, AssetsContractControllerGetERC20TokenDecimalsAction, AssetsContractControllerGetERC20TokenNameAction, AssetsContractControllerGetERC721NftTokenIdAction, AssetsContractControllerGetERC721TokenURIAction, AssetsContractControllerGetERC721AssetNameAction, AssetsContractControllerGetERC721AssetSymbolAction, AssetsContractControllerGetERC721OwnerOfAction, AssetsContractControllerGetERC1155TokenURIAction, AssetsContractControllerGetERC1155BalanceOfAction, AssetsContractControllerTransferSingleERC1155Action, AssetsContractControllerGetTokenStandardAndDetailsAction, AssetsContractControllerGetBalancesInSingleCallAction, AssetsContractControllerMessenger, BalanceMap, } from "./AssetsContractController.cjs";
|
|
4
4
|
export { SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID, AssetsContractController, } from "./AssetsContractController.cjs";
|
|
@@ -7,7 +7,7 @@ export type { NftControllerState, NftControllerMessenger, NftControllerActions,
|
|
|
7
7
|
export { getDefaultNftControllerState, NftController } from "./NftController.cjs";
|
|
8
8
|
export type { NftDetectionControllerMessenger, ApiNft, ApiNftContract, ApiNftLastSale, ApiNftCreator, ReservoirResponse, TokensResponse, BlockaidResultType, Blockaid, Market, TokenResponse, TopBid, LastSale, FeeBreakdown, Attributes, Collection, Royalties, Ownership, FloorAsk, Price, Metadata, } from "./NftDetectionController.cjs";
|
|
9
9
|
export { NftDetectionController } from "./NftDetectionController.cjs";
|
|
10
|
-
export type {
|
|
10
|
+
export type { TokenBalancesControllerActions, TokenBalancesControllerGetStateAction, TokenBalancesControllerEvents, TokenBalancesControllerMessenger, TokenBalancesControllerOptions, TokenBalancesControllerStateChangeEvent, TokenBalancesControllerState, } from "./TokenBalancesController.cjs";
|
|
11
11
|
export { TokenBalancesController } from "./TokenBalancesController.cjs";
|
|
12
12
|
export type { TokenDetectionControllerMessenger, TokenDetectionControllerActions, TokenDetectionControllerGetStateAction, TokenDetectionControllerEvents, TokenDetectionControllerStateChangeEvent, } from "./TokenDetectionController.cjs";
|
|
13
13
|
export { TokenDetectionController } from "./TokenDetectionController.cjs";
|
|
@@ -32,4 +32,8 @@ export type { TokenDisplayData, TokenSearchDiscoveryDataControllerState, TokenSe
|
|
|
32
32
|
export { DeFiPositionsController } from "./DeFiPositionsController/DeFiPositionsController.cjs";
|
|
33
33
|
export type { DeFiPositionsControllerState, DeFiPositionsControllerActions, DeFiPositionsControllerEvents, DeFiPositionsControllerGetStateAction, DeFiPositionsControllerStateChangeEvent, DeFiPositionsControllerMessenger, } from "./DeFiPositionsController/DeFiPositionsController.cjs";
|
|
34
34
|
export type { GroupedDeFiPositions } from "./DeFiPositionsController/group-defi-positions.cjs";
|
|
35
|
+
export type { AccountGroupBalance, WalletBalance, AllWalletsBalance, } from "./balances.cjs";
|
|
36
|
+
export { calculateBalanceForAllWallets } from "./balances.cjs";
|
|
37
|
+
export type { BalanceChangePeriod, BalanceChangeResult } from "./balances.cjs";
|
|
38
|
+
export { calculateBalanceChangeForAllWallets, calculateBalanceChangeForAccountGroup, } from "./balances.cjs";
|
|
35
39
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { AccountInformation, AccountTrackerControllerMessenger, AccountTrackerControllerState, AccountTrackerControllerActions, AccountTrackerControllerGetStateAction, AccountTrackerControllerStateChangeEvent, AccountTrackerControllerEvents, } from "./AccountTrackerController.mjs";
|
|
1
|
+
export type { AccountInformation, AccountTrackerControllerMessenger, AccountTrackerControllerState, AccountTrackerControllerActions, AccountTrackerControllerGetStateAction, AccountTrackerControllerStateChangeEvent, AccountTrackerControllerEvents, AccountTrackerUpdateNativeBalancesAction, AccountTrackerUpdateStakedBalancesAction, } from "./AccountTrackerController.mjs";
|
|
2
2
|
export { AccountTrackerController } from "./AccountTrackerController.mjs";
|
|
3
3
|
export type { AssetsContractControllerActions, AssetsContractControllerEvents, AssetsContractControllerGetERC20StandardAction, AssetsContractControllerGetERC721StandardAction, AssetsContractControllerGetERC1155StandardAction, AssetsContractControllerGetERC20BalanceOfAction, AssetsContractControllerGetERC20TokenDecimalsAction, AssetsContractControllerGetERC20TokenNameAction, AssetsContractControllerGetERC721NftTokenIdAction, AssetsContractControllerGetERC721TokenURIAction, AssetsContractControllerGetERC721AssetNameAction, AssetsContractControllerGetERC721AssetSymbolAction, AssetsContractControllerGetERC721OwnerOfAction, AssetsContractControllerGetERC1155TokenURIAction, AssetsContractControllerGetERC1155BalanceOfAction, AssetsContractControllerTransferSingleERC1155Action, AssetsContractControllerGetTokenStandardAndDetailsAction, AssetsContractControllerGetBalancesInSingleCallAction, AssetsContractControllerMessenger, BalanceMap, } from "./AssetsContractController.mjs";
|
|
4
4
|
export { SINGLE_CALL_BALANCES_ADDRESS_BY_CHAINID, AssetsContractController, } from "./AssetsContractController.mjs";
|
|
@@ -7,7 +7,7 @@ export type { NftControllerState, NftControllerMessenger, NftControllerActions,
|
|
|
7
7
|
export { getDefaultNftControllerState, NftController } from "./NftController.mjs";
|
|
8
8
|
export type { NftDetectionControllerMessenger, ApiNft, ApiNftContract, ApiNftLastSale, ApiNftCreator, ReservoirResponse, TokensResponse, BlockaidResultType, Blockaid, Market, TokenResponse, TopBid, LastSale, FeeBreakdown, Attributes, Collection, Royalties, Ownership, FloorAsk, Price, Metadata, } from "./NftDetectionController.mjs";
|
|
9
9
|
export { NftDetectionController } from "./NftDetectionController.mjs";
|
|
10
|
-
export type {
|
|
10
|
+
export type { TokenBalancesControllerActions, TokenBalancesControllerGetStateAction, TokenBalancesControllerEvents, TokenBalancesControllerMessenger, TokenBalancesControllerOptions, TokenBalancesControllerStateChangeEvent, TokenBalancesControllerState, } from "./TokenBalancesController.mjs";
|
|
11
11
|
export { TokenBalancesController } from "./TokenBalancesController.mjs";
|
|
12
12
|
export type { TokenDetectionControllerMessenger, TokenDetectionControllerActions, TokenDetectionControllerGetStateAction, TokenDetectionControllerEvents, TokenDetectionControllerStateChangeEvent, } from "./TokenDetectionController.mjs";
|
|
13
13
|
export { TokenDetectionController } from "./TokenDetectionController.mjs";
|
|
@@ -32,4 +32,8 @@ export type { TokenDisplayData, TokenSearchDiscoveryDataControllerState, TokenSe
|
|
|
32
32
|
export { DeFiPositionsController } from "./DeFiPositionsController/DeFiPositionsController.mjs";
|
|
33
33
|
export type { DeFiPositionsControllerState, DeFiPositionsControllerActions, DeFiPositionsControllerEvents, DeFiPositionsControllerGetStateAction, DeFiPositionsControllerStateChangeEvent, DeFiPositionsControllerMessenger, } from "./DeFiPositionsController/DeFiPositionsController.mjs";
|
|
34
34
|
export type { GroupedDeFiPositions } from "./DeFiPositionsController/group-defi-positions.mjs";
|
|
35
|
+
export type { AccountGroupBalance, WalletBalance, AllWalletsBalance, } from "./balances.mjs";
|
|
36
|
+
export { calculateBalanceForAllWallets } from "./balances.mjs";
|
|
37
|
+
export type { BalanceChangePeriod, BalanceChangeResult } from "./balances.mjs";
|
|
38
|
+
export { calculateBalanceChangeForAllWallets, calculateBalanceChangeForAccountGroup, } from "./balances.mjs";
|
|
35
39
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -16,4 +16,6 @@ export { MultichainAssetsController, getDefaultMultichainAssetsControllerState }
|
|
|
16
16
|
export { MultichainAssetsRatesController, getDefaultMultichainAssetsRatesControllerState } from "./MultichainAssetsRatesController/index.mjs";
|
|
17
17
|
export { TokenSearchDiscoveryDataController } from "./TokenSearchDiscoveryDataController/index.mjs";
|
|
18
18
|
export { DeFiPositionsController } from "./DeFiPositionsController/DeFiPositionsController.mjs";
|
|
19
|
+
export { calculateBalanceForAllWallets } from "./balances.mjs";
|
|
20
|
+
export { calculateBalanceChangeForAllWallets, calculateBalanceChangeForAccountGroup } from "./balances.mjs";
|
|
19
21
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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;AAQpE,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,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;AAU3C,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","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 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 { 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';\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';\n"]}
|
|
@@ -0,0 +1,247 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
var _AccountsApiBalanceFetcher_instances, _AccountsApiBalanceFetcher_platform, _AccountsApiBalanceFetcher_getProvider, _AccountsApiBalanceFetcher_fetchStakedBalances, _AccountsApiBalanceFetcher_fetchBalances;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.AccountsApiBalanceFetcher = void 0;
|
|
19
|
+
const contracts_1 = require("@ethersproject/contracts");
|
|
20
|
+
const controller_utils_1 = require("@metamask/controller-utils");
|
|
21
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
|
22
|
+
const multi_chain_accounts_1 = require("./multi-chain-accounts.cjs");
|
|
23
|
+
const AssetsContractController_1 = require("../AssetsContractController.cjs");
|
|
24
|
+
const assetsUtil_1 = require("../assetsUtil.cjs");
|
|
25
|
+
const constants_1 = require("../constants.cjs");
|
|
26
|
+
// Maximum number of account addresses that can be sent to the accounts API in a single request
|
|
27
|
+
const ACCOUNTS_API_BATCH_SIZE = 50;
|
|
28
|
+
const checksum = (addr) => (0, controller_utils_1.toChecksumHexAddress)(addr);
|
|
29
|
+
const toCaipAccount = (chainId, account) => (0, assetsUtil_1.accountAddressToCaipReference)(chainId, account);
|
|
30
|
+
class AccountsApiBalanceFetcher {
|
|
31
|
+
constructor(platform = 'extension', getProvider) {
|
|
32
|
+
_AccountsApiBalanceFetcher_instances.add(this);
|
|
33
|
+
_AccountsApiBalanceFetcher_platform.set(this, 'extension');
|
|
34
|
+
_AccountsApiBalanceFetcher_getProvider.set(this, void 0);
|
|
35
|
+
__classPrivateFieldSet(this, _AccountsApiBalanceFetcher_platform, platform, "f");
|
|
36
|
+
__classPrivateFieldSet(this, _AccountsApiBalanceFetcher_getProvider, getProvider, "f");
|
|
37
|
+
}
|
|
38
|
+
supports(chainId) {
|
|
39
|
+
return constants_1.SUPPORTED_NETWORKS_ACCOUNTS_API_V4.includes(chainId);
|
|
40
|
+
}
|
|
41
|
+
async fetch({ chainIds, queryAllAccounts, selectedAccount, allAccounts, }) {
|
|
42
|
+
const caipAddrs = [];
|
|
43
|
+
for (const chainId of chainIds.filter((c) => this.supports(c))) {
|
|
44
|
+
if (queryAllAccounts) {
|
|
45
|
+
allAccounts.forEach((a) => caipAddrs.push(toCaipAccount(chainId, a.address)));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
caipAddrs.push(toCaipAccount(chainId, selectedAccount));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (!caipAddrs.length) {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
const [balances, stakedBalances] = await Promise.all([
|
|
55
|
+
(0, controller_utils_1.safelyExecute)(() => __classPrivateFieldGet(this, _AccountsApiBalanceFetcher_instances, "m", _AccountsApiBalanceFetcher_fetchBalances).call(this, caipAddrs)),
|
|
56
|
+
__classPrivateFieldGet(this, _AccountsApiBalanceFetcher_instances, "m", _AccountsApiBalanceFetcher_fetchStakedBalances).call(this, caipAddrs),
|
|
57
|
+
]);
|
|
58
|
+
const results = [];
|
|
59
|
+
// Collect all unique addresses and chains from the CAIP addresses
|
|
60
|
+
const addressChainMap = new Map();
|
|
61
|
+
caipAddrs.forEach((caipAddr) => {
|
|
62
|
+
const [, chainRef, address] = caipAddr.split(':');
|
|
63
|
+
const chainId = (0, controller_utils_1.toHex)(parseInt(chainRef, 10));
|
|
64
|
+
const checksumAddress = checksum(address);
|
|
65
|
+
if (!addressChainMap.has(checksumAddress)) {
|
|
66
|
+
addressChainMap.set(checksumAddress, new Set());
|
|
67
|
+
}
|
|
68
|
+
addressChainMap.get(checksumAddress)?.add(chainId);
|
|
69
|
+
});
|
|
70
|
+
// Ensure native token entries exist for all addresses on all requested chains
|
|
71
|
+
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
72
|
+
const nativeBalancesFromAPI = new Map(); // key: `${address}-${chainId}`
|
|
73
|
+
// Process regular API balances
|
|
74
|
+
if (balances) {
|
|
75
|
+
const apiBalances = balances.flatMap((b) => {
|
|
76
|
+
const account = b.accountAddress?.split(':')[2];
|
|
77
|
+
if (!account) {
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
const token = checksum(b.address);
|
|
81
|
+
const chainId = (0, controller_utils_1.toHex)(b.chainId);
|
|
82
|
+
let value;
|
|
83
|
+
try {
|
|
84
|
+
value = new bn_js_1.default((parseFloat(b.balance) * 10 ** b.decimals).toFixed(0));
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
value = undefined;
|
|
88
|
+
}
|
|
89
|
+
// Track native balances for later
|
|
90
|
+
if (token === ZERO_ADDRESS && value !== undefined) {
|
|
91
|
+
nativeBalancesFromAPI.set(`${account}-${chainId}`, value);
|
|
92
|
+
}
|
|
93
|
+
return [
|
|
94
|
+
{
|
|
95
|
+
success: value !== undefined,
|
|
96
|
+
value,
|
|
97
|
+
account,
|
|
98
|
+
token,
|
|
99
|
+
chainId,
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
});
|
|
103
|
+
results.push(...apiBalances);
|
|
104
|
+
}
|
|
105
|
+
// Ensure native token entries exist for all addresses/chains, even if not returned by API
|
|
106
|
+
addressChainMap.forEach((chains, address) => {
|
|
107
|
+
chains.forEach((chainId) => {
|
|
108
|
+
const key = `${address}-${chainId}`;
|
|
109
|
+
const existingBalance = nativeBalancesFromAPI.get(key);
|
|
110
|
+
if (!existingBalance) {
|
|
111
|
+
// Add zero native balance entry if API didn't return one
|
|
112
|
+
results.push({
|
|
113
|
+
success: true,
|
|
114
|
+
value: new bn_js_1.default('0'),
|
|
115
|
+
account: address,
|
|
116
|
+
token: ZERO_ADDRESS,
|
|
117
|
+
chainId,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
// Add staked balances
|
|
123
|
+
results.push(...stakedBalances);
|
|
124
|
+
return results;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.AccountsApiBalanceFetcher = AccountsApiBalanceFetcher;
|
|
128
|
+
_AccountsApiBalanceFetcher_platform = new WeakMap(), _AccountsApiBalanceFetcher_getProvider = new WeakMap(), _AccountsApiBalanceFetcher_instances = new WeakSet(), _AccountsApiBalanceFetcher_fetchStakedBalances = async function _AccountsApiBalanceFetcher_fetchStakedBalances(addrs) {
|
|
129
|
+
// Return empty array if no provider is available for blockchain calls
|
|
130
|
+
if (!__classPrivateFieldGet(this, _AccountsApiBalanceFetcher_getProvider, "f")) {
|
|
131
|
+
return [];
|
|
132
|
+
}
|
|
133
|
+
const results = [];
|
|
134
|
+
// Group addresses by chain ID
|
|
135
|
+
const addressesByChain = {};
|
|
136
|
+
for (const caipAddr of addrs) {
|
|
137
|
+
const [, chainRef, address] = caipAddr.split(':');
|
|
138
|
+
const chainId = (0, controller_utils_1.toHex)(parseInt(chainRef, 10));
|
|
139
|
+
const checksumAddress = checksum(address);
|
|
140
|
+
if (!addressesByChain[chainId]) {
|
|
141
|
+
addressesByChain[chainId] = [];
|
|
142
|
+
}
|
|
143
|
+
addressesByChain[chainId].push(checksumAddress);
|
|
144
|
+
}
|
|
145
|
+
// Process each supported chain
|
|
146
|
+
for (const [chainId, addresses] of Object.entries(addressesByChain)) {
|
|
147
|
+
const chainIdHex = chainId;
|
|
148
|
+
// Only fetch staked balance on supported networks (mainnet and hoodi)
|
|
149
|
+
if (![
|
|
150
|
+
assetsUtil_1.SupportedStakedBalanceNetworks.mainnet,
|
|
151
|
+
assetsUtil_1.SupportedStakedBalanceNetworks.hoodi,
|
|
152
|
+
].includes(chainIdHex)) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
// Only fetch staked balance if contract address exists
|
|
156
|
+
if (!(chainIdHex in AssetsContractController_1.STAKING_CONTRACT_ADDRESS_BY_CHAINID)) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const contractAddress = AssetsContractController_1.STAKING_CONTRACT_ADDRESS_BY_CHAINID[chainIdHex];
|
|
160
|
+
const provider = __classPrivateFieldGet(this, _AccountsApiBalanceFetcher_getProvider, "f").call(this, chainIdHex);
|
|
161
|
+
const abi = [
|
|
162
|
+
{
|
|
163
|
+
inputs: [
|
|
164
|
+
{ internalType: 'address', name: 'account', type: 'address' },
|
|
165
|
+
],
|
|
166
|
+
name: 'getShares',
|
|
167
|
+
outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }],
|
|
168
|
+
stateMutability: 'view',
|
|
169
|
+
type: 'function',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
inputs: [
|
|
173
|
+
{ internalType: 'uint256', name: 'shares', type: 'uint256' },
|
|
174
|
+
],
|
|
175
|
+
name: 'convertToAssets',
|
|
176
|
+
outputs: [
|
|
177
|
+
{ internalType: 'uint256', name: 'assets', type: 'uint256' },
|
|
178
|
+
],
|
|
179
|
+
stateMutability: 'view',
|
|
180
|
+
type: 'function',
|
|
181
|
+
},
|
|
182
|
+
];
|
|
183
|
+
try {
|
|
184
|
+
const contract = new contracts_1.Contract(contractAddress, abi, provider);
|
|
185
|
+
// Get shares for each address
|
|
186
|
+
for (const address of addresses) {
|
|
187
|
+
try {
|
|
188
|
+
const shares = await (0, controller_utils_1.safelyExecute)(() => contract.getShares(address));
|
|
189
|
+
if (shares && shares.gt(0)) {
|
|
190
|
+
// Convert shares to assets (actual staked ETH amount)
|
|
191
|
+
const assets = await (0, controller_utils_1.safelyExecute)(() => contract.convertToAssets(shares));
|
|
192
|
+
if (assets) {
|
|
193
|
+
results.push({
|
|
194
|
+
success: true,
|
|
195
|
+
value: new bn_js_1.default(assets.toString()),
|
|
196
|
+
account: address,
|
|
197
|
+
token: checksum(contractAddress),
|
|
198
|
+
chainId: chainIdHex,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
// Return zero balance for accounts with no staked assets
|
|
204
|
+
results.push({
|
|
205
|
+
success: true,
|
|
206
|
+
value: new bn_js_1.default('0'),
|
|
207
|
+
account: address,
|
|
208
|
+
token: checksum(contractAddress),
|
|
209
|
+
chainId: chainIdHex,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
// Log error and continue with next address
|
|
215
|
+
console.error(`Error fetching staked balance for ${address}:`, error);
|
|
216
|
+
results.push({
|
|
217
|
+
success: false,
|
|
218
|
+
account: address,
|
|
219
|
+
token: checksum(contractAddress),
|
|
220
|
+
chainId: chainIdHex,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
console.error(`Error setting up staking contract for chain ${chainId}:`, error);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return results;
|
|
230
|
+
}, _AccountsApiBalanceFetcher_fetchBalances = async function _AccountsApiBalanceFetcher_fetchBalances(addrs) {
|
|
231
|
+
// If we have fewer than or equal to the batch size, make a single request
|
|
232
|
+
if (addrs.length <= ACCOUNTS_API_BATCH_SIZE) {
|
|
233
|
+
const { balances } = await (0, multi_chain_accounts_1.fetchMultiChainBalancesV4)({ accountAddresses: addrs }, __classPrivateFieldGet(this, _AccountsApiBalanceFetcher_platform, "f"));
|
|
234
|
+
return balances;
|
|
235
|
+
}
|
|
236
|
+
const allBalances = await (0, assetsUtil_1.reduceInBatchesSerially)({
|
|
237
|
+
values: addrs,
|
|
238
|
+
batchSize: ACCOUNTS_API_BATCH_SIZE,
|
|
239
|
+
eachBatch: async (workingResult, batch) => {
|
|
240
|
+
const { balances } = await (0, multi_chain_accounts_1.fetchMultiChainBalancesV4)({ accountAddresses: batch }, __classPrivateFieldGet(this, _AccountsApiBalanceFetcher_platform, "f"));
|
|
241
|
+
return [...(workingResult || []), ...balances];
|
|
242
|
+
},
|
|
243
|
+
initialResult: [],
|
|
244
|
+
});
|
|
245
|
+
return allBalances;
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=api-balance-fetcher.cjs.map
|
|
@@ -0,0 +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 toHex,\n toChecksumHexAddress,\n} from '@metamask/controller-utils';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { CaipAccountAddress, Hex } from '@metamask/utils';\nimport BN from 'bn.js';\n\nimport { fetchMultiChainBalancesV4 } from './multi-chain-accounts';\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 = 50;\n\nexport type ChainIdHex = Hex;\nexport type ChecksumAddress = Hex;\n\nexport type ProcessedBalance = {\n success: boolean;\n value?: BN;\n account: ChecksumAddress;\n token: ChecksumAddress;\n chainId: 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 }): Promise<ProcessedBalance[]>;\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 constructor(\n platform: 'extension' | 'mobile' = 'extension',\n getProvider?: GetProviderFunction,\n ) {\n this.#platform = platform;\n this.#getProvider = getProvider;\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)) as ChainIdHex;\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 =\n STAKING_CONTRACT_ADDRESS_BY_CHAINID[\n chainIdHex as keyof typeof STAKING_CONTRACT_ADDRESS_BY_CHAINID\n ];\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) as ChecksumAddress,\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) as ChecksumAddress,\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) as ChecksumAddress,\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[]) {\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 const { balances } = await fetchMultiChainBalancesV4(\n { accountAddresses: addrs },\n this.#platform,\n );\n return balances;\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 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 { balances } = await fetchMultiChainBalancesV4(\n { accountAddresses: batch },\n this.#platform,\n );\n return [...(workingResult || []), ...balances];\n },\n initialResult: [],\n });\n\n return allBalances;\n }\n\n async fetch({\n chainIds,\n queryAllAccounts,\n selectedAccount,\n allAccounts,\n }: Parameters<BalanceFetcher['fetch']>[0]): Promise<ProcessedBalance[]> {\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 [];\n }\n\n const [balances, stakedBalances] = await Promise.all([\n safelyExecute(() => this.#fetchBalances(caipAddrs)),\n this.#fetchStakedBalances(caipAddrs),\n ]);\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)) as ChainIdHex;\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: `${address}-${chainId}`\n\n // Process regular API balances\n if (balances) {\n const apiBalances = balances.flatMap((b) => {\n const account = b.accountAddress?.split(':')[2] as ChecksumAddress;\n if (!account) {\n return [];\n }\n const token = checksum(b.address);\n const chainId = toHex(b.chainId) as ChainIdHex;\n\n let value: BN | undefined;\n try {\n value = new BN((parseFloat(b.balance) * 10 ** b.decimals).toFixed(0));\n } catch {\n value = undefined;\n }\n\n // Track native balances for later\n if (token === ZERO_ADDRESS && value !== undefined) {\n nativeBalancesFromAPI.set(`${account}-${chainId}`, value);\n }\n\n return [\n {\n success: value !== undefined,\n value,\n account,\n token,\n chainId,\n },\n ];\n });\n results.push(...apiBalances);\n }\n\n // Ensure native token entries exist for all addresses/chains, even if not returned by API\n addressChainMap.forEach((chains, address) => {\n chains.forEach((chainId) => {\n const key = `${address}-${chainId}`;\n const existingBalance = nativeBalancesFromAPI.get(key);\n\n if (!existingBalance) {\n // Add zero native balance entry if API 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 staked balances\n results.push(...stakedBalances);\n\n return results;\n }\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Web3Provider } from "@ethersproject/providers";
|
|
2
|
+
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
3
|
+
import type { Hex } from "@metamask/utils";
|
|
4
|
+
import BN from "bn.js";
|
|
5
|
+
export type ChainIdHex = Hex;
|
|
6
|
+
export type ChecksumAddress = Hex;
|
|
7
|
+
export type ProcessedBalance = {
|
|
8
|
+
success: boolean;
|
|
9
|
+
value?: BN;
|
|
10
|
+
account: ChecksumAddress;
|
|
11
|
+
token: ChecksumAddress;
|
|
12
|
+
chainId: ChainIdHex;
|
|
13
|
+
};
|
|
14
|
+
export type BalanceFetcher = {
|
|
15
|
+
supports(chainId: ChainIdHex): boolean;
|
|
16
|
+
fetch(input: {
|
|
17
|
+
chainIds: ChainIdHex[];
|
|
18
|
+
queryAllAccounts: boolean;
|
|
19
|
+
selectedAccount: ChecksumAddress;
|
|
20
|
+
allAccounts: InternalAccount[];
|
|
21
|
+
}): Promise<ProcessedBalance[]>;
|
|
22
|
+
};
|
|
23
|
+
export type GetProviderFunction = (chainId: ChainIdHex) => Web3Provider;
|
|
24
|
+
export declare class AccountsApiBalanceFetcher implements BalanceFetcher {
|
|
25
|
+
#private;
|
|
26
|
+
constructor(platform?: 'extension' | 'mobile', getProvider?: GetProviderFunction);
|
|
27
|
+
supports(chainId: ChainIdHex): boolean;
|
|
28
|
+
fetch({ chainIds, queryAllAccounts, selectedAccount, allAccounts, }: Parameters<BalanceFetcher['fetch']>[0]): Promise<ProcessedBalance[]>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=api-balance-fetcher.d.cts.map
|
|
@@ -0,0 +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;AAM7D,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AACtE,OAAO,KAAK,EAAsB,GAAG,EAAE,wBAAwB;AAC/D,OAAO,EAAE,cAAc;AAcvB,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,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;CACrB,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;KAChC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CACjC,CAAC;AAUF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,YAAY,CAAC;AAExE,qBAAa,yBAA0B,YAAW,cAAc;;gBAM5D,QAAQ,GAAE,WAAW,GAAG,QAAsB,EAC9C,WAAW,CAAC,EAAE,mBAAmB;IAMnC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IA0KhC,KAAK,CAAC,EACV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,WAAW,GACZ,EAAE,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAqGxE"}
|