UNPKG

hardhat-gas-reporter

Version:
90 lines (80 loc) 2.61 kB
import { HardhatUserConfig } from "hardhat/types"; import { DEFAULT_CURRENCY, DEFAULT_CURRENCY_DISPLAY_PRECISION, DEFAULT_JSON_OUTPUT_FILE, DEFAULT_OPTIMISM_HARDFORK, BASE_ECOTONE_BASE_FEE_SCALAR, BASE_ECOTONE_BLOB_BASE_FEE_SCALAR, OPTIMISM_ECOTONE_BASE_FEE_SCALAR, OPTIMISM_ECOTONE_BLOB_BASE_FEE_SCALAR, TABLE_NAME_TERMINAL } from "../constants"; import { GasReporterOptions, OptimismHardfork } from "../types"; /** * Validates Optimism hardfork option * @param hardfork * @returns {boolean} */ function isOptimismHardfork(hardfork: string | undefined) { if (hardfork === undefined) return false; return ["bedrock, ecotone"].includes(hardfork); } /** * Sets default reporter options */ export function getDefaultOptions(userConfig: Readonly<HardhatUserConfig>): GasReporterOptions { let optimismHardfork: OptimismHardfork; let opStackBaseFeeScalar: number = 0; let opStackBlobBaseFeeScalar: number = 0; const userOptions = userConfig.gasReporter; // NB: silently coercing to default if there's a misspelling or option not avail if (userOptions) { if (userOptions.L2 === "optimism" || userOptions.L2 === "base") if (!isOptimismHardfork(userOptions.optimismHardfork)){ optimismHardfork = DEFAULT_OPTIMISM_HARDFORK; } if (userOptions.L2 === "optimism") { if (!userOptions.opStackBaseFeeScalar) { opStackBaseFeeScalar = OPTIMISM_ECOTONE_BASE_FEE_SCALAR; } if (!userOptions.opStackBlobBaseFeeScalar) { opStackBlobBaseFeeScalar = OPTIMISM_ECOTONE_BLOB_BASE_FEE_SCALAR } } if (userOptions.L2 === "base") { if (!userOptions.opStackBaseFeeScalar) { opStackBaseFeeScalar = BASE_ECOTONE_BASE_FEE_SCALAR; } if (!userOptions.opStackBlobBaseFeeScalar) { opStackBlobBaseFeeScalar = BASE_ECOTONE_BLOB_BASE_FEE_SCALAR } } } return { currency: DEFAULT_CURRENCY, currencyDisplayPrecision: DEFAULT_CURRENCY_DISPLAY_PRECISION, darkMode: false, enabled: true, excludeContracts: [], excludeAutoGeneratedGetters: false, forceTerminalOutput: false, includeBytecodeInJSON: false, includeIntrinsicGas: true, L1: "ethereum", noColors: false, offline: false, opStackBaseFeeScalar, opStackBlobBaseFeeScalar, optimismHardfork, outputJSON: false, outputJSONFile: DEFAULT_JSON_OUTPUT_FILE, reportFormat: TABLE_NAME_TERMINAL, reportPureAndViewMethods: false, rst: false, rstTitle: "", suppressTerminalOutput: false, showMethodSig: false, showUncalledMethods: false, }; }