@metamask/assets-controller 2.2.0 → 2.4.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 +40 -1
- package/dist/AssetsController-method-action-types.cjs.map +1 -1
- package/dist/AssetsController-method-action-types.d.cts +14 -3
- package/dist/AssetsController-method-action-types.d.cts.map +1 -1
- package/dist/AssetsController-method-action-types.d.mts +14 -3
- package/dist/AssetsController-method-action-types.d.mts.map +1 -1
- package/dist/AssetsController-method-action-types.mjs.map +1 -1
- package/dist/AssetsController.cjs +46 -5
- package/dist/AssetsController.cjs.map +1 -1
- package/dist/AssetsController.d.cts +12 -6
- package/dist/AssetsController.d.cts.map +1 -1
- package/dist/AssetsController.d.mts +12 -6
- package/dist/AssetsController.d.mts.map +1 -1
- package/dist/AssetsController.mjs +47 -6
- package/dist/AssetsController.mjs.map +1 -1
- package/dist/data-sources/PriceDataSource.cjs +48 -29
- package/dist/data-sources/PriceDataSource.cjs.map +1 -1
- package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
- package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
- package/dist/data-sources/PriceDataSource.mjs +48 -29
- package/dist/data-sources/PriceDataSource.mjs.map +1 -1
- package/dist/data-sources/RpcDataSource.cjs +102 -18
- package/dist/data-sources/RpcDataSource.cjs.map +1 -1
- package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
- package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
- package/dist/data-sources/RpcDataSource.mjs +102 -18
- package/dist/data-sources/RpcDataSource.mjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts.map +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs +1 -1
- package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +3 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +9 -11
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +9 -11
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/formatExchangeRatesForBridge.cjs +67 -60
- package/dist/utils/formatExchangeRatesForBridge.cjs.map +1 -1
- package/dist/utils/formatExchangeRatesForBridge.d.cts +5 -35
- package/dist/utils/formatExchangeRatesForBridge.d.cts.map +1 -1
- package/dist/utils/formatExchangeRatesForBridge.d.mts +5 -35
- package/dist/utils/formatExchangeRatesForBridge.d.mts.map +1 -1
- package/dist/utils/formatExchangeRatesForBridge.mjs +68 -61
- package/dist/utils/formatExchangeRatesForBridge.mjs.map +1 -1
- package/dist/utils/formatStateForTransactionPay.cjs +125 -0
- package/dist/utils/formatStateForTransactionPay.cjs.map +1 -0
- package/dist/utils/formatStateForTransactionPay.d.cts +66 -0
- package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -0
- package/dist/utils/formatStateForTransactionPay.d.mts +66 -0
- package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -0
- package/dist/utils/formatStateForTransactionPay.mjs +121 -0
- package/dist/utils/formatStateForTransactionPay.mjs.map +1 -0
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +3 -1
- package/dist/utils/index.d.cts.map +1 -1
- package/dist/utils/index.d.mts +3 -1
- package/dist/utils/index.d.mts.map +1 -1
- package/dist/utils/index.mjs +1 -0
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatStateForTransactionPay = void 0;
|
|
4
|
+
const util_1 = require("@ethereumjs/util");
|
|
5
|
+
const utils_1 = require("@metamask/utils");
|
|
6
|
+
const utils_2 = require("@metamask/utils");
|
|
7
|
+
const formatExchangeRatesForBridge_1 = require("./formatExchangeRatesForBridge.cjs");
|
|
8
|
+
function amountToHex(amount) {
|
|
9
|
+
const hexString = BigInt(amount).toString(16);
|
|
10
|
+
return `0x${hexString}`;
|
|
11
|
+
}
|
|
12
|
+
function getAmountFromBalance(balance) {
|
|
13
|
+
return typeof balance === 'object' && balance !== null && 'amount' in balance
|
|
14
|
+
? String(balance.amount)
|
|
15
|
+
: '0';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Converts AssetsController state into the legacy format consumed by
|
|
19
|
+
* transaction-pay-controller (TokenBalancesController, AccountTrackerController,
|
|
20
|
+
* TokensController, TokenRatesController, CurrencyRateController shapes).
|
|
21
|
+
*
|
|
22
|
+
* @param params - Conversion parameters.
|
|
23
|
+
* @param params.assetsBalance - Per-account balances by asset ID.
|
|
24
|
+
* @param params.assetsInfo - Metadata by asset ID.
|
|
25
|
+
* @param params.assetsPrice - Prices by asset ID.
|
|
26
|
+
* @param params.selectedCurrency - Current currency code.
|
|
27
|
+
* @param params.accounts - List of accounts (id + address) to map state for.
|
|
28
|
+
* @param params.nativeAssetIdentifiers - Optional CAIP-2 chain ID to native asset ID.
|
|
29
|
+
* @param params.networkConfigurationsByChainId - Optional chain ID to network config (for native symbol).
|
|
30
|
+
* @returns Legacy-compatible state for transaction-pay-controller.
|
|
31
|
+
*/
|
|
32
|
+
function formatStateForTransactionPay(params) {
|
|
33
|
+
var _a, _b;
|
|
34
|
+
const { assetsBalance, assetsInfo, assetsPrice, selectedCurrency, accounts, nativeAssetIdentifiers = {}, networkConfigurationsByChainId = {}, } = params;
|
|
35
|
+
const tokenBalances = {};
|
|
36
|
+
const accountsByChainId = {};
|
|
37
|
+
const allTokensByChain = {};
|
|
38
|
+
for (const account of accounts) {
|
|
39
|
+
const accountAddressLower = account.address.toLowerCase();
|
|
40
|
+
const accountBalances = assetsBalance[account.id];
|
|
41
|
+
if (!accountBalances) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
for (const [assetId, balance] of Object.entries(accountBalances)) {
|
|
45
|
+
try {
|
|
46
|
+
const parsed = (0, utils_2.parseCaipAssetType)(assetId);
|
|
47
|
+
const chainIdParsed = (0, utils_2.parseCaipChainId)(parsed.chainId);
|
|
48
|
+
if (chainIdParsed.namespace !== 'eip155') {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const chainIdHex = (0, utils_1.numberToHex)(parseInt(chainIdParsed.reference, 10));
|
|
52
|
+
const amount = getAmountFromBalance(balance);
|
|
53
|
+
const balanceHex = amountToHex(amount);
|
|
54
|
+
if (parsed.assetNamespace === 'slip44') {
|
|
55
|
+
const nativeAddress = '0x0000000000000000000000000000000000000000';
|
|
56
|
+
const checksumAddress = (0, util_1.toChecksumAddress)(account.address);
|
|
57
|
+
tokenBalances[accountAddressLower] ?? (tokenBalances[accountAddressLower] = {});
|
|
58
|
+
(_a = tokenBalances[accountAddressLower])[chainIdHex] ?? (_a[chainIdHex] = {});
|
|
59
|
+
tokenBalances[accountAddressLower][chainIdHex][nativeAddress] =
|
|
60
|
+
balanceHex;
|
|
61
|
+
accountsByChainId[chainIdHex] ?? (accountsByChainId[chainIdHex] = {});
|
|
62
|
+
accountsByChainId[chainIdHex][checksumAddress] = {
|
|
63
|
+
balance: balanceHex,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
else if (parsed.assetNamespace === 'erc20') {
|
|
67
|
+
const tokenAddress = (0, util_1.toChecksumAddress)(String(parsed.assetReference));
|
|
68
|
+
tokenBalances[accountAddressLower] ?? (tokenBalances[accountAddressLower] = {});
|
|
69
|
+
(_b = tokenBalances[accountAddressLower])[chainIdHex] ?? (_b[chainIdHex] = {});
|
|
70
|
+
tokenBalances[accountAddressLower][chainIdHex][tokenAddress] =
|
|
71
|
+
balanceHex;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Skip malformed asset IDs
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const [assetId, metadata] of Object.entries(assetsInfo)) {
|
|
80
|
+
try {
|
|
81
|
+
const parsed = (0, utils_2.parseCaipAssetType)(assetId);
|
|
82
|
+
const chainIdParsed = (0, utils_2.parseCaipChainId)(parsed.chainId);
|
|
83
|
+
if (chainIdParsed.namespace !== 'eip155') {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const chainIdHex = (0, utils_1.numberToHex)(parseInt(chainIdParsed.reference, 10));
|
|
87
|
+
const address = parsed.assetNamespace === 'slip44'
|
|
88
|
+
? '0x0000000000000000000000000000000000000000'
|
|
89
|
+
: (0, util_1.toChecksumAddress)(String(parsed.assetReference));
|
|
90
|
+
const token = {
|
|
91
|
+
address,
|
|
92
|
+
decimals: metadata.decimals,
|
|
93
|
+
symbol: metadata.symbol,
|
|
94
|
+
name: metadata.name,
|
|
95
|
+
};
|
|
96
|
+
allTokensByChain[chainIdHex] ?? (allTokensByChain[chainIdHex] = []);
|
|
97
|
+
if (!allTokensByChain[chainIdHex].some((existing) => existing.address.toLowerCase() === address.toLowerCase())) {
|
|
98
|
+
allTokensByChain[chainIdHex].push(token);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Skip malformed asset IDs
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const allTokens = {};
|
|
106
|
+
for (const [chainId, tokens] of Object.entries(allTokensByChain)) {
|
|
107
|
+
allTokens[chainId] = { '': tokens };
|
|
108
|
+
}
|
|
109
|
+
const exchangeRates = (0, formatExchangeRatesForBridge_1.formatExchangeRatesForBridge)({
|
|
110
|
+
assetsPrice,
|
|
111
|
+
selectedCurrency,
|
|
112
|
+
nativeAssetIdentifiers,
|
|
113
|
+
networkConfigurationsByChainId,
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
tokenBalances,
|
|
117
|
+
accountsByChainId,
|
|
118
|
+
allTokens,
|
|
119
|
+
marketData: exchangeRates.marketData,
|
|
120
|
+
currencyRates: exchangeRates.currencyRates,
|
|
121
|
+
currentCurrency: exchangeRates.currentCurrency,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
exports.formatStateForTransactionPay = formatStateForTransactionPay;
|
|
125
|
+
//# sourceMappingURL=formatStateForTransactionPay.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatStateForTransactionPay.cjs","sourceRoot":"","sources":["../../src/utils/formatStateForTransactionPay.ts"],"names":[],"mappings":"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","sourcesContent":["import { toChecksumAddress } from '@ethereumjs/util';\nimport { numberToHex } from '@metamask/utils';\nimport { parseCaipAssetType, parseCaipChainId } from '@metamask/utils';\n\nimport { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge';\nimport type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge';\nimport type {\n AssetBalance,\n AssetMetadata,\n AssetPrice,\n Caip19AssetId,\n} from '../types';\n\n/** Account with id and address for mapping state to legacy format. */\nexport type AccountForLegacyFormat = { id: string; address: string };\n\n/**\n * Legacy Token shape expected by TokensController / transaction-pay-controller.\n */\nexport type LegacyToken = {\n address: string;\n decimals: number;\n symbol: string;\n name?: string;\n [key: string]: unknown;\n};\n\n/**\n * Legacy state shape that transaction-pay-controller reads from\n * TokenBalancesController, AccountTrackerController, TokensController,\n * TokenRatesController, and CurrencyRateController.\n */\nexport type TransactionPayLegacyFormat = {\n /** TokenBalancesController:getState().tokenBalances */\n tokenBalances: Record<string, Record<string, Record<string, `0x${string}`>>>;\n /** AccountTrackerController:getState().accountsByChainId */\n accountsByChainId: Record<\n string,\n Record<string, { balance: string; stakedBalance?: string }>\n >;\n /** TokensController:getState().allTokens (chainId -> key -> Token[]) */\n allTokens: Record<string, Record<string, LegacyToken[]>>;\n /** TokenRatesController:getState().marketData */\n marketData: BridgeExchangeRatesFormat['marketData'];\n /** CurrencyRateController:getState().currencyRates */\n currencyRates: BridgeExchangeRatesFormat['currencyRates'];\n /** CurrencyRateController:getState().currentCurrency */\n currentCurrency: string;\n};\n\nfunction amountToHex(amount: string): `0x${string}` {\n const hexString = BigInt(amount).toString(16);\n return `0x${hexString}`;\n}\n\nfunction getAmountFromBalance(balance: AssetBalance): string {\n return typeof balance === 'object' && balance !== null && 'amount' in balance\n ? String((balance as { amount: string }).amount)\n : '0';\n}\n\n/**\n * Converts AssetsController state into the legacy format consumed by\n * transaction-pay-controller (TokenBalancesController, AccountTrackerController,\n * TokensController, TokenRatesController, CurrencyRateController shapes).\n *\n * @param params - Conversion parameters.\n * @param params.assetsBalance - Per-account balances by asset ID.\n * @param params.assetsInfo - Metadata by asset ID.\n * @param params.assetsPrice - Prices by asset ID.\n * @param params.selectedCurrency - Current currency code.\n * @param params.accounts - List of accounts (id + address) to map state for.\n * @param params.nativeAssetIdentifiers - Optional CAIP-2 chain ID to native asset ID.\n * @param params.networkConfigurationsByChainId - Optional chain ID to network config (for native symbol).\n * @returns Legacy-compatible state for transaction-pay-controller.\n */\nexport function formatStateForTransactionPay(params: {\n assetsBalance: Record<string, Record<string, AssetBalance>>;\n assetsInfo: Record<string, AssetMetadata>;\n assetsPrice: Record<string, AssetPrice>;\n selectedCurrency: string;\n accounts: AccountForLegacyFormat[];\n nativeAssetIdentifiers?: Record<string, string>;\n networkConfigurationsByChainId?: Record<string, { nativeCurrency?: string }>;\n}): TransactionPayLegacyFormat {\n const {\n assetsBalance,\n assetsInfo,\n assetsPrice,\n selectedCurrency,\n accounts,\n nativeAssetIdentifiers = {},\n networkConfigurationsByChainId = {},\n } = params;\n\n const tokenBalances: TransactionPayLegacyFormat['tokenBalances'] = {};\n const accountsByChainId: TransactionPayLegacyFormat['accountsByChainId'] = {};\n const allTokensByChain: Record<string, LegacyToken[]> = {};\n\n for (const account of accounts) {\n const accountAddressLower = account.address.toLowerCase();\n const accountBalances = assetsBalance[account.id];\n if (!accountBalances) {\n continue;\n }\n\n for (const [assetId, balance] of Object.entries(accountBalances)) {\n try {\n const parsed = parseCaipAssetType(assetId as Caip19AssetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n if (chainIdParsed.namespace !== 'eip155') {\n continue;\n }\n const chainIdHex = numberToHex(parseInt(chainIdParsed.reference, 10));\n const amount = getAmountFromBalance(balance);\n const balanceHex = amountToHex(amount);\n\n if (parsed.assetNamespace === 'slip44') {\n const nativeAddress =\n '0x0000000000000000000000000000000000000000' as const;\n const checksumAddress = toChecksumAddress(account.address);\n tokenBalances[accountAddressLower] ??= {};\n tokenBalances[accountAddressLower][chainIdHex] ??= {};\n tokenBalances[accountAddressLower][chainIdHex][nativeAddress] =\n balanceHex;\n accountsByChainId[chainIdHex] ??= {};\n accountsByChainId[chainIdHex][checksumAddress] = {\n balance: balanceHex,\n };\n } else if (parsed.assetNamespace === 'erc20') {\n const tokenAddress = toChecksumAddress(String(parsed.assetReference));\n tokenBalances[accountAddressLower] ??= {};\n tokenBalances[accountAddressLower][chainIdHex] ??= {};\n tokenBalances[accountAddressLower][chainIdHex][tokenAddress] =\n balanceHex;\n }\n } catch {\n // Skip malformed asset IDs\n }\n }\n }\n\n for (const [assetId, metadata] of Object.entries(assetsInfo)) {\n try {\n const parsed = parseCaipAssetType(assetId as Caip19AssetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n if (chainIdParsed.namespace !== 'eip155') {\n continue;\n }\n const chainIdHex = numberToHex(parseInt(chainIdParsed.reference, 10));\n const address =\n parsed.assetNamespace === 'slip44'\n ? '0x0000000000000000000000000000000000000000'\n : toChecksumAddress(String(parsed.assetReference));\n const token: LegacyToken = {\n address,\n decimals: metadata.decimals,\n symbol: metadata.symbol,\n name: metadata.name,\n };\n allTokensByChain[chainIdHex] ??= [];\n if (\n !allTokensByChain[chainIdHex].some(\n (existing) =>\n existing.address.toLowerCase() === address.toLowerCase(),\n )\n ) {\n allTokensByChain[chainIdHex].push(token);\n }\n } catch {\n // Skip malformed asset IDs\n }\n }\n\n const allTokens: TransactionPayLegacyFormat['allTokens'] = {};\n for (const [chainId, tokens] of Object.entries(allTokensByChain)) {\n allTokens[chainId] = { '': tokens };\n }\n\n const exchangeRates = formatExchangeRatesForBridge({\n assetsPrice,\n selectedCurrency,\n nativeAssetIdentifiers,\n networkConfigurationsByChainId,\n });\n\n return {\n tokenBalances,\n accountsByChainId,\n allTokens,\n marketData: exchangeRates.marketData,\n currencyRates: exchangeRates.currencyRates,\n currentCurrency: exchangeRates.currentCurrency,\n };\n}\n"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { BridgeExchangeRatesFormat } from "./formatExchangeRatesForBridge.cjs";
|
|
2
|
+
import type { AssetBalance, AssetMetadata, AssetPrice } from "../types.cjs";
|
|
3
|
+
/** Account with id and address for mapping state to legacy format. */
|
|
4
|
+
export type AccountForLegacyFormat = {
|
|
5
|
+
id: string;
|
|
6
|
+
address: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Legacy Token shape expected by TokensController / transaction-pay-controller.
|
|
10
|
+
*/
|
|
11
|
+
export type LegacyToken = {
|
|
12
|
+
address: string;
|
|
13
|
+
decimals: number;
|
|
14
|
+
symbol: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Legacy state shape that transaction-pay-controller reads from
|
|
20
|
+
* TokenBalancesController, AccountTrackerController, TokensController,
|
|
21
|
+
* TokenRatesController, and CurrencyRateController.
|
|
22
|
+
*/
|
|
23
|
+
export type TransactionPayLegacyFormat = {
|
|
24
|
+
/** TokenBalancesController:getState().tokenBalances */
|
|
25
|
+
tokenBalances: Record<string, Record<string, Record<string, `0x${string}`>>>;
|
|
26
|
+
/** AccountTrackerController:getState().accountsByChainId */
|
|
27
|
+
accountsByChainId: Record<string, Record<string, {
|
|
28
|
+
balance: string;
|
|
29
|
+
stakedBalance?: string;
|
|
30
|
+
}>>;
|
|
31
|
+
/** TokensController:getState().allTokens (chainId -> key -> Token[]) */
|
|
32
|
+
allTokens: Record<string, Record<string, LegacyToken[]>>;
|
|
33
|
+
/** TokenRatesController:getState().marketData */
|
|
34
|
+
marketData: BridgeExchangeRatesFormat['marketData'];
|
|
35
|
+
/** CurrencyRateController:getState().currencyRates */
|
|
36
|
+
currencyRates: BridgeExchangeRatesFormat['currencyRates'];
|
|
37
|
+
/** CurrencyRateController:getState().currentCurrency */
|
|
38
|
+
currentCurrency: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Converts AssetsController state into the legacy format consumed by
|
|
42
|
+
* transaction-pay-controller (TokenBalancesController, AccountTrackerController,
|
|
43
|
+
* TokensController, TokenRatesController, CurrencyRateController shapes).
|
|
44
|
+
*
|
|
45
|
+
* @param params - Conversion parameters.
|
|
46
|
+
* @param params.assetsBalance - Per-account balances by asset ID.
|
|
47
|
+
* @param params.assetsInfo - Metadata by asset ID.
|
|
48
|
+
* @param params.assetsPrice - Prices by asset ID.
|
|
49
|
+
* @param params.selectedCurrency - Current currency code.
|
|
50
|
+
* @param params.accounts - List of accounts (id + address) to map state for.
|
|
51
|
+
* @param params.nativeAssetIdentifiers - Optional CAIP-2 chain ID to native asset ID.
|
|
52
|
+
* @param params.networkConfigurationsByChainId - Optional chain ID to network config (for native symbol).
|
|
53
|
+
* @returns Legacy-compatible state for transaction-pay-controller.
|
|
54
|
+
*/
|
|
55
|
+
export declare function formatStateForTransactionPay(params: {
|
|
56
|
+
assetsBalance: Record<string, Record<string, AssetBalance>>;
|
|
57
|
+
assetsInfo: Record<string, AssetMetadata>;
|
|
58
|
+
assetsPrice: Record<string, AssetPrice>;
|
|
59
|
+
selectedCurrency: string;
|
|
60
|
+
accounts: AccountForLegacyFormat[];
|
|
61
|
+
nativeAssetIdentifiers?: Record<string, string>;
|
|
62
|
+
networkConfigurationsByChainId?: Record<string, {
|
|
63
|
+
nativeCurrency?: string;
|
|
64
|
+
}>;
|
|
65
|
+
}): TransactionPayLegacyFormat;
|
|
66
|
+
//# sourceMappingURL=formatStateForTransactionPay.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatStateForTransactionPay.d.cts","sourceRoot":"","sources":["../../src/utils/formatStateForTransactionPay.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,2CAAuC;AAChF,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EAEX,qBAAiB;AAElB,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,4DAA4D;IAC5D,iBAAiB,EAAE,MAAM,CACvB,MAAM,EACN,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAC5D,CAAC;IACF,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACzD,iDAAiD;IACjD,UAAU,EAAE,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACpD,sDAAsD;IACtD,aAAa,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IAC1D,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAaF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE;IACnD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,8BAA8B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E,GAAG,0BAA0B,CA8G7B"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { BridgeExchangeRatesFormat } from "./formatExchangeRatesForBridge.mjs";
|
|
2
|
+
import type { AssetBalance, AssetMetadata, AssetPrice } from "../types.mjs";
|
|
3
|
+
/** Account with id and address for mapping state to legacy format. */
|
|
4
|
+
export type AccountForLegacyFormat = {
|
|
5
|
+
id: string;
|
|
6
|
+
address: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Legacy Token shape expected by TokensController / transaction-pay-controller.
|
|
10
|
+
*/
|
|
11
|
+
export type LegacyToken = {
|
|
12
|
+
address: string;
|
|
13
|
+
decimals: number;
|
|
14
|
+
symbol: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Legacy state shape that transaction-pay-controller reads from
|
|
20
|
+
* TokenBalancesController, AccountTrackerController, TokensController,
|
|
21
|
+
* TokenRatesController, and CurrencyRateController.
|
|
22
|
+
*/
|
|
23
|
+
export type TransactionPayLegacyFormat = {
|
|
24
|
+
/** TokenBalancesController:getState().tokenBalances */
|
|
25
|
+
tokenBalances: Record<string, Record<string, Record<string, `0x${string}`>>>;
|
|
26
|
+
/** AccountTrackerController:getState().accountsByChainId */
|
|
27
|
+
accountsByChainId: Record<string, Record<string, {
|
|
28
|
+
balance: string;
|
|
29
|
+
stakedBalance?: string;
|
|
30
|
+
}>>;
|
|
31
|
+
/** TokensController:getState().allTokens (chainId -> key -> Token[]) */
|
|
32
|
+
allTokens: Record<string, Record<string, LegacyToken[]>>;
|
|
33
|
+
/** TokenRatesController:getState().marketData */
|
|
34
|
+
marketData: BridgeExchangeRatesFormat['marketData'];
|
|
35
|
+
/** CurrencyRateController:getState().currencyRates */
|
|
36
|
+
currencyRates: BridgeExchangeRatesFormat['currencyRates'];
|
|
37
|
+
/** CurrencyRateController:getState().currentCurrency */
|
|
38
|
+
currentCurrency: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Converts AssetsController state into the legacy format consumed by
|
|
42
|
+
* transaction-pay-controller (TokenBalancesController, AccountTrackerController,
|
|
43
|
+
* TokensController, TokenRatesController, CurrencyRateController shapes).
|
|
44
|
+
*
|
|
45
|
+
* @param params - Conversion parameters.
|
|
46
|
+
* @param params.assetsBalance - Per-account balances by asset ID.
|
|
47
|
+
* @param params.assetsInfo - Metadata by asset ID.
|
|
48
|
+
* @param params.assetsPrice - Prices by asset ID.
|
|
49
|
+
* @param params.selectedCurrency - Current currency code.
|
|
50
|
+
* @param params.accounts - List of accounts (id + address) to map state for.
|
|
51
|
+
* @param params.nativeAssetIdentifiers - Optional CAIP-2 chain ID to native asset ID.
|
|
52
|
+
* @param params.networkConfigurationsByChainId - Optional chain ID to network config (for native symbol).
|
|
53
|
+
* @returns Legacy-compatible state for transaction-pay-controller.
|
|
54
|
+
*/
|
|
55
|
+
export declare function formatStateForTransactionPay(params: {
|
|
56
|
+
assetsBalance: Record<string, Record<string, AssetBalance>>;
|
|
57
|
+
assetsInfo: Record<string, AssetMetadata>;
|
|
58
|
+
assetsPrice: Record<string, AssetPrice>;
|
|
59
|
+
selectedCurrency: string;
|
|
60
|
+
accounts: AccountForLegacyFormat[];
|
|
61
|
+
nativeAssetIdentifiers?: Record<string, string>;
|
|
62
|
+
networkConfigurationsByChainId?: Record<string, {
|
|
63
|
+
nativeCurrency?: string;
|
|
64
|
+
}>;
|
|
65
|
+
}): TransactionPayLegacyFormat;
|
|
66
|
+
//# sourceMappingURL=formatStateForTransactionPay.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatStateForTransactionPay.d.mts","sourceRoot":"","sources":["../../src/utils/formatStateForTransactionPay.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,2CAAuC;AAChF,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EAEX,qBAAiB;AAElB,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,4DAA4D;IAC5D,iBAAiB,EAAE,MAAM,CACvB,MAAM,EACN,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAC5D,CAAC;IACF,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACzD,iDAAiD;IACjD,UAAU,EAAE,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACpD,sDAAsD;IACtD,aAAa,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IAC1D,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAaF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE;IACnD,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5D,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,8BAA8B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E,GAAG,0BAA0B,CA8G7B"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { toChecksumAddress } from "@ethereumjs/util";
|
|
2
|
+
import { numberToHex } from "@metamask/utils";
|
|
3
|
+
import { parseCaipAssetType, parseCaipChainId } from "@metamask/utils";
|
|
4
|
+
import { formatExchangeRatesForBridge } from "./formatExchangeRatesForBridge.mjs";
|
|
5
|
+
function amountToHex(amount) {
|
|
6
|
+
const hexString = BigInt(amount).toString(16);
|
|
7
|
+
return `0x${hexString}`;
|
|
8
|
+
}
|
|
9
|
+
function getAmountFromBalance(balance) {
|
|
10
|
+
return typeof balance === 'object' && balance !== null && 'amount' in balance
|
|
11
|
+
? String(balance.amount)
|
|
12
|
+
: '0';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Converts AssetsController state into the legacy format consumed by
|
|
16
|
+
* transaction-pay-controller (TokenBalancesController, AccountTrackerController,
|
|
17
|
+
* TokensController, TokenRatesController, CurrencyRateController shapes).
|
|
18
|
+
*
|
|
19
|
+
* @param params - Conversion parameters.
|
|
20
|
+
* @param params.assetsBalance - Per-account balances by asset ID.
|
|
21
|
+
* @param params.assetsInfo - Metadata by asset ID.
|
|
22
|
+
* @param params.assetsPrice - Prices by asset ID.
|
|
23
|
+
* @param params.selectedCurrency - Current currency code.
|
|
24
|
+
* @param params.accounts - List of accounts (id + address) to map state for.
|
|
25
|
+
* @param params.nativeAssetIdentifiers - Optional CAIP-2 chain ID to native asset ID.
|
|
26
|
+
* @param params.networkConfigurationsByChainId - Optional chain ID to network config (for native symbol).
|
|
27
|
+
* @returns Legacy-compatible state for transaction-pay-controller.
|
|
28
|
+
*/
|
|
29
|
+
export function formatStateForTransactionPay(params) {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
const { assetsBalance, assetsInfo, assetsPrice, selectedCurrency, accounts, nativeAssetIdentifiers = {}, networkConfigurationsByChainId = {}, } = params;
|
|
32
|
+
const tokenBalances = {};
|
|
33
|
+
const accountsByChainId = {};
|
|
34
|
+
const allTokensByChain = {};
|
|
35
|
+
for (const account of accounts) {
|
|
36
|
+
const accountAddressLower = account.address.toLowerCase();
|
|
37
|
+
const accountBalances = assetsBalance[account.id];
|
|
38
|
+
if (!accountBalances) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
for (const [assetId, balance] of Object.entries(accountBalances)) {
|
|
42
|
+
try {
|
|
43
|
+
const parsed = parseCaipAssetType(assetId);
|
|
44
|
+
const chainIdParsed = parseCaipChainId(parsed.chainId);
|
|
45
|
+
if (chainIdParsed.namespace !== 'eip155') {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const chainIdHex = numberToHex(parseInt(chainIdParsed.reference, 10));
|
|
49
|
+
const amount = getAmountFromBalance(balance);
|
|
50
|
+
const balanceHex = amountToHex(amount);
|
|
51
|
+
if (parsed.assetNamespace === 'slip44') {
|
|
52
|
+
const nativeAddress = '0x0000000000000000000000000000000000000000';
|
|
53
|
+
const checksumAddress = toChecksumAddress(account.address);
|
|
54
|
+
tokenBalances[accountAddressLower] ?? (tokenBalances[accountAddressLower] = {});
|
|
55
|
+
(_a = tokenBalances[accountAddressLower])[chainIdHex] ?? (_a[chainIdHex] = {});
|
|
56
|
+
tokenBalances[accountAddressLower][chainIdHex][nativeAddress] =
|
|
57
|
+
balanceHex;
|
|
58
|
+
accountsByChainId[chainIdHex] ?? (accountsByChainId[chainIdHex] = {});
|
|
59
|
+
accountsByChainId[chainIdHex][checksumAddress] = {
|
|
60
|
+
balance: balanceHex,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
else if (parsed.assetNamespace === 'erc20') {
|
|
64
|
+
const tokenAddress = toChecksumAddress(String(parsed.assetReference));
|
|
65
|
+
tokenBalances[accountAddressLower] ?? (tokenBalances[accountAddressLower] = {});
|
|
66
|
+
(_b = tokenBalances[accountAddressLower])[chainIdHex] ?? (_b[chainIdHex] = {});
|
|
67
|
+
tokenBalances[accountAddressLower][chainIdHex][tokenAddress] =
|
|
68
|
+
balanceHex;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Skip malformed asset IDs
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const [assetId, metadata] of Object.entries(assetsInfo)) {
|
|
77
|
+
try {
|
|
78
|
+
const parsed = parseCaipAssetType(assetId);
|
|
79
|
+
const chainIdParsed = parseCaipChainId(parsed.chainId);
|
|
80
|
+
if (chainIdParsed.namespace !== 'eip155') {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const chainIdHex = numberToHex(parseInt(chainIdParsed.reference, 10));
|
|
84
|
+
const address = parsed.assetNamespace === 'slip44'
|
|
85
|
+
? '0x0000000000000000000000000000000000000000'
|
|
86
|
+
: toChecksumAddress(String(parsed.assetReference));
|
|
87
|
+
const token = {
|
|
88
|
+
address,
|
|
89
|
+
decimals: metadata.decimals,
|
|
90
|
+
symbol: metadata.symbol,
|
|
91
|
+
name: metadata.name,
|
|
92
|
+
};
|
|
93
|
+
allTokensByChain[chainIdHex] ?? (allTokensByChain[chainIdHex] = []);
|
|
94
|
+
if (!allTokensByChain[chainIdHex].some((existing) => existing.address.toLowerCase() === address.toLowerCase())) {
|
|
95
|
+
allTokensByChain[chainIdHex].push(token);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Skip malformed asset IDs
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const allTokens = {};
|
|
103
|
+
for (const [chainId, tokens] of Object.entries(allTokensByChain)) {
|
|
104
|
+
allTokens[chainId] = { '': tokens };
|
|
105
|
+
}
|
|
106
|
+
const exchangeRates = formatExchangeRatesForBridge({
|
|
107
|
+
assetsPrice,
|
|
108
|
+
selectedCurrency,
|
|
109
|
+
nativeAssetIdentifiers,
|
|
110
|
+
networkConfigurationsByChainId,
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
tokenBalances,
|
|
114
|
+
accountsByChainId,
|
|
115
|
+
allTokens,
|
|
116
|
+
marketData: exchangeRates.marketData,
|
|
117
|
+
currencyRates: exchangeRates.currencyRates,
|
|
118
|
+
currentCurrency: exchangeRates.currentCurrency,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=formatStateForTransactionPay.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatStateForTransactionPay.mjs","sourceRoot":"","sources":["../../src/utils/formatStateForTransactionPay.ts"],"names":[],"mappings":"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","sourcesContent":["import { toChecksumAddress } from '@ethereumjs/util';\nimport { numberToHex } from '@metamask/utils';\nimport { parseCaipAssetType, parseCaipChainId } from '@metamask/utils';\n\nimport { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge';\nimport type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge';\nimport type {\n AssetBalance,\n AssetMetadata,\n AssetPrice,\n Caip19AssetId,\n} from '../types';\n\n/** Account with id and address for mapping state to legacy format. */\nexport type AccountForLegacyFormat = { id: string; address: string };\n\n/**\n * Legacy Token shape expected by TokensController / transaction-pay-controller.\n */\nexport type LegacyToken = {\n address: string;\n decimals: number;\n symbol: string;\n name?: string;\n [key: string]: unknown;\n};\n\n/**\n * Legacy state shape that transaction-pay-controller reads from\n * TokenBalancesController, AccountTrackerController, TokensController,\n * TokenRatesController, and CurrencyRateController.\n */\nexport type TransactionPayLegacyFormat = {\n /** TokenBalancesController:getState().tokenBalances */\n tokenBalances: Record<string, Record<string, Record<string, `0x${string}`>>>;\n /** AccountTrackerController:getState().accountsByChainId */\n accountsByChainId: Record<\n string,\n Record<string, { balance: string; stakedBalance?: string }>\n >;\n /** TokensController:getState().allTokens (chainId -> key -> Token[]) */\n allTokens: Record<string, Record<string, LegacyToken[]>>;\n /** TokenRatesController:getState().marketData */\n marketData: BridgeExchangeRatesFormat['marketData'];\n /** CurrencyRateController:getState().currencyRates */\n currencyRates: BridgeExchangeRatesFormat['currencyRates'];\n /** CurrencyRateController:getState().currentCurrency */\n currentCurrency: string;\n};\n\nfunction amountToHex(amount: string): `0x${string}` {\n const hexString = BigInt(amount).toString(16);\n return `0x${hexString}`;\n}\n\nfunction getAmountFromBalance(balance: AssetBalance): string {\n return typeof balance === 'object' && balance !== null && 'amount' in balance\n ? String((balance as { amount: string }).amount)\n : '0';\n}\n\n/**\n * Converts AssetsController state into the legacy format consumed by\n * transaction-pay-controller (TokenBalancesController, AccountTrackerController,\n * TokensController, TokenRatesController, CurrencyRateController shapes).\n *\n * @param params - Conversion parameters.\n * @param params.assetsBalance - Per-account balances by asset ID.\n * @param params.assetsInfo - Metadata by asset ID.\n * @param params.assetsPrice - Prices by asset ID.\n * @param params.selectedCurrency - Current currency code.\n * @param params.accounts - List of accounts (id + address) to map state for.\n * @param params.nativeAssetIdentifiers - Optional CAIP-2 chain ID to native asset ID.\n * @param params.networkConfigurationsByChainId - Optional chain ID to network config (for native symbol).\n * @returns Legacy-compatible state for transaction-pay-controller.\n */\nexport function formatStateForTransactionPay(params: {\n assetsBalance: Record<string, Record<string, AssetBalance>>;\n assetsInfo: Record<string, AssetMetadata>;\n assetsPrice: Record<string, AssetPrice>;\n selectedCurrency: string;\n accounts: AccountForLegacyFormat[];\n nativeAssetIdentifiers?: Record<string, string>;\n networkConfigurationsByChainId?: Record<string, { nativeCurrency?: string }>;\n}): TransactionPayLegacyFormat {\n const {\n assetsBalance,\n assetsInfo,\n assetsPrice,\n selectedCurrency,\n accounts,\n nativeAssetIdentifiers = {},\n networkConfigurationsByChainId = {},\n } = params;\n\n const tokenBalances: TransactionPayLegacyFormat['tokenBalances'] = {};\n const accountsByChainId: TransactionPayLegacyFormat['accountsByChainId'] = {};\n const allTokensByChain: Record<string, LegacyToken[]> = {};\n\n for (const account of accounts) {\n const accountAddressLower = account.address.toLowerCase();\n const accountBalances = assetsBalance[account.id];\n if (!accountBalances) {\n continue;\n }\n\n for (const [assetId, balance] of Object.entries(accountBalances)) {\n try {\n const parsed = parseCaipAssetType(assetId as Caip19AssetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n if (chainIdParsed.namespace !== 'eip155') {\n continue;\n }\n const chainIdHex = numberToHex(parseInt(chainIdParsed.reference, 10));\n const amount = getAmountFromBalance(balance);\n const balanceHex = amountToHex(amount);\n\n if (parsed.assetNamespace === 'slip44') {\n const nativeAddress =\n '0x0000000000000000000000000000000000000000' as const;\n const checksumAddress = toChecksumAddress(account.address);\n tokenBalances[accountAddressLower] ??= {};\n tokenBalances[accountAddressLower][chainIdHex] ??= {};\n tokenBalances[accountAddressLower][chainIdHex][nativeAddress] =\n balanceHex;\n accountsByChainId[chainIdHex] ??= {};\n accountsByChainId[chainIdHex][checksumAddress] = {\n balance: balanceHex,\n };\n } else if (parsed.assetNamespace === 'erc20') {\n const tokenAddress = toChecksumAddress(String(parsed.assetReference));\n tokenBalances[accountAddressLower] ??= {};\n tokenBalances[accountAddressLower][chainIdHex] ??= {};\n tokenBalances[accountAddressLower][chainIdHex][tokenAddress] =\n balanceHex;\n }\n } catch {\n // Skip malformed asset IDs\n }\n }\n }\n\n for (const [assetId, metadata] of Object.entries(assetsInfo)) {\n try {\n const parsed = parseCaipAssetType(assetId as Caip19AssetId);\n const chainIdParsed = parseCaipChainId(parsed.chainId);\n if (chainIdParsed.namespace !== 'eip155') {\n continue;\n }\n const chainIdHex = numberToHex(parseInt(chainIdParsed.reference, 10));\n const address =\n parsed.assetNamespace === 'slip44'\n ? '0x0000000000000000000000000000000000000000'\n : toChecksumAddress(String(parsed.assetReference));\n const token: LegacyToken = {\n address,\n decimals: metadata.decimals,\n symbol: metadata.symbol,\n name: metadata.name,\n };\n allTokensByChain[chainIdHex] ??= [];\n if (\n !allTokensByChain[chainIdHex].some(\n (existing) =>\n existing.address.toLowerCase() === address.toLowerCase(),\n )\n ) {\n allTokensByChain[chainIdHex].push(token);\n }\n } catch {\n // Skip malformed asset IDs\n }\n }\n\n const allTokens: TransactionPayLegacyFormat['allTokens'] = {};\n for (const [chainId, tokens] of Object.entries(allTokensByChain)) {\n allTokens[chainId] = { '': tokens };\n }\n\n const exchangeRates = formatExchangeRatesForBridge({\n assetsPrice,\n selectedCurrency,\n nativeAssetIdentifiers,\n networkConfigurationsByChainId,\n });\n\n return {\n tokenBalances,\n accountsByChainId,\n allTokens,\n marketData: exchangeRates.marketData,\n currencyRates: exchangeRates.currencyRates,\n currentCurrency: exchangeRates.currentCurrency,\n };\n}\n"]}
|
package/dist/utils/index.cjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatExchangeRatesForBridge = exports.normalizeAssetId = void 0;
|
|
3
|
+
exports.formatStateForTransactionPay = exports.formatExchangeRatesForBridge = exports.normalizeAssetId = void 0;
|
|
4
4
|
var normalizeAssetId_1 = require("./normalizeAssetId.cjs");
|
|
5
5
|
Object.defineProperty(exports, "normalizeAssetId", { enumerable: true, get: function () { return normalizeAssetId_1.normalizeAssetId; } });
|
|
6
6
|
var formatExchangeRatesForBridge_1 = require("./formatExchangeRatesForBridge.cjs");
|
|
7
7
|
Object.defineProperty(exports, "formatExchangeRatesForBridge", { enumerable: true, get: function () { return formatExchangeRatesForBridge_1.formatExchangeRatesForBridge; } });
|
|
8
|
+
var formatStateForTransactionPay_1 = require("./formatStateForTransactionPay.cjs");
|
|
9
|
+
Object.defineProperty(exports, "formatStateForTransactionPay", { enumerable: true, get: function () { return formatStateForTransactionPay_1.formatStateForTransactionPay; } });
|
|
8
10
|
//# sourceMappingURL=index.cjs.map
|
package/dist/utils/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,mFAA8E;AAArE,4IAAA,4BAA4B,OAAA","sourcesContent":["export { normalizeAssetId } from './normalizeAssetId';\nexport { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge';\nexport type {\n
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,mFAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC,mFAA8E;AAArE,4IAAA,4BAA4B,OAAA","sourcesContent":["export { normalizeAssetId } from './normalizeAssetId';\nexport { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge';\nexport { formatStateForTransactionPay } from './formatStateForTransactionPay';\nexport type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge';\nexport type {\n AccountForLegacyFormat,\n LegacyToken,\n TransactionPayLegacyFormat,\n} from './formatStateForTransactionPay';\n"]}
|
package/dist/utils/index.d.cts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { normalizeAssetId } from "./normalizeAssetId.cjs";
|
|
2
2
|
export { formatExchangeRatesForBridge } from "./formatExchangeRatesForBridge.cjs";
|
|
3
|
-
export
|
|
3
|
+
export { formatStateForTransactionPay } from "./formatStateForTransactionPay.cjs";
|
|
4
|
+
export type { BridgeExchangeRatesFormat } from "./formatExchangeRatesForBridge.cjs";
|
|
5
|
+
export type { AccountForLegacyFormat, LegacyToken, TransactionPayLegacyFormat, } from "./formatStateForTransactionPay.cjs";
|
|
4
6
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,YAAY,EAAE,yBAAyB,EAAE,2CAAuC;AAChF,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,0BAA0B,GAC3B,2CAAuC"}
|
package/dist/utils/index.d.mts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { normalizeAssetId } from "./normalizeAssetId.mjs";
|
|
2
2
|
export { formatExchangeRatesForBridge } from "./formatExchangeRatesForBridge.mjs";
|
|
3
|
-
export
|
|
3
|
+
export { formatStateForTransactionPay } from "./formatStateForTransactionPay.mjs";
|
|
4
|
+
export type { BridgeExchangeRatesFormat } from "./formatExchangeRatesForBridge.mjs";
|
|
5
|
+
export type { AccountForLegacyFormat, LegacyToken, TransactionPayLegacyFormat, } from "./formatStateForTransactionPay.mjs";
|
|
4
6
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,YAAY,EAAE,yBAAyB,EAAE,2CAAuC;AAChF,YAAY,EACV,sBAAsB,EACtB,WAAW,EACX,0BAA0B,GAC3B,2CAAuC"}
|
package/dist/utils/index.mjs
CHANGED
package/dist/utils/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC","sourcesContent":["export { normalizeAssetId } from './normalizeAssetId';\nexport { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge';\nexport type {\n
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,+BAA2B;AACtD,OAAO,EAAE,4BAA4B,EAAE,2CAAuC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,2CAAuC","sourcesContent":["export { normalizeAssetId } from './normalizeAssetId';\nexport { formatExchangeRatesForBridge } from './formatExchangeRatesForBridge';\nexport { formatStateForTransactionPay } from './formatStateForTransactionPay';\nexport type { BridgeExchangeRatesFormat } from './formatExchangeRatesForBridge';\nexport type {\n AccountForLegacyFormat,\n LegacyToken,\n TransactionPayLegacyFormat,\n} from './formatStateForTransactionPay';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask/assets-controller",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Tracks assets balances/prices and handles token detection across all digital assets",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -51,25 +51,25 @@
|
|
|
51
51
|
"@ethereumjs/util": "^9.1.0",
|
|
52
52
|
"@ethersproject/abi": "^5.7.0",
|
|
53
53
|
"@ethersproject/providers": "^5.7.0",
|
|
54
|
-
"@metamask/account-tree-controller": "^
|
|
55
|
-
"@metamask/assets-controllers": "^
|
|
54
|
+
"@metamask/account-tree-controller": "^5.0.1",
|
|
55
|
+
"@metamask/assets-controllers": "^101.0.0",
|
|
56
56
|
"@metamask/base-controller": "^9.0.0",
|
|
57
57
|
"@metamask/client-controller": "^1.0.0",
|
|
58
58
|
"@metamask/controller-utils": "^11.19.0",
|
|
59
|
-
"@metamask/core-backend": "^6.
|
|
59
|
+
"@metamask/core-backend": "^6.1.1",
|
|
60
60
|
"@metamask/keyring-api": "^21.5.0",
|
|
61
61
|
"@metamask/keyring-controller": "^25.1.0",
|
|
62
62
|
"@metamask/keyring-internal-api": "^10.0.0",
|
|
63
63
|
"@metamask/keyring-snap-client": "^8.2.0",
|
|
64
64
|
"@metamask/messenger": "^0.3.0",
|
|
65
65
|
"@metamask/network-controller": "^30.0.0",
|
|
66
|
-
"@metamask/network-enablement-controller": "^
|
|
67
|
-
"@metamask/permission-controller": "^12.2.
|
|
66
|
+
"@metamask/network-enablement-controller": "^5.0.0",
|
|
67
|
+
"@metamask/permission-controller": "^12.2.1",
|
|
68
68
|
"@metamask/polling-controller": "^16.0.3",
|
|
69
|
-
"@metamask/preferences-controller": "^
|
|
69
|
+
"@metamask/preferences-controller": "^23.0.0",
|
|
70
70
|
"@metamask/snaps-controllers": "^17.2.0",
|
|
71
71
|
"@metamask/snaps-utils": "^11.7.0",
|
|
72
|
-
"@metamask/transaction-controller": "^
|
|
72
|
+
"@metamask/transaction-controller": "^63.0.0",
|
|
73
73
|
"@metamask/utils": "^11.9.0",
|
|
74
74
|
"async-mutex": "^0.5.0",
|
|
75
75
|
"bignumber.js": "^9.1.2",
|