@@ -6,7 +6,8 @@ import {TestNFT} from "./TestNFT.sol";
66import {console} from "forge-std/console.sol " ;
77import {Role} from "src/Role.sol " ;
88import {PolygonAgglayerCrossChain} from "src/module/token/crosschain/PolygonAgglayer.sol " ;
9- import {ERC20Base } from "src/core/token/ERC20Base.sol " ;
9+ import {ERC20Core } from "src/core/token/ERC20Core.sol " ;
10+ import {MintableERC20} from "src/module/token/minting/MintableERC20.sol " ;
1011import {OwnableRoles} from "@solady/auth/OwnableRoles.sol " ;
1112
1213contract DeployTestNFT is Script {
@@ -25,33 +26,57 @@ contract DeployTestNFT is Script {
2526
2627contract MintTestNFT is Script {
2728 TestNFT public testNFT;
28- ERC20Base public testToken;
29+ MintableERC20 public mintableModule;
30+ PolygonAgglayerCrossChain public polygonAgglayer;
31+ ERC20Core public core;
32+
33+ address agglayerBridgeExtension = 0x2311BFA86Ae27FC10E1ad3f805A2F9d22Fc8a6a1 ;
2934
3035 function run () external {
3136 uint256 deployerPrivateKey = vm.envUint ("DEPLOYER_PRIVATE_KEY " );
3237 address deployerAddress = vm.addr (deployerPrivateKey);
38+ // address coreAddress = vm.envAddress("TEST_TOKEN_ADDRESS");
3339 address testNFTAddress = vm.envAddress ("TEST_NFT_ADDRESS " );
34- address testTokenAddress = vm.envAddress ("TEST_TOKEN_ADDRESS " );
3540 uint64 destinationChain = 2442 ;
3641 vm.startBroadcast (deployerPrivateKey);
3742
38- testNFT = TestNFT (testNFTAddress );
39- testToken = ERC20Base ( payable (testTokenAddress) );
43+ address [] memory modules = new address []( 2 );
44+ bytes [] memory moduleData = new bytes []( 2 );
4045
41- OwnableRoles (testTokenAddress).grantRoles (deployerAddress, Role._MINTER_ROLE);
42- testToken.mint (deployerAddress, 100 , "" );
46+ mintableModule = new MintableERC20 (address (0x0 ));
47+ polygonAgglayer = new PolygonAgglayerCrossChain ();
48+ console.log ("mintableModule deployed to: " , address (mintableModule));
49+ console.log ("polygonAgglayer deployed to: " , address (polygonAgglayer));
50+
51+ bytes memory mintableEncodedInstallParams = abi.encode (deployerAddress);
52+ bytes memory polygonAgglayerEncodedInstallParams = abi.encode (address (polygonAgglayer));
53+
54+ modules[0 ] = address (mintableModule);
55+ modules[1 ] = address (polygonAgglayer);
56+
57+ moduleData[0 ] = mintableEncodedInstallParams;
58+ moduleData[1 ] = polygonAgglayerEncodedInstallParams;
59+
60+ core = new ERC20Core ("test " , "TEST " , "" , deployerAddress, modules, moduleData);
61+ console.log ("core deployed to: " , address (core));
62+
63+ core.grantRoles (deployerAddress, Role._MINTER_ROLE);
64+ core.mint (deployerAddress, 100 , "" );
4365 console.log ("Minted test tokens to deployer " );
4466
45- bytes memory extraArgs = abi.encode (address (0 ), false , testToken, 100 );
67+ core.approve (agglayerBridgeExtension, 100 );
68+ console.log ("Approved agglayer bridge extension " );
69+
70+ bytes memory extraArgs = abi.encode (deployerAddress, true , address (core), 100 );
4671 bytes memory payload = abi.encodeWithSelector (
4772 bytes4 (keccak256 ("mint(address,uint256) " )),
4873 deployerAddress,
4974 1
5075 );
51-
52- PolygonAgglayerCrossChain (testTokenAddress ).sendCrossChainTransaction (
76+
77+ PolygonAgglayerCrossChain (address (core) ).sendCrossChainTransaction (
5378 destinationChain,
54- address (testNFT) ,
79+ testNFTAddress ,
5580 payload,
5681 extraArgs
5782 );
0 commit comments