hardhat
Version:
Hardhat is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.
58 lines (52 loc) • 1.97 kB
text/typescript
import type { HardhatRuntimeEnvironment } from "../../../types/hre.js";
import type { NetworkManager } from "../../../types/network.js";
import type {
BaseTaskDefinition,
EmptyTaskDefinition,
LazyActionObject,
TaskArguments,
} from "../../../types/tasks.js";
/**
* The subset of the HRE that utils tasks are allowed to use.
*
* It is narrowed to what the hhu binary can provide without always creating
* a real HRE.
*/
export interface UtilsHardhatRuntimeEnvironment {
network: Pick<NetworkManager, "create">;
}
/**
* The fake HRE that the hhu binary builds so it can parse and run utils without
* creating a real one. It's the surface utils actions use
* ({@link UtilsHardhatRuntimeEnvironment}) plus the `config` that
* `TaskManagerImplementation` needs to build the task map.
*/
export interface FakeHhuHardhatRuntimeEnvironment
extends UtilsHardhatRuntimeEnvironment {
config: Pick<HardhatRuntimeEnvironment["config"], "tasks" | "plugins">;
}
/**
* The type of a utils task's action function.
*
* It mirrors `NewTaskActionFunction`, but the HRE passed as the second argument
* is narrowed to `UtilsHardhatRuntimeEnvironment` so that utils tasks only
* depend on the small surface that both the Hardhat CLI and the hhu binary can
* provide.
*/
export type NewUtilsTaskActionFunction<
TaskArgumentsT extends TaskArguments = TaskArguments,
> = (taskArguments: TaskArgumentsT, hre: UtilsHardhatRuntimeEnvironment) => any;
/**
* The definition of a utils task.
*
* It mirrors `NewTaskDefinition`, but narrows that action to a
* `NewUtilsTaskActionFunction`.
*/
export type NewUtilsTaskDefinition = BaseTaskDefinition & {
action: LazyActionObject<NewUtilsTaskActionFunction>;
};
/**
* The subset of `TaskDefinition` that utils tasks produce: either an empty task
* (a namespace placeholder) or a utils task. Override tasks are not supported.
*/
export type UtilsTaskDefinition = EmptyTaskDefinition | NewUtilsTaskDefinition;