@metamask-previews/multichain-network-controller 3.0.0-preview-7cfbb337 → 3.0.0-preview-6c66772
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/dist/MultichainNetworkController/MultichainNetworkController.cjs.map +1 -1
- package/dist/MultichainNetworkController/MultichainNetworkController.d.cts +4 -3
- package/dist/MultichainNetworkController/MultichainNetworkController.d.cts.map +1 -1
- package/dist/MultichainNetworkController/MultichainNetworkController.d.mts +4 -3
- package/dist/MultichainNetworkController/MultichainNetworkController.d.mts.map +1 -1
- package/dist/MultichainNetworkController/MultichainNetworkController.mjs.map +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.cjs.map +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.d.cts +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.d.cts.map +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.d.mts +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.d.mts.map +1 -1
- package/dist/MultichainNetworkService/MultichainNetworkService.mjs.map +1 -1
- package/dist/api/accounts-api.cjs.map +1 -1
- package/dist/api/accounts-api.d.cts +1 -1
- package/dist/api/accounts-api.d.cts.map +1 -1
- package/dist/api/accounts-api.d.mts +1 -1
- package/dist/api/accounts-api.d.mts.map +1 -1
- package/dist/api/accounts-api.mjs.map +1 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +1 -1
- package/dist/constants.d.cts.map +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/constants.d.mts.map +1 -1
- package/dist/constants.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +2 -1
- package/dist/utils.d.cts.map +1 -1
- package/dist/utils.d.mts +2 -1
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkController.cjs","sourceRoot":"","sources":["../../src/MultichainNetworkController/MultichainNetworkController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController } from '@metamask/base-controller';\nimport { isEvmAccountType } from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport { type CaipChainId, isCaipChainId } from '@metamask/utils';\n\nimport {\n type ActiveNetworksByAddress,\n toAllowedCaipAccountIds,\n toActiveNetworksByAddress,\n} from '../api/accounts-api';\nimport {\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n MULTICHAIN_NETWORK_CONTROLLER_METADATA,\n getDefaultMultichainNetworkControllerState,\n} from '../constants';\nimport type { AbstractMultichainNetworkService } from '../MultichainNetworkService/AbstractMultichainNetworkService';\nimport {\n MULTICHAIN_NETWORK_CONTROLLER_NAME,\n type MultichainNetworkControllerState,\n type MultichainNetworkControllerMessenger,\n type SupportedCaipChainId,\n} from '../types';\nimport {\n checkIfSupportedCaipChainId,\n getChainIdForNonEvm,\n convertEvmCaipToHexChainId,\n isEvmCaipChainId,\n} from '../utils';\n\n/**\n * The MultichainNetworkController is responsible for fetching and caching account\n * balances.\n */\nexport class MultichainNetworkController extends BaseController<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerState,\n MultichainNetworkControllerMessenger\n> {\n readonly #networkService: AbstractMultichainNetworkService;\n\n constructor({\n messenger,\n state,\n networkService,\n }: {\n messenger: MultichainNetworkControllerMessenger;\n state?: Omit<\n Partial<MultichainNetworkControllerState>,\n 'multichainNetworkConfigurationsByChainId'\n >;\n networkService: AbstractMultichainNetworkService;\n }) {\n super({\n messenger,\n name: MULTICHAIN_NETWORK_CONTROLLER_NAME,\n metadata: MULTICHAIN_NETWORK_CONTROLLER_METADATA,\n state: {\n ...getDefaultMultichainNetworkControllerState(),\n ...state,\n // We can keep the current network as a hardcoded value\n // since it is not expected to add/remove networks yet.\n multichainNetworkConfigurationsByChainId:\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n },\n });\n\n this.#networkService = networkService;\n this.#subscribeToMessageEvents();\n this.#registerMessageHandlers();\n }\n\n /**\n * Sets the active EVM network.\n *\n * @param id - The client ID of the EVM network to set active.\n */\n async #setActiveEvmNetwork(id: NetworkClientId): Promise<void> {\n const { selectedNetworkClientId } = this.messenger.call(\n 'NetworkController:getState',\n );\n\n const shouldSetEvmActive = !this.state.isEvmSelected;\n const shouldNotifyNetworkChange = id !== selectedNetworkClientId;\n\n // No changes needed if EVM is active and network is already selected\n if (!shouldSetEvmActive && !shouldNotifyNetworkChange) {\n return;\n }\n\n // Update EVM selection state if needed\n if (shouldSetEvmActive) {\n this.update((state) => {\n state.isEvmSelected = true;\n });\n }\n\n // Only notify the network controller if the selected evm network is different\n if (shouldNotifyNetworkChange) {\n await this.messenger.call('NetworkController:setActiveNetwork', id);\n }\n\n // Only publish the networkDidChange event if either the EVM network is different or we're switching between EVM and non-EVM networks\n if (shouldSetEvmActive || shouldNotifyNetworkChange) {\n this.messenger.publish(\n 'MultichainNetworkController:networkDidChange',\n id,\n );\n }\n }\n\n /**\n * Sets the active non-EVM network.\n *\n * @param id - The chain ID of the non-EVM network to set active.\n */\n #setActiveNonEvmNetwork(id: SupportedCaipChainId): void {\n if (\n id === this.state.selectedMultichainNetworkChainId &&\n !this.state.isEvmSelected\n ) {\n // Same non-EVM network is already selected, no need to update\n return;\n }\n\n this.update((state) => {\n state.selectedMultichainNetworkChainId = id;\n state.isEvmSelected = false;\n });\n\n // Notify listeners that the network changed\n this.messenger.publish('MultichainNetworkController:networkDidChange', id);\n }\n\n /**\n * Sets the active network.\n *\n * @param id - The non-EVM Caip chain ID or EVM client ID of the network to set active.\n * @returns - A promise that resolves when the network is set active.\n */\n async setActiveNetwork(\n id: SupportedCaipChainId | NetworkClientId,\n ): Promise<void> {\n if (isCaipChainId(id)) {\n const isSupportedCaipChainId = checkIfSupportedCaipChainId(id);\n if (!isSupportedCaipChainId) {\n throw new Error(`Unsupported Caip chain ID: ${String(id)}`);\n }\n return this.#setActiveNonEvmNetwork(id);\n }\n\n return await this.#setActiveEvmNetwork(id);\n }\n\n /**\n * Returns the active networks for the available EVM addresses (non-EVM networks will be supported in the future).\n * Fetches the data from the API and caches it in state.\n *\n * @returns A promise that resolves to the active networks for the available addresses\n */\n async getNetworksWithTransactionActivityByAccounts(): Promise<ActiveNetworksByAddress> {\n // TODO: We are filtering out non-EVN accounts for now\n // Support for non-EVM networks will be added in the coming weeks\n const evmAccounts = this.messenger\n .call('AccountsController:listMultichainAccounts')\n .filter((account) => isEvmAccountType(account.type));\n\n if (!evmAccounts || evmAccounts.length === 0) {\n return this.state.networksWithTransactionActivity;\n }\n\n const formattedAccounts = evmAccounts\n .map((account: InternalAccount) => toAllowedCaipAccountIds(account))\n .flat();\n\n const activeNetworks =\n await this.#networkService.fetchNetworkActivity(formattedAccounts);\n const formattedNetworks = toActiveNetworksByAddress(activeNetworks);\n\n this.update((state) => {\n state.networksWithTransactionActivity = formattedNetworks;\n });\n\n return this.state.networksWithTransactionActivity;\n }\n\n /**\n * Removes an EVM network from the list of networks.\n * This method re-directs the request to the network-controller.\n *\n * @param chainId - The chain ID of the network to remove.\n * @returns - A promise that resolves when the network is removed.\n */\n async #removeEvmNetwork(chainId: CaipChainId): Promise<void> {\n const hexChainId = convertEvmCaipToHexChainId(chainId);\n const selectedChainId = this.messenger.call(\n 'NetworkController:getSelectedChainId',\n );\n\n if (selectedChainId === hexChainId) {\n // We prevent removing the currently selected network.\n if (this.state.isEvmSelected) {\n throw new Error('Cannot remove the currently selected network');\n }\n\n // If a non-EVM network is selected, we can delete the currently EVM selected network, but\n // we automatically switch to EVM mainnet.\n const ethereumMainnetHexChainId = '0x1'; // TODO: Should probably be a constant.\n const clientId = this.messenger.call(\n 'NetworkController:findNetworkClientIdByChainId',\n ethereumMainnetHexChainId,\n );\n\n await this.messenger.call('NetworkController:setActiveNetwork', clientId);\n }\n\n this.messenger.call('NetworkController:removeNetwork', hexChainId);\n }\n\n /**\n * Removes a non-EVM network from the list of networks.\n * This method is not supported and throws an error.\n *\n * @param _chainId - The chain ID of the network to remove.\n * @throws - An error indicating that removal of non-EVM networks is not supported.\n */\n #removeNonEvmNetwork(_chainId: CaipChainId): void {\n throw new Error('Removal of non-EVM networks is not supported');\n }\n\n /**\n * Removes a network from the list of networks.\n * It only supports EVM networks.\n *\n * @param chainId - The chain ID of the network to remove.\n * @returns - A promise that resolves when the network is removed.\n */\n async removeNetwork(chainId: CaipChainId): Promise<void> {\n if (isEvmCaipChainId(chainId)) {\n return await this.#removeEvmNetwork(chainId);\n }\n\n return this.#removeNonEvmNetwork(chainId);\n }\n\n /**\n * Handles switching between EVM and non-EVM networks when an account is changed\n *\n * @param account - The account that was changed\n */\n #handleOnSelectedAccountChange(account: InternalAccount) {\n const { type: accountType, scopes } = account;\n const isEvmAccount = isEvmAccountType(accountType);\n\n // Handle switching to EVM network\n if (isEvmAccount) {\n if (this.state.isEvmSelected) {\n // No need to update if already on evm network\n return;\n }\n\n // Make EVM network active\n this.update((state) => {\n state.isEvmSelected = true;\n });\n\n return;\n }\n\n // Handle switching to non-EVM network\n if (scopes.includes(this.state.selectedMultichainNetworkChainId)) {\n // No need to update if the account's scope includes the active network\n this.update((state) => {\n state.isEvmSelected = false;\n });\n return;\n }\n\n const nonEvmChainId = getChainIdForNonEvm(scopes);\n this.update((state) => {\n state.selectedMultichainNetworkChainId = nonEvmChainId;\n state.isEvmSelected = false;\n });\n\n // No need to publish NetworkController:setActiveNetwork because EVM accounts falls back to use the last selected EVM network\n // DO NOT publish MultichainNetworkController:networkDidChange to prevent circular listener loops\n }\n\n /**\n * Subscribes to message events.\n */\n #subscribeToMessageEvents() {\n // Handle network switch when account is changed\n this.messenger.subscribe(\n 'AccountsController:selectedAccountChange',\n (account) => this.#handleOnSelectedAccountChange(account),\n );\n }\n\n /**\n * Registers message handlers.\n */\n #registerMessageHandlers() {\n this.messenger.registerActionHandler(\n 'MultichainNetworkController:setActiveNetwork',\n this.setActiveNetwork.bind(this),\n );\n this.messenger.registerActionHandler(\n 'MultichainNetworkController:getNetworksWithTransactionActivityByAccounts',\n this.getNetworksWithTransactionActivityByAccounts.bind(this),\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MultichainNetworkController.cjs","sourceRoot":"","sources":["../../src/MultichainNetworkController/MultichainNetworkController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController } from '@metamask/base-controller';\nimport { isEvmAccountType } from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport { isCaipChainId } from '@metamask/utils';\nimport type { CaipChainId } from '@metamask/utils';\n\nimport {\n toAllowedCaipAccountIds,\n toActiveNetworksByAddress,\n} from '../api/accounts-api';\nimport type { ActiveNetworksByAddress } from '../api/accounts-api';\nimport {\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n MULTICHAIN_NETWORK_CONTROLLER_METADATA,\n getDefaultMultichainNetworkControllerState,\n} from '../constants';\nimport type { AbstractMultichainNetworkService } from '../MultichainNetworkService/AbstractMultichainNetworkService';\nimport { MULTICHAIN_NETWORK_CONTROLLER_NAME } from '../types';\nimport type {\n MultichainNetworkControllerState,\n MultichainNetworkControllerMessenger,\n SupportedCaipChainId,\n} from '../types';\nimport {\n checkIfSupportedCaipChainId,\n getChainIdForNonEvm,\n convertEvmCaipToHexChainId,\n isEvmCaipChainId,\n} from '../utils';\n\n/**\n * The MultichainNetworkController is responsible for fetching and caching account\n * balances.\n */\nexport class MultichainNetworkController extends BaseController<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerState,\n MultichainNetworkControllerMessenger\n> {\n readonly #networkService: AbstractMultichainNetworkService;\n\n constructor({\n messenger,\n state,\n networkService,\n }: {\n messenger: MultichainNetworkControllerMessenger;\n state?: Omit<\n Partial<MultichainNetworkControllerState>,\n 'multichainNetworkConfigurationsByChainId'\n >;\n networkService: AbstractMultichainNetworkService;\n }) {\n super({\n messenger,\n name: MULTICHAIN_NETWORK_CONTROLLER_NAME,\n metadata: MULTICHAIN_NETWORK_CONTROLLER_METADATA,\n state: {\n ...getDefaultMultichainNetworkControllerState(),\n ...state,\n // We can keep the current network as a hardcoded value\n // since it is not expected to add/remove networks yet.\n multichainNetworkConfigurationsByChainId:\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n },\n });\n\n this.#networkService = networkService;\n this.#subscribeToMessageEvents();\n this.#registerMessageHandlers();\n }\n\n /**\n * Sets the active EVM network.\n *\n * @param id - The client ID of the EVM network to set active.\n */\n async #setActiveEvmNetwork(id: NetworkClientId): Promise<void> {\n const { selectedNetworkClientId } = this.messenger.call(\n 'NetworkController:getState',\n );\n\n const shouldSetEvmActive = !this.state.isEvmSelected;\n const shouldNotifyNetworkChange = id !== selectedNetworkClientId;\n\n // No changes needed if EVM is active and network is already selected\n if (!shouldSetEvmActive && !shouldNotifyNetworkChange) {\n return;\n }\n\n // Update EVM selection state if needed\n if (shouldSetEvmActive) {\n this.update((state) => {\n state.isEvmSelected = true;\n });\n }\n\n // Only notify the network controller if the selected evm network is different\n if (shouldNotifyNetworkChange) {\n await this.messenger.call('NetworkController:setActiveNetwork', id);\n }\n\n // Only publish the networkDidChange event if either the EVM network is different or we're switching between EVM and non-EVM networks\n if (shouldSetEvmActive || shouldNotifyNetworkChange) {\n this.messenger.publish(\n 'MultichainNetworkController:networkDidChange',\n id,\n );\n }\n }\n\n /**\n * Sets the active non-EVM network.\n *\n * @param id - The chain ID of the non-EVM network to set active.\n */\n #setActiveNonEvmNetwork(id: SupportedCaipChainId): void {\n if (\n id === this.state.selectedMultichainNetworkChainId &&\n !this.state.isEvmSelected\n ) {\n // Same non-EVM network is already selected, no need to update\n return;\n }\n\n this.update((state) => {\n state.selectedMultichainNetworkChainId = id;\n state.isEvmSelected = false;\n });\n\n // Notify listeners that the network changed\n this.messenger.publish('MultichainNetworkController:networkDidChange', id);\n }\n\n /**\n * Sets the active network.\n *\n * @param id - The non-EVM Caip chain ID or EVM client ID of the network to set active.\n * @returns - A promise that resolves when the network is set active.\n */\n async setActiveNetwork(\n id: SupportedCaipChainId | NetworkClientId,\n ): Promise<void> {\n if (isCaipChainId(id)) {\n const isSupportedCaipChainId = checkIfSupportedCaipChainId(id);\n if (!isSupportedCaipChainId) {\n throw new Error(`Unsupported Caip chain ID: ${String(id)}`);\n }\n return this.#setActiveNonEvmNetwork(id);\n }\n\n return await this.#setActiveEvmNetwork(id);\n }\n\n /**\n * Returns the active networks for the available EVM addresses (non-EVM networks will be supported in the future).\n * Fetches the data from the API and caches it in state.\n *\n * @returns A promise that resolves to the active networks for the available addresses\n */\n async getNetworksWithTransactionActivityByAccounts(): Promise<ActiveNetworksByAddress> {\n // TODO: We are filtering out non-EVN accounts for now\n // Support for non-EVM networks will be added in the coming weeks\n const evmAccounts = this.messenger\n .call('AccountsController:listMultichainAccounts')\n .filter((account) => isEvmAccountType(account.type));\n\n if (!evmAccounts || evmAccounts.length === 0) {\n return this.state.networksWithTransactionActivity;\n }\n\n const formattedAccounts = evmAccounts\n .map((account: InternalAccount) => toAllowedCaipAccountIds(account))\n .flat();\n\n const activeNetworks =\n await this.#networkService.fetchNetworkActivity(formattedAccounts);\n const formattedNetworks = toActiveNetworksByAddress(activeNetworks);\n\n this.update((state) => {\n state.networksWithTransactionActivity = formattedNetworks;\n });\n\n return this.state.networksWithTransactionActivity;\n }\n\n /**\n * Removes an EVM network from the list of networks.\n * This method re-directs the request to the network-controller.\n *\n * @param chainId - The chain ID of the network to remove.\n * @returns - A promise that resolves when the network is removed.\n */\n async #removeEvmNetwork(chainId: CaipChainId): Promise<void> {\n const hexChainId = convertEvmCaipToHexChainId(chainId);\n const selectedChainId = this.messenger.call(\n 'NetworkController:getSelectedChainId',\n );\n\n if (selectedChainId === hexChainId) {\n // We prevent removing the currently selected network.\n if (this.state.isEvmSelected) {\n throw new Error('Cannot remove the currently selected network');\n }\n\n // If a non-EVM network is selected, we can delete the currently EVM selected network, but\n // we automatically switch to EVM mainnet.\n const ethereumMainnetHexChainId = '0x1'; // TODO: Should probably be a constant.\n const clientId = this.messenger.call(\n 'NetworkController:findNetworkClientIdByChainId',\n ethereumMainnetHexChainId,\n );\n\n await this.messenger.call('NetworkController:setActiveNetwork', clientId);\n }\n\n this.messenger.call('NetworkController:removeNetwork', hexChainId);\n }\n\n /**\n * Removes a non-EVM network from the list of networks.\n * This method is not supported and throws an error.\n *\n * @param _chainId - The chain ID of the network to remove.\n * @throws - An error indicating that removal of non-EVM networks is not supported.\n */\n #removeNonEvmNetwork(_chainId: CaipChainId): void {\n throw new Error('Removal of non-EVM networks is not supported');\n }\n\n /**\n * Removes a network from the list of networks.\n * It only supports EVM networks.\n *\n * @param chainId - The chain ID of the network to remove.\n * @returns - A promise that resolves when the network is removed.\n */\n async removeNetwork(chainId: CaipChainId): Promise<void> {\n if (isEvmCaipChainId(chainId)) {\n return await this.#removeEvmNetwork(chainId);\n }\n\n return this.#removeNonEvmNetwork(chainId);\n }\n\n /**\n * Handles switching between EVM and non-EVM networks when an account is changed\n *\n * @param account - The account that was changed\n */\n #handleOnSelectedAccountChange(account: InternalAccount) {\n const { type: accountType, scopes } = account;\n const isEvmAccount = isEvmAccountType(accountType);\n\n // Handle switching to EVM network\n if (isEvmAccount) {\n if (this.state.isEvmSelected) {\n // No need to update if already on evm network\n return;\n }\n\n // Make EVM network active\n this.update((state) => {\n state.isEvmSelected = true;\n });\n\n return;\n }\n\n // Handle switching to non-EVM network\n if (scopes.includes(this.state.selectedMultichainNetworkChainId)) {\n // No need to update if the account's scope includes the active network\n this.update((state) => {\n state.isEvmSelected = false;\n });\n return;\n }\n\n const nonEvmChainId = getChainIdForNonEvm(scopes);\n this.update((state) => {\n state.selectedMultichainNetworkChainId = nonEvmChainId;\n state.isEvmSelected = false;\n });\n\n // No need to publish NetworkController:setActiveNetwork because EVM accounts falls back to use the last selected EVM network\n // DO NOT publish MultichainNetworkController:networkDidChange to prevent circular listener loops\n }\n\n /**\n * Subscribes to message events.\n */\n #subscribeToMessageEvents() {\n // Handle network switch when account is changed\n this.messenger.subscribe(\n 'AccountsController:selectedAccountChange',\n (account) => this.#handleOnSelectedAccountChange(account),\n );\n }\n\n /**\n * Registers message handlers.\n */\n #registerMessageHandlers() {\n this.messenger.registerActionHandler(\n 'MultichainNetworkController:setActiveNetwork',\n this.setActiveNetwork.bind(this),\n );\n this.messenger.registerActionHandler(\n 'MultichainNetworkController:getNetworksWithTransactionActivityByAccounts',\n this.getNetworksWithTransactionActivityByAccounts.bind(this),\n );\n }\n}\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { BaseController } from "@metamask/base-controller";
|
|
2
2
|
import type { NetworkClientId } from "@metamask/network-controller";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import type { CaipChainId } from "@metamask/utils";
|
|
4
|
+
import type { ActiveNetworksByAddress } from "../api/accounts-api.cjs";
|
|
5
5
|
import type { AbstractMultichainNetworkService } from "../MultichainNetworkService/AbstractMultichainNetworkService.cjs";
|
|
6
|
-
import { MULTICHAIN_NETWORK_CONTROLLER_NAME
|
|
6
|
+
import { MULTICHAIN_NETWORK_CONTROLLER_NAME } from "../types.cjs";
|
|
7
|
+
import type { MultichainNetworkControllerState, MultichainNetworkControllerMessenger, SupportedCaipChainId } from "../types.cjs";
|
|
7
8
|
/**
|
|
8
9
|
* The MultichainNetworkController is responsible for fetching and caching account
|
|
9
10
|
* balances.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkController.d.cts","sourceRoot":"","sources":["../../src/MultichainNetworkController/MultichainNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAG3D,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;
|
|
1
|
+
{"version":3,"file":"MultichainNetworkController.d.cts","sourceRoot":"","sources":["../../src/MultichainNetworkController/MultichainNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAG3D,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB;AAMnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,gCAA4B;AAMnE,OAAO,KAAK,EAAE,gCAAgC,EAAE,yEAAqE;AACrH,OAAO,EAAE,kCAAkC,EAAE,qBAAiB;AAC9D,OAAO,KAAK,EACV,gCAAgC,EAChC,oCAAoC,EACpC,oBAAoB,EACrB,qBAAiB;AAQlB;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,cAAc,CAC7D,OAAO,kCAAkC,EACzC,gCAAgC,EAChC,oCAAoC,CACrC;;gBAGa,EACV,SAAS,EACT,KAAK,EACL,cAAc,GACf,EAAE;QACD,SAAS,EAAE,oCAAoC,CAAC;QAChD,KAAK,CAAC,EAAE,IAAI,CACV,OAAO,CAAC,gCAAgC,CAAC,EACzC,0CAA0C,CAC3C,CAAC;QACF,cAAc,EAAE,gCAAgC,CAAC;KAClD;IAkFD;;;;;OAKG;IACG,gBAAgB,CACpB,EAAE,EAAE,oBAAoB,GAAG,eAAe,GACzC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;OAKG;IACG,4CAA4C,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAsEtF;;;;;;OAMG;IACG,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA2EzD"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { BaseController } from "@metamask/base-controller";
|
|
2
2
|
import type { NetworkClientId } from "@metamask/network-controller";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import type { CaipChainId } from "@metamask/utils";
|
|
4
|
+
import type { ActiveNetworksByAddress } from "../api/accounts-api.mjs";
|
|
5
5
|
import type { AbstractMultichainNetworkService } from "../MultichainNetworkService/AbstractMultichainNetworkService.mjs";
|
|
6
|
-
import { MULTICHAIN_NETWORK_CONTROLLER_NAME
|
|
6
|
+
import { MULTICHAIN_NETWORK_CONTROLLER_NAME } from "../types.mjs";
|
|
7
|
+
import type { MultichainNetworkControllerState, MultichainNetworkControllerMessenger, SupportedCaipChainId } from "../types.mjs";
|
|
7
8
|
/**
|
|
8
9
|
* The MultichainNetworkController is responsible for fetching and caching account
|
|
9
10
|
* balances.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkController.d.mts","sourceRoot":"","sources":["../../src/MultichainNetworkController/MultichainNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAG3D,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;
|
|
1
|
+
{"version":3,"file":"MultichainNetworkController.d.mts","sourceRoot":"","sources":["../../src/MultichainNetworkController/MultichainNetworkController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAG3D,OAAO,KAAK,EAAE,eAAe,EAAE,qCAAqC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB;AAMnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,gCAA4B;AAMnE,OAAO,KAAK,EAAE,gCAAgC,EAAE,yEAAqE;AACrH,OAAO,EAAE,kCAAkC,EAAE,qBAAiB;AAC9D,OAAO,KAAK,EACV,gCAAgC,EAChC,oCAAoC,EACpC,oBAAoB,EACrB,qBAAiB;AAQlB;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,cAAc,CAC7D,OAAO,kCAAkC,EACzC,gCAAgC,EAChC,oCAAoC,CACrC;;gBAGa,EACV,SAAS,EACT,KAAK,EACL,cAAc,GACf,EAAE;QACD,SAAS,EAAE,oCAAoC,CAAC;QAChD,KAAK,CAAC,EAAE,IAAI,CACV,OAAO,CAAC,gCAAgC,CAAC,EACzC,0CAA0C,CAC3C,CAAC;QACF,cAAc,EAAE,gCAAgC,CAAC;KAClD;IAkFD;;;;;OAKG;IACG,gBAAgB,CACpB,EAAE,EAAE,oBAAoB,GAAG,eAAe,GACzC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;OAKG;IACG,4CAA4C,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAsEtF;;;;;;OAMG;IACG,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA2EzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkController.mjs","sourceRoot":"","sources":["../../src/MultichainNetworkController/MultichainNetworkController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController } from '@metamask/base-controller';\nimport { isEvmAccountType } from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport { type CaipChainId, isCaipChainId } from '@metamask/utils';\n\nimport {\n type ActiveNetworksByAddress,\n toAllowedCaipAccountIds,\n toActiveNetworksByAddress,\n} from '../api/accounts-api';\nimport {\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n MULTICHAIN_NETWORK_CONTROLLER_METADATA,\n getDefaultMultichainNetworkControllerState,\n} from '../constants';\nimport type { AbstractMultichainNetworkService } from '../MultichainNetworkService/AbstractMultichainNetworkService';\nimport {\n MULTICHAIN_NETWORK_CONTROLLER_NAME,\n type MultichainNetworkControllerState,\n type MultichainNetworkControllerMessenger,\n type SupportedCaipChainId,\n} from '../types';\nimport {\n checkIfSupportedCaipChainId,\n getChainIdForNonEvm,\n convertEvmCaipToHexChainId,\n isEvmCaipChainId,\n} from '../utils';\n\n/**\n * The MultichainNetworkController is responsible for fetching and caching account\n * balances.\n */\nexport class MultichainNetworkController extends BaseController<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerState,\n MultichainNetworkControllerMessenger\n> {\n readonly #networkService: AbstractMultichainNetworkService;\n\n constructor({\n messenger,\n state,\n networkService,\n }: {\n messenger: MultichainNetworkControllerMessenger;\n state?: Omit<\n Partial<MultichainNetworkControllerState>,\n 'multichainNetworkConfigurationsByChainId'\n >;\n networkService: AbstractMultichainNetworkService;\n }) {\n super({\n messenger,\n name: MULTICHAIN_NETWORK_CONTROLLER_NAME,\n metadata: MULTICHAIN_NETWORK_CONTROLLER_METADATA,\n state: {\n ...getDefaultMultichainNetworkControllerState(),\n ...state,\n // We can keep the current network as a hardcoded value\n // since it is not expected to add/remove networks yet.\n multichainNetworkConfigurationsByChainId:\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n },\n });\n\n this.#networkService = networkService;\n this.#subscribeToMessageEvents();\n this.#registerMessageHandlers();\n }\n\n /**\n * Sets the active EVM network.\n *\n * @param id - The client ID of the EVM network to set active.\n */\n async #setActiveEvmNetwork(id: NetworkClientId): Promise<void> {\n const { selectedNetworkClientId } = this.messenger.call(\n 'NetworkController:getState',\n );\n\n const shouldSetEvmActive = !this.state.isEvmSelected;\n const shouldNotifyNetworkChange = id !== selectedNetworkClientId;\n\n // No changes needed if EVM is active and network is already selected\n if (!shouldSetEvmActive && !shouldNotifyNetworkChange) {\n return;\n }\n\n // Update EVM selection state if needed\n if (shouldSetEvmActive) {\n this.update((state) => {\n state.isEvmSelected = true;\n });\n }\n\n // Only notify the network controller if the selected evm network is different\n if (shouldNotifyNetworkChange) {\n await this.messenger.call('NetworkController:setActiveNetwork', id);\n }\n\n // Only publish the networkDidChange event if either the EVM network is different or we're switching between EVM and non-EVM networks\n if (shouldSetEvmActive || shouldNotifyNetworkChange) {\n this.messenger.publish(\n 'MultichainNetworkController:networkDidChange',\n id,\n );\n }\n }\n\n /**\n * Sets the active non-EVM network.\n *\n * @param id - The chain ID of the non-EVM network to set active.\n */\n #setActiveNonEvmNetwork(id: SupportedCaipChainId): void {\n if (\n id === this.state.selectedMultichainNetworkChainId &&\n !this.state.isEvmSelected\n ) {\n // Same non-EVM network is already selected, no need to update\n return;\n }\n\n this.update((state) => {\n state.selectedMultichainNetworkChainId = id;\n state.isEvmSelected = false;\n });\n\n // Notify listeners that the network changed\n this.messenger.publish('MultichainNetworkController:networkDidChange', id);\n }\n\n /**\n * Sets the active network.\n *\n * @param id - The non-EVM Caip chain ID or EVM client ID of the network to set active.\n * @returns - A promise that resolves when the network is set active.\n */\n async setActiveNetwork(\n id: SupportedCaipChainId | NetworkClientId,\n ): Promise<void> {\n if (isCaipChainId(id)) {\n const isSupportedCaipChainId = checkIfSupportedCaipChainId(id);\n if (!isSupportedCaipChainId) {\n throw new Error(`Unsupported Caip chain ID: ${String(id)}`);\n }\n return this.#setActiveNonEvmNetwork(id);\n }\n\n return await this.#setActiveEvmNetwork(id);\n }\n\n /**\n * Returns the active networks for the available EVM addresses (non-EVM networks will be supported in the future).\n * Fetches the data from the API and caches it in state.\n *\n * @returns A promise that resolves to the active networks for the available addresses\n */\n async getNetworksWithTransactionActivityByAccounts(): Promise<ActiveNetworksByAddress> {\n // TODO: We are filtering out non-EVN accounts for now\n // Support for non-EVM networks will be added in the coming weeks\n const evmAccounts = this.messenger\n .call('AccountsController:listMultichainAccounts')\n .filter((account) => isEvmAccountType(account.type));\n\n if (!evmAccounts || evmAccounts.length === 0) {\n return this.state.networksWithTransactionActivity;\n }\n\n const formattedAccounts = evmAccounts\n .map((account: InternalAccount) => toAllowedCaipAccountIds(account))\n .flat();\n\n const activeNetworks =\n await this.#networkService.fetchNetworkActivity(formattedAccounts);\n const formattedNetworks = toActiveNetworksByAddress(activeNetworks);\n\n this.update((state) => {\n state.networksWithTransactionActivity = formattedNetworks;\n });\n\n return this.state.networksWithTransactionActivity;\n }\n\n /**\n * Removes an EVM network from the list of networks.\n * This method re-directs the request to the network-controller.\n *\n * @param chainId - The chain ID of the network to remove.\n * @returns - A promise that resolves when the network is removed.\n */\n async #removeEvmNetwork(chainId: CaipChainId): Promise<void> {\n const hexChainId = convertEvmCaipToHexChainId(chainId);\n const selectedChainId = this.messenger.call(\n 'NetworkController:getSelectedChainId',\n );\n\n if (selectedChainId === hexChainId) {\n // We prevent removing the currently selected network.\n if (this.state.isEvmSelected) {\n throw new Error('Cannot remove the currently selected network');\n }\n\n // If a non-EVM network is selected, we can delete the currently EVM selected network, but\n // we automatically switch to EVM mainnet.\n const ethereumMainnetHexChainId = '0x1'; // TODO: Should probably be a constant.\n const clientId = this.messenger.call(\n 'NetworkController:findNetworkClientIdByChainId',\n ethereumMainnetHexChainId,\n );\n\n await this.messenger.call('NetworkController:setActiveNetwork', clientId);\n }\n\n this.messenger.call('NetworkController:removeNetwork', hexChainId);\n }\n\n /**\n * Removes a non-EVM network from the list of networks.\n * This method is not supported and throws an error.\n *\n * @param _chainId - The chain ID of the network to remove.\n * @throws - An error indicating that removal of non-EVM networks is not supported.\n */\n #removeNonEvmNetwork(_chainId: CaipChainId): void {\n throw new Error('Removal of non-EVM networks is not supported');\n }\n\n /**\n * Removes a network from the list of networks.\n * It only supports EVM networks.\n *\n * @param chainId - The chain ID of the network to remove.\n * @returns - A promise that resolves when the network is removed.\n */\n async removeNetwork(chainId: CaipChainId): Promise<void> {\n if (isEvmCaipChainId(chainId)) {\n return await this.#removeEvmNetwork(chainId);\n }\n\n return this.#removeNonEvmNetwork(chainId);\n }\n\n /**\n * Handles switching between EVM and non-EVM networks when an account is changed\n *\n * @param account - The account that was changed\n */\n #handleOnSelectedAccountChange(account: InternalAccount) {\n const { type: accountType, scopes } = account;\n const isEvmAccount = isEvmAccountType(accountType);\n\n // Handle switching to EVM network\n if (isEvmAccount) {\n if (this.state.isEvmSelected) {\n // No need to update if already on evm network\n return;\n }\n\n // Make EVM network active\n this.update((state) => {\n state.isEvmSelected = true;\n });\n\n return;\n }\n\n // Handle switching to non-EVM network\n if (scopes.includes(this.state.selectedMultichainNetworkChainId)) {\n // No need to update if the account's scope includes the active network\n this.update((state) => {\n state.isEvmSelected = false;\n });\n return;\n }\n\n const nonEvmChainId = getChainIdForNonEvm(scopes);\n this.update((state) => {\n state.selectedMultichainNetworkChainId = nonEvmChainId;\n state.isEvmSelected = false;\n });\n\n // No need to publish NetworkController:setActiveNetwork because EVM accounts falls back to use the last selected EVM network\n // DO NOT publish MultichainNetworkController:networkDidChange to prevent circular listener loops\n }\n\n /**\n * Subscribes to message events.\n */\n #subscribeToMessageEvents() {\n // Handle network switch when account is changed\n this.messenger.subscribe(\n 'AccountsController:selectedAccountChange',\n (account) => this.#handleOnSelectedAccountChange(account),\n );\n }\n\n /**\n * Registers message handlers.\n */\n #registerMessageHandlers() {\n this.messenger.registerActionHandler(\n 'MultichainNetworkController:setActiveNetwork',\n this.setActiveNetwork.bind(this),\n );\n this.messenger.registerActionHandler(\n 'MultichainNetworkController:getNetworksWithTransactionActivityByAccounts',\n this.getNetworksWithTransactionActivityByAccounts.bind(this),\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MultichainNetworkController.mjs","sourceRoot":"","sources":["../../src/MultichainNetworkController/MultichainNetworkController.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseController } from '@metamask/base-controller';\nimport { isEvmAccountType } from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { NetworkClientId } from '@metamask/network-controller';\nimport { isCaipChainId } from '@metamask/utils';\nimport type { CaipChainId } from '@metamask/utils';\n\nimport {\n toAllowedCaipAccountIds,\n toActiveNetworksByAddress,\n} from '../api/accounts-api';\nimport type { ActiveNetworksByAddress } from '../api/accounts-api';\nimport {\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n MULTICHAIN_NETWORK_CONTROLLER_METADATA,\n getDefaultMultichainNetworkControllerState,\n} from '../constants';\nimport type { AbstractMultichainNetworkService } from '../MultichainNetworkService/AbstractMultichainNetworkService';\nimport { MULTICHAIN_NETWORK_CONTROLLER_NAME } from '../types';\nimport type {\n MultichainNetworkControllerState,\n MultichainNetworkControllerMessenger,\n SupportedCaipChainId,\n} from '../types';\nimport {\n checkIfSupportedCaipChainId,\n getChainIdForNonEvm,\n convertEvmCaipToHexChainId,\n isEvmCaipChainId,\n} from '../utils';\n\n/**\n * The MultichainNetworkController is responsible for fetching and caching account\n * balances.\n */\nexport class MultichainNetworkController extends BaseController<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerState,\n MultichainNetworkControllerMessenger\n> {\n readonly #networkService: AbstractMultichainNetworkService;\n\n constructor({\n messenger,\n state,\n networkService,\n }: {\n messenger: MultichainNetworkControllerMessenger;\n state?: Omit<\n Partial<MultichainNetworkControllerState>,\n 'multichainNetworkConfigurationsByChainId'\n >;\n networkService: AbstractMultichainNetworkService;\n }) {\n super({\n messenger,\n name: MULTICHAIN_NETWORK_CONTROLLER_NAME,\n metadata: MULTICHAIN_NETWORK_CONTROLLER_METADATA,\n state: {\n ...getDefaultMultichainNetworkControllerState(),\n ...state,\n // We can keep the current network as a hardcoded value\n // since it is not expected to add/remove networks yet.\n multichainNetworkConfigurationsByChainId:\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n },\n });\n\n this.#networkService = networkService;\n this.#subscribeToMessageEvents();\n this.#registerMessageHandlers();\n }\n\n /**\n * Sets the active EVM network.\n *\n * @param id - The client ID of the EVM network to set active.\n */\n async #setActiveEvmNetwork(id: NetworkClientId): Promise<void> {\n const { selectedNetworkClientId } = this.messenger.call(\n 'NetworkController:getState',\n );\n\n const shouldSetEvmActive = !this.state.isEvmSelected;\n const shouldNotifyNetworkChange = id !== selectedNetworkClientId;\n\n // No changes needed if EVM is active and network is already selected\n if (!shouldSetEvmActive && !shouldNotifyNetworkChange) {\n return;\n }\n\n // Update EVM selection state if needed\n if (shouldSetEvmActive) {\n this.update((state) => {\n state.isEvmSelected = true;\n });\n }\n\n // Only notify the network controller if the selected evm network is different\n if (shouldNotifyNetworkChange) {\n await this.messenger.call('NetworkController:setActiveNetwork', id);\n }\n\n // Only publish the networkDidChange event if either the EVM network is different or we're switching between EVM and non-EVM networks\n if (shouldSetEvmActive || shouldNotifyNetworkChange) {\n this.messenger.publish(\n 'MultichainNetworkController:networkDidChange',\n id,\n );\n }\n }\n\n /**\n * Sets the active non-EVM network.\n *\n * @param id - The chain ID of the non-EVM network to set active.\n */\n #setActiveNonEvmNetwork(id: SupportedCaipChainId): void {\n if (\n id === this.state.selectedMultichainNetworkChainId &&\n !this.state.isEvmSelected\n ) {\n // Same non-EVM network is already selected, no need to update\n return;\n }\n\n this.update((state) => {\n state.selectedMultichainNetworkChainId = id;\n state.isEvmSelected = false;\n });\n\n // Notify listeners that the network changed\n this.messenger.publish('MultichainNetworkController:networkDidChange', id);\n }\n\n /**\n * Sets the active network.\n *\n * @param id - The non-EVM Caip chain ID or EVM client ID of the network to set active.\n * @returns - A promise that resolves when the network is set active.\n */\n async setActiveNetwork(\n id: SupportedCaipChainId | NetworkClientId,\n ): Promise<void> {\n if (isCaipChainId(id)) {\n const isSupportedCaipChainId = checkIfSupportedCaipChainId(id);\n if (!isSupportedCaipChainId) {\n throw new Error(`Unsupported Caip chain ID: ${String(id)}`);\n }\n return this.#setActiveNonEvmNetwork(id);\n }\n\n return await this.#setActiveEvmNetwork(id);\n }\n\n /**\n * Returns the active networks for the available EVM addresses (non-EVM networks will be supported in the future).\n * Fetches the data from the API and caches it in state.\n *\n * @returns A promise that resolves to the active networks for the available addresses\n */\n async getNetworksWithTransactionActivityByAccounts(): Promise<ActiveNetworksByAddress> {\n // TODO: We are filtering out non-EVN accounts for now\n // Support for non-EVM networks will be added in the coming weeks\n const evmAccounts = this.messenger\n .call('AccountsController:listMultichainAccounts')\n .filter((account) => isEvmAccountType(account.type));\n\n if (!evmAccounts || evmAccounts.length === 0) {\n return this.state.networksWithTransactionActivity;\n }\n\n const formattedAccounts = evmAccounts\n .map((account: InternalAccount) => toAllowedCaipAccountIds(account))\n .flat();\n\n const activeNetworks =\n await this.#networkService.fetchNetworkActivity(formattedAccounts);\n const formattedNetworks = toActiveNetworksByAddress(activeNetworks);\n\n this.update((state) => {\n state.networksWithTransactionActivity = formattedNetworks;\n });\n\n return this.state.networksWithTransactionActivity;\n }\n\n /**\n * Removes an EVM network from the list of networks.\n * This method re-directs the request to the network-controller.\n *\n * @param chainId - The chain ID of the network to remove.\n * @returns - A promise that resolves when the network is removed.\n */\n async #removeEvmNetwork(chainId: CaipChainId): Promise<void> {\n const hexChainId = convertEvmCaipToHexChainId(chainId);\n const selectedChainId = this.messenger.call(\n 'NetworkController:getSelectedChainId',\n );\n\n if (selectedChainId === hexChainId) {\n // We prevent removing the currently selected network.\n if (this.state.isEvmSelected) {\n throw new Error('Cannot remove the currently selected network');\n }\n\n // If a non-EVM network is selected, we can delete the currently EVM selected network, but\n // we automatically switch to EVM mainnet.\n const ethereumMainnetHexChainId = '0x1'; // TODO: Should probably be a constant.\n const clientId = this.messenger.call(\n 'NetworkController:findNetworkClientIdByChainId',\n ethereumMainnetHexChainId,\n );\n\n await this.messenger.call('NetworkController:setActiveNetwork', clientId);\n }\n\n this.messenger.call('NetworkController:removeNetwork', hexChainId);\n }\n\n /**\n * Removes a non-EVM network from the list of networks.\n * This method is not supported and throws an error.\n *\n * @param _chainId - The chain ID of the network to remove.\n * @throws - An error indicating that removal of non-EVM networks is not supported.\n */\n #removeNonEvmNetwork(_chainId: CaipChainId): void {\n throw new Error('Removal of non-EVM networks is not supported');\n }\n\n /**\n * Removes a network from the list of networks.\n * It only supports EVM networks.\n *\n * @param chainId - The chain ID of the network to remove.\n * @returns - A promise that resolves when the network is removed.\n */\n async removeNetwork(chainId: CaipChainId): Promise<void> {\n if (isEvmCaipChainId(chainId)) {\n return await this.#removeEvmNetwork(chainId);\n }\n\n return this.#removeNonEvmNetwork(chainId);\n }\n\n /**\n * Handles switching between EVM and non-EVM networks when an account is changed\n *\n * @param account - The account that was changed\n */\n #handleOnSelectedAccountChange(account: InternalAccount) {\n const { type: accountType, scopes } = account;\n const isEvmAccount = isEvmAccountType(accountType);\n\n // Handle switching to EVM network\n if (isEvmAccount) {\n if (this.state.isEvmSelected) {\n // No need to update if already on evm network\n return;\n }\n\n // Make EVM network active\n this.update((state) => {\n state.isEvmSelected = true;\n });\n\n return;\n }\n\n // Handle switching to non-EVM network\n if (scopes.includes(this.state.selectedMultichainNetworkChainId)) {\n // No need to update if the account's scope includes the active network\n this.update((state) => {\n state.isEvmSelected = false;\n });\n return;\n }\n\n const nonEvmChainId = getChainIdForNonEvm(scopes);\n this.update((state) => {\n state.selectedMultichainNetworkChainId = nonEvmChainId;\n state.isEvmSelected = false;\n });\n\n // No need to publish NetworkController:setActiveNetwork because EVM accounts falls back to use the last selected EVM network\n // DO NOT publish MultichainNetworkController:networkDidChange to prevent circular listener loops\n }\n\n /**\n * Subscribes to message events.\n */\n #subscribeToMessageEvents() {\n // Handle network switch when account is changed\n this.messenger.subscribe(\n 'AccountsController:selectedAccountChange',\n (account) => this.#handleOnSelectedAccountChange(account),\n );\n }\n\n /**\n * Registers message handlers.\n */\n #registerMessageHandlers() {\n this.messenger.registerActionHandler(\n 'MultichainNetworkController:setActiveNetwork',\n this.setActiveNetwork.bind(this),\n );\n this.messenger.registerActionHandler(\n 'MultichainNetworkController:getNetworksWithTransactionActivityByAccounts',\n this.getNetworksWithTransactionActivityByAccounts.bind(this),\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkService.cjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAA+C;AAE/C,mCAA+B;AAE/B,
|
|
1
|
+
{"version":3,"file":"MultichainNetworkService.cjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uDAA+C;AAE/C,mCAA+B;AAE/B,0DAK6B;AAG7B;;GAEG;AACH,MAAa,wBAAwB;IAKnC,YAAY,EACV,KAAK,EAAE,aAAa,EACpB,SAAS,GAIV;;QAVQ,kDAAqB;QAErB,sDAAmB;QAS1B,uBAAA,IAAI,mCAAU,aAAa,MAAA,CAAC;QAC5B,uBAAA,IAAI,uCAAc,SAAS,IAAI,EAAE,MAAA,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CACxB,UAA2B;QAE3B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,IAAI,uBAAA,IAAI,2CAAW,EAAE,CAAC;YACzC,OAAO,uBAAA,IAAI,gGAA2B,MAA/B,IAAI,EAA4B,UAAU,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,cAAK,EAAC,UAAU,EAAE,uBAAA,IAAI,2CAAW,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAA,IAAI,gGAA2B,MAA/B,IAAI,EAA4B,KAAK,CAAC,CAAC,CAC/D,CAAC;QAEF,MAAM,gBAAgB,GAA2B;YAC/C,cAAc,EAAE,YAAY,CAAC,OAAO,CAClC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CACtC;SACF,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CA0CF;AAzFD,4DAyFC;;AAxCC;;;;;;GAMG;AACH,KAAK,8DACH,UAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,qCAAsB,EAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,MAAM,uBAAA,IAAI,uCAAO,MAAX,IAAI,EAAQ,GAAG,CAAC,QAAQ,EAAE,EAAE;YACjD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,CAAC,gDAAiC,CAAC,EAAE,4CAA6B;gBAClE,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE5C,IAAA,oBAAM,EAAC,IAAI,EAAE,2CAA4B,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC","sourcesContent":["import { assert } from '@metamask/superstruct';\nimport type { CaipAccountId } from '@metamask/utils';\nimport { chunk } from 'lodash';\n\nimport {\n ActiveNetworksResponseStruct,\n buildActiveNetworksUrl,\n MULTICHAIN_ACCOUNTS_CLIENT_HEADER,\n MULTICHAIN_ACCOUNTS_CLIENT_ID,\n} from '../api/accounts-api';\nimport type { ActiveNetworksResponse } from '../api/accounts-api';\n\n/**\n * Service responsible for fetching network activity data from the API.\n */\nexport class MultichainNetworkService {\n readonly #fetch: typeof fetch;\n\n readonly #batchSize: number;\n\n constructor({\n fetch: fetchFunction,\n batchSize,\n }: {\n fetch: typeof fetch;\n batchSize?: number;\n }) {\n this.#fetch = fetchFunction;\n this.#batchSize = batchSize ?? 20;\n }\n\n /**\n * Fetches active networks for the given account IDs.\n * Automatically handles batching requests to comply with URL length limitations.\n *\n * @param accountIds - Array of CAIP-10 account IDs to fetch activity for.\n * @returns Promise resolving to the combined active networks response.\n * @throws Error if the response format is invalid or the request fails.\n */\n async fetchNetworkActivity(\n accountIds: CaipAccountId[],\n ): Promise<ActiveNetworksResponse> {\n if (accountIds.length === 0) {\n return { activeNetworks: [] };\n }\n\n if (accountIds.length <= this.#batchSize) {\n return this.#fetchNetworkActivityBatch(accountIds);\n }\n\n const batches = chunk(accountIds, this.#batchSize);\n const batchResults = await Promise.all(\n batches.map((batch) => this.#fetchNetworkActivityBatch(batch)),\n );\n\n const combinedResponse: ActiveNetworksResponse = {\n activeNetworks: batchResults.flatMap(\n (response) => response.activeNetworks,\n ),\n };\n\n return combinedResponse;\n }\n\n /**\n * Internal method to fetch a single batch of account IDs.\n *\n * @param accountIds - Batch of account IDs to fetch\n * @returns Promise resolving to the active networks response for this batch\n * @throws Error if the response format is invalid or the request fails\n */\n async #fetchNetworkActivityBatch(\n accountIds: CaipAccountId[],\n ): Promise<ActiveNetworksResponse> {\n try {\n const url = buildActiveNetworksUrl(accountIds);\n\n const response = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: {\n [MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: MULTICHAIN_ACCOUNTS_CLIENT_ID,\n Accept: 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data: unknown = await response.json();\n\n assert(data, ActiveNetworksResponseStruct);\n return data;\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new Error('Request timeout: Failed to fetch active networks');\n }\n throw error;\n }\n\n throw new Error(`Failed to fetch active networks: ${String(error)}`);\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CaipAccountId } from "@metamask/utils";
|
|
2
|
-
import {
|
|
2
|
+
import type { ActiveNetworksResponse } from "../api/accounts-api.cjs";
|
|
3
3
|
/**
|
|
4
4
|
* Service responsible for fetching network activity data from the API.
|
|
5
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkService.d.cts","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"MultichainNetworkService.d.cts","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AASrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,gCAA4B;AAElE;;GAEG;AACH,qBAAa,wBAAwB;;gBAKvB,EACV,KAAK,EAAE,aAAa,EACpB,SAAS,GACV,EAAE;QACD,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAKD;;;;;;;OAOG;IACG,oBAAoB,CACxB,UAAU,EAAE,aAAa,EAAE,GAC1B,OAAO,CAAC,sBAAsB,CAAC;CA+DnC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CaipAccountId } from "@metamask/utils";
|
|
2
|
-
import {
|
|
2
|
+
import type { ActiveNetworksResponse } from "../api/accounts-api.mjs";
|
|
3
3
|
/**
|
|
4
4
|
* Service responsible for fetching network activity data from the API.
|
|
5
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkService.d.mts","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"MultichainNetworkService.d.mts","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB;AASrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,gCAA4B;AAElE;;GAEG;AACH,qBAAa,wBAAwB;;gBAKvB,EACV,KAAK,EAAE,aAAa,EACpB,SAAS,GACV,EAAE;QACD,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAKD;;;;;;;OAOG;IACG,oBAAoB,CACxB,UAAU,EAAE,aAAa,EAAE,GAC1B,OAAO,CAAC,sBAAsB,CAAC;CA+DnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultichainNetworkService.mjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,8BAA8B;;;AAI/C,OAAO,
|
|
1
|
+
{"version":3,"file":"MultichainNetworkService.mjs","sourceRoot":"","sources":["../../src/MultichainNetworkService/MultichainNetworkService.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,8BAA8B;;;AAI/C,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,iCAAiC,EACjC,6BAA6B,EAC9B,gCAA4B;AAG7B;;GAEG;AACH,MAAM,OAAO,wBAAwB;IAKnC,YAAY,EACV,KAAK,EAAE,aAAa,EACpB,SAAS,GAIV;;QAVQ,kDAAqB;QAErB,sDAAmB;QAS1B,uBAAA,IAAI,mCAAU,aAAa,MAAA,CAAC;QAC5B,uBAAA,IAAI,uCAAc,SAAS,IAAI,EAAE,MAAA,CAAC;IACpC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CACxB,UAA2B;QAE3B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QAChC,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,IAAI,uBAAA,IAAI,2CAAW,EAAE,CAAC;YACzC,OAAO,uBAAA,IAAI,gGAA2B,MAA/B,IAAI,EAA4B,UAAU,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,uBAAA,IAAI,2CAAW,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAA,IAAI,gGAA2B,MAA/B,IAAI,EAA4B,KAAK,CAAC,CAAC,CAC/D,CAAC;QAEF,MAAM,gBAAgB,GAA2B;YAC/C,cAAc,EAAE,YAAY,CAAC,OAAO,CAClC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CACtC;SACF,CAAC;QAEF,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CA0CF;;AAxCC;;;;;;GAMG;AACH,KAAK,8DACH,UAA2B;IAE3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,MAAM,uBAAA,IAAI,uCAAO,MAAX,IAAI,EAAQ,GAAG,CAAC,QAAQ,EAAE,EAAE;YACjD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,CAAC,iCAAiC,CAAC,EAAE,6BAA6B;gBAClE,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE5C,MAAM,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC","sourcesContent":["import { assert } from '@metamask/superstruct';\nimport type { CaipAccountId } from '@metamask/utils';\nimport { chunk } from 'lodash';\n\nimport {\n ActiveNetworksResponseStruct,\n buildActiveNetworksUrl,\n MULTICHAIN_ACCOUNTS_CLIENT_HEADER,\n MULTICHAIN_ACCOUNTS_CLIENT_ID,\n} from '../api/accounts-api';\nimport type { ActiveNetworksResponse } from '../api/accounts-api';\n\n/**\n * Service responsible for fetching network activity data from the API.\n */\nexport class MultichainNetworkService {\n readonly #fetch: typeof fetch;\n\n readonly #batchSize: number;\n\n constructor({\n fetch: fetchFunction,\n batchSize,\n }: {\n fetch: typeof fetch;\n batchSize?: number;\n }) {\n this.#fetch = fetchFunction;\n this.#batchSize = batchSize ?? 20;\n }\n\n /**\n * Fetches active networks for the given account IDs.\n * Automatically handles batching requests to comply with URL length limitations.\n *\n * @param accountIds - Array of CAIP-10 account IDs to fetch activity for.\n * @returns Promise resolving to the combined active networks response.\n * @throws Error if the response format is invalid or the request fails.\n */\n async fetchNetworkActivity(\n accountIds: CaipAccountId[],\n ): Promise<ActiveNetworksResponse> {\n if (accountIds.length === 0) {\n return { activeNetworks: [] };\n }\n\n if (accountIds.length <= this.#batchSize) {\n return this.#fetchNetworkActivityBatch(accountIds);\n }\n\n const batches = chunk(accountIds, this.#batchSize);\n const batchResults = await Promise.all(\n batches.map((batch) => this.#fetchNetworkActivityBatch(batch)),\n );\n\n const combinedResponse: ActiveNetworksResponse = {\n activeNetworks: batchResults.flatMap(\n (response) => response.activeNetworks,\n ),\n };\n\n return combinedResponse;\n }\n\n /**\n * Internal method to fetch a single batch of account IDs.\n *\n * @param accountIds - Batch of account IDs to fetch\n * @returns Promise resolving to the active networks response for this batch\n * @throws Error if the response format is invalid or the request fails\n */\n async #fetchNetworkActivityBatch(\n accountIds: CaipAccountId[],\n ): Promise<ActiveNetworksResponse> {\n try {\n const url = buildActiveNetworksUrl(accountIds);\n\n const response = await this.#fetch(url.toString(), {\n method: 'GET',\n headers: {\n [MULTICHAIN_ACCOUNTS_CLIENT_HEADER]: MULTICHAIN_ACCOUNTS_CLIENT_ID,\n Accept: 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data: unknown = await response.json();\n\n assert(data, ActiveNetworksResponseStruct);\n return data;\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new Error('Request timeout: Failed to fetch active networks');\n }\n throw error;\n }\n\n throw new Error(`Failed to fetch active networks: ${String(error)}`);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts-api.cjs","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":";;;AAAA,uDAA+E;AAE/E,
|
|
1
|
+
{"version":3,"file":"accounts-api.cjs","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":";;;AAAA,uDAA+E;AAE/E,uDAAsD;AAEtD,2CAA0E;AAQ7D,QAAA,4BAA4B,GAAG,IAAA,oBAAM,EAAC;IACjD,cAAc,EAAE,IAAA,mBAAK,EAAC,2BAAmB,CAAC;CAC3C,CAAC,CAAC;AAiBH;;GAEG;AACU,QAAA,4BAA4B,GACvC,qCAAqC,CAAC;AAExC;;GAEG;AACU,QAAA,iCAAiC,GAAG,0BAA0B,CAAC;AAE5E;;GAEG;AACU,QAAA,6BAA6B,GACxC,wCAAwC,CAAC;AAE3C;;GAEG;AACU,QAAA,wCAAwC,GAAG;IACtD,MAAM,CAAC,sBAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,sBAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,sBAAQ,CAAC,QAAQ,CAAC;IACzB,MAAM,CAAC,sBAAQ,CAAC,MAAM,CAAC;IACvB,MAAM,CAAC,sBAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,sBAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,sBAAQ,CAAC,MAAM,CAAC;IACvB,MAAM,CAAC,sBAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,sBAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,sBAAQ,CAAC,GAAG,CAAC;IACpB,MAAM,CAAC,sBAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,sBAAQ,CAAC,IAAI,CAAC;IACrB,MAAM,CAAC,sBAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,OAAwB;IAExB,MAAM,iBAAiB,GAAoB,EAAE,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,gDAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,iBAAiB,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAXD,0DAWC;AAED;;;;;;GAMG;AACH,SAAgB,yBAAyB,CACvC,QAAgC;IAEhC,MAAM,iBAAiB,GAA4B,EAAE,CAAC;IAEtD,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC1C,MAAM,EACJ,OAAO,EACP,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,GAChC,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,iBAAiB,CAAC,OAAO,CAAC,GAAG;gBAC3B,SAAS;gBACT,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QACD,iBAAiB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AArBD,8DAqBC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,UAA2B;IAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,oCAA4B,oBAAoB,CAAC,CAAC;IACzE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC;AAJD,wDAIC","sourcesContent":["import { BtcScope, SolScope, EthScope, TrxScope } from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport { array, object } from '@metamask/superstruct';\nimport type { Infer } from '@metamask/superstruct';\nimport { CaipAccountIdStruct, parseCaipAccountId } from '@metamask/utils';\nimport type {\n CaipAccountAddress,\n CaipAccountId,\n CaipNamespace,\n CaipReference,\n} from '@metamask/utils';\n\nexport const ActiveNetworksResponseStruct = object({\n activeNetworks: array(CaipAccountIdStruct),\n});\n\nexport type ActiveNetworksResponse = Infer<typeof ActiveNetworksResponseStruct>;\n\n/**\n * The active networks for the currently selected account.\n */\nexport type ActiveNetworksByAddress = Record<\n CaipAccountAddress,\n {\n // CAIP-2 namespace of the network.\n namespace: CaipNamespace;\n // Active chain IDs (CAIP-2 references) on that network (primarily used for EVM networks).\n activeChains: CaipReference[];\n }\n>;\n\n/**\n * The domain for multichain accounts API.\n */\nexport const MULTICHAIN_ACCOUNTS_BASE_URL =\n 'https://accounts.api.cx.metamask.io';\n\n/**\n * The client header for the multichain accounts API.\n */\nexport const MULTICHAIN_ACCOUNTS_CLIENT_HEADER = 'x-metamask-clientproduct';\n\n/**\n * The client ID for the multichain accounts API.\n */\nexport const MULTICHAIN_ACCOUNTS_CLIENT_ID =\n 'metamask-multichain-network-controller';\n\n/**\n * The allowed active network scopes for the multichain network controller.\n */\nexport const MULTICHAIN_ALLOWED_ACTIVE_NETWORK_SCOPES = [\n String(BtcScope.Mainnet),\n String(BtcScope.Testnet),\n String(BtcScope.Testnet4),\n String(BtcScope.Signet),\n String(BtcScope.Regtest),\n String(SolScope.Mainnet),\n String(SolScope.Devnet),\n String(EthScope.Mainnet),\n String(EthScope.Testnet),\n String(EthScope.Eoa),\n String(TrxScope.Mainnet),\n String(TrxScope.Nile),\n String(TrxScope.Shasta),\n];\n\n/**\n * Converts an internal account to an array of CAIP-10 account IDs.\n *\n * @param account - The internal account to convert\n * @returns The CAIP-10 account IDs\n */\nexport function toAllowedCaipAccountIds(\n account: InternalAccount,\n): CaipAccountId[] {\n const formattedAccounts: CaipAccountId[] = [];\n for (const scope of account.scopes) {\n if (MULTICHAIN_ALLOWED_ACTIVE_NETWORK_SCOPES.includes(scope)) {\n formattedAccounts.push(`${scope}:${account.address}`);\n }\n }\n\n return formattedAccounts;\n}\n\n/**\n * Formats the API response into our state structure.\n * Example input: [\"eip155:1:0x123...\", \"eip155:137:0x123...\", \"solana:1:0xabc...\"]\n *\n * @param response - The raw API response\n * @returns Formatted networks by address\n */\nexport function toActiveNetworksByAddress(\n response: ActiveNetworksResponse,\n): ActiveNetworksByAddress {\n const networksByAddress: ActiveNetworksByAddress = {};\n\n response.activeNetworks.forEach((network) => {\n const {\n address,\n chain: { namespace, reference },\n } = parseCaipAccountId(network);\n\n if (!networksByAddress[address]) {\n networksByAddress[address] = {\n namespace,\n activeChains: [],\n };\n }\n networksByAddress[address].activeChains.push(reference);\n });\n\n return networksByAddress;\n}\n\n/**\n * Constructs the URL for the active networks API endpoint.\n *\n * @param accountIds - Array of account IDs\n * @returns URL object for the API endpoint\n */\nexport function buildActiveNetworksUrl(accountIds: CaipAccountId[]): URL {\n const url = new URL(`${MULTICHAIN_ACCOUNTS_BASE_URL}/v2/activeNetworks`);\n url.searchParams.append('accountIds', accountIds.join(','));\n return url;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
2
|
-
import {
|
|
2
|
+
import type { Infer } from "@metamask/superstruct";
|
|
3
3
|
import type { CaipAccountAddress, CaipAccountId, CaipNamespace, CaipReference } from "@metamask/utils";
|
|
4
4
|
export declare const ActiveNetworksResponseStruct: import("@metamask/superstruct").Struct<{
|
|
5
5
|
activeNetworks: `${string}:${string}:${string}`[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts-api.d.cts","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;
|
|
1
|
+
{"version":3,"file":"accounts-api.d.cts","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAEnD,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACd,wBAAwB;AAEzB,eAAO,MAAM,4BAA4B;;;;EAEvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,kBAAkB,EAClB;IAEE,SAAS,EAAE,aAAa,CAAC;IAEzB,YAAY,EAAE,aAAa,EAAE,CAAC;CAC/B,CACF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,wCACF,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,6BAA6B,2CACA,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,wCAAwC,UAcpD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,eAAe,GACvB,aAAa,EAAE,CASjB;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,sBAAsB,GAC/B,uBAAuB,CAmBzB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,GAAG,CAIvE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
2
|
-
import {
|
|
2
|
+
import type { Infer } from "@metamask/superstruct";
|
|
3
3
|
import type { CaipAccountAddress, CaipAccountId, CaipNamespace, CaipReference } from "@metamask/utils";
|
|
4
4
|
export declare const ActiveNetworksResponseStruct: import("@metamask/superstruct").Struct<{
|
|
5
5
|
activeNetworks: `${string}:${string}:${string}`[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts-api.d.mts","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;
|
|
1
|
+
{"version":3,"file":"accounts-api.d.mts","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,uCAAuC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAEnD,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,aAAa,EACd,wBAAwB;AAEzB,eAAO,MAAM,4BAA4B;;;;EAEvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAEhF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAC1C,kBAAkB,EAClB;IAEE,SAAS,EAAE,aAAa,CAAC;IAEzB,YAAY,EAAE,aAAa,EAAE,CAAC;CAC/B,CACF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,wCACF,CAAC;AAExC;;GAEG;AACH,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,6BAA6B,2CACA,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,wCAAwC,UAcpD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,eAAe,GACvB,aAAa,EAAE,CASjB;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,sBAAsB,GAC/B,uBAAuB,CAmBzB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,GAAG,CAIvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts-api.mjs","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,8BAA8B;AAE/E,OAAO,
|
|
1
|
+
{"version":3,"file":"accounts-api.mjs","sourceRoot":"","sources":["../../src/api/accounts-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,8BAA8B;AAE/E,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B;AAEtD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,wBAAwB;AAQ1E,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;IACjD,cAAc,EAAE,KAAK,CAAC,mBAAmB,CAAC;CAC3C,CAAC,CAAC;AAiBH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GACvC,qCAAqC,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAE5E;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,wCAAwC,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,wCAAwC,GAAG;IACtD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IACvB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;IACpB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IACrB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAwB;IAExB,MAAM,iBAAiB,GAAoB,EAAE,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,wCAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,iBAAiB,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAgC;IAEhC,MAAM,iBAAiB,GAA4B,EAAE,CAAC;IAEtD,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC1C,MAAM,EACJ,OAAO,EACP,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,GAChC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,iBAAiB,CAAC,OAAO,CAAC,GAAG;gBAC3B,SAAS;gBACT,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QACD,iBAAiB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAA2B;IAChE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,4BAA4B,oBAAoB,CAAC,CAAC;IACzE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { BtcScope, SolScope, EthScope, TrxScope } from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport { array, object } from '@metamask/superstruct';\nimport type { Infer } from '@metamask/superstruct';\nimport { CaipAccountIdStruct, parseCaipAccountId } from '@metamask/utils';\nimport type {\n CaipAccountAddress,\n CaipAccountId,\n CaipNamespace,\n CaipReference,\n} from '@metamask/utils';\n\nexport const ActiveNetworksResponseStruct = object({\n activeNetworks: array(CaipAccountIdStruct),\n});\n\nexport type ActiveNetworksResponse = Infer<typeof ActiveNetworksResponseStruct>;\n\n/**\n * The active networks for the currently selected account.\n */\nexport type ActiveNetworksByAddress = Record<\n CaipAccountAddress,\n {\n // CAIP-2 namespace of the network.\n namespace: CaipNamespace;\n // Active chain IDs (CAIP-2 references) on that network (primarily used for EVM networks).\n activeChains: CaipReference[];\n }\n>;\n\n/**\n * The domain for multichain accounts API.\n */\nexport const MULTICHAIN_ACCOUNTS_BASE_URL =\n 'https://accounts.api.cx.metamask.io';\n\n/**\n * The client header for the multichain accounts API.\n */\nexport const MULTICHAIN_ACCOUNTS_CLIENT_HEADER = 'x-metamask-clientproduct';\n\n/**\n * The client ID for the multichain accounts API.\n */\nexport const MULTICHAIN_ACCOUNTS_CLIENT_ID =\n 'metamask-multichain-network-controller';\n\n/**\n * The allowed active network scopes for the multichain network controller.\n */\nexport const MULTICHAIN_ALLOWED_ACTIVE_NETWORK_SCOPES = [\n String(BtcScope.Mainnet),\n String(BtcScope.Testnet),\n String(BtcScope.Testnet4),\n String(BtcScope.Signet),\n String(BtcScope.Regtest),\n String(SolScope.Mainnet),\n String(SolScope.Devnet),\n String(EthScope.Mainnet),\n String(EthScope.Testnet),\n String(EthScope.Eoa),\n String(TrxScope.Mainnet),\n String(TrxScope.Nile),\n String(TrxScope.Shasta),\n];\n\n/**\n * Converts an internal account to an array of CAIP-10 account IDs.\n *\n * @param account - The internal account to convert\n * @returns The CAIP-10 account IDs\n */\nexport function toAllowedCaipAccountIds(\n account: InternalAccount,\n): CaipAccountId[] {\n const formattedAccounts: CaipAccountId[] = [];\n for (const scope of account.scopes) {\n if (MULTICHAIN_ALLOWED_ACTIVE_NETWORK_SCOPES.includes(scope)) {\n formattedAccounts.push(`${scope}:${account.address}`);\n }\n }\n\n return formattedAccounts;\n}\n\n/**\n * Formats the API response into our state structure.\n * Example input: [\"eip155:1:0x123...\", \"eip155:137:0x123...\", \"solana:1:0xabc...\"]\n *\n * @param response - The raw API response\n * @returns Formatted networks by address\n */\nexport function toActiveNetworksByAddress(\n response: ActiveNetworksResponse,\n): ActiveNetworksByAddress {\n const networksByAddress: ActiveNetworksByAddress = {};\n\n response.activeNetworks.forEach((network) => {\n const {\n address,\n chain: { namespace, reference },\n } = parseCaipAccountId(network);\n\n if (!networksByAddress[address]) {\n networksByAddress[address] = {\n namespace,\n activeChains: [],\n };\n }\n networksByAddress[address].activeChains.push(reference);\n });\n\n return networksByAddress;\n}\n\n/**\n * Constructs the URL for the active networks API endpoint.\n *\n * @param accountIds - Array of account IDs\n * @returns URL object for the API endpoint\n */\nexport function buildActiveNetworksUrl(accountIds: CaipAccountId[]): URL {\n const url = new URL(`${MULTICHAIN_ACCOUNTS_BASE_URL}/v2/activeNetworks`);\n url.searchParams.append('accountIds', accountIds.join(','));\n return url;\n}\n"]}
|
package/dist/constants.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import { type StateMetadata } from '@metamask/base-controller';\nimport {\n type CaipChainId,\n BtcScope,\n SolScope,\n TrxScope,\n} from '@metamask/keyring-api';\nimport { NetworkStatus } from '@metamask/network-controller';\n\nimport type {\n MultichainNetworkConfiguration,\n MultichainNetworkControllerState,\n MultichainNetworkMetadata,\n SupportedCaipChainId,\n} from './types';\n\nexport const BTC_NATIVE_ASSET = `${BtcScope.Mainnet}/slip44:0`;\nexport const BTC_TESTNET_NATIVE_ASSET = `${BtcScope.Testnet}/slip44:0`;\nexport const BTC_TESTNET4_NATIVE_ASSET = `${BtcScope.Testnet4}/slip44:0`;\nexport const BTC_SIGNET_NATIVE_ASSET = `${BtcScope.Signet}/slip44:0`;\nexport const BTC_REGTEST_NATIVE_ASSET = `${BtcScope.Regtest}/slip44:0`;\nexport const SOL_NATIVE_ASSET = `${SolScope.Mainnet}/slip44:501`;\nexport const SOL_TESTNET_NATIVE_ASSET = `${SolScope.Testnet}/slip44:501`;\nexport const SOL_DEVNET_NATIVE_ASSET = `${SolScope.Devnet}/slip44:501`;\nexport const TRX_NATIVE_ASSET = `${TrxScope.Mainnet}/slip44:195`;\nexport const TRX_NILE_NATIVE_ASSET = `${TrxScope.Nile}/slip44:195`;\nexport const TRX_SHASTA_NATIVE_ASSET = `${TrxScope.Shasta}/slip44:195`;\n\n/**\n * Supported networks by the MultichainNetworkController\n */\nexport const AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS: Record<\n SupportedCaipChainId,\n MultichainNetworkConfiguration\n> = {\n [BtcScope.Mainnet]: {\n chainId: BtcScope.Mainnet,\n name: 'Bitcoin',\n nativeCurrency: BTC_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Testnet]: {\n chainId: BtcScope.Testnet,\n name: 'Bitcoin Testnet',\n nativeCurrency: BTC_TESTNET_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Testnet4]: {\n chainId: BtcScope.Testnet4,\n name: 'Bitcoin Testnet4',\n nativeCurrency: BTC_TESTNET4_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Signet]: {\n chainId: BtcScope.Signet,\n name: 'Bitcoin Mutinynet',\n nativeCurrency: BTC_SIGNET_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Regtest]: {\n chainId: BtcScope.Regtest,\n name: 'Bitcoin Regtest',\n nativeCurrency: BTC_REGTEST_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Mainnet]: {\n chainId: SolScope.Mainnet,\n name: 'Solana',\n nativeCurrency: SOL_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Testnet]: {\n chainId: SolScope.Testnet,\n name: 'Solana Testnet',\n nativeCurrency: SOL_TESTNET_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Devnet]: {\n chainId: SolScope.Devnet,\n name: 'Solana Devnet',\n nativeCurrency: SOL_DEVNET_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Mainnet]: {\n chainId: TrxScope.Mainnet,\n name: 'Tron',\n nativeCurrency: TRX_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Nile]: {\n chainId: TrxScope.Nile,\n name: 'Tron Nile',\n nativeCurrency: TRX_NILE_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Shasta]: {\n chainId: TrxScope.Shasta,\n name: 'Tron Shasta',\n nativeCurrency: TRX_SHASTA_NATIVE_ASSET,\n isEvm: false,\n },\n};\n\n/**\n * Array of all the Non-EVM chain IDs.\n * This is a temporary mention until we develop\n * a more robust solution to identify testnet networks.\n */\nexport const NON_EVM_TESTNET_IDS: CaipChainId[] = [\n BtcScope.Testnet,\n BtcScope.Testnet4,\n BtcScope.Signet,\n BtcScope.Regtest,\n SolScope.Testnet,\n SolScope.Devnet,\n TrxScope.Nile,\n TrxScope.Shasta,\n];\n\n/**\n * Metadata for the supported networks.\n */\nexport const NETWORKS_METADATA: Record<string, MultichainNetworkMetadata> = {\n [BtcScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n [SolScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n [TrxScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n};\n\n/**\n * Default state of the {@link MultichainNetworkController}.\n *\n * @returns The default state of the {@link MultichainNetworkController}.\n */\nexport const getDefaultMultichainNetworkControllerState =\n (): MultichainNetworkControllerState => ({\n multichainNetworkConfigurationsByChainId:\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n selectedMultichainNetworkChainId: SolScope.Mainnet,\n isEvmSelected: true,\n networksWithTransactionActivity: {},\n });\n\n/**\n * {@link MultichainNetworkController}'s metadata.\n *\n * This allows us to choose if fields of the state should be persisted or not\n * using the `persist` flag; and if they can be sent to Sentry or not, using\n * the `anonymous` flag.\n */\nexport const MULTICHAIN_NETWORK_CONTROLLER_METADATA = {\n multichainNetworkConfigurationsByChainId: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n selectedMultichainNetworkChainId: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n isEvmSelected: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n networksWithTransactionActivity: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n} satisfies StateMetadata<MultichainNetworkControllerState>;\n\n/**\n * Multichain network ticker for the supported networks.\n * TODO: This should be part of the assets-controllers or the snap itself.\n */\nexport const MULTICHAIN_NETWORK_TICKER: Record<CaipChainId, string> = {\n [BtcScope.Mainnet]: 'BTC',\n [BtcScope.Testnet]: 'tBTC',\n [BtcScope.Testnet4]: 'tBTC',\n [BtcScope.Signet]: 'sBTC',\n [BtcScope.Regtest]: 'rBTC',\n [SolScope.Mainnet]: 'SOL',\n [SolScope.Testnet]: 'tSOL',\n [SolScope.Devnet]: 'dSOL',\n [TrxScope.Mainnet]: 'TRX',\n [TrxScope.Nile]: 'tTRX',\n [TrxScope.Shasta]: 'sTRX',\n} as const;\n\n/**\n * Multichain network asset decimals for the supported networks.\n * TODO: This should be part of the assets-controllers or the snap itself.\n */\nexport const MULTICHAIN_NETWORK_DECIMAL_PLACES: Record<CaipChainId, number> = {\n [BtcScope.Mainnet]: 8,\n [BtcScope.Testnet]: 8,\n [BtcScope.Testnet4]: 8,\n [BtcScope.Signet]: 8,\n [BtcScope.Regtest]: 8,\n [SolScope.Mainnet]: 5,\n [SolScope.Testnet]: 5,\n [SolScope.Devnet]: 5,\n [TrxScope.Mainnet]: 6,\n [TrxScope.Nile]: 6,\n [TrxScope.Shasta]: 6,\n} as const;\n"]}
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BtcScope, SolScope, TrxScope } from '@metamask/keyring-api';\nimport type { CaipChainId } from '@metamask/keyring-api';\nimport { NetworkStatus } from '@metamask/network-controller';\n\nimport type {\n MultichainNetworkConfiguration,\n MultichainNetworkControllerState,\n MultichainNetworkMetadata,\n SupportedCaipChainId,\n} from './types';\n\nexport const BTC_NATIVE_ASSET = `${BtcScope.Mainnet}/slip44:0`;\nexport const BTC_TESTNET_NATIVE_ASSET = `${BtcScope.Testnet}/slip44:0`;\nexport const BTC_TESTNET4_NATIVE_ASSET = `${BtcScope.Testnet4}/slip44:0`;\nexport const BTC_SIGNET_NATIVE_ASSET = `${BtcScope.Signet}/slip44:0`;\nexport const BTC_REGTEST_NATIVE_ASSET = `${BtcScope.Regtest}/slip44:0`;\nexport const SOL_NATIVE_ASSET = `${SolScope.Mainnet}/slip44:501`;\nexport const SOL_TESTNET_NATIVE_ASSET = `${SolScope.Testnet}/slip44:501`;\nexport const SOL_DEVNET_NATIVE_ASSET = `${SolScope.Devnet}/slip44:501`;\nexport const TRX_NATIVE_ASSET = `${TrxScope.Mainnet}/slip44:195`;\nexport const TRX_NILE_NATIVE_ASSET = `${TrxScope.Nile}/slip44:195`;\nexport const TRX_SHASTA_NATIVE_ASSET = `${TrxScope.Shasta}/slip44:195`;\n\n/**\n * Supported networks by the MultichainNetworkController\n */\nexport const AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS: Record<\n SupportedCaipChainId,\n MultichainNetworkConfiguration\n> = {\n [BtcScope.Mainnet]: {\n chainId: BtcScope.Mainnet,\n name: 'Bitcoin',\n nativeCurrency: BTC_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Testnet]: {\n chainId: BtcScope.Testnet,\n name: 'Bitcoin Testnet',\n nativeCurrency: BTC_TESTNET_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Testnet4]: {\n chainId: BtcScope.Testnet4,\n name: 'Bitcoin Testnet4',\n nativeCurrency: BTC_TESTNET4_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Signet]: {\n chainId: BtcScope.Signet,\n name: 'Bitcoin Mutinynet',\n nativeCurrency: BTC_SIGNET_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Regtest]: {\n chainId: BtcScope.Regtest,\n name: 'Bitcoin Regtest',\n nativeCurrency: BTC_REGTEST_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Mainnet]: {\n chainId: SolScope.Mainnet,\n name: 'Solana',\n nativeCurrency: SOL_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Testnet]: {\n chainId: SolScope.Testnet,\n name: 'Solana Testnet',\n nativeCurrency: SOL_TESTNET_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Devnet]: {\n chainId: SolScope.Devnet,\n name: 'Solana Devnet',\n nativeCurrency: SOL_DEVNET_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Mainnet]: {\n chainId: TrxScope.Mainnet,\n name: 'Tron',\n nativeCurrency: TRX_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Nile]: {\n chainId: TrxScope.Nile,\n name: 'Tron Nile',\n nativeCurrency: TRX_NILE_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Shasta]: {\n chainId: TrxScope.Shasta,\n name: 'Tron Shasta',\n nativeCurrency: TRX_SHASTA_NATIVE_ASSET,\n isEvm: false,\n },\n};\n\n/**\n * Array of all the Non-EVM chain IDs.\n * This is a temporary mention until we develop\n * a more robust solution to identify testnet networks.\n */\nexport const NON_EVM_TESTNET_IDS: CaipChainId[] = [\n BtcScope.Testnet,\n BtcScope.Testnet4,\n BtcScope.Signet,\n BtcScope.Regtest,\n SolScope.Testnet,\n SolScope.Devnet,\n TrxScope.Nile,\n TrxScope.Shasta,\n];\n\n/**\n * Metadata for the supported networks.\n */\nexport const NETWORKS_METADATA: Record<string, MultichainNetworkMetadata> = {\n [BtcScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n [SolScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n [TrxScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n};\n\n/**\n * Default state of the {@link MultichainNetworkController}.\n *\n * @returns The default state of the {@link MultichainNetworkController}.\n */\nexport const getDefaultMultichainNetworkControllerState =\n (): MultichainNetworkControllerState => ({\n multichainNetworkConfigurationsByChainId:\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n selectedMultichainNetworkChainId: SolScope.Mainnet,\n isEvmSelected: true,\n networksWithTransactionActivity: {},\n });\n\n/**\n * {@link MultichainNetworkController}'s metadata.\n *\n * This allows us to choose if fields of the state should be persisted or not\n * using the `persist` flag; and if they can be sent to Sentry or not, using\n * the `anonymous` flag.\n */\nexport const MULTICHAIN_NETWORK_CONTROLLER_METADATA = {\n multichainNetworkConfigurationsByChainId: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n selectedMultichainNetworkChainId: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n isEvmSelected: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n networksWithTransactionActivity: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n} satisfies StateMetadata<MultichainNetworkControllerState>;\n\n/**\n * Multichain network ticker for the supported networks.\n * TODO: This should be part of the assets-controllers or the snap itself.\n */\nexport const MULTICHAIN_NETWORK_TICKER: Record<CaipChainId, string> = {\n [BtcScope.Mainnet]: 'BTC',\n [BtcScope.Testnet]: 'tBTC',\n [BtcScope.Testnet4]: 'tBTC',\n [BtcScope.Signet]: 'sBTC',\n [BtcScope.Regtest]: 'rBTC',\n [SolScope.Mainnet]: 'SOL',\n [SolScope.Testnet]: 'tSOL',\n [SolScope.Devnet]: 'dSOL',\n [TrxScope.Mainnet]: 'TRX',\n [TrxScope.Nile]: 'tTRX',\n [TrxScope.Shasta]: 'sTRX',\n} as const;\n\n/**\n * Multichain network asset decimals for the supported networks.\n * TODO: This should be part of the assets-controllers or the snap itself.\n */\nexport const MULTICHAIN_NETWORK_DECIMAL_PLACES: Record<CaipChainId, number> = {\n [BtcScope.Mainnet]: 8,\n [BtcScope.Testnet]: 8,\n [BtcScope.Testnet4]: 8,\n [BtcScope.Signet]: 8,\n [BtcScope.Regtest]: 8,\n [SolScope.Mainnet]: 5,\n [SolScope.Testnet]: 5,\n [SolScope.Devnet]: 5,\n [TrxScope.Mainnet]: 6,\n [TrxScope.Nile]: 6,\n [TrxScope.Shasta]: 6,\n} as const;\n"]}
|
package/dist/constants.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { CaipChainId } from "@metamask/keyring-api";
|
|
2
2
|
import type { MultichainNetworkConfiguration, MultichainNetworkControllerState, MultichainNetworkMetadata, SupportedCaipChainId } from "./types.cjs";
|
|
3
3
|
export declare const BTC_NATIVE_ASSET = "bip122:000000000019d6689c085ae165831e93/slip44:0";
|
|
4
4
|
export declare const BTC_TESTNET_NATIVE_ASSET = "bip122:000000000933ea01ad0ee984209779ba/slip44:0";
|
package/dist/constants.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,8BAA8B;AAGzD,OAAO,KAAK,EACV,8BAA8B,EAC9B,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACrB,oBAAgB;AAEjB,eAAO,MAAM,gBAAgB,qDAAiC,CAAC;AAC/D,eAAO,MAAM,wBAAwB,qDAAiC,CAAC;AACvE,eAAO,MAAM,yBAAyB,qDAAkC,CAAC;AACzE,eAAO,MAAM,uBAAuB,qDAAgC,CAAC;AACrE,eAAO,MAAM,wBAAwB,4BAAiC,CAAC;AACvE,eAAO,MAAM,gBAAgB,uDAAmC,CAAC;AACjE,eAAO,MAAM,wBAAwB,uDAAmC,CAAC;AACzE,eAAO,MAAM,uBAAuB,uDAAkC,CAAC;AACvE,eAAO,MAAM,gBAAgB,8BAAmC,CAAC;AACjE,eAAO,MAAM,qBAAqB,+BAAgC,CAAC;AACnE,eAAO,MAAM,uBAAuB,+BAAkC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,2CAA2C,EAAE,MAAM,CAC9D,oBAAoB,EACpB,8BAA8B,CAoE/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAS5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAavE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0CAA0C,QACjD,gCAMF,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;CAyBQ,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAYxD,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAYhE,CAAC"}
|
package/dist/constants.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { CaipChainId } from "@metamask/keyring-api";
|
|
2
2
|
import type { MultichainNetworkConfiguration, MultichainNetworkControllerState, MultichainNetworkMetadata, SupportedCaipChainId } from "./types.mjs";
|
|
3
3
|
export declare const BTC_NATIVE_ASSET = "bip122:000000000019d6689c085ae165831e93/slip44:0";
|
|
4
4
|
export declare const BTC_TESTNET_NATIVE_ASSET = "bip122:000000000933ea01ad0ee984209779ba/slip44:0";
|
package/dist/constants.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,8BAA8B;AAGzD,OAAO,KAAK,EACV,8BAA8B,EAC9B,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACrB,oBAAgB;AAEjB,eAAO,MAAM,gBAAgB,qDAAiC,CAAC;AAC/D,eAAO,MAAM,wBAAwB,qDAAiC,CAAC;AACvE,eAAO,MAAM,yBAAyB,qDAAkC,CAAC;AACzE,eAAO,MAAM,uBAAuB,qDAAgC,CAAC;AACrE,eAAO,MAAM,wBAAwB,4BAAiC,CAAC;AACvE,eAAO,MAAM,gBAAgB,uDAAmC,CAAC;AACjE,eAAO,MAAM,wBAAwB,uDAAmC,CAAC;AACzE,eAAO,MAAM,uBAAuB,uDAAkC,CAAC;AACvE,eAAO,MAAM,gBAAgB,8BAAmC,CAAC;AACjE,eAAO,MAAM,qBAAqB,+BAAgC,CAAC;AACnE,eAAO,MAAM,uBAAuB,+BAAkC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,2CAA2C,EAAE,MAAM,CAC9D,oBAAoB,EACpB,8BAA8B,CAoE/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAS5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAavE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,0CAA0C,QACjD,gCAMF,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;CAyBQ,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAYxD,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAYhE,CAAC"}
|
package/dist/constants.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import { type StateMetadata } from '@metamask/base-controller';\nimport {\n type CaipChainId,\n BtcScope,\n SolScope,\n TrxScope,\n} from '@metamask/keyring-api';\nimport { NetworkStatus } from '@metamask/network-controller';\n\nimport type {\n MultichainNetworkConfiguration,\n MultichainNetworkControllerState,\n MultichainNetworkMetadata,\n SupportedCaipChainId,\n} from './types';\n\nexport const BTC_NATIVE_ASSET = `${BtcScope.Mainnet}/slip44:0`;\nexport const BTC_TESTNET_NATIVE_ASSET = `${BtcScope.Testnet}/slip44:0`;\nexport const BTC_TESTNET4_NATIVE_ASSET = `${BtcScope.Testnet4}/slip44:0`;\nexport const BTC_SIGNET_NATIVE_ASSET = `${BtcScope.Signet}/slip44:0`;\nexport const BTC_REGTEST_NATIVE_ASSET = `${BtcScope.Regtest}/slip44:0`;\nexport const SOL_NATIVE_ASSET = `${SolScope.Mainnet}/slip44:501`;\nexport const SOL_TESTNET_NATIVE_ASSET = `${SolScope.Testnet}/slip44:501`;\nexport const SOL_DEVNET_NATIVE_ASSET = `${SolScope.Devnet}/slip44:501`;\nexport const TRX_NATIVE_ASSET = `${TrxScope.Mainnet}/slip44:195`;\nexport const TRX_NILE_NATIVE_ASSET = `${TrxScope.Nile}/slip44:195`;\nexport const TRX_SHASTA_NATIVE_ASSET = `${TrxScope.Shasta}/slip44:195`;\n\n/**\n * Supported networks by the MultichainNetworkController\n */\nexport const AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS: Record<\n SupportedCaipChainId,\n MultichainNetworkConfiguration\n> = {\n [BtcScope.Mainnet]: {\n chainId: BtcScope.Mainnet,\n name: 'Bitcoin',\n nativeCurrency: BTC_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Testnet]: {\n chainId: BtcScope.Testnet,\n name: 'Bitcoin Testnet',\n nativeCurrency: BTC_TESTNET_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Testnet4]: {\n chainId: BtcScope.Testnet4,\n name: 'Bitcoin Testnet4',\n nativeCurrency: BTC_TESTNET4_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Signet]: {\n chainId: BtcScope.Signet,\n name: 'Bitcoin Mutinynet',\n nativeCurrency: BTC_SIGNET_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Regtest]: {\n chainId: BtcScope.Regtest,\n name: 'Bitcoin Regtest',\n nativeCurrency: BTC_REGTEST_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Mainnet]: {\n chainId: SolScope.Mainnet,\n name: 'Solana',\n nativeCurrency: SOL_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Testnet]: {\n chainId: SolScope.Testnet,\n name: 'Solana Testnet',\n nativeCurrency: SOL_TESTNET_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Devnet]: {\n chainId: SolScope.Devnet,\n name: 'Solana Devnet',\n nativeCurrency: SOL_DEVNET_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Mainnet]: {\n chainId: TrxScope.Mainnet,\n name: 'Tron',\n nativeCurrency: TRX_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Nile]: {\n chainId: TrxScope.Nile,\n name: 'Tron Nile',\n nativeCurrency: TRX_NILE_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Shasta]: {\n chainId: TrxScope.Shasta,\n name: 'Tron Shasta',\n nativeCurrency: TRX_SHASTA_NATIVE_ASSET,\n isEvm: false,\n },\n};\n\n/**\n * Array of all the Non-EVM chain IDs.\n * This is a temporary mention until we develop\n * a more robust solution to identify testnet networks.\n */\nexport const NON_EVM_TESTNET_IDS: CaipChainId[] = [\n BtcScope.Testnet,\n BtcScope.Testnet4,\n BtcScope.Signet,\n BtcScope.Regtest,\n SolScope.Testnet,\n SolScope.Devnet,\n TrxScope.Nile,\n TrxScope.Shasta,\n];\n\n/**\n * Metadata for the supported networks.\n */\nexport const NETWORKS_METADATA: Record<string, MultichainNetworkMetadata> = {\n [BtcScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n [SolScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n [TrxScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n};\n\n/**\n * Default state of the {@link MultichainNetworkController}.\n *\n * @returns The default state of the {@link MultichainNetworkController}.\n */\nexport const getDefaultMultichainNetworkControllerState =\n (): MultichainNetworkControllerState => ({\n multichainNetworkConfigurationsByChainId:\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n selectedMultichainNetworkChainId: SolScope.Mainnet,\n isEvmSelected: true,\n networksWithTransactionActivity: {},\n });\n\n/**\n * {@link MultichainNetworkController}'s metadata.\n *\n * This allows us to choose if fields of the state should be persisted or not\n * using the `persist` flag; and if they can be sent to Sentry or not, using\n * the `anonymous` flag.\n */\nexport const MULTICHAIN_NETWORK_CONTROLLER_METADATA = {\n multichainNetworkConfigurationsByChainId: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n selectedMultichainNetworkChainId: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n isEvmSelected: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n networksWithTransactionActivity: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n} satisfies StateMetadata<MultichainNetworkControllerState>;\n\n/**\n * Multichain network ticker for the supported networks.\n * TODO: This should be part of the assets-controllers or the snap itself.\n */\nexport const MULTICHAIN_NETWORK_TICKER: Record<CaipChainId, string> = {\n [BtcScope.Mainnet]: 'BTC',\n [BtcScope.Testnet]: 'tBTC',\n [BtcScope.Testnet4]: 'tBTC',\n [BtcScope.Signet]: 'sBTC',\n [BtcScope.Regtest]: 'rBTC',\n [SolScope.Mainnet]: 'SOL',\n [SolScope.Testnet]: 'tSOL',\n [SolScope.Devnet]: 'dSOL',\n [TrxScope.Mainnet]: 'TRX',\n [TrxScope.Nile]: 'tTRX',\n [TrxScope.Shasta]: 'sTRX',\n} as const;\n\n/**\n * Multichain network asset decimals for the supported networks.\n * TODO: This should be part of the assets-controllers or the snap itself.\n */\nexport const MULTICHAIN_NETWORK_DECIMAL_PLACES: Record<CaipChainId, number> = {\n [BtcScope.Mainnet]: 8,\n [BtcScope.Testnet]: 8,\n [BtcScope.Testnet4]: 8,\n [BtcScope.Signet]: 8,\n [BtcScope.Regtest]: 8,\n [SolScope.Mainnet]: 5,\n [SolScope.Testnet]: 5,\n [SolScope.Devnet]: 5,\n [TrxScope.Mainnet]: 6,\n [TrxScope.Nile]: 6,\n [TrxScope.Shasta]: 6,\n} as const;\n"]}
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StateMetadata } from '@metamask/base-controller';\nimport { BtcScope, SolScope, TrxScope } from '@metamask/keyring-api';\nimport type { CaipChainId } from '@metamask/keyring-api';\nimport { NetworkStatus } from '@metamask/network-controller';\n\nimport type {\n MultichainNetworkConfiguration,\n MultichainNetworkControllerState,\n MultichainNetworkMetadata,\n SupportedCaipChainId,\n} from './types';\n\nexport const BTC_NATIVE_ASSET = `${BtcScope.Mainnet}/slip44:0`;\nexport const BTC_TESTNET_NATIVE_ASSET = `${BtcScope.Testnet}/slip44:0`;\nexport const BTC_TESTNET4_NATIVE_ASSET = `${BtcScope.Testnet4}/slip44:0`;\nexport const BTC_SIGNET_NATIVE_ASSET = `${BtcScope.Signet}/slip44:0`;\nexport const BTC_REGTEST_NATIVE_ASSET = `${BtcScope.Regtest}/slip44:0`;\nexport const SOL_NATIVE_ASSET = `${SolScope.Mainnet}/slip44:501`;\nexport const SOL_TESTNET_NATIVE_ASSET = `${SolScope.Testnet}/slip44:501`;\nexport const SOL_DEVNET_NATIVE_ASSET = `${SolScope.Devnet}/slip44:501`;\nexport const TRX_NATIVE_ASSET = `${TrxScope.Mainnet}/slip44:195`;\nexport const TRX_NILE_NATIVE_ASSET = `${TrxScope.Nile}/slip44:195`;\nexport const TRX_SHASTA_NATIVE_ASSET = `${TrxScope.Shasta}/slip44:195`;\n\n/**\n * Supported networks by the MultichainNetworkController\n */\nexport const AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS: Record<\n SupportedCaipChainId,\n MultichainNetworkConfiguration\n> = {\n [BtcScope.Mainnet]: {\n chainId: BtcScope.Mainnet,\n name: 'Bitcoin',\n nativeCurrency: BTC_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Testnet]: {\n chainId: BtcScope.Testnet,\n name: 'Bitcoin Testnet',\n nativeCurrency: BTC_TESTNET_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Testnet4]: {\n chainId: BtcScope.Testnet4,\n name: 'Bitcoin Testnet4',\n nativeCurrency: BTC_TESTNET4_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Signet]: {\n chainId: BtcScope.Signet,\n name: 'Bitcoin Mutinynet',\n nativeCurrency: BTC_SIGNET_NATIVE_ASSET,\n isEvm: false,\n },\n [BtcScope.Regtest]: {\n chainId: BtcScope.Regtest,\n name: 'Bitcoin Regtest',\n nativeCurrency: BTC_REGTEST_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Mainnet]: {\n chainId: SolScope.Mainnet,\n name: 'Solana',\n nativeCurrency: SOL_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Testnet]: {\n chainId: SolScope.Testnet,\n name: 'Solana Testnet',\n nativeCurrency: SOL_TESTNET_NATIVE_ASSET,\n isEvm: false,\n },\n [SolScope.Devnet]: {\n chainId: SolScope.Devnet,\n name: 'Solana Devnet',\n nativeCurrency: SOL_DEVNET_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Mainnet]: {\n chainId: TrxScope.Mainnet,\n name: 'Tron',\n nativeCurrency: TRX_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Nile]: {\n chainId: TrxScope.Nile,\n name: 'Tron Nile',\n nativeCurrency: TRX_NILE_NATIVE_ASSET,\n isEvm: false,\n },\n [TrxScope.Shasta]: {\n chainId: TrxScope.Shasta,\n name: 'Tron Shasta',\n nativeCurrency: TRX_SHASTA_NATIVE_ASSET,\n isEvm: false,\n },\n};\n\n/**\n * Array of all the Non-EVM chain IDs.\n * This is a temporary mention until we develop\n * a more robust solution to identify testnet networks.\n */\nexport const NON_EVM_TESTNET_IDS: CaipChainId[] = [\n BtcScope.Testnet,\n BtcScope.Testnet4,\n BtcScope.Signet,\n BtcScope.Regtest,\n SolScope.Testnet,\n SolScope.Devnet,\n TrxScope.Nile,\n TrxScope.Shasta,\n];\n\n/**\n * Metadata for the supported networks.\n */\nexport const NETWORKS_METADATA: Record<string, MultichainNetworkMetadata> = {\n [BtcScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n [SolScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n [TrxScope.Mainnet]: {\n features: [],\n status: NetworkStatus.Available,\n },\n};\n\n/**\n * Default state of the {@link MultichainNetworkController}.\n *\n * @returns The default state of the {@link MultichainNetworkController}.\n */\nexport const getDefaultMultichainNetworkControllerState =\n (): MultichainNetworkControllerState => ({\n multichainNetworkConfigurationsByChainId:\n AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS,\n selectedMultichainNetworkChainId: SolScope.Mainnet,\n isEvmSelected: true,\n networksWithTransactionActivity: {},\n });\n\n/**\n * {@link MultichainNetworkController}'s metadata.\n *\n * This allows us to choose if fields of the state should be persisted or not\n * using the `persist` flag; and if they can be sent to Sentry or not, using\n * the `anonymous` flag.\n */\nexport const MULTICHAIN_NETWORK_CONTROLLER_METADATA = {\n multichainNetworkConfigurationsByChainId: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n selectedMultichainNetworkChainId: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n isEvmSelected: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n networksWithTransactionActivity: {\n includeInStateLogs: true,\n persist: true,\n includeInDebugSnapshot: true,\n usedInUi: true,\n },\n} satisfies StateMetadata<MultichainNetworkControllerState>;\n\n/**\n * Multichain network ticker for the supported networks.\n * TODO: This should be part of the assets-controllers or the snap itself.\n */\nexport const MULTICHAIN_NETWORK_TICKER: Record<CaipChainId, string> = {\n [BtcScope.Mainnet]: 'BTC',\n [BtcScope.Testnet]: 'tBTC',\n [BtcScope.Testnet4]: 'tBTC',\n [BtcScope.Signet]: 'sBTC',\n [BtcScope.Regtest]: 'rBTC',\n [SolScope.Mainnet]: 'SOL',\n [SolScope.Testnet]: 'tSOL',\n [SolScope.Devnet]: 'dSOL',\n [TrxScope.Mainnet]: 'TRX',\n [TrxScope.Nile]: 'tTRX',\n [TrxScope.Shasta]: 'sTRX',\n} as const;\n\n/**\n * Multichain network asset decimals for the supported networks.\n * TODO: This should be part of the assets-controllers or the snap itself.\n */\nexport const MULTICHAIN_NETWORK_DECIMAL_PLACES: Record<CaipChainId, number> = {\n [BtcScope.Mainnet]: 8,\n [BtcScope.Testnet]: 8,\n [BtcScope.Testnet4]: 8,\n [BtcScope.Signet]: 8,\n [BtcScope.Regtest]: 8,\n [SolScope.Mainnet]: 5,\n [SolScope.Testnet]: 5,\n [SolScope.Devnet]: 5,\n [TrxScope.Mainnet]: 6,\n [TrxScope.Nile]: 6,\n [TrxScope.Shasta]: 6,\n} as const;\n"]}
|
package/dist/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA2Ba,QAAA,kCAAkC,GAAG,6BAA6B,CAAC","sourcesContent":["import type { AccountsControllerListMultichainAccountsAction } from '@metamask/accounts-controller';\nimport {\n
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA2Ba,QAAA,kCAAkC,GAAG,6BAA6B,CAAC","sourcesContent":["import type { AccountsControllerListMultichainAccountsAction } from '@metamask/accounts-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n} from '@metamask/base-controller';\nimport type {\n BtcScope,\n CaipAssetType,\n CaipChainId,\n SolScope,\n TrxScope,\n} from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { Messenger } from '@metamask/messenger';\nimport type {\n NetworkStatus,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerGetStateAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerGetSelectedChainIdAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkClientId,\n} from '@metamask/network-controller';\n\nimport type { ActiveNetworksByAddress } from './api/accounts-api';\nimport type { MultichainNetworkController } from './MultichainNetworkController/MultichainNetworkController';\n\nexport const MULTICHAIN_NETWORK_CONTROLLER_NAME = 'MultichainNetworkController';\n\nexport type MultichainNetworkMetadata = {\n features: string[];\n status: NetworkStatus;\n};\n\nexport type SupportedCaipChainId =\n | BtcScope.Mainnet\n | BtcScope.Testnet\n | BtcScope.Testnet4\n | BtcScope.Signet\n | BtcScope.Regtest\n | SolScope.Mainnet\n | SolScope.Testnet\n | SolScope.Devnet\n | TrxScope.Mainnet\n | TrxScope.Nile\n | TrxScope.Shasta;\n\nexport type CommonNetworkConfiguration = {\n /**\n * EVM network flag.\n */\n isEvm: boolean;\n /**\n * The chain ID of the network.\n */\n chainId: CaipChainId;\n /**\n * The name of the network.\n */\n name: string;\n};\n\nexport type NonEvmNetworkConfiguration = CommonNetworkConfiguration & {\n /**\n * EVM network flag.\n */\n isEvm: false;\n /**\n * The native asset type of the network.\n */\n nativeCurrency: CaipAssetType;\n};\n\n// TODO: The controller only supports non-EVM network configurations at the moment\n// Once we support Caip chain IDs for EVM networks, we can re-enable EVM network configurations\nexport type EvmNetworkConfiguration = CommonNetworkConfiguration & {\n /**\n * EVM network flag.\n */\n isEvm: true;\n /**\n * The native asset type of the network.\n * For EVM, this is the network ticker since there is no standard between\n * tickers and Caip IDs.\n */\n nativeCurrency: string;\n /**\n * The block explorers of the network.\n */\n blockExplorerUrls: string[];\n /**\n * The index of the default block explorer URL.\n */\n defaultBlockExplorerUrlIndex: number;\n};\n\nexport type MultichainNetworkConfiguration =\n | EvmNetworkConfiguration\n | NonEvmNetworkConfiguration;\n\n/**\n * State used by the {@link MultichainNetworkController} to cache network configurations.\n */\nexport type MultichainNetworkControllerState = {\n /**\n * The network configurations by chain ID.\n */\n multichainNetworkConfigurationsByChainId: Record<\n CaipChainId,\n MultichainNetworkConfiguration\n >;\n /**\n * The chain ID of the selected network.\n */\n selectedMultichainNetworkChainId: SupportedCaipChainId;\n /**\n * Whether EVM or non-EVM network is selected\n */\n isEvmSelected: boolean;\n /**\n * The active networks for the available EVM addresses (non-EVM networks will be supported in the future).\n */\n networksWithTransactionActivity: ActiveNetworksByAddress;\n};\n\n/**\n * Returns the state of the {@link MultichainNetworkController}.\n */\nexport type MultichainNetworkControllerGetStateAction =\n ControllerGetStateAction<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerState\n >;\n\nexport type SetActiveNetworkMethod = (\n id: SupportedCaipChainId | NetworkClientId,\n) => Promise<void>;\n\nexport type MultichainNetworkControllerSetActiveNetworkAction = {\n type: `${typeof MULTICHAIN_NETWORK_CONTROLLER_NAME}:setActiveNetwork`;\n handler: SetActiveNetworkMethod;\n};\n\nexport type MultichainNetworkControllerGetNetworksWithTransactionActivityByAccountsAction =\n {\n type: `${typeof MULTICHAIN_NETWORK_CONTROLLER_NAME}:getNetworksWithTransactionActivityByAccounts`;\n handler: MultichainNetworkController['getNetworksWithTransactionActivityByAccounts'];\n };\n\n/**\n * Event emitted when the state of the {@link MultichainNetworkController} changes.\n */\nexport type MultichainNetworkControllerStateChange = ControllerStateChangeEvent<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerState\n>;\n\nexport type MultichainNetworkControllerNetworkDidChangeEvent = {\n type: `${typeof MULTICHAIN_NETWORK_CONTROLLER_NAME}:networkDidChange`;\n payload: [NetworkClientId | SupportedCaipChainId];\n};\n\n/**\n * Actions exposed by the {@link MultichainNetworkController}.\n */\nexport type MultichainNetworkControllerActions =\n | MultichainNetworkControllerGetStateAction\n | MultichainNetworkControllerSetActiveNetworkAction\n | MultichainNetworkControllerGetNetworksWithTransactionActivityByAccountsAction;\n\n/**\n * Events emitted by {@link MultichainNetworkController}.\n */\nexport type MultichainNetworkControllerEvents =\n | MultichainNetworkControllerStateChange\n | MultichainNetworkControllerNetworkDidChangeEvent;\n\n/**\n * Actions that this controller is allowed to call.\n */\ntype AllowedActions =\n | NetworkControllerGetStateAction\n | NetworkControllerSetActiveNetworkAction\n | AccountsControllerListMultichainAccountsAction\n | NetworkControllerRemoveNetworkAction\n | NetworkControllerGetSelectedChainIdAction\n | NetworkControllerFindNetworkClientIdByChainIdAction;\n\n// Re-define event here to avoid circular dependency with AccountsController\nexport type AccountsControllerSelectedAccountChangeEvent = {\n type: `AccountsController:selectedAccountChange`;\n payload: [InternalAccount];\n};\n\n/**\n * Events that this controller is allowed to subscribe.\n */\ntype AllowedEvents = AccountsControllerSelectedAccountChangeEvent;\n\n/**\n * Messenger type for the MultichainNetworkController.\n */\nexport type MultichainNetworkControllerMessenger = Messenger<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerActions | AllowedActions,\n MultichainNetworkControllerEvents | AllowedEvents\n>;\n"]}
|
package/dist/types.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AccountsControllerListMultichainAccountsAction } from "@metamask/accounts-controller";
|
|
2
|
-
import {
|
|
2
|
+
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
3
3
|
import type { BtcScope, CaipAssetType, CaipChainId, SolScope, TrxScope } from "@metamask/keyring-api";
|
|
4
4
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
5
5
|
import type { Messenger } from "@metamask/messenger";
|
package/dist/types.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8CAA8C,EAAE,sCAAsC;AACpG,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AccountsControllerListMultichainAccountsAction } from "@metamask/accounts-controller";
|
|
2
|
-
import {
|
|
2
|
+
import type { ControllerGetStateAction, ControllerStateChangeEvent } from "@metamask/base-controller";
|
|
3
3
|
import type { BtcScope, CaipAssetType, CaipChainId, SolScope, TrxScope } from "@metamask/keyring-api";
|
|
4
4
|
import type { InternalAccount } from "@metamask/keyring-internal-api";
|
|
5
5
|
import type { Messenger } from "@metamask/messenger";
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8CAA8C,EAAE,sCAAsC;AACpG,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAA6B,CAAC","sourcesContent":["import type { AccountsControllerListMultichainAccountsAction } from '@metamask/accounts-controller';\nimport {\n
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAA6B,CAAC","sourcesContent":["import type { AccountsControllerListMultichainAccountsAction } from '@metamask/accounts-controller';\nimport type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n} from '@metamask/base-controller';\nimport type {\n BtcScope,\n CaipAssetType,\n CaipChainId,\n SolScope,\n TrxScope,\n} from '@metamask/keyring-api';\nimport type { InternalAccount } from '@metamask/keyring-internal-api';\nimport type { Messenger } from '@metamask/messenger';\nimport type {\n NetworkStatus,\n NetworkControllerSetActiveNetworkAction,\n NetworkControllerGetStateAction,\n NetworkControllerRemoveNetworkAction,\n NetworkControllerGetSelectedChainIdAction,\n NetworkControllerFindNetworkClientIdByChainIdAction,\n NetworkClientId,\n} from '@metamask/network-controller';\n\nimport type { ActiveNetworksByAddress } from './api/accounts-api';\nimport type { MultichainNetworkController } from './MultichainNetworkController/MultichainNetworkController';\n\nexport const MULTICHAIN_NETWORK_CONTROLLER_NAME = 'MultichainNetworkController';\n\nexport type MultichainNetworkMetadata = {\n features: string[];\n status: NetworkStatus;\n};\n\nexport type SupportedCaipChainId =\n | BtcScope.Mainnet\n | BtcScope.Testnet\n | BtcScope.Testnet4\n | BtcScope.Signet\n | BtcScope.Regtest\n | SolScope.Mainnet\n | SolScope.Testnet\n | SolScope.Devnet\n | TrxScope.Mainnet\n | TrxScope.Nile\n | TrxScope.Shasta;\n\nexport type CommonNetworkConfiguration = {\n /**\n * EVM network flag.\n */\n isEvm: boolean;\n /**\n * The chain ID of the network.\n */\n chainId: CaipChainId;\n /**\n * The name of the network.\n */\n name: string;\n};\n\nexport type NonEvmNetworkConfiguration = CommonNetworkConfiguration & {\n /**\n * EVM network flag.\n */\n isEvm: false;\n /**\n * The native asset type of the network.\n */\n nativeCurrency: CaipAssetType;\n};\n\n// TODO: The controller only supports non-EVM network configurations at the moment\n// Once we support Caip chain IDs for EVM networks, we can re-enable EVM network configurations\nexport type EvmNetworkConfiguration = CommonNetworkConfiguration & {\n /**\n * EVM network flag.\n */\n isEvm: true;\n /**\n * The native asset type of the network.\n * For EVM, this is the network ticker since there is no standard between\n * tickers and Caip IDs.\n */\n nativeCurrency: string;\n /**\n * The block explorers of the network.\n */\n blockExplorerUrls: string[];\n /**\n * The index of the default block explorer URL.\n */\n defaultBlockExplorerUrlIndex: number;\n};\n\nexport type MultichainNetworkConfiguration =\n | EvmNetworkConfiguration\n | NonEvmNetworkConfiguration;\n\n/**\n * State used by the {@link MultichainNetworkController} to cache network configurations.\n */\nexport type MultichainNetworkControllerState = {\n /**\n * The network configurations by chain ID.\n */\n multichainNetworkConfigurationsByChainId: Record<\n CaipChainId,\n MultichainNetworkConfiguration\n >;\n /**\n * The chain ID of the selected network.\n */\n selectedMultichainNetworkChainId: SupportedCaipChainId;\n /**\n * Whether EVM or non-EVM network is selected\n */\n isEvmSelected: boolean;\n /**\n * The active networks for the available EVM addresses (non-EVM networks will be supported in the future).\n */\n networksWithTransactionActivity: ActiveNetworksByAddress;\n};\n\n/**\n * Returns the state of the {@link MultichainNetworkController}.\n */\nexport type MultichainNetworkControllerGetStateAction =\n ControllerGetStateAction<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerState\n >;\n\nexport type SetActiveNetworkMethod = (\n id: SupportedCaipChainId | NetworkClientId,\n) => Promise<void>;\n\nexport type MultichainNetworkControllerSetActiveNetworkAction = {\n type: `${typeof MULTICHAIN_NETWORK_CONTROLLER_NAME}:setActiveNetwork`;\n handler: SetActiveNetworkMethod;\n};\n\nexport type MultichainNetworkControllerGetNetworksWithTransactionActivityByAccountsAction =\n {\n type: `${typeof MULTICHAIN_NETWORK_CONTROLLER_NAME}:getNetworksWithTransactionActivityByAccounts`;\n handler: MultichainNetworkController['getNetworksWithTransactionActivityByAccounts'];\n };\n\n/**\n * Event emitted when the state of the {@link MultichainNetworkController} changes.\n */\nexport type MultichainNetworkControllerStateChange = ControllerStateChangeEvent<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerState\n>;\n\nexport type MultichainNetworkControllerNetworkDidChangeEvent = {\n type: `${typeof MULTICHAIN_NETWORK_CONTROLLER_NAME}:networkDidChange`;\n payload: [NetworkClientId | SupportedCaipChainId];\n};\n\n/**\n * Actions exposed by the {@link MultichainNetworkController}.\n */\nexport type MultichainNetworkControllerActions =\n | MultichainNetworkControllerGetStateAction\n | MultichainNetworkControllerSetActiveNetworkAction\n | MultichainNetworkControllerGetNetworksWithTransactionActivityByAccountsAction;\n\n/**\n * Events emitted by {@link MultichainNetworkController}.\n */\nexport type MultichainNetworkControllerEvents =\n | MultichainNetworkControllerStateChange\n | MultichainNetworkControllerNetworkDidChangeEvent;\n\n/**\n * Actions that this controller is allowed to call.\n */\ntype AllowedActions =\n | NetworkControllerGetStateAction\n | NetworkControllerSetActiveNetworkAction\n | AccountsControllerListMultichainAccountsAction\n | NetworkControllerRemoveNetworkAction\n | NetworkControllerGetSelectedChainIdAction\n | NetworkControllerFindNetworkClientIdByChainIdAction;\n\n// Re-define event here to avoid circular dependency with AccountsController\nexport type AccountsControllerSelectedAccountChangeEvent = {\n type: `AccountsController:selectedAccountChange`;\n payload: [InternalAccount];\n};\n\n/**\n * Events that this controller is allowed to subscribe.\n */\ntype AllowedEvents = AccountsControllerSelectedAccountChangeEvent;\n\n/**\n * Messenger type for the MultichainNetworkController.\n */\nexport type MultichainNetworkControllerMessenger = Messenger<\n typeof MULTICHAIN_NETWORK_CONTROLLER_NAME,\n MultichainNetworkControllerActions | AllowedActions,\n MultichainNetworkControllerEvents | AllowedEvents\n>;\n"]}
|
package/dist/utils.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.cjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"utils.cjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NetworkConfiguration } from '@metamask/network-controller';\nimport {\n KnownCaipNamespace,\n toCaipChainId,\n parseCaipChainId,\n hexToNumber,\n add0x,\n} from '@metamask/utils';\nimport type { Hex, CaipChainId } from '@metamask/utils';\n\nimport { AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS } from './constants';\nimport type {\n SupportedCaipChainId,\n MultichainNetworkConfiguration,\n} from './types';\n\n/**\n * Checks if the chain ID is EVM.\n *\n * @param chainId - The account type to check.\n * @returns Whether the network is EVM.\n */\nexport function isEvmCaipChainId(chainId: CaipChainId): boolean {\n const { namespace } = parseCaipChainId(chainId);\n return namespace === (KnownCaipNamespace.Eip155 as string);\n}\n\n/**\n * Returns the chain id of the non-EVM network based on the account scopes.\n *\n * @param scopes - The scopes to check.\n * @returns The caip chain id of the non-EVM network.\n */\nexport function getChainIdForNonEvm(\n scopes: CaipChainId[],\n): SupportedCaipChainId {\n const supportedScope = scopes.find((scope) =>\n Object.keys(AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS).includes(scope),\n );\n if (supportedScope) {\n return supportedScope as SupportedCaipChainId;\n }\n\n throw new Error(`Unsupported scope: ${scopes.join(', ')}.`);\n}\n\n/**\n * Checks if the Caip chain ID is supported.\n *\n * @param id - The Caip chain IDto check.\n * @returns Whether the chain ID is supported.\n */\nexport function checkIfSupportedCaipChainId(\n id: CaipChainId,\n): id is SupportedCaipChainId {\n // Check if the chain id is supported\n return Object.keys(AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS).includes(id);\n}\n\n/**\n * Converts a hex chain ID to a Caip chain ID.\n *\n * @param chainId - The hex chain ID to convert.\n * @returns The Caip chain ID.\n */\nexport const toEvmCaipChainId = (chainId: Hex): CaipChainId =>\n toCaipChainId(KnownCaipNamespace.Eip155, hexToNumber(chainId).toString());\n\n/**\n * Convert an eip155 CAIP chain ID to a hex chain ID.\n *\n * @param chainId - The CAIP chain ID to convert.\n * @returns The hex chain ID.\n */\nexport function convertEvmCaipToHexChainId(chainId: CaipChainId): Hex {\n const { namespace, reference } = parseCaipChainId(chainId);\n if (namespace === (KnownCaipNamespace.Eip155 as string)) {\n return add0x(parseInt(reference, 10).toString(16));\n }\n\n throw new Error(\n `Unsupported CAIP chain ID namespace: ${namespace}. Only eip155 is supported.`,\n );\n}\n\n/**\n * Updates a network configuration to the format used by the MultichainNetworkController.\n * This method is exclusive for EVM networks with hex identifiers from the NetworkController.\n *\n * @param network - The network configuration to update.\n * @returns The updated network configuration.\n */\nexport const toMultichainNetworkConfiguration = (\n network: NetworkConfiguration,\n): MultichainNetworkConfiguration => {\n const {\n chainId,\n name,\n rpcEndpoints,\n defaultRpcEndpointIndex,\n nativeCurrency,\n blockExplorerUrls,\n defaultBlockExplorerUrlIndex,\n } = network;\n return {\n chainId: toEvmCaipChainId(chainId),\n isEvm: true,\n name: name || rpcEndpoints[defaultRpcEndpointIndex].url,\n nativeCurrency,\n blockExplorerUrls,\n defaultBlockExplorerUrlIndex: defaultBlockExplorerUrlIndex || 0,\n };\n};\n\n/**\n * Updates a record of network configurations to the format used by the MultichainNetworkController.\n * This method is exclusive for EVM networks with hex identifiers from the NetworkController.\n *\n * @param networkConfigurationsByChainId - The network configurations to update.\n * @returns The updated network configurations.\n */\nexport const toMultichainNetworkConfigurationsByChainId = (\n networkConfigurationsByChainId: Record<string, NetworkConfiguration>,\n): Record<CaipChainId, MultichainNetworkConfiguration> =>\n Object.entries(networkConfigurationsByChainId).reduce(\n (acc, [, network]) => ({\n ...acc,\n [toEvmCaipChainId(network.chainId)]:\n toMultichainNetworkConfiguration(network),\n }),\n {},\n );\n\n// TODO: This currently isn't being used anymore but could benefit from being moved to @metamask/utils\n/**\n * Type guard to check if a namespace is a known CAIP namespace.\n *\n * @param namespace - The namespace to check\n * @returns Whether the namespace is a known CAIP namespace\n */\nexport function isKnownCaipNamespace(\n namespace: string,\n): namespace is KnownCaipNamespace {\n return Object.values<string>(KnownCaipNamespace).includes(namespace);\n}\n"]}
|
package/dist/utils.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { NetworkConfiguration } from "@metamask/network-controller";
|
|
2
|
-
import {
|
|
2
|
+
import { KnownCaipNamespace } from "@metamask/utils";
|
|
3
|
+
import type { Hex, CaipChainId } from "@metamask/utils";
|
|
3
4
|
import type { SupportedCaipChainId, MultichainNetworkConfiguration } from "./types.cjs";
|
|
4
5
|
/**
|
|
5
6
|
* Checks if the chain ID is EVM.
|
package/dist/utils.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AACzE,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AACzE,OAAO,EACL,kBAAkB,EAKnB,wBAAwB;AACzB,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,wBAAwB;AAGxD,OAAO,KAAK,EACV,oBAAoB,EACpB,8BAA8B,EAC/B,oBAAgB;AAEjB;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAG9D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EAAE,GACpB,oBAAoB,CAStB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,WAAW,GACd,EAAE,IAAI,oBAAoB,CAG5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,YAAa,GAAG,KAAG,WAC2B,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,GAAG,CASpE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,YAClC,oBAAoB,KAC5B,8BAkBF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0CAA0C,mCACrB,OAAO,MAAM,EAAE,oBAAoB,CAAC,KACnE,OAAO,WAAW,EAAE,8BAA8B,CAQlD,CAAC;AAGJ;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,GAChB,SAAS,IAAI,kBAAkB,CAEjC"}
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { NetworkConfiguration } from "@metamask/network-controller";
|
|
2
|
-
import {
|
|
2
|
+
import { KnownCaipNamespace } from "@metamask/utils";
|
|
3
|
+
import type { Hex, CaipChainId } from "@metamask/utils";
|
|
3
4
|
import type { SupportedCaipChainId, MultichainNetworkConfiguration } from "./types.mjs";
|
|
4
5
|
/**
|
|
5
6
|
* Checks if the chain ID is EVM.
|
package/dist/utils.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AACzE,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qCAAqC;AACzE,OAAO,EACL,kBAAkB,EAKnB,wBAAwB;AACzB,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,wBAAwB;AAGxD,OAAO,KAAK,EACV,oBAAoB,EACpB,8BAA8B,EAC/B,oBAAgB;AAEjB;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAG9D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EAAE,GACpB,oBAAoB,CAStB;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,WAAW,GACd,EAAE,IAAI,oBAAoB,CAG5B;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,YAAa,GAAG,KAAG,WAC2B,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,GAAG,CASpE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,YAClC,oBAAoB,KAC5B,8BAkBF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0CAA0C,mCACrB,OAAO,MAAM,EAAE,oBAAoB,CAAC,KACnE,OAAO,WAAW,EAAE,8BAA8B,CAQlD,CAAC;AAGJ;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,GAChB,SAAS,IAAI,kBAAkB,CAEjC"}
|
package/dist/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NetworkConfiguration } from '@metamask/network-controller';\nimport {\n KnownCaipNamespace,\n toCaipChainId,\n parseCaipChainId,\n hexToNumber,\n add0x,\n} from '@metamask/utils';\nimport type { Hex, CaipChainId } from '@metamask/utils';\n\nimport { AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS } from './constants';\nimport type {\n SupportedCaipChainId,\n MultichainNetworkConfiguration,\n} from './types';\n\n/**\n * Checks if the chain ID is EVM.\n *\n * @param chainId - The account type to check.\n * @returns Whether the network is EVM.\n */\nexport function isEvmCaipChainId(chainId: CaipChainId): boolean {\n const { namespace } = parseCaipChainId(chainId);\n return namespace === (KnownCaipNamespace.Eip155 as string);\n}\n\n/**\n * Returns the chain id of the non-EVM network based on the account scopes.\n *\n * @param scopes - The scopes to check.\n * @returns The caip chain id of the non-EVM network.\n */\nexport function getChainIdForNonEvm(\n scopes: CaipChainId[],\n): SupportedCaipChainId {\n const supportedScope = scopes.find((scope) =>\n Object.keys(AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS).includes(scope),\n );\n if (supportedScope) {\n return supportedScope as SupportedCaipChainId;\n }\n\n throw new Error(`Unsupported scope: ${scopes.join(', ')}.`);\n}\n\n/**\n * Checks if the Caip chain ID is supported.\n *\n * @param id - The Caip chain IDto check.\n * @returns Whether the chain ID is supported.\n */\nexport function checkIfSupportedCaipChainId(\n id: CaipChainId,\n): id is SupportedCaipChainId {\n // Check if the chain id is supported\n return Object.keys(AVAILABLE_MULTICHAIN_NETWORK_CONFIGURATIONS).includes(id);\n}\n\n/**\n * Converts a hex chain ID to a Caip chain ID.\n *\n * @param chainId - The hex chain ID to convert.\n * @returns The Caip chain ID.\n */\nexport const toEvmCaipChainId = (chainId: Hex): CaipChainId =>\n toCaipChainId(KnownCaipNamespace.Eip155, hexToNumber(chainId).toString());\n\n/**\n * Convert an eip155 CAIP chain ID to a hex chain ID.\n *\n * @param chainId - The CAIP chain ID to convert.\n * @returns The hex chain ID.\n */\nexport function convertEvmCaipToHexChainId(chainId: CaipChainId): Hex {\n const { namespace, reference } = parseCaipChainId(chainId);\n if (namespace === (KnownCaipNamespace.Eip155 as string)) {\n return add0x(parseInt(reference, 10).toString(16));\n }\n\n throw new Error(\n `Unsupported CAIP chain ID namespace: ${namespace}. Only eip155 is supported.`,\n );\n}\n\n/**\n * Updates a network configuration to the format used by the MultichainNetworkController.\n * This method is exclusive for EVM networks with hex identifiers from the NetworkController.\n *\n * @param network - The network configuration to update.\n * @returns The updated network configuration.\n */\nexport const toMultichainNetworkConfiguration = (\n network: NetworkConfiguration,\n): MultichainNetworkConfiguration => {\n const {\n chainId,\n name,\n rpcEndpoints,\n defaultRpcEndpointIndex,\n nativeCurrency,\n blockExplorerUrls,\n defaultBlockExplorerUrlIndex,\n } = network;\n return {\n chainId: toEvmCaipChainId(chainId),\n isEvm: true,\n name: name || rpcEndpoints[defaultRpcEndpointIndex].url,\n nativeCurrency,\n blockExplorerUrls,\n defaultBlockExplorerUrlIndex: defaultBlockExplorerUrlIndex || 0,\n };\n};\n\n/**\n * Updates a record of network configurations to the format used by the MultichainNetworkController.\n * This method is exclusive for EVM networks with hex identifiers from the NetworkController.\n *\n * @param networkConfigurationsByChainId - The network configurations to update.\n * @returns The updated network configurations.\n */\nexport const toMultichainNetworkConfigurationsByChainId = (\n networkConfigurationsByChainId: Record<string, NetworkConfiguration>,\n): Record<CaipChainId, MultichainNetworkConfiguration> =>\n Object.entries(networkConfigurationsByChainId).reduce(\n (acc, [, network]) => ({\n ...acc,\n [toEvmCaipChainId(network.chainId)]:\n toMultichainNetworkConfiguration(network),\n }),\n {},\n );\n\n// TODO: This currently isn't being used anymore but could benefit from being moved to @metamask/utils\n/**\n * Type guard to check if a namespace is a known CAIP namespace.\n *\n * @param namespace - The namespace to check\n * @returns Whether the namespace is a known CAIP namespace\n */\nexport function isKnownCaipNamespace(\n namespace: string,\n): namespace is KnownCaipNamespace {\n return Object.values<string>(KnownCaipNamespace).includes(namespace);\n}\n"]}
|