Files
linea-monorepo/contracts/script/yield/bridge/l2/DeploymentConfig.s.sol
2025-06-30 11:23:59 +02:00

47 lines
1.4 KiB
Solidity

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.26;
import { Script } from "forge-std/Script.sol";
import { L2MessageServiceMock } from "../../../../test/foundry/bridging/eth/mocks/L2MessageServiceMock.sol";
contract DeploymentConfig is Script {
error DeploymentConfig_InvalidDeployerAddress();
error DeploymentConfig_NoConfigForChain(uint256);
struct NetworkConfig {
address deployer;
address l2MessageService;
address l1ETHBridge;
}
NetworkConfig public activeNetworkConfig;
address private deployer;
constructor(address _broadcaster) {
if (_broadcaster == address(0)) revert DeploymentConfig_InvalidDeployerAddress();
deployer = _broadcaster;
if (block.chainid == 31_337) {
activeNetworkConfig = getOrCreateAnvilEthConfig(deployer);
} else {
revert DeploymentConfig_NoConfigForChain(block.chainid);
}
}
function getOrCreateAnvilEthConfig(address _deployer) public returns (NetworkConfig memory) {
return
NetworkConfig({
deployer: _deployer,
l2MessageService: address(new L2MessageServiceMock()),
l1ETHBridge: makeAddr("l1ETHBridge")
});
}
// This function is a hack to have it excluded by `forge coverage` until
// https://github.com/foundry-rs/foundry/issues/2988 is fixed.
// See: https://github.com/foundry-rs/foundry/issues/2988#issuecomment-1437784542
// for more info.
// solhint-disable-next-line
function test() public {}
}