42 lines
1.8 KiB
JavaScript
42 lines
1.8 KiB
JavaScript
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;
|
|
});
|