import "@nomicfoundation/hardhat-chai-matchers"; import "@nomicfoundation/hardhat-toolbox"; import "@nomiclabs/hardhat-ethers"; import "@nomiclabs/hardhat-etherscan"; import "@typechain/hardhat"; import * as dotenv from "dotenv"; import { parseUnits } from "ethers/lib/utils"; import "hardhat-deploy"; import "hardhat-deploy-ethers"; import "hardhat-gas-reporter"; import { HardhatUserConfig, extendConfig } from "hardhat/config"; import { HardhatConfig } from "hardhat/types"; import "solidity-coverage"; import "solidity-docgen"; dotenv.config(); extendConfig((config: HardhatConfig) => { if (process.env.EXPORT !== "true") { config.external = { ...config.external, deployments: { bsctestnet: [ "node_modules/@venusprotocol/governance-contracts/deployments/bsctestnet", "node_modules/@venusprotocol/venus-protocol/deployments/bsctestnet", "node_modules/@venusprotocol/oracle/deployments/bsctestnet", ], bscmainnet: [ "node_modules/@venusprotocol/governance-contracts/deployments/bscmainnet", "node_modules/@venusprotocol/venus-protocol/deployments/bscmainnet", "node_modules/@venusprotocol/oracle/deployments/bscmainnet", ], sepolia: [ "node_modules/@venusprotocol/governance-contracts/deployments/sepolia", "node_modules/@venusprotocol/oracle/deployments/sepolia", ], }, }; } }); const config: HardhatUserConfig = { solidity: { compilers: [ { version: "0.8.25", settings: { optimizer: { enabled: true, details: { yul: !process.env.CI, }, }, evmVersion: "paris", outputSelection: { "*": { "*": ["storageLayout"], }, }, }, }, ], }, networks: { hardhat: { allowUnlimitedContractSize: true, loggingEnabled: false, live: false, }, development: { url: "http://127.0.0.1:8545/", chainId: 31337, live: false, }, bsctestnet: { url: process.env.ARCHIVE_NODE_bsctestnet || "https://data-seed-prebsc-1-s1.binance.org:8545", chainId: 97, accounts: process.env.DEPLOYER_PRIVATE_KEY ? [`0x${process.env.DEPLOYER_PRIVATE_KEY}`] : [], gasPrice: parseUnits("10", "gwei").toNumber(), gasMultiplier: 10, timeout: 12000000, }, bscmainnet: { url: process.env.ARCHIVE_NODE_bscmainnet || "https://bsc-dataseed.binance.org/", chainId: 56, live: true, timeout: 1200000, // 20 minutes accounts: process.env.DEPLOYER_PRIVATE_KEY ? [`0x${process.env.DEPLOYER_PRIVATE_KEY}`] : [], }, sepolia: { url: process.env.ARCHIVE_NODE_sepolia || "https://ethereum-sepolia.blockpi.network/v1/rpc/public", chainId: 11155111, accounts: process.env.DEPLOYER_PRIVATE_KEY ? [`0x${process.env.DEPLOYER_PRIVATE_KEY}`] : [], }, ethereum: { url: process.env.ARCHIVE_NODE_ethereum || "https://ethereum.blockpi.network/v1/rpc/public", chainId: 1, accounts: process.env.DEPLOYER_PRIVATE_KEY ? [`0x${process.env.DEPLOYER_PRIVATE_KEY}`] : [], }, }, gasReporter: { enabled: process.env.REPORT_GAS !== undefined, currency: "USD", }, typechain: { outDir: "typechain", target: "ethers-v5", }, etherscan: { customChains: [ { network: "bsctestnet", chainId: 97, urls: { apiURL: "https://api-testnet.bscscan.com/api", browserURL: "https://testnet.bscscan.com", }, }, { network: "bscmainnet", chainId: 56, urls: { apiURL: "https://api.bscscan.com/api", browserURL: "https://bscscan.com", }, }, { network: "sepolia", chainId: 11155111, urls: { apiURL: "https://api-sepolia.etherscan.io/api", browserURL: "https://sepolia.etherscan.io", }, }, { network: "ethereum", chainId: 1, urls: { apiURL: "https://api.etherscan.io/api", browserURL: "https://etherscan.io", }, }, ], apiKey: { bscmainnet: process.env.ETHERSCAN_API_KEY || "ETHERSCAN_API_KEY", bsctestnet: process.env.ETHERSCAN_API_KEY || "ETHERSCAN_API_KEY", sepolia: process.env.ETHERSCAN_API_KEY || "ETHERSCAN_API_KEY", ethereum: process.env.ETHERSCAN_API_KEY || "ETHERSCAN_API_KEY", }, }, paths: { tests: "./test", }, // Hardhat deploy namedAccounts: { deployer: 0, acc1: 1, acc2: 2, proxyAdmin: 3, acc3: 4, }, docgen: { outputDir: "./docs", pages: "files", templates: "./docgen-templates", }, external: { deployments: {}, }, }; export default config;