Skip to content

Commit

Permalink
add liquidity w systemCoin
Browse files Browse the repository at this point in the history
  • Loading branch information
daopunk committed Mar 13, 2024
1 parent 985b99d commit aeade18
Showing 1 changed file with 45 additions and 4 deletions.
49 changes: 45 additions & 4 deletions script/postdeployment/MockSetupPostEnvironment.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@ import {MintableERC20} from '@contracts/for-test/MintableERC20.sol';
import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol';
import {Router} from '@contracts/for-test/Router.sol';

interface IVault721 {
function getProxy(address _user) external view returns (address);
function build(address _user) external returns (address payable);
}

interface ODProxy {
function execute(address _target, bytes memory _data) external returns (bytes memory);
}

// BROADCAST
// source .env && forge script MockSetupPostEnvironment --with-gas-price 2000000000 -vvvvv --rpc-url $ARB_SEPOLIA_RPC --broadcast --verify --etherscan-api-key $ARB_ETHERSCAN_API_KEY

Expand All @@ -20,6 +29,7 @@ import {Router} from '@contracts/for-test/Router.sol';
contract MockSetupPostEnvironment is CommonSepolia {
IAlgebraFactory public algebraFactory = IAlgebraFactory(SEPOLIA_ALGEBRA_FACTORY);
MintableERC20 public mockWeth;
MintableERC20 public mockWsteth = MintableERC20(0x5Ae92E2cBce39b74f149B7dA16d863382397d4a7);

function run() public {
vm.startBroadcast(vm.envUint('ARB_SEPOLIA_DEPLOYER_PK'));
Expand Down Expand Up @@ -48,8 +58,8 @@ contract MockSetupPostEnvironment is CommonSepolia {
IERC20(mockWeth).balanceOf(_pool);

// mint SystemCoin and Weth to use as liquidity
mintSystemCoin();
mintMockWeth();
mintSystemCoin();

// deploy Router for AlgebraPool
Router _router = new Router(IAlgebraPool(_pool), deployer);
Expand All @@ -73,10 +83,41 @@ contract MockSetupPostEnvironment is CommonSepolia {
mockWeth.mint(deployer, MINT_AMOUNT);
}

// todo: remove `magic` numbers - refactor
function mintSystemCoin() public {
(bool ok,) =
SEPOLIA_SYSTEM_COIN.call{value: 0}(abi.encodeWithSignature('mint(address,uint256)', deployer, MINT_AMOUNT));
require(ok, 'MintFail');
IVault721 vault721 = IVault721(0xa602c0cFf8028Dd4c99fbC5e85cF0c083C5b991A);
address _safeManager = 0x8ca7D88eaFB6f666997Ca0F62Beddd8A09a62910;
address _basicActions = 0x60487E0a0eFbfbD30908b03ea6b7833E2520604F;
address _coinJoin = 0x93544B224AB94F2b568CaeD5A074f4217fC782c7;
address _collateralJoin_wsteth = 0x52400D3AEB82b0923898D918be51439A9198D980;

// create proxy for deployer
address _proxy = vault721.getProxy(deployer);
if (_proxy == address(0)) {
_proxy = vault721.build(deployer);
}

// create safe for deployer
bytes memory _payload =
abi.encodeWithSignature('openSAFE(address,bytes32,address)', _safeManager, bytes32('WSTETH'), _proxy);
bytes memory _safeData = ODProxy(_proxy).execute(_basicActions, _payload);
uint256 _safeId = abi.decode(_safeData, (uint256));

// mint token
mockWsteth.mint(deployer, MINT_AMOUNT);
IERC20(mockWsteth).approve(_proxy, MINT_AMOUNT);

// lock collateral & generate debt
bytes memory payload = abi.encodeWithSignature(
'lockTokenCollateralAndGenerateDebt(address,address,address,uint256,uint256,uint256)',
_safeManager,
_collateralJoin_wsteth,
_coinJoin,
_safeId,
850_000_000_000_000_000,
500_000_000_000_000_000_000
);
ODProxy(_proxy).execute(_basicActions, payload);
}

function generateTickParams(IAlgebraPool pool) public view returns (int24 bottomTick, int24 topTick) {
Expand Down

0 comments on commit aeade18

Please sign in to comment.