Skip to content
Open
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
111 changes: 109 additions & 2 deletions projects/hyperwave/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ const ADDRESSES = require('../helper/coreAssets.json');
// Vault Addresses
const HWLP_VAULT = "0x9FD7466f987Fd4C45a5BBDe22ED8aba5BC8D72d1";
const HWHYPE_VAULT = "0x4DE03cA1F02591B717495cfA19913aD56a2f5858";
const HWUSD_VAULT = "0xa2f8Da4a55898B6c947Fa392eF8d6BFd87A4Ff77";

// HyperLiquid Multi-Sigs
const MS_1 = "0x128Cc5830214aBAF05A0aC178469a28de56c0BA9";
Expand Down Expand Up @@ -43,15 +44,116 @@ const HWHYPE_VAULT_TOKENS = [
'0x31CC92a2f8c02b8F9f427c48f12E21a848e69847', // PT-vkHYPE (pendle)
];

const META_MORPHO_VAULTS = [
const HYPEREVM_HWUSD_VAULT_TOKENS = [
ADDRESSES.hyperliquid.USDT0,
ADDRESSES.hyperliquid.USDe,
'0xb50A96253aBDF803D85efcDce07Ad8becBc52BD5', // USDHl
'0x1Ca7e21B2dAa5Ab2eB9de7cf8f34dCf9c8683007', // hyUSDT0 (hypurrfi)
'0xe8F7D82A73f13A64d689e7ddAD06139BFb51f9C6', // hyUSDe (hypurrfi)
'0xFd32712A1cb152c03a62D54557fcb1dE372ABfe9', // hyUSDHl (hypurrfi)
'0x333819c04975554260AaC119948562a0E24C2bd6', // hUSDe (hyperlend)
'0x10982ad645D5A112606534d8567418Cf64c14cB5', // hUSDT0 (hyperlend)
'0x0b936DE4370E4B2bE947C01fe0a6FB5f987c4709', // hUSDHl (hyperlend)
];
const ETHEREUM_HWUSD_VAULT_TOKENS = [
ADDRESSES.ethereum.USDC,
ADDRESSES.ethereum.USDT,
ADDRESSES.ethereum.USDe,
'0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c', // aUSDC (Aave)
'0x23878914EFE38d27C4D67Ab83ed1b93A74D4086a', // aUSDT (Aave)
'0x4F5923Fc5FD4a93352581b38B7cD26943012DECF', // aUSDe (Aave)
];
const BASE_HWUSD_VAULT_TOKENS = [
ADDRESSES.base.USDC,
'0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34', // USDe,
'0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB', // aUSDC (Aave)
];

const HWHYPE_META_MORPHO_VAULTS = [
{
wallet: HWHYPE_VAULT,
vault: "0x2900ABd73631b2f60747e687095537B673c06A76",
underlying: ADDRESSES.hyperliquid.WHYPE,
decimals: 18,
chain: 'hyperliquid'
},
];

const HWUSD_META_MORPHO_VAULTS = [
{
// feUSDe
wallet: HWUSD_VAULT,
vault: "0x835FEBF893c6DdDee5CF762B0f8e31C5B06938ab",
underlying: ADDRESSES.hyperliquid.USDe,
decimals: 18,
chain: 'hyperliquid'
},
{
// feUSDT0
wallet: HWUSD_VAULT,
vault: "0xFc5126377F0efc0041C0969Ef9BA903Ce67d151e",
underlying: ADDRESSES.hyperliquid.USDT0,
decimals: 18,
chain: 'hyperliquid'
},
{
// feUSDC
wallet: HWUSD_VAULT,
vault: "0x8A862fD6c12f9ad34C9c2ff45AB2b6712e8CEa27",
underlying: "0xb88339CB7199b77E23DB6E890353E22632Ba630f", // USDC on HyperLiquid
decimals: 18,
chain: 'hyperliquid'
},
{
// steakhouse USDT
wallet: HWUSD_VAULT,
vault: "0xbEef047a543E45807105E51A8BBEFCc5950fcfBa",
underlying: ADDRESSES.ethereum.USDT,
decimals: 18,
chain: 'ethereum'
},
{
// steakhouse USDC
wallet: HWUSD_VAULT,
vault: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB",
underlying: ADDRESSES.ethereum.USDC,
decimals: 18,
chain: 'ethereum'
},
{
// mev capital usdc
wallet: HWUSD_VAULT,
vault: "0xd63070114470f685b75B74D60EEc7c1113d33a3D",
underlying: ADDRESSES.ethereum.USDC,
decimals: 18,
chain: 'ethereum'
},
{
// smokehouse USDC
wallet: HWUSD_VAULT,
vault: "0xBEeFFF209270748ddd194831b3fa287a5386f5bC",
underlying: ADDRESSES.ethereum.USDC,
decimals: 18,
chain: 'ethereum'
},
{
// spark USDC
wallet: HWUSD_VAULT,
vault: "0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A",
underlying: ADDRESSES.base.USDC,
decimals: 18,
chain: 'base'
},
{
// seamless USDC
wallet: HWUSD_VAULT,
vault: "0x616a4E1db48e22028f6bbf20444Cd3b8e3273738",
underlying: ADDRESSES.base.USDC,
decimals: 18,
chain: 'base'
},
]

// HyperCore Token Configurations
const HYPER_CORE_TOKENS = [
{
Expand Down Expand Up @@ -80,13 +182,18 @@ module.exports = {
ADDRESSES,
HWLP_VAULT,
HWHYPE_VAULT,
HWUSD_VAULT,
MS_ALL,
HLP_VAULT,
DELAY,
HWLP_VAULT_TOKENS,
MAINNET_HWLP_VAULT_TOKENS,
HWHYPE_VAULT_TOKENS,
META_MORPHO_VAULTS,
HYPEREVM_HWUSD_VAULT_TOKENS,
ETHEREUM_HWUSD_VAULT_TOKENS,
BASE_HWUSD_VAULT_TOKENS,
HWHYPE_META_MORPHO_VAULTS,
HWUSD_META_MORPHO_VAULTS,
HYPER_CORE_TOKENS,
KHYPE_DEPLOYMENTS,
};
40 changes: 39 additions & 1 deletion projects/hyperwave/evm/erc20.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { sumTokens2 } = require('../../helper/unwrapLPs');
const { HWLP_VAULT, MAINNET_HWLP_VAULT_TOKENS, HWLP_VAULT_TOKENS, HWHYPE_VAULT, HWHYPE_VAULT_TOKENS } = require('../constants');
const { HWLP_VAULT, MAINNET_HWLP_VAULT_TOKENS, HWLP_VAULT_TOKENS, HWHYPE_VAULT, HWHYPE_VAULT_TOKENS, HWUSD_VAULT, ETHEREUM_HWUSD_VAULT_TOKENS, BASE_HWUSD_VAULT_TOKENS, HYPEREVM_HWUSD_VAULT_TOKENS } = require('../constants');

/**
* Calculate TVL for HWHLP vault on HyperLiquid chain
Expand Down Expand Up @@ -37,10 +37,48 @@ async function hwhypeVaultTvl(api) {
tokens: HWHYPE_VAULT_TOKENS,
});
}
/**
* Calculate TVL for HWUSD vault on Ethereum mainnet
*/
async function mainnetHwusdVaultTvl(api) {
return sumTokens2({
api,
owner: HWUSD_VAULT,
chain: 'ethereum',
tokens: ETHEREUM_HWUSD_VAULT_TOKENS,
});
}

/**
* Calculate TVL for HWUSD vault on HyperLiquid chain
*/
async function hyperevmHwhusdVaultTvl(api) {
return sumTokens2({
api,
owner: HWUSD_VAULT,
chain: 'hyperliquid',
tokens: HYPEREVM_HWUSD_VAULT_TOKENS,
});
}

/**
* Calculate TVL for HWUSD vault on Base chain
*/
async function baseHwusdVaultTvl(api) {
return sumTokens2({
api,
owner: HWUSD_VAULT,
chain: 'base',
tokens: BASE_HWUSD_VAULT_TOKENS,
});
}


module.exports = {
hwhlpVaultTvl,
mainnetHwhlpVaultTvl,
hwhypeVaultTvl,
mainnetHwusdVaultTvl,
hyperevmHwhusdVaultTvl,
baseHwusdVaultTvl,
};
35 changes: 29 additions & 6 deletions projects/hyperwave/evm/morpho.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
const sdk = require('@defillama/sdk');
const { sumUnknownTokens } = require('../../helper/unknownTokens');
const { META_MORPHO_VAULTS } = require('../constants');
const { HWHYPE_META_MORPHO_VAULTS, HWUSD_META_MORPHO_VAULTS } = require('../constants');

/**
* Process Meta Morpho vault positions
*/
async function processVaults(api) {
const vaults = [...META_MORPHO_VAULTS];
async function processVaults(api, vaults, chain) {

const [supplies, rates] = await Promise.all([
sdk.api.abi.multiCall({
calls: vaults.map(v => ({ target: v.vault, params: [v.wallet] })),
abi: 'erc20:balanceOf',
chain: 'hyperliquid'
chain: chain
}),
sdk.api.abi.multiCall({
calls: vaults.map(v => ({ target: v.vault, params: [(10 ** v.decimals).toString()] })),
abi: "function convertToAssets(uint256 shares) view returns (uint256 assets)",
chain: 'hyperliquid'
chain: chain
}),
]);

Expand All @@ -35,6 +34,30 @@ async function processVaults(api) {
return sumUnknownTokens({ api, useDefaultCoreAssets: true });
}

async function hyperevmHwhypeMorphoTvl(api) {
const vaults = [...HWHYPE_META_MORPHO_VAULTS];
return processVaults(api, vaults, 'hyperliquid');
}

async function hyperevmHwusdMorphoTvl(api) {
const vaults = [...HWUSD_META_MORPHO_VAULTS].filter(v => v.chain === 'hyperliquid');
return processVaults(api, vaults, 'hyperliquid');
}

async function mainnetHwusdMorphoTvl(api) {
const vaults = [...HWUSD_META_MORPHO_VAULTS].filter(v => v.chain === 'ethereum');
return processVaults(api, vaults, 'ethereum');
}

async function baseHwusdMorphoTvl(api) {
const vaults = [...HWUSD_META_MORPHO_VAULTS].filter(v => v.chain === 'base');
return processVaults(api, vaults, 'base');
}


module.exports = {
processVaults,
hyperevmHwhypeMorphoTvl,
hyperevmHwusdMorphoTvl,
mainnetHwusdMorphoTvl,
baseHwusdMorphoTvl
};
28 changes: 24 additions & 4 deletions projects/hyperwave/index.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,44 @@
const sdk = require('@defillama/sdk');

// Import vault TVL calculation functions
const { processVaults } = require('./evm/morpho');
const { hyperevmHwhypeMorphoTvl, hyperevmHwusdMorphoTvl, mainnetHwusdMorphoTvl, baseHwusdMorphoTvl } = require('./evm/morpho');
const { hypercoreHwhlpVaultTvl, hyperCoreSpotBalance } = require('./hypercore/index');
const { mainnetHwhlpVaultTvl, hwhlpVaultTvl, hwhypeVaultTvl } = require('./evm/erc20');
const { mainnetHwhlpVaultTvl, hwhlpVaultTvl, hwhypeVaultTvl, mainnetHwusdVaultTvl, hyperevmHwhusdVaultTvl, baseHwusdVaultTvl } = require('./evm/erc20');
const { khypeUnstaking } = require('./evm/khype');

module.exports = {
timetravel: false,
methodology: 'TVL represents the sum of tokens deposited in the vault + HLP positions + HyperCore Spot positions.',
doublecounted: false,
ethereum: { tvl: mainnetHwhlpVaultTvl },
ethereum: {
tvl: sdk.util.sumChainTvls([
// hwHLP
mainnetHwhlpVaultTvl,
// hwUSD
mainnetHwusdVaultTvl,
mainnetHwusdMorphoTvl,
])
},
base: {
tvl:sdk.util.sumChainTvls([
// hwUSD
baseHwusdVaultTvl,
baseHwusdMorphoTvl,
])
},
arbitrum: { tvl: hypercoreHwhlpVaultTvl },
hyperliquid: {
tvl: sdk.util.sumChainTvls([
// hwHLP
hwhlpVaultTvl,
hyperCoreSpotBalance,
// hwHYPE
hwhypeVaultTvl,
processVaults,
hyperevmHwhypeMorphoTvl,
khypeUnstaking,
// hwUSD
hyperevmHwhusdVaultTvl,
hyperevmHwusdMorphoTvl,
])
},
};
Loading