diff --git a/modules/bitgo/test/v2/unit/keychains.ts b/modules/bitgo/test/v2/unit/keychains.ts index 3c7a297948..2b1ed6731c 100644 --- a/modules/bitgo/test/v2/unit/keychains.ts +++ b/modules/bitgo/test/v2/unit/keychains.ts @@ -114,6 +114,7 @@ describe('V2 Keychains', function () { n.asset !== UnderlyingAsset.MEGAETH && n.asset !== UnderlyingAsset.ARCUSDC && n.asset !== UnderlyingAsset.ZKSYNCERA && + n.asset !== UnderlyingAsset.HYPE && coinFamilyValues.includes(n.name) ); diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index a18bcc6ebc..6724c69c66 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -77,6 +77,7 @@ interface EnvironmentTemplate { sgbExplorerBaseUrl?: string; sgbExplorerApiToken?: string; icpNodeUrl: string; + hypeNodeUrl: string; wemixExplorerBaseUrl?: string; wemixExplorerApiToken?: string; monExplorerBaseUrl?: string; @@ -348,6 +349,7 @@ const mainnetBase: EnvironmentTemplate = { }, }, icpNodeUrl: 'https://ic0.app', + hypeNodeUrl: 'https://api.hyperliquid.xyz', worldExplorerBaseUrl: 'https://worldscan.org/', somniaExplorerBaseUrl: 'https://mainnet.somnia.w3us.site/', soneiumExplorerBaseUrl: 'https://soneium.blockscout.com', @@ -425,6 +427,7 @@ const testnetBase: EnvironmentTemplate = { xdcExplorerBaseUrl: 'https://api.etherscan.io/v2', sgbExplorerBaseUrl: 'https://coston-explorer.flare.network', icpNodeUrl: 'https://ic0.app', + hypeNodeUrl: 'https://api.hyperliquid-testnet.xyz', monExplorerBaseUrl: 'https://api.etherscan.io/v2', worldExplorerBaseUrl: 'https://sepolia.worldscan.org/', somniaExplorerBaseUrl: 'https://shannon-explorer.somnia.network/', diff --git a/modules/statics/src/allCoinsAndTokens.ts b/modules/statics/src/allCoinsAndTokens.ts index dfcbf49817..ba02c3d2e1 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -104,6 +104,7 @@ import { FLR_FEATURES, GENERIC_TOKEN_FEATURES, HBAR_FEATURES, + HYPE_FEATURES, ICP_FEATURES, INJECTIVE_FEATURES, IOTA_FEATURES, @@ -1749,6 +1750,28 @@ export const allCoinsAndTokens = [ CoinFeature.STAKING, ] ), + account( + '1d7327a1-80fc-4913-9b72-457087811262', + 'hype', + 'Hyperliquid', + Networks.main.hype, + 8, + UnderlyingAsset.HYPE, + BaseUnit.HYPE, + HYPE_FEATURES, + KeyCurve.Secp256k1 + ), + account( + 'd0754b12-26fa-47c2-887f-f19099156ea2', + 'thype', + 'Hyperliquid Testnet', + Networks.test.hype, + 8, + UnderlyingAsset.HYPE, + BaseUnit.HYPE, + HYPE_FEATURES, + KeyCurve.Secp256k1 + ), hypeEvm( 'e907fdbd-2c5d-45d6-b622-9da38937da73', 'hypeevm', diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index 985ad317ed..258292fb49 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -92,6 +92,7 @@ export enum CoinFamily { PHRS = 'phrs', CTC = 'ctc', HYPEEVM = 'hypeevm', + HYPE = 'hype', // HyperCore L1 NEAR = 'near', OAS = 'oas', OFC = 'ofc', @@ -640,6 +641,7 @@ export enum UnderlyingAsset { PLUME = 'plume', CTC = 'ctc', HYPEEVM = 'hypeevm', + HYPE = 'hype', // HyperCore L1 RBTC = 'rbtc', // RSK main coin SEI = 'sei', SEIEVM = 'seievm', @@ -3772,6 +3774,7 @@ export enum BaseUnit { RUNE = 'rune', TAO = 'rao', ICP = 'e8s', + HYPE = 'hype', MANTRA = 'uom', POLYX = 'micropolyx', CRONOS = 'basecro', diff --git a/modules/statics/src/coinFeatures.ts b/modules/statics/src/coinFeatures.ts index 94290bd20f..ab9620e112 100644 --- a/modules/statics/src/coinFeatures.ts +++ b/modules/statics/src/coinFeatures.ts @@ -600,6 +600,7 @@ export const COREDAO_FEATURES = [ CoinFeature.ERC20_BULK_TRANSACTION, ]; export const TEMPO_FEATURES = [...EVM_FEATURES]; +export const HYPE_FEATURES = [...ACCOUNT_COIN_DEFAULT_FEATURES]; export const APECHAIN_FEATURES = [ ...ETH_FEATURES, CoinFeature.TSS, diff --git a/modules/statics/src/coins/ofcCoins.ts b/modules/statics/src/coins/ofcCoins.ts index a0863b9246..038a2808b5 100644 --- a/modules/statics/src/coins/ofcCoins.ts +++ b/modules/statics/src/coins/ofcCoins.ts @@ -238,6 +238,15 @@ export const ofcCoins = [ UnderlyingAsset.HYPEEVM, CoinKind.CRYPTO ), + ofc('10ca4011-4409-42af-a275-bb531ae717b7', 'ofchype', 'Hyperliquid', 8, UnderlyingAsset.HYPE, CoinKind.CRYPTO), + tofc( + 'a76394f3-7c14-4d27-bfa8-8920a3ea30d0', + 'ofcthype', + 'Testnet Hyperliquid', + 8, + UnderlyingAsset.HYPE, + CoinKind.CRYPTO + ), ofc('c7350490-f1c0-4f76-8db4-832dc18a2efe', 'ofcseievm', 'Sei EVM', 18, UnderlyingAsset.SEIEVM, CoinKind.CRYPTO), tofc( '12d3f26a-dede-429b-8ba6-126293a8e02a', diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index b7e685d5c2..030efb7690 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -1666,6 +1666,20 @@ class HypeEVM extends Mainnet implements EthereumNetwork { batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } +class Hyperliquid extends Mainnet implements AccountNetwork { + name = 'Hyperliquid'; + family = CoinFamily.HYPE; + explorerUrl = 'https://app.hyperliquid.xyz/explorer'; + accountExplorerUrl = 'https://app.hyperliquid.xyz/explorer'; +} + +class HyperliquidTestnet extends Testnet implements AccountNetwork { + name = 'HyperliquidTestnet'; + family = CoinFamily.HYPE; + explorerUrl = 'https://app.hyperliquid-testnet.xyz/explorer'; + accountExplorerUrl = 'https://app.hyperliquid-testnet.xyz/explorer'; +} + class KavaEVMTestnet extends Testnet implements EthereumNetwork { name = 'KavaEVMTestnet'; family = CoinFamily.KAVAEVM; @@ -2615,6 +2629,7 @@ export const Networks = { phrs: Object.freeze(new Pharos()), ctc: Object.freeze(new Creditcoin()), hypeevm: Object.freeze(new HypeEVM()), + hype: Object.freeze(new Hyperliquid()), lineaeth: Object.freeze(new LineaETH()), oas: Object.freeze(new Oas()), og: Object.freeze(new Og()), @@ -2738,6 +2753,7 @@ export const Networks = { phrs: Object.freeze(new PharosTestnet()), ctc: Object.freeze(new CreditcoinTestnet()), hypeevm: Object.freeze(new HypeEVMTestnet()), + hype: Object.freeze(new HyperliquidTestnet()), lineaeth: Object.freeze(new LineaETHTestnet()), oas: Object.freeze(new OasTestnet()), og: Object.freeze(new OgTestnet()),