UNPKG

hardhat

Version:

Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.

42 lines (34 loc) 1.47 kB
import type { HardhatRuntimeEnvironmentHooks } from "../../../../types/hooks.js"; import type { GasAnalyticsManagerImplementation as GasAnalyticsManagerImplementationT } from "../gas-analytics-manager.js"; import { setGasAnalyticsManager } from "../helpers/accessors.js"; let GasAnalyticsManagerImplementation: | typeof GasAnalyticsManagerImplementationT | undefined; export default async (): Promise<Partial<HardhatRuntimeEnvironmentHooks>> => ({ created: async (context, hre) => { if ( !context.globalOptions.gasStats && context.globalOptions.gasStatsJson === undefined ) { return; } if (GasAnalyticsManagerImplementation === undefined) { ({ GasAnalyticsManagerImplementation } = await import( "../gas-analytics-manager.js" )); } const gasAnalyticsManager = new GasAnalyticsManagerImplementation( hre.config.paths.cache, ); setGasAnalyticsManager(hre, gasAnalyticsManager); // NOTE: We register this hook dynamically to avoid a circular dependency // between gas-analytics and network-manager plugins. The network-manager // checks for the existence of onGasReported handlers to determine if gas // analytics is enabled, rather than directly checking the global option. hre.hooks.registerHandlers("network", { onGasMeasurement: (_context, gasMeasurement) => { gasAnalyticsManager.addGasMeasurement(gasMeasurement); }, }); }, });