diff --git a/script/DeployMigrationStakeManager.s.sol b/script/DeployMigrationStakeManager.s.sol new file mode 100644 index 0000000..1b2dfd8 --- /dev/null +++ b/script/DeployMigrationStakeManager.s.sol @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity >=0.8.19 <=0.9.0; + +import { BaseScript } from "./Base.s.sol"; +import { StakeManager } from "../contracts/StakeManager.sol"; + +contract DeployMigrationStakeManager is BaseScript { + error DeployMigrationStakeManager_InvalidStakeTokenAddress(); + + address public prevStakeManager; + + address public stakeToken; + + constructor(address _prevStakeManager, address _stakeToken) { + prevStakeManager = _prevStakeManager; + stakeToken = _stakeToken; + } + + function run() public returns (StakeManager) { + prevStakeManager = vm.envOr({ name: "PREV_STAKE_MANAGER", defaultValue: prevStakeManager }); + stakeToken = vm.envOr({ name: "STAKE_TOKEN_ADDRESS", defaultValue: stakeToken }); + + if (stakeToken == address(0)) { + revert DeployMigrationStakeManager_InvalidStakeTokenAddress(); + } + + vm.startBroadcast(broadcaster); + StakeManager stakeManager = new StakeManager(stakeToken, prevStakeManager); + vm.stopBroadcast(); + + return stakeManager; + } +} diff --git a/test/StakeManager.t.sol b/test/StakeManager.t.sol index 467a0e9..18ebe91 100644 --- a/test/StakeManager.t.sol +++ b/test/StakeManager.t.sol @@ -5,6 +5,7 @@ import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import { Test, console } from "forge-std/Test.sol"; import { Deploy } from "../script/Deploy.s.sol"; +import { DeployMigrationStakeManager } from "../script/DeployMigrationStakeManager.s.sol"; import { DeploymentConfig } from "../script/DeploymentConfig.s.sol"; import { StakeManager } from "../contracts/StakeManager.sol"; import { StakeVault } from "../contracts/StakeVault.sol"; @@ -430,3 +431,24 @@ contract UserFlowsTest is StakeManagerTest { assertEq(stakeManager.totalSupplyBalance(), 0); } } + +contract DeployMigrationStakeManagerTest is StakeManagerTest { + StakeManager internal newStakeManager; + + function setUp() public virtual override { + super.setUp(); + DeployMigrationStakeManager deployment = new DeployMigrationStakeManager(address(stakeManager), stakeToken); + newStakeManager = deployment.run(); + } + + function testNewDeployment() public { + assertEq(newStakeManager.owner(), deployer); + assertEq(newStakeManager.currentEpoch(), 0); + assertEq(newStakeManager.pendingReward(), 0); + assertEq(newStakeManager.totalSupplyMP(), 0); + assertEq(newStakeManager.totalSupplyBalance(), 0); + assertEq(address(newStakeManager.stakedToken()), stakeToken); + assertEq(address(newStakeManager.oldManager()), address(stakeManager)); + assertEq(newStakeManager.totalSupply(), 0); + } +}