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. |