// 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; */ const { verify } = require("../utils/verify"); /* // 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 () => { let contractAddress = "0x3a827C119e1D746bb3C7bcbbf95c55246C8CcBdd"; let priceFeedAddress = "0x694AA1769357215DE4FAC081bf1f309aDC325306"; await verify(contractAddress, [priceFeedAddress]); }; */ 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 argsPriceFeed = [ethUsdPriceFeedAddress]; const fundMe = await deploy("FundMe", { from: deployer, args: argsPriceFeed, 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 on testnet, then verify smart contract if ( !developmentChains.includes(network.name) && process.env.ETHERSCAN_API_KEY ) { // Verify Code await verify(fundMe.address, argsPriceFeed); } }; module.exports.tags = ["all", "fundme"];