contract Optimism_Messenger is Ownable, OVM_CrossDomainEnabled, MessengerInterface {
    constructor(address _crossDomainMessenger) OVM_CrossDomainEnabled(_crossDomainMessenger) {}

    /**
     * @notice Sends a message to an account on L2.
     * @param target The intended recipient on L2.
     * @param gasLimit The gasLimit for the receipt of the message on L2.
     * @param message The data to send to the target (usually calldata to a function with
     *  `onlyFromCrossDomainAccount()`)
     */
    function relayMessage(
        address target,
        address,
        uint256,
        uint256 gasLimit,
        uint256,
        uint256,
        bytes memory message
    ) external payable override onlyOwner {
        sendCrossDomainMessage(target, uint32(gasLimit), message);
    }
}
/**
 * @notice Sends cross chain messages Optimism L2 network.
 * @dev This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the
 * BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.
 */
function relayMessage(
    address target,
    address,
    uint256,
    uint256 gasLimit,
    uint256,
    uint256,
    bytes memory message
) external payable override onlyOwner {
    sendCrossDomainMessage(target, uint32(gasLimit), message);
}

/**
 * @notice Sends a message to an account on L2.
 * @param target The intended recipient on L2.
 * @param gasLimit The gasLimit for the receipt of the message on L2.
 * @param message The data to send to the target (usually calldata to a function with
 *  `onlyFromCrossDomainAccount()`)
 */