Adapter Framework

The Tetrics Adapter Framework provides a flexible, registry-based system for integrating DeFi protocols without enforcing rigid interfaces.

How It Works

Protocol Registration

  • Each adapter is registered with UniExecutor by protocol name (e.g., "lido", "morpho").

  • Executor maintains a mapping: mapping(string => address) public protocols.

  • Actions specify the protocol name and method to call.

BaseAdapter Foundation

  • All adapters inherit from BaseAdapter (src/adapters/BaseAdapter.sol).

  • Provides common utilities: token transfers, approvals, balance management.

  • No enforced function signatures - adapters define their own interfaces.

Protocol-Specific Methods

Each adapter exposes methods specific to its protocol. Examples include:

  • LidoAdapter:

    • deposit(uint256 amount)

  • MorphoAdapter:

    • supply(uint256 amount)

    • borrow(uint256 amount)

  • FelixAdapter:

    • openCdp(address collateral, uint256 amount)

Dynamic Method Calls

  • UniExecutor uses low-level calls to invoke adapter methods.

  • Action struct encodes the method signature and parameters.

  • Flexibility to support any protocol without interface changes.

Adapter Structure

Example: LidoAdapter

contract LidoAdapter is BaseAdapter {
    address public immutable executor;
    address public immutable stETH;

    constructor(address _executor, address _stETH) {
        executor = _executor;
        stETH = _stETH;
    }

    /// @notice Stake ETH and receive stETH
    function deposit(uint256 amount) external payable returns (uint256) {
        // Protocol-specific implementation
        // ...
    }
}

Last updated