const hre = require("hardhat"); const fs = require("fs"); const path = require("path"); async function main() { const [deployer] = await hre.ethers.getSigners(); console.log("Deploying VaultFactory with account:", deployer.address); const Factory = await hre.ethers.getContractFactory("main/src/vault/WTFVaultFactory.sol:WTFVaultFactory"); const factory = await Factory.deploy(); await factory.waitForDeployment(); const factoryAddress = await factory.getAddress(); console.log("WTFVaultFactory deployed at:", factoryAddress); // Update robinhoodTestnet.json const deployFile = path.join(__dirname, "../deployments/robinhoodTestnet.json"); const data = JSON.parse(fs.readFileSync(deployFile, "utf-8")); data.contracts.vaultFactory = factoryAddress; fs.writeFileSync(deployFile, JSON.stringify(data, null, 2)); // Sync to frontend packages/contracts const frontendDeployFile = path.join(__dirname, "../../wtf-frontend/packages/contracts/src/robinhoodTestnet.json"); if (fs.existsSync(frontendDeployFile)) { fs.writeFileSync(frontendDeployFile, JSON.stringify(data, null, 2)); } // Export ABIs const factoryArtifact = await hre.artifacts.readArtifact("main/src/vault/WTFVaultFactory.sol:WTFVaultFactory"); const vaultArtifact = await hre.artifacts.readArtifact("main/src/vault/WTFUserVault.sol:WTFUserVault"); const frontendAbiDir = path.join(__dirname, "../../wtf-frontend/packages/contracts/src/abis"); fs.writeFileSync(path.join(frontendAbiDir, "WTFVaultFactory.json"), JSON.stringify(factoryArtifact.abi, null, 2)); fs.writeFileSync(path.join(frontendAbiDir, "WTFUserVault.json"), JSON.stringify(vaultArtifact.abi, null, 2)); console.log("VaultFactory successfully deployed & synced!"); } main().catch((error) => { console.error(error); process.exitCode = 1; });