// import const { ethers, run, network } = require("hardhat"); const { networkConfig, developmentChains, } = require("../helper-hardhat-config"); /* Above same as: const helperConfig = require("../helper-hardhat-config"); const networkConfig = helperConfig.networkConfig; */ /* // main function that auto run via hardhat deploy function deployFunc() { const { getNamedAccounts, deployments } = hre; // Hardhat runtime environment // Same as hre.getNamedAccounts & hre.deployments console.log("Hello World!"); } module.exports.default = deployFunc; */ module.exports = async ({ getNamedAccounts, deployments }) => { const { deploy, log } = deployments; const { deployer } = await getNamedAccounts(); // Take from hardhat.config.js namedAccounts const chainId = network.config.chainId; let ethUsdPriceFeedAddress; /* 31337 - Local Hardhat Network 5777 - Local Ganache Network 11155111 - Sepolia Testnet When going for localhost / hardhat network we want to use a mock */ switch (chainId) { case 31337: ethUsdAggregator = await deployments.get("MockV3Aggregator"); ethUsdPriceFeedAddress = ethUsdAggregator.address; break; case 5777: ethUsdAggregator = await deployments.get("MockV3Aggregator"); ethUsdPriceFeedAddress = ethUsdAggregator.address; break; default: ethUsdPriceFeedAddress = networkConfig[chainId]["ethUsdPriceFeed"]; } log("----------------------------------------------------"); log("Deploying FundMe Contract and waiting for confirmations..."); const fundMe = await deploy("FundMe", { from: deployer, args: [ethUsdPriceFeedAddress], log: true, // we need to wait if on a live network so we can verify properly waitConfirmations: network.config.blockConfirmations || 1, }); log(`FundMe deployed at ${fundMe.address}`); if ( !developmentChains.includes(network.name) && process.env.ETHERSCAN_API_KEY ) { await verify(fundMe.address, [ethUsdPriceFeedAddress]); } }; module.exports.tags = ["all", "fundme"];