diff --git a/contracts/bridges/optimism/IL1CrossDomainMessenger.sol b/contracts/bridges/optimism/IL1CrossDomainMessenger.sol new file mode 100644 index 000000000..2658efdff --- /dev/null +++ b/contracts/bridges/optimism/IL1CrossDomainMessenger.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.15; + +interface IL1CrossDomainMessenger { + event FailedRelayedMessage(bytes32 indexed msgHash); + event Initialized(uint8 version); + event RelayedMessage(bytes32 indexed msgHash); + event SentMessage( + address indexed target, + address sender, + bytes message, + uint256 messageNonce, + uint256 gasLimit + ); + event SentMessageExtension1(address indexed sender, uint256 value); + + function MESSAGE_VERSION() external view returns (uint16); + + function MIN_GAS_CALLDATA_OVERHEAD() external view returns (uint64); + + function MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR() + external + view + returns (uint64); + + function MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR() + external + view + returns (uint64); + + function OTHER_MESSENGER() external view returns (address); + + function PORTAL() external view returns (address); + + function RELAY_CALL_OVERHEAD() external view returns (uint64); + + function RELAY_CONSTANT_OVERHEAD() external view returns (uint64); + + function RELAY_GAS_CHECK_BUFFER() external view returns (uint64); + + function RELAY_RESERVED_GAS() external view returns (uint64); + + function baseGas(bytes memory _message, uint32 _minGasLimit) + external + pure + returns (uint64); + + function failedMessages(bytes32) external view returns (bool); + + function initialize() external; + + function messageNonce() external view returns (uint256); + + function relayMessage( + uint256 _nonce, + address _sender, + address _target, + uint256 _value, + uint256 _minGasLimit, + bytes memory _message + ) external payable; + + function sendMessage( + address _target, + bytes memory _message, + uint32 _minGasLimit + ) external payable; + + function successfulMessages(bytes32) external view returns (bool); + + function version() external view returns (string memory); + + function xDomainMessageSender() external view returns (address); +} diff --git a/contracts/bridges/optimism/IL1StandardBridge.sol b/contracts/bridges/optimism/IL1StandardBridge.sol new file mode 100644 index 000000000..72a98f1bd --- /dev/null +++ b/contracts/bridges/optimism/IL1StandardBridge.sol @@ -0,0 +1,161 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.15; + +interface IL1StandardBridge { + event ERC20BridgeFinalized( + address indexed localToken, + address indexed remoteToken, + address indexed from, + address to, + uint256 amount, + bytes extraData + ); + event ERC20BridgeInitiated( + address indexed localToken, + address indexed remoteToken, + address indexed from, + address to, + uint256 amount, + bytes extraData + ); + event ERC20DepositInitiated( + address indexed l1Token, + address indexed l2Token, + address indexed from, + address to, + uint256 amount, + bytes extraData + ); + event ERC20WithdrawalFinalized( + address indexed l1Token, + address indexed l2Token, + address indexed from, + address to, + uint256 amount, + bytes extraData + ); + event ETHBridgeFinalized( + address indexed from, + address indexed to, + uint256 amount, + bytes extraData + ); + event ETHBridgeInitiated( + address indexed from, + address indexed to, + uint256 amount, + bytes extraData + ); + event ETHDepositInitiated( + address indexed from, + address indexed to, + uint256 amount, + bytes extraData + ); + event ETHWithdrawalFinalized( + address indexed from, + address indexed to, + uint256 amount, + bytes extraData + ); + + function MESSENGER() external view returns (address); + + function OTHER_BRIDGE() external view returns (address); + + function bridgeERC20( + address _localToken, + address _remoteToken, + uint256 _amount, + uint32 _minGasLimit, + bytes memory _extraData + ) external; + + function bridgeERC20To( + address _localToken, + address _remoteToken, + address _to, + uint256 _amount, + uint32 _minGasLimit, + bytes memory _extraData + ) external; + + function bridgeETH(uint32 _minGasLimit, bytes memory _extraData) + external + payable; + + function bridgeETHTo( + address _to, + uint32 _minGasLimit, + bytes memory _extraData + ) external payable; + + function depositERC20( + address _l1Token, + address _l2Token, + uint256 _amount, + uint32 _minGasLimit, + bytes memory _extraData + ) external; + + function depositERC20To( + address _l1Token, + address _l2Token, + address _to, + uint256 _amount, + uint32 _minGasLimit, + bytes memory _extraData + ) external; + + function depositETH(uint32 _minGasLimit, bytes memory _extraData) + external + payable; + + function depositETHTo( + address _to, + uint32 _minGasLimit, + bytes memory _extraData + ) external payable; + + function deposits(address, address) external view returns (uint256); + + function finalizeBridgeERC20( + address _localToken, + address _remoteToken, + address _from, + address _to, + uint256 _amount, + bytes memory _extraData + ) external; + + function finalizeBridgeETH( + address _from, + address _to, + uint256 _amount, + bytes memory _extraData + ) external payable; + + function finalizeERC20Withdrawal( + address _l1Token, + address _l2Token, + address _from, + address _to, + uint256 _amount, + bytes memory _extraData + ) external; + + function finalizeETHWithdrawal( + address _from, + address _to, + uint256 _amount, + bytes memory _extraData + ) external payable; + + function l2TokenBridge() external view returns (address); + + function messenger() external view returns (address); + + function version() external view returns (string memory); + + receive() external payable; +}