// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import {IBridge} from "../../../vendor/arb-bridge-eth/v0.8.0-custom/contracts/bridge/interfaces/IBridge.sol"; import {IInbox} from "../../../vendor/arb-bridge-eth/v0.8.0-custom/contracts/bridge/interfaces/IInbox.sol"; contract MockArbitrumInbox is IInbox { event RetryableTicketNoRefundAliasRewriteCreated( address destAddr, uint256 arbTxCallValue, uint256 maxSubmissionCost, address submissionRefundAddress, address valueRefundAddress, uint256 maxGas, uint256 gasPriceBid, bytes data ); function sendL2Message( bytes calldata /* messageData */ ) external pure override returns (uint256) { return 0; } function sendUnsignedTransaction( uint256, /* maxGas */ uint256, /* gasPriceBid */ uint256, /* nonce */ address, /* destAddr */ uint256, /* amount */ bytes calldata /* data */ ) external pure override returns (uint256) { return 0; } function sendContractTransaction( uint256, /* maxGas */ uint256, /* gasPriceBid */ address, /* destAddr */ uint256, /* amount */ bytes calldata /* data */ ) external pure override returns (uint256) { return 0; } function sendL1FundedUnsignedTransaction( uint256, /* maxGas */ uint256, /* gasPriceBid */ uint256, /* nonce */ address, /* destAddr */ bytes calldata /* data */ ) external payable override returns (uint256) { return 0; } function sendL1FundedContractTransaction( uint256, /* maxGas */ uint256, /* gasPriceBid */ address, /* destAddr */ bytes calldata /* data */ ) external payable override returns (uint256) { return 0; } function createRetryableTicketNoRefundAliasRewrite( address destAddr, uint256 arbTxCallValue, uint256 maxSubmissionCost, address submissionRefundAddress, address valueRefundAddress, uint256 maxGas, uint256 gasPriceBid, bytes calldata data ) external payable override returns (uint256) { emit RetryableTicketNoRefundAliasRewriteCreated( destAddr, arbTxCallValue, maxSubmissionCost, submissionRefundAddress, valueRefundAddress, maxGas, gasPriceBid, data ); return 42; } function createRetryableTicket( address, /* destAddr */ uint256, /* arbTxCallValue */ uint256, /* maxSubmissionCost */ address, /* submissionRefundAddress */ address, /* valueRefundAddress */ uint256, /* maxGas */ uint256, /* gasPriceBid */ bytes calldata /* data */ ) external payable override returns (uint256) { return 0; } function depositEth( address /* destAddr */ ) external payable override returns (uint256) { return 0; } function depositEthRetryable( address, /* destAddr */ uint256, /* maxSubmissionCost */ uint256, /* maxGas */ uint256 /* maxGasPrice */ ) external payable override returns (uint256) { return 0; } function bridge() external pure override returns (IBridge) { return IBridge(address(0)); } /// @notice This mock function simply replicates the formula used by Arbitrum's /// DelayedInbox in the Nitro upgrade. The function has been copied here from the Arbitrum /// team's repository. /// @param dataLength The length of the calldata that will be executed in L2 /// @param baseFee The base fee to pay for the transaction. /// @dev The calculation will use the L1 base fee if it is passed 0. function calculateRetryableSubmissionFee(uint256 dataLength, uint256 baseFee) public view returns (uint256) { return (1400 + 6 * dataLength) * (baseFee == 0 ? block.basefee : baseFee); } }