From bc0f59c3f19c19fc9546cb92ba12c681c23e6653 Mon Sep 17 00:00:00 2001 From: Shobhit B Date: Wed, 25 Mar 2026 18:38:39 +0530 Subject: [PATCH 1/2] feat: added hyperliquid with default features TICKET: CECHO-545 feat: added mpc and tss for hyperliquid TICKET: CECHO-90 --- modules/bitgo/test/v2/unit/keychains.ts | 1 + modules/sdk-core/src/bitgo/environments.ts | 3 +++ modules/statics/src/allCoinsAndTokens.ts | 23 ++++++++++++++++++++++ modules/statics/src/base.ts | 3 +++ modules/statics/src/coinFeatures.ts | 7 +++++++ modules/statics/src/coins/ofcCoins.ts | 9 +++++++++ modules/statics/src/networks.ts | 16 +++++++++++++++ 7 files changed, 62 insertions(+) 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..69a4eb9bea 100644 --- a/modules/statics/src/coinFeatures.ts +++ b/modules/statics/src/coinFeatures.ts @@ -600,6 +600,13 @@ export const COREDAO_FEATURES = [ CoinFeature.ERC20_BULK_TRANSACTION, ]; export const TEMPO_FEATURES = [...EVM_FEATURES]; +export const HYPE_FEATURES = [ + ...ACCOUNT_COIN_DEFAULT_FEATURES, + CoinFeature.TSS, + CoinFeature.TSS_COLD, + CoinFeature.MPCV2, + CoinFeature.SHA256_WITH_ECDSA_TSS, +]; 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()), From d9f8ff2aeb4b5b2010a09bacdedf37741604f5ce Mon Sep 17 00:00:00 2001 From: Shobhit B Date: Tue, 31 Mar 2026 04:05:39 +0530 Subject: [PATCH 2/2] fix: added missing thyperliquid TICKET: CECHO-90 --- modules/bitgo/test/v2/unit/keychains.ts | 2 +- modules/sdk-core/src/bitgo/environments.ts | 6 +++--- modules/statics/src/allCoinsAndTokens.ts | 18 +++++++++--------- modules/statics/src/base.ts | 4 ++-- modules/statics/src/coinFeatures.ts | 3 ++- modules/statics/src/coins/ofcCoins.ts | 13 ++++++++++--- modules/statics/src/networks.ts | 8 ++++---- .../test/unit/fixtures/expectedColdFeatures.ts | 2 ++ 8 files changed, 33 insertions(+), 23 deletions(-) diff --git a/modules/bitgo/test/v2/unit/keychains.ts b/modules/bitgo/test/v2/unit/keychains.ts index 2b1ed6731c..fa70e4ffc3 100644 --- a/modules/bitgo/test/v2/unit/keychains.ts +++ b/modules/bitgo/test/v2/unit/keychains.ts @@ -114,7 +114,7 @@ describe('V2 Keychains', function () { n.asset !== UnderlyingAsset.MEGAETH && n.asset !== UnderlyingAsset.ARCUSDC && n.asset !== UnderlyingAsset.ZKSYNCERA && - n.asset !== UnderlyingAsset.HYPE && + n.asset !== UnderlyingAsset.HYPERLIQUID && coinFamilyValues.includes(n.name) ); diff --git a/modules/sdk-core/src/bitgo/environments.ts b/modules/sdk-core/src/bitgo/environments.ts index 6724c69c66..d490277682 100644 --- a/modules/sdk-core/src/bitgo/environments.ts +++ b/modules/sdk-core/src/bitgo/environments.ts @@ -77,7 +77,7 @@ interface EnvironmentTemplate { sgbExplorerBaseUrl?: string; sgbExplorerApiToken?: string; icpNodeUrl: string; - hypeNodeUrl: string; + hyperLiquidNodeUrl: string; wemixExplorerBaseUrl?: string; wemixExplorerApiToken?: string; monExplorerBaseUrl?: string; @@ -349,7 +349,7 @@ const mainnetBase: EnvironmentTemplate = { }, }, icpNodeUrl: 'https://ic0.app', - hypeNodeUrl: 'https://api.hyperliquid.xyz', + hyperLiquidNodeUrl: 'https://api.hyperliquid.xyz', worldExplorerBaseUrl: 'https://worldscan.org/', somniaExplorerBaseUrl: 'https://mainnet.somnia.w3us.site/', soneiumExplorerBaseUrl: 'https://soneium.blockscout.com', @@ -427,7 +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', + hyperLiquidNodeUrl: '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 ba02c3d2e1..91c3a12a38 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -104,7 +104,7 @@ import { FLR_FEATURES, GENERIC_TOKEN_FEATURES, HBAR_FEATURES, - HYPE_FEATURES, + HYPERLIQUID_FEATURES, ICP_FEATURES, INJECTIVE_FEATURES, IOTA_FEATURES, @@ -1752,24 +1752,24 @@ export const allCoinsAndTokens = [ ), account( '1d7327a1-80fc-4913-9b72-457087811262', - 'hype', + 'hyperliquid', 'Hyperliquid', - Networks.main.hype, + Networks.main.hyperliquid, 8, - UnderlyingAsset.HYPE, + UnderlyingAsset.HYPERLIQUID, BaseUnit.HYPE, - HYPE_FEATURES, + HYPERLIQUID_FEATURES, KeyCurve.Secp256k1 ), account( 'd0754b12-26fa-47c2-887f-f19099156ea2', - 'thype', + 'thyperliquid', 'Hyperliquid Testnet', - Networks.test.hype, + Networks.test.hyperliquid, 8, - UnderlyingAsset.HYPE, + UnderlyingAsset.HYPERLIQUID, BaseUnit.HYPE, - HYPE_FEATURES, + HYPERLIQUID_FEATURES, KeyCurve.Secp256k1 ), hypeEvm( diff --git a/modules/statics/src/base.ts b/modules/statics/src/base.ts index 258292fb49..50fe6f8162 100644 --- a/modules/statics/src/base.ts +++ b/modules/statics/src/base.ts @@ -92,7 +92,7 @@ export enum CoinFamily { PHRS = 'phrs', CTC = 'ctc', HYPEEVM = 'hypeevm', - HYPE = 'hype', // HyperCore L1 + HYPERLIQUID = 'hyperliquid', // HyperCore L1 NEAR = 'near', OAS = 'oas', OFC = 'ofc', @@ -641,7 +641,7 @@ export enum UnderlyingAsset { PLUME = 'plume', CTC = 'ctc', HYPEEVM = 'hypeevm', - HYPE = 'hype', // HyperCore L1 + HYPERLIQUID = 'hyperliquid', // HyperCore L1 RBTC = 'rbtc', // RSK main coin SEI = 'sei', SEIEVM = 'seievm', diff --git a/modules/statics/src/coinFeatures.ts b/modules/statics/src/coinFeatures.ts index 69a4eb9bea..c2c3a389e0 100644 --- a/modules/statics/src/coinFeatures.ts +++ b/modules/statics/src/coinFeatures.ts @@ -600,8 +600,9 @@ export const COREDAO_FEATURES = [ CoinFeature.ERC20_BULK_TRANSACTION, ]; export const TEMPO_FEATURES = [...EVM_FEATURES]; -export const HYPE_FEATURES = [ +export const HYPERLIQUID_FEATURES = [ ...ACCOUNT_COIN_DEFAULT_FEATURES, + CoinFeature.MULTISIG_COLD, CoinFeature.TSS, CoinFeature.TSS_COLD, CoinFeature.MPCV2, diff --git a/modules/statics/src/coins/ofcCoins.ts b/modules/statics/src/coins/ofcCoins.ts index 038a2808b5..381ee73b94 100644 --- a/modules/statics/src/coins/ofcCoins.ts +++ b/modules/statics/src/coins/ofcCoins.ts @@ -238,13 +238,20 @@ export const ofcCoins = [ UnderlyingAsset.HYPEEVM, CoinKind.CRYPTO ), - ofc('10ca4011-4409-42af-a275-bb531ae717b7', 'ofchype', 'Hyperliquid', 8, UnderlyingAsset.HYPE, CoinKind.CRYPTO), + ofc( + '10ca4011-4409-42af-a275-bb531ae717b7', + 'ofchyperliquid', + 'Hyperliquid', + 8, + UnderlyingAsset.HYPERLIQUID, + CoinKind.CRYPTO + ), tofc( 'a76394f3-7c14-4d27-bfa8-8920a3ea30d0', - 'ofcthype', + 'ofcthyperliquid', 'Testnet Hyperliquid', 8, - UnderlyingAsset.HYPE, + UnderlyingAsset.HYPERLIQUID, CoinKind.CRYPTO ), ofc('c7350490-f1c0-4f76-8db4-832dc18a2efe', 'ofcseievm', 'Sei EVM', 18, UnderlyingAsset.SEIEVM, CoinKind.CRYPTO), diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index 030efb7690..b4d65dd867 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -1668,14 +1668,14 @@ class HypeEVM extends Mainnet implements EthereumNetwork { class Hyperliquid extends Mainnet implements AccountNetwork { name = 'Hyperliquid'; - family = CoinFamily.HYPE; + family = CoinFamily.HYPERLIQUID; explorerUrl = 'https://app.hyperliquid.xyz/explorer'; accountExplorerUrl = 'https://app.hyperliquid.xyz/explorer'; } class HyperliquidTestnet extends Testnet implements AccountNetwork { name = 'HyperliquidTestnet'; - family = CoinFamily.HYPE; + family = CoinFamily.HYPERLIQUID; explorerUrl = 'https://app.hyperliquid-testnet.xyz/explorer'; accountExplorerUrl = 'https://app.hyperliquid-testnet.xyz/explorer'; } @@ -2629,7 +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()), + hyperliquid: Object.freeze(new Hyperliquid()), lineaeth: Object.freeze(new LineaETH()), oas: Object.freeze(new Oas()), og: Object.freeze(new Og()), @@ -2753,7 +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()), + hyperliquid: Object.freeze(new HyperliquidTestnet()), lineaeth: Object.freeze(new LineaETHTestnet()), oas: Object.freeze(new OasTestnet()), og: Object.freeze(new OgTestnet()), diff --git a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts index f43d07b27b..d0e364771c 100644 --- a/modules/statics/test/unit/fixtures/expectedColdFeatures.ts +++ b/modules/statics/test/unit/fixtures/expectedColdFeatures.ts @@ -15,6 +15,8 @@ export const expectedColdFeatures = { 'tflr', 'trx', 'ttrx', + 'hyperliquid', + 'thyperliquid', ], justMultiSig: [ 'algo',