hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
62 lines (53 loc) • 1.7 kB
text/typescript
/**
* Gas statistics for a single function call or deployment (min/max/avg/median/count).
*/
export interface GasStatsJsonEntry {
min: number;
max: number;
avg: number;
median: number;
count: number;
}
/**
* Gas statistics for a single contract in the JSON output.
* `deployment` is null when the contract was never deployed during the test run
* (e.g. deployed by a factory or via forking). `functions` is null when the
* contract was deployed but no functions were called.
*/
export interface ContractGasStatsJson {
sourceName: string;
contractName: string;
deployment: GasStatsJsonEntry | null;
functions: Record<string, GasStatsJsonEntry> | null;
}
/**
* Top-level JSON output shape produced by `--gas-stats-json`.
* Contract keys are user-friendly FQNs (e.g. `contracts/Foo.sol:Foo`),
* sorted alphabetically.
*/
export interface GasStatsJson {
contracts: Record<string, ContractGasStatsJson>;
}
interface BaseGasMeasurement {
contractFqn: string;
gas: number;
}
interface FunctionGasMeasurement extends BaseGasMeasurement {
type: "function";
functionSig: string;
}
interface DeploymentGasMeasurement extends BaseGasMeasurement {
type: "deployment";
size: number;
}
export type GasMeasurement = FunctionGasMeasurement | DeploymentGasMeasurement;
export interface GasAnalyticsManager {
/* Gas Statistics */
addGasMeasurement(gasMeasurement: GasMeasurement): void;
clearGasMeasurements(id: string): Promise<void>;
saveGasMeasurements(id: string): Promise<void>;
reportGasStats(...ids: string[]): Promise<void>;
writeGasStatsJson(outputPath: string, ...ids: string[]): Promise<void>;
enableReport(): void;
disableReport(): void;
}