import "@nomiclabs/hardhat-waffle" ; import "@typechain/hardhat" ; import "hardhat-gas-reporter" ; import "solidity-coverage" ; import "./tasks/accounts" ; import "./tasks/clean" ; import { resolve } from "path" ; import { config as dotenvConfig } from "dotenv" ; import { HardhatUserConfig } from "hardhat/config" ; import { NetworkUserConfig } from "hardhat/types" ; dotenvConfig ( { path : resolve ( __dirname , "./.env" ) } ) ; const chainIds = { ganache : 1337 , goerli : 5 , hardhat : 31337 , kovan : 42 , mainnet : 1 , rinkeby : 4 , ropsten : 3 , } ; let mnemonic ; if ( ! process . env . MNEMONIC ) { throw new Error ( "Please set your MNEMONIC in a .env file" ) ; } else { mnemonic = process . env . MNEMONIC ; } let infuraApiKey ; if ( ! process . env . INFURA_API_KEY ) { throw new Error ( "Please set your INFURA_API_KEY in a .env file" ) ; } else { infuraApiKey = process . env . INFURA_API_KEY ; } function createTestnetConfig ( network ) { const url = "https://" + network + ".infura.io/v3/" + infuraApiKey ; return { accounts : [ `0x${ process . env . DEPLOYER_WALLET_PRIVATE_KEY }` ] , chainId : chainIds [ network ] , url , } ; } const config = { defaultNetwork : "hardhat" , gasReporter : { currency : "USD" , enabled : process . env . REPORT_GAS ? true : false , excludeContracts : [ ] , src : "./contracts" , } , networks : { hardhat : { accounts : { mnemonic , } , chainId : chainIds . hardhat , } , goerli : createTestnetConfig ( "goerli" ) , kovan : createTestnetConfig ( "kovan" ) , rinkeby : createTestnetConfig ( "rinkeby" ) , ropsten : createTestnetConfig ( "ropsten" ) , mainnet : createTestnetConfig ( "mainnet" ) , } , paths : { artifacts : "./artifacts" , cache : "./cache" , sources : "./contracts" , tests : "./test" , } , solidity : { version : "0.8.7" , settings : { metadata : { bytecodeHash : "none" , } , optimizer : { enabled : true , runs : 999999 , } , } , } , typechain : { outDir : "typechain" , target : "ethers-v5" , } , } ; export default config ;