Core set
- RolesBroadcaster — cross‑chain role updates
- RolesReceiver — validated strategy execution
- RolesGuard — Safe guard with pause + access control
- MorphoVaultController — leverage/rebalance operations
- SwapAdapter — router‑agnostic swaps with slippage checks
- MarketWrapper — ERC‑4626 wrapper with role‑gated deposits
Contract addresses will be added here soon.
Interfaces and examples are summarized for orientation; defer to audited code for implementation specifics.
contract RolesBroadcaster is OApp, OAppOptionsType3 {
function send(
uint32 _dstEid,
bytes calldata _callData,
bytes calldata _options
) external payable onlyOwner;
function quote(
uint32 _dstEid,
bytes calldata _callData,
bytes calldata _options,
bool _payInLzToken
) external view returns (MessagingFee memory fee);
}
contract RolesReceiver is OApp, StrategyManager {
function executeRebalance(
address safe,
address vault,
RebalanceData[] calldata rebalanceData
) external onlyExecutor validVault(vault);
function executeVaultAction(
address safe,
address vault,
IVaultActionController actionController,
bytes calldata data
) external onlyExecutor;
function getVaultConfig(address vault) external view returns (VaultConfig memory);
}
contract RolesGuard is BaseModuleGuard, BaseTransactionGuard, Pausable, AccessControl {
function pause(bool _shouldPause) external onlyRole(PAUSER_ROLE);
function checkTransaction(
address to,
uint256 value,
bytes memory data,
Enum.Operation operation,
uint256 safeTxGas,
uint256 baseGas,
uint256 gasPrice,
address gasToken,
address payable refundReceiver,
bytes memory signatures,
address msgSender
) external view override;
}
struct RebalanceData {
bytes32 marketId;
bool isIncrease;
uint256 amount;
bytes extraData;
}
contract MorphoVaultController is VaultController, CallBuilder {
function executeRebalance(
address vault,
RebalanceData[] calldata rebalanceData
) external override;
}
struct SwapParams {
uint256 slippageBps;
bytes callData;
address target;
}
contract SwapAdapter is IMarketAdapterController {
function swapToCollateral(
IERC20 loanToken,
IERC20 collateralToken,
address recipient,
bytes memory strategyData,
bytes calldata extraData
) external override;
function swapToLoanToken(
IERC20 loanToken,
IERC20 collateralToken,
address recipient,
bytes memory strategyData,
bytes calldata extraData
) external override;
}
contract MarketWrapper is ERC4626 {
function createBurnDeposit() public;
function deposit(uint256 assets, address receiver)
external override returns (uint256 shares);
function decimalsOffset() external view returns (uint8);
}
Contract Relationships