// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import "@openzeppelin/contracts/access/Ownable.sol";

/// Tiny Ownable contract used to exercise AereFeeMonetizationV2's owner() control
/// path: its Ownable owner (the deployer) may register it; nobody else may.
contract OwnableProbe is Ownable {
    // owner = deployer (set by OZ Ownable constructor).
}

interface IFeeMonRegister {
    function register(address contractAddr, address payoutAddr) external returns (uint256);
}

/// Self-registering probe: calls register(address(this), payout) so it registers
/// ITSELF, exercising the msg.sender == contractAddr control path.
contract SelfRegisteringProbe {
    function selfRegister(address feeMon, address payout) external returns (uint256) {
        return IFeeMonRegister(feeMon).register(address(this), payout);
    }
}
