// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import {Inbox} from "../inbox/Inbox.sol";
import {Outbox} from "../outbox/Outbox.sol";

/// @title Messenger
/// @author The Warp Team <contact@warp.inc>
/// @notice This contract implements a generic cross-chain messaging layer
///         it combines the functionality of the Outbox (sending messages)
///         and the Inbox (receiving messages).
contract Messenger is Inbox, Outbox {
    /// @notice Initialize the contract
    /// @dev This function can only be called once.
    /// @param _core The address of the Wormhole core contract.
    /// @custom:reverts as UsesCore.setCore
    function initialize(address _core) external {
        setCore(_core);
    }
}
[{"inputs":[{"internalType":"address","name":"attestor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ATTESTOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"core","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"deploy","outputs":[],"stateMutability":"nonpayable","type":"function"}]