import { task } from "hardhat/config"; import "@nomiclabs/hardhat-waffle"; import "solidity-coverage"; import "hardhat-deploy"; import dotenv from "dotenv"; import type { HardhatUserConfig, HttpNetworkUserConfig } from "hardhat/types"; // Load environment variables. dotenv.config(); const { NODE_URL, INFURA_KEY, MNEMONIC, ETHERSCAN_API_KEY, PK, SOLIDITY_VERSION, SOLIDITY_SETTINGS } = process.env; // Test mnemonic const DEFAULT_MNEMONIC = "candy maple cake sugar pudding cream honey rich smooth crumble sweet treat"; const sharedNetworkConfig: HttpNetworkUserConfig = {}; if (PK) { sharedNetworkConfig.accounts = [PK]; } else { sharedNetworkConfig.accounts = { mnemonic: MNEMONIC || DEFAULT_MNEMONIC, }; } const primarySolidityVersion = SOLIDITY_VERSION || "0.8.0" const userConfig: HardhatUserConfig = { paths: { artifacts: "artifacts", cache: "cache", deploy: "src/deploy", sources: "contracts", }, solidity: { compilers: [ { version: primarySolidityVersion }, { version: "0.6.12" }, { version: "0.5.17" }, { version: "0.7.5" }, ] }, networks: { hardhat: { allowUnlimitedContractSize: true, blockGasLimit: 100000000, gas: 100000000 }, mainnet: { ...sharedNetworkConfig, url: `https://mainnet.infura.io/v3/${INFURA_KEY}`, }, xdai: { ...sharedNetworkConfig, url: "https://xdai.poanetwork.dev", }, ewc: { ...sharedNetworkConfig, url: `https://rpc.energyweb.org`, }, rinkeby: { ...sharedNetworkConfig, url: `https://rinkeby.infura.io/v3/${INFURA_KEY}`, }, goerli: { ...sharedNetworkConfig, url: `https://goerli.infura.io/v3/${INFURA_KEY}`, }, kovan: { ...sharedNetworkConfig, url: `https://kovan.infura.io/v3/${INFURA_KEY}`, }, volta: { ...sharedNetworkConfig, url: `https://volta-rpc.energyweb.org`, }, }, namedAccounts: { deployer: 0, }, mocha: { timeout: 2000000, }, etherscan: { apiKey: ETHERSCAN_API_KEY, }, } /** * @type import('hardhat/config').HardhatUserConfig */ export default userConfig