interface ISafeBox is IERC20Metadata {
    event Claim(address user, uint256 amount);

    function cToken() external view returns (CToken);

    // Not available for safeBoxEth
    function uToken() external view returns (IERC20);

    function deposit(uint256 amount) external;

    // Overload for safeBoxEth
    function deposit() external payable;

    function withdraw(uint256 amount) external;

    function claim(uint256 totalAmount, bytes32[] memory proof) external;

    function claimAndWithdraw(
        uint256 totalAmount,
        bytes32[] memory proof,
        uint256 withdrawAmount
    ) external;
}
function deposit() external payable;

// Overload for safeBoxEth