chore: sync submodule state (parent ref update)
Made-with: Cursor
This commit is contained in:
49
script/bridge/trustless/FundMainnetLP.s.sol
Normal file
49
script/bridge/trustless/FundMainnetLP.s.sol
Normal file
@@ -0,0 +1,49 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.19;
|
||||
|
||||
import {Script, console} from "forge-std/Script.sol";
|
||||
import {LiquidityPoolETH} from "../../../contracts/bridge/trustless/LiquidityPoolETH.sol";
|
||||
|
||||
/**
|
||||
* @title FundMainnetLP
|
||||
* @notice Add ETH and/or WETH liquidity to the mainnet LiquidityPoolETH (G4).
|
||||
* @dev Env: PRIVATE_KEY, LIQUIDITY_POOL_ETH_MAINNET (or LIQUIDITY_POOL), ETHEREUM_MAINNET_RPC.
|
||||
* Optional: FUND_ETH_AMOUNT_WEI (native ETH), FUND_WETH_AMOUNT_WEI (WETH to deposit).
|
||||
* If both zero/unset, script exits without error (dry run).
|
||||
*/
|
||||
contract FundMainnetLP is Script {
|
||||
function run() external {
|
||||
address poolAddr = vm.envOr("LIQUIDITY_POOL_ETH_MAINNET", vm.envOr("LIQUIDITY_POOL", address(0)));
|
||||
if (poolAddr == address(0)) {
|
||||
console.log("Set LIQUIDITY_POOL_ETH_MAINNET (or LIQUIDITY_POOL) in .env");
|
||||
return;
|
||||
}
|
||||
uint256 ethAmount = vm.envOr("FUND_ETH_AMOUNT_WEI", uint256(0));
|
||||
uint256 wethAmount = vm.envOr("FUND_WETH_AMOUNT_WEI", uint256(0));
|
||||
if (ethAmount == 0 && wethAmount == 0) {
|
||||
console.log("Set FUND_ETH_AMOUNT_WEI and/or FUND_WETH_AMOUNT_WEI to fund the LP");
|
||||
return;
|
||||
}
|
||||
|
||||
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
|
||||
LiquidityPoolETH pool = LiquidityPoolETH(payable(poolAddr));
|
||||
|
||||
vm.startBroadcast(deployerPrivateKey);
|
||||
|
||||
if (ethAmount > 0) {
|
||||
pool.provideLiquidity{value: ethAmount}(LiquidityPoolETH.AssetType.ETH);
|
||||
console.log("Provided ETH liquidity:", ethAmount);
|
||||
}
|
||||
if (wethAmount > 0) {
|
||||
address weth = pool.weth();
|
||||
// Approve and deposit WETH
|
||||
(bool ok,) = weth.call(abi.encodeWithSignature("approve(address,uint256)", poolAddr, wethAmount));
|
||||
require(ok, "WETH approve failed");
|
||||
pool.depositWETH(wethAmount);
|
||||
console.log("Provided WETH liquidity:", wethAmount);
|
||||
}
|
||||
|
||||
vm.stopBroadcast();
|
||||
console.log("LP funding done.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user