Skip to main content

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

I