Skip to content

Interfaces And Libraries

Core Interfaces

IRouter

Minimal interface declared inside HyperCoreAllocator.sol for allocator/router interaction.

Function Description
totalAssets() Returns router-managed assets.
approveOnlyForAllocator() Allows allocator to pull router idle ERC-20 balance.

IVault

Function Description
idleAssets() Vault idle balance.
shutdownTime() Shutdown timestamp.
pushFundOnlyForController(address strategy, uint256 amount) Controller-gated asset transfer to strategy.
mintFeeSharesOnlyForController(address recipient, uint256 shares) Controller-gated fee share mint.
harvestOnlyForController(address token, address recipient) Controller-gated token sweep.
pause() Pause vault.
unpause() Unpause vault.
shutdown() Permanently shut down vault.
emergencyRedeem(address receiver) Shutdown-only emergency redemption.

IStrategy

Function Description
receiver() Address receiving divested assets.
asset() Underlying asset.
totalAssets() Strategy-managed assets.
invest(uint256 amount) Deploy assets.
divest(uint256 amount) Withdraw assets to receiver.
replenish(uint256 amount) Withdraw assets for vault liquidity waterfall.
exit(bool ignore) Fully exit strategy.
harvest(IERC20 asset) Sweep non-primary token.

IStrategicFund

Function Description
totalStrategyAssets(address vault) Sum strategy assets for vault.
strategies(address vault) Return vault strategies.
strategyAdd(address vault, address strategy_) Register strategy.
strategyRevoke(address vault, address strategy_, bool force) Revoke strategy.
fundInvest(address vault, address strategy_, uint256 amount) Invest vault funds.
fundDivest(address vault, address strategy_, uint256 amount) Divest vault funds.
fundReplenishOnlyForVault(address vault, uint256 shortage) Vault-only liquidity waterfall.
fundExitOnlyForVault(address vault) Vault-only full exit.

IMarkToMarket

Function Description
prevMarkedValues(address vault) Previous confirmed NAV values.
markedValues(address vault) Current confirmed NAV values.
proposeValues(address vault) Create pending NAV epoch.
confirmValues(address vault, uint256 epoch) Confirm pending NAV epoch.

Constants And Errors

Constants.sol groups protocol-level errors, events, roles, and known addresses.

Protocol Errors

Error Meaning
FunctionNotSupported() Function intentionally unsupported.
OperationInProgress() Another in-flight operation exists.
ExceedsTotalSupply() Requested shares exceed remote supply.
PrecompileFailed() HyperCore precompile call failed.
ZeroAddress() Address parameter is zero.
ZeroAmount() Amount parameter is zero.
ZeroShares() Shares parameter is zero.
UnauthorizedCaller(address caller, address expectCaller) Caller is not expected contract.
UnauthorizedSource(uint32 sourceDomain, address sender, uint32 expectedDomain, address expectedSender) CCTP source mismatch.
VaultNotRegistered(address vault) Vault not registered in Controller.
VaultAlreadyRegistered(address vault) Vault already registered.
RouterAlreadyRegistered(address router) Router already registered.
StrategyRegistered(address vault, address strategy) Strategy already registered.
StrategyNotRegistered(address vault, address strategy) Strategy not registered.
EpochMismatch(uint256 expected, uint256 actual) NAV epoch invalid.
ProposalStale(uint256 deadline, uint256 timestamp) NAV proposal older than allowed window.
VaultIsShutdown() Active-only operation called after shutdown.
VaultNotShutdown() Shutdown-only operation called before shutdown.
InsufficientIdleAssets(uint256 requested, uint256 available) Contract lacks idle asset for requested operation.
InvalidHarvestToken(address token) Attempted to harvest protected token.
NothingToClaim() Async request is not claimable.
ExitFailed() Strategy exit failed and ignore flag is false.
ReceiveMessageFailed() CCTP receiveMessage returned false.
AllocatorNotSet() HyperStrategy allocator not configured.
AllocatorAlreadySet() HyperStrategy allocator already configured.
UnsupportedChain(uint256 chainId) AddressBook does not support current chain.
AssetMismatch() Strategy or address asset mismatch.
ReceiverMismatch() Strategy receiver mismatch.
InsufficientStrategyAssets(uint256 requested, uint256 available) Strategy liquidity insufficient.
MintRecipientMismatch() CCTP mint recipient is not expected allocator.
InvalidFeeRate(uint256 feeRate) Fee rate is >= 1_000_000.
WithdrawTooLow(uint256 min, uint256 actual) Withdraw amount below vault minimum.

Protocol Events

Event Emitted By Meaning
FeeSharesMinted Controller Performance fee shares minted.
FeeReceiverSet Controller Manager changed.
FeeRateSet Controller Vault fee rate changed.
VaultRegistered Controller Vault registered.
ValuesProposed Controller Pending NAV proposed.
ValuesConfirmed Controller Pending NAV confirmed.
StrategyAdded Controller Strategy registered.
StrategyRevoked Controller Strategy removed.
VaultShutdown Vault Vault permanently shutdown.
EmergencyRedeemed Vault Shutdown redemption executed.
RedeemRequested Async Vault Async redeem request queued.
RedeemExecuted Async Vault / Allocator Async or cross-chain redemption executed.
Claimed Async Vault Investor claimed executed assets.
RemoteStateUpdated HyperStrategy Remote HyperEVM state updated.
RouterAdded Allocator HyperCore router registered.
DivestHandled Allocator CCTP invest message handled and shares minted.
RedeemRequestQueued Allocator Cross-chain redeem shares queued.
Allocated Library event placeholder ERC-20 assets deposited into CoreDepositWallet.
CoreAllocated Library event placeholder HyperCore balances moved into HLP.
CoreCollected Library event placeholder HyperCore balances collected.
Collected Library event placeholder ERC-20 assets collected back to Allocator.
Harvested Strategies / Allocator / Router Non-primary token swept.
FundPushed Vault Vault pushed asset to strategy.
FeeSharesMintedForRecipient Vault Fee shares minted by vault.
VaultHarvested Vault Vault token swept.

AddressBook

AddressBook returns known protocol addresses by block.chainid.

Function Supported Chains Description
usdc() Ethereum, Base Sepolia, HyperEVM, HyperEVM Testnet Returns USDC address.
aaveUsdc() Ethereum, Base Sepolia Returns Aave USDC address.
aavev3() Ethereum, Base Sepolia Returns Aave V3 Pool address.
aavev3IncentivesController() Ethereum, Base Sepolia Returns Aave rewards controller.
morpho() Ethereum Returns Morpho address.
morphoUniversalRewardsDistributor() Ethereum Returns Morpho rewards distributor.
tokenMessenger() Ethereum, Base Sepolia, HyperEVM, HyperEVM Testnet Returns CCTP TokenMessengerV2.
messageTransmitter() Ethereum, Base Sepolia, HyperEVM, HyperEVM Testnet Returns CCTP MessageTransmitterV2.
coreDepositWallet() HyperEVM, HyperEVM Testnet Returns HyperCore deposit wallet.
vaultHlp() HyperEVM, HyperEVM Testnet Returns HLP vault address.

AsyncMessages

Struct Fields Used By
RedeemMessage shares HyperStrategy.divest() sends it to HyperCoreAllocator.
UpdatedStateMessage nonce, timestamp, processedAssets, processedShares, totalAssets, totalSupply Allocator sends state back to HyperStrategy.

CCTP Parsing Libraries

These internal libraries facilitate the formatting and decoding of raw CCTP byte arrays.

BurnMessage

Function Description
_formatMessage(...) Formats legacy burn message.
_getMessageSender(bytes) Reads message sender.
_getBurnToken(bytes) Reads burn token.
_getMintRecipient(bytes) Reads mint recipient.
_getAmount(bytes) Reads burn amount.
_getVersion(bytes) Reads burn message version.
_validateBurnMessageFormat(bytes) Validates message length.

BurnMessageV2

Function Description
_formatMessageForRelay(...) Formats CCTP V2 burn message for relay.
_getVersion(bytes) Reads version.
_getBurnToken(bytes) Reads burn token.
_getMintRecipient(bytes) Reads mint recipient.
_getAmount(bytes) Reads amount.
_getMessageSender(bytes) Reads message sender.
_getMaxFee(bytes) Reads maximum fee.
_getFeeExecuted(bytes) Reads executed fee.
_getExpirationBlock(bytes) Reads expiration block.
_getHookData(bytes) Reads hook data payload.
_validateBurnMessageFormat(bytes) Validates CCTP V2 burn message length.

MessageV2

Function Description
_formatMessageForRelay(...) Formats CCTP V2 message.
_getVersion(bytes) Reads message version.
_getSourceDomain(bytes) Reads source CCTP domain.
_getDestinationDomain(bytes) Reads destination CCTP domain.
_getNonce(bytes) Reads nonce.
_getSender(bytes) Reads sender.
_getRecipient(bytes) Reads recipient.
_getDestinationCaller(bytes) Reads destination caller.
_getMinFinalityThreshold(bytes) Reads required finality.
_getFinalityThresholdExecuted(bytes) Reads executed finality.
_getMessageBody(bytes) Returns message body slice.
_validateMessageFormat(bytes) Validates message format.