{
    "Function": "slitherConstructorConstantVariables",
    "File": "contracts/tests/arbitrum/InboxMock.sol",
    "Parent Contracts": [
        "contracts/arbitrum/IInbox.sol",
        "contracts/arbitrum/IMessageProvider.sol"
    ],
    "High-Level Calls": [],
    "Internal Calls": [],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "contract InboxMock is IInbox {\n    // Type indicator for a standard L2 message\n    uint8 internal constant L2_MSG = 3;\n    // Type indicator for a retryable ticket message\n    // solhint-disable-next-line const-name-snakecase\n    uint8 internal constant L1MessageType_submitRetryableTx = 9;\n    // Address of the Bridge (mock) contract\n    IBridge public override bridge;\n\n    /**\n     * @dev Send a message to L2 (by delivering it to the Bridge)\n     * @param _messageData Encoded data to send in the message\n     * @return message number returned by the inbox\n     */\n    function sendL2Message(bytes calldata _messageData) external override returns (uint256) {\n        uint256 msgNum = deliverToBridge(L2_MSG, msg.sender, keccak256(_messageData));\n        emit InboxMessageDelivered(msgNum, _messageData);\n        return msgNum;\n    }\n\n    /**\n     * @dev Set the address of the (mock) bridge\n     * @param _bridge Address of the bridge\n     */\n    function setBridge(address _bridge) external {\n        bridge = IBridge(_bridge);\n    }\n\n    /**\n     * @dev Unimplemented in this mock\n     */\n    function sendUnsignedTransaction(\n        uint256,\n        uint256,\n        uint256,\n        address,\n        uint256,\n        bytes calldata\n    ) external pure override returns (uint256) {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Unimplemented in this mock\n     */\n    function sendContractTransaction(\n        uint256,\n        uint256,\n        address,\n        uint256,\n        bytes calldata\n    ) external pure override returns (uint256) {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Unimplemented in this mock\n     */\n    function sendL1FundedUnsignedTransaction(\n        uint256,\n        uint256,\n        uint256,\n        address,\n        bytes calldata\n    ) external payable override returns (uint256) {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Unimplemented in this mock\n     */\n    function sendL1FundedContractTransaction(\n        uint256,\n        uint256,\n        address,\n        bytes calldata\n    ) external payable override returns (uint256) {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Creates a retryable ticket for an L2 transaction\n     * @param _destAddr Address of the contract to call in L2\n     * @param _arbTxCallValue Callvalue to use in the L2 transaction\n     * @param _maxSubmissionCost Max cost of submitting the ticket, in Wei\n     * @param _submissionRefundAddress L2 address to refund for any remaining value from the submission cost\n     * @param _valueRefundAddress L2 address to refund if the ticket times out or gets cancelled\n     * @param _maxGas Max gas for the L2 transcation\n     * @param _gasPriceBid Gas price bid on L2\n     * @param _data Encoded calldata for the L2 transaction (including function selector)\n     * @return message number returned by the bridge\n     */\n    function createRetryableTicket(\n        address _destAddr,\n        uint256 _arbTxCallValue,\n        uint256 _maxSubmissionCost,\n        address _submissionRefundAddress,\n        address _valueRefundAddress,\n        uint256 _maxGas,\n        uint256 _gasPriceBid,\n        bytes calldata _data\n    ) external payable override returns (uint256) {\n        _submissionRefundAddress = AddressAliasHelper.applyL1ToL2Alias(_submissionRefundAddress);\n        _valueRefundAddress = AddressAliasHelper.applyL1ToL2Alias(_valueRefundAddress);\n        return\n            _deliverMessage(\n                L1MessageType_submitRetryableTx,\n                msg.sender,\n                abi.encodePacked(\n                    uint256(uint160(bytes20(_destAddr))),\n                    _arbTxCallValue,\n                    msg.value,\n                    _maxSubmissionCost,\n                    uint256(uint160(bytes20(_submissionRefundAddress))),\n                    uint256(uint160(bytes20(_valueRefundAddress))),\n                    _maxGas,\n                    _gasPriceBid,\n                    _data.length,\n                    _data\n                )\n            );\n    }\n\n    function depositEth(uint256) external payable override returns (uint256) {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Unimplemented in this mock\n     */\n    function pauseCreateRetryables() external pure override {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Unimplemented in this mock\n     */\n    function unpauseCreateRetryables() external pure override {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Unimplemented in this mock\n     */\n    function startRewriteAddress() external pure override {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Unimplemented in this mock\n     */\n    function stopRewriteAddress() external pure override {\n        revert(\"Unimplemented\");\n    }\n\n    /**\n     * @dev Deliver a message to the bridge\n     * @param _kind Type of the message\n     * @param _sender Address that is sending the message\n     * @param _messageData Encoded message data\n     * @return Message number returned by the bridge\n     */\n    function _deliverMessage(\n        uint8 _kind,\n        address _sender,\n        bytes memory _messageData\n    ) internal returns (uint256) {\n        uint256 msgNum = deliverToBridge(_kind, _sender, keccak256(_messageData));\n        emit InboxMessageDelivered(msgNum, _messageData);\n        return msgNum;\n    }\n\n    /**\n     * @dev Deliver a message to the bridge\n     * @param _kind Type of the message\n     * @param _sender Address that is sending the message\n     * @param _messageDataHash keccak256 hash of the encoded message data\n     * @return Message number returned by the bridge\n     */\n    function deliverToBridge(\n        uint8 _kind,\n        address _sender,\n        bytes32 _messageDataHash\n    ) internal returns (uint256) {\n        return bridge.deliverMessageToInbox{ value: msg.value }(_kind, _sender, _messageDataHash);\n    }\n}"
}