// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.26; import {MYieldToOneForcedTransfer} from "evm-m-extensions/src/projects/yieldToOne/MYieldToOneForcedTransfer.sol"; /** * @title 1USD * @notice 1USD Extension using MYieldToOneForcedTransfer model. * All yield goes to a single designated recipient (treasury). * Includes force transfer functionality for compliance. */ contract OneUSD is MYieldToOneForcedTransfer { /* ============ Constructor ============ */ /** * @custom:oz-upgrades-unsafe-allow constructor * @notice Constructs 1USD Implementation contract * @param mToken_ The address of $M token. * @param swapFacility_ The address of Swap Facility. */ constructor(address mToken_, address swapFacility_) MYieldToOneForcedTransfer(mToken_, swapFacility_) {} /* ============ Internal Functions ============ */ /** * @dev Hook called before claiming yield. * Restricts yield claiming to accounts with YIELD_RECIPIENT_MANAGER_ROLE. * This allows yield to be claimed even when the contract is paused. */ function _beforeClaimYield() internal view override onlyRole(YIELD_RECIPIENT_MANAGER_ROLE) {} }