Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 53 additions & 1 deletion packages/controller-utils/src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ export const BUILT_IN_CUSTOM_NETWORKS_RPC = {
'megaeth-testnet': 'https://carrot.megaeth.com/rpc',
'megaeth-testnet-v2': 'https://carrot.megaeth.com/rpc',
'monad-testnet': 'https://testnet-rpc.monad.xyz',
// Mainnet networks with custom RPC URLs
'hyper-evm-mainnet': 'https://rpc.hyperliquid.xyz/evm',
'zksync-era-mainnet': 'https://mainnet.era.zksync.io',
'megaeth-mainnet': 'https://mainnet.megaeth.com/rpc',
};

/**
Expand Down Expand Up @@ -178,6 +182,54 @@ export const BUILT_IN_NETWORKS = {
blockExplorerUrl: BlockExplorerUrl['sei-mainnet'],
},
},
// Avalanche
[NetworkType['avalanche-mainnet']]: {
chainId: ChainId['avalanche-mainnet'],
ticker: NetworksTicker['avalanche-mainnet'],
rpcPrefs: {
blockExplorerUrl: BlockExplorerUrl['avalanche-mainnet'],
},
},
// HyperEVM
[NetworkType['hyper-evm-mainnet']]: {
chainId: ChainId['hyper-evm-mainnet'],
ticker: NetworksTicker['hyper-evm-mainnet'],
rpcPrefs: {
blockExplorerUrl: BlockExplorerUrl['hyper-evm-mainnet'],
},
},
// Palm
[NetworkType['palm-mainnet']]: {
chainId: ChainId['palm-mainnet'],
ticker: NetworksTicker['palm-mainnet'],
rpcPrefs: {
blockExplorerUrl: BlockExplorerUrl['palm-mainnet'],
},
},
// zkSync Era
[NetworkType['zksync-era-mainnet']]: {
chainId: ChainId['zksync-era-mainnet'],
ticker: NetworksTicker['zksync-era-mainnet'],
rpcPrefs: {
blockExplorerUrl: BlockExplorerUrl['zksync-era-mainnet'],
},
},
// Monad
[NetworkType['monad-mainnet']]: {
chainId: ChainId['monad-mainnet'],
ticker: NetworksTicker['monad-mainnet'],
rpcPrefs: {
blockExplorerUrl: BlockExplorerUrl['monad-mainnet'],
},
},
// MegaEth
[NetworkType['megaeth-mainnet']]: {
chainId: ChainId['megaeth-mainnet'],
ticker: NetworksTicker['megaeth-mainnet'],
rpcPrefs: {
blockExplorerUrl: BlockExplorerUrl['megaeth-mainnet'],
},
},
[NetworkType.rpc]: {
chainId: undefined,
blockExplorerUrl: undefined,
Expand All @@ -198,7 +250,7 @@ export const NETWORKS_BYPASSING_VALIDATION = {
'0x3e7': {
name: 'HyperEVM',
symbol: 'HYPE',
rpcUrl: 'https://rpc.hyperliquid.xyz',
rpcUrl: 'https://rpc.hyperliquid.xyz/evm',
},
};

Expand Down
44 changes: 43 additions & 1 deletion packages/controller-utils/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,18 @@ export const InfuraNetworkType = {
'optimism-mainnet': 'optimism-mainnet',
'polygon-mainnet': 'polygon-mainnet',
'sei-mainnet': 'sei-mainnet',
// Avalanche
'avalanche-mainnet': 'avalanche-mainnet',
// HyperEVM
'hyper-evm-mainnet': 'hyper-evm-mainnet',
// Palm
'palm-mainnet': 'palm-mainnet',
// zkSync Era
'zksync-era-mainnet': 'zksync-era-mainnet',
// Monad
'monad-mainnet': 'monad-mainnet',
// MegaEth
'megaeth-mainnet': 'megaeth-mainnet',
} as const;

export type InfuraNetworkType =
Expand Down Expand Up @@ -98,6 +110,12 @@ export enum BuiltInNetworkName {
OptimismMainnet = 'optimism-mainnet',
PolygonMainnet = 'polygon-mainnet',
SeiMainnet = 'sei-mainnet',
AvalancheMainnet = 'avalanche-mainnet',
HyperEVMMainnet = 'hyper-evm-mainnet',
PalmMainnet = 'palm-mainnet',
ZkSyncEraMainnet = 'zksync-era-mainnet',
MonadMainnet = 'monad-mainnet',
MegaEthMainnet = 'megaeth-mainnet',
}

/**
Expand Down Expand Up @@ -125,6 +143,12 @@ export const ChainId = {
[BuiltInNetworkName.OptimismMainnet]: '0xa', // toHex(10)
[BuiltInNetworkName.PolygonMainnet]: '0x89', // toHex(137)
[BuiltInNetworkName.SeiMainnet]: '0x531', // toHex(1329)
[BuiltInNetworkName.AvalancheMainnet]: '0xa86a', // toHex(43114)
[BuiltInNetworkName.HyperEVMMainnet]: '0x3e7', // toHex(999)
[BuiltInNetworkName.PalmMainnet]: '0x2a15c308d', // toHex(11297108109)
[BuiltInNetworkName.ZkSyncEraMainnet]: '0x144', // toHex(324)
[BuiltInNetworkName.MonadMainnet]: '0x8f', // toHex(143)
[BuiltInNetworkName.MegaEthMainnet]: '0x10e6', // toHex(4326)
} as const;
export type ChainId = (typeof ChainId)[keyof typeof ChainId];

Expand Down Expand Up @@ -154,6 +178,12 @@ export enum NetworksTicker {
'optimism-mainnet' = 'ETH',
'polygon-mainnet' = 'POL',
'sei-mainnet' = 'SEI',
'avalanche-mainnet' = 'AVAX',
'hyper-evm-mainnet' = 'HYPE',
'palm-mainnet' = 'PALM',
'zksync-era-mainnet' = 'ZKSYNC',
'monad-mainnet' = 'MONAD',
'megaeth-mainnet' = 'MEGAETH',
rpc = '',
}
/* eslint-enable @typescript-eslint/naming-convention */
Expand All @@ -177,7 +207,13 @@ export const BlockExplorerUrl = {
[BuiltInNetworkName.BscMainnet]: 'https://bscscan.com',
[BuiltInNetworkName.OptimismMainnet]: 'https://optimistic.etherscan.io',
[BuiltInNetworkName.PolygonMainnet]: 'https://polygonscan.com',
[BuiltInNetworkName.SeiMainnet]: 'https://seitrace.com',
[BuiltInNetworkName.SeiMainnet]: 'https://seitrace.com/',
[BuiltInNetworkName.AvalancheMainnet]: 'https://snowtrace.io',
[BuiltInNetworkName.HyperEVMMainnet]: 'https://hyperevmscan.io/',
[BuiltInNetworkName.PalmMainnet]: 'https://palm.chainlens.com',
[BuiltInNetworkName.ZkSyncEraMainnet]: 'https://explorer.zksync.io/',
[BuiltInNetworkName.MonadMainnet]: 'https://monadscan.com/',
[BuiltInNetworkName.MegaEthMainnet]: 'https://explorer.megaeth.com',
} as const satisfies Record<BuiltInNetworkType, string>;
export type BlockExplorerUrl =
(typeof BlockExplorerUrl)[keyof typeof BlockExplorerUrl];
Expand All @@ -201,6 +237,12 @@ export const NetworkNickname = {
[BuiltInNetworkName.OptimismMainnet]: 'Optimism Mainnet',
[BuiltInNetworkName.PolygonMainnet]: 'Polygon Mainnet',
[BuiltInNetworkName.SeiMainnet]: 'Sei Mainnet',
[BuiltInNetworkName.AvalancheMainnet]: 'Avalanche Mainnet',
[BuiltInNetworkName.HyperEVMMainnet]: 'HyperEVM Mainnet',
[BuiltInNetworkName.PalmMainnet]: 'Palm Mainnet',
[BuiltInNetworkName.ZkSyncEraMainnet]: 'zkSync Era Mainnet',
[BuiltInNetworkName.MonadMainnet]: 'Monad Mainnet',
[BuiltInNetworkName.MegaEthMainnet]: 'MegaETH Mainnet',
} as const satisfies Record<BuiltInNetworkType, string>;
export type NetworkNickname =
(typeof NetworkNickname)[keyof typeof NetworkNickname];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,38 +153,40 @@ export type NetworkConfig = {
* @returns The default state with pre-enabled networks.
*/
const getDefaultNetworkEnablementControllerState =
(): NetworkEnablementControllerState => ({
enabledNetworkMap: {
[KnownCaipNamespace.Eip155]: {
[ChainId[BuiltInNetworkName.Mainnet]]: true,
[ChainId[BuiltInNetworkName.LineaMainnet]]: true,
[ChainId[BuiltInNetworkName.BaseMainnet]]: true,
[ChainId[BuiltInNetworkName.ArbitrumOne]]: true,
[ChainId[BuiltInNetworkName.BscMainnet]]: true,
[ChainId[BuiltInNetworkName.OptimismMainnet]]: true,
[ChainId[BuiltInNetworkName.PolygonMainnet]]: true,
[ChainId[BuiltInNetworkName.SeiMainnet]]: true,
(): NetworkEnablementControllerState => {
// Build the enabled EVM networks map from POPULAR_NETWORKS
const evmNetworks = POPULAR_NETWORKS.reduce<Record<Hex, boolean>>(
(acc, chainId) => {
acc[chainId as Hex] = true;
return acc;
},
[KnownCaipNamespace.Solana]: {
[SolScope.Mainnet]: true,
[SolScope.Testnet]: false,
[SolScope.Devnet]: false,
},
[KnownCaipNamespace.Bip122]: {
[BtcScope.Mainnet]: true,
[BtcScope.Testnet]: false,
[BtcScope.Signet]: false,
},
[KnownCaipNamespace.Tron]: {
[TrxScope.Mainnet]: true,
[TrxScope.Nile]: false,
[TrxScope.Shasta]: false,
{},
);

return {
enabledNetworkMap: {
[KnownCaipNamespace.Eip155]: evmNetworks,
[KnownCaipNamespace.Solana]: {
[SolScope.Mainnet]: true,
[SolScope.Testnet]: false,
[SolScope.Devnet]: false,
},
[KnownCaipNamespace.Bip122]: {
[BtcScope.Mainnet]: true,
[BtcScope.Testnet]: false,
[BtcScope.Signet]: false,
},
[KnownCaipNamespace.Tron]: {
[TrxScope.Mainnet]: true,
[TrxScope.Nile]: false,
[TrxScope.Shasta]: false,
},
},
},
// nativeAssetIdentifiers is initialized as empty and should be populated
// by the client using initNativeAssetIdentifiers() during controller init
nativeAssetIdentifiers: {},
});
// nativeAssetIdentifiers is initialized as empty and should be populated
// by the client using initNativeAssetIdentifiers() during controller init
nativeAssetIdentifiers: {},
};
};

// Metadata for the controller state
const metadata = {
Expand Down
Loading