hardhat 2.17.3 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/builtin-tasks/help.js +36 -5
- package/builtin-tasks/help.js.map +1 -1
- package/internal/cli/ArgumentsParser.d.ts +7 -2
- package/internal/cli/ArgumentsParser.d.ts.map +1 -1
- package/internal/cli/ArgumentsParser.js +72 -11
- package/internal/cli/ArgumentsParser.js.map +1 -1
- package/internal/cli/HelpPrinter.d.ts +7 -3
- package/internal/cli/HelpPrinter.d.ts.map +1 -1
- package/internal/cli/HelpPrinter.js +53 -22
- package/internal/cli/HelpPrinter.js.map +1 -1
- package/internal/cli/cli.js +69 -27
- package/internal/cli/cli.js.map +1 -1
- package/internal/core/config/config-env.d.ts +2 -1
- package/internal/core/config/config-env.d.ts.map +1 -1
- package/internal/core/config/config-env.js +7 -1
- package/internal/core/config/config-env.js.map +1 -1
- package/internal/core/errors-list.d.ts +42 -0
- package/internal/core/errors-list.d.ts.map +1 -1
- package/internal/core/errors-list.js +52 -2
- package/internal/core/errors-list.js.map +1 -1
- package/internal/core/jsonrpc/types/input/blockTag.d.ts +3 -3
- package/internal/core/jsonrpc/types/input/filterRequest.d.ts +6 -6
- package/internal/core/runtime-environment.d.ts +5 -3
- package/internal/core/runtime-environment.d.ts.map +1 -1
- package/internal/core/runtime-environment.js +30 -7
- package/internal/core/runtime-environment.js.map +1 -1
- package/internal/core/tasks/dsl.d.ts +10 -1
- package/internal/core/tasks/dsl.d.ts.map +1 -1
- package/internal/core/tasks/dsl.js +64 -4
- package/internal/core/tasks/dsl.js.map +1 -1
- package/internal/core/tasks/task-definitions.d.ts +31 -4
- package/internal/core/tasks/task-definitions.d.ts.map +1 -1
- package/internal/core/tasks/task-definitions.js +51 -5
- package/internal/core/tasks/task-definitions.js.map +1 -1
- package/internal/core/tasks/util.d.ts +6 -0
- package/internal/core/tasks/util.d.ts.map +1 -0
- package/internal/core/tasks/util.js +19 -0
- package/internal/core/tasks/util.js.map +1 -0
- package/internal/hardhat-network/provider/modules/base.d.ts +17 -0
- package/internal/hardhat-network/provider/modules/base.d.ts.map +1 -0
- package/internal/hardhat-network/provider/modules/base.js +127 -0
- package/internal/hardhat-network/provider/modules/base.js.map +1 -0
- package/internal/hardhat-network/provider/modules/debug.d.ts +5 -3
- package/internal/hardhat-network/provider/modules/debug.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/debug.js +21 -5
- package/internal/hardhat-network/provider/modules/debug.js.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.d.ts +2 -7
- package/internal/hardhat-network/provider/modules/eth.d.ts.map +1 -1
- package/internal/hardhat-network/provider/modules/eth.js +12 -60
- package/internal/hardhat-network/provider/modules/eth.js.map +1 -1
- package/internal/hardhat-network/provider/node.d.ts +1 -0
- package/internal/hardhat-network/provider/node.d.ts.map +1 -1
- package/internal/hardhat-network/provider/node.js +6 -0
- package/internal/hardhat-network/provider/node.js.map +1 -1
- package/internal/lib/hardhat-lib.d.ts.map +1 -1
- package/internal/lib/hardhat-lib.js +1 -1
- package/internal/lib/hardhat-lib.js.map +1 -1
- package/internal/sentry/anonymizer.d.ts.map +1 -1
- package/internal/sentry/anonymizer.js +3 -1
- package/internal/sentry/anonymizer.js.map +1 -1
- package/package.json +1 -1
- package/register.js +1 -1
- package/register.js.map +1 -1
- package/src/builtin-tasks/help.ts +47 -5
- package/src/internal/cli/ArgumentsParser.ts +79 -13
- package/src/internal/cli/HelpPrinter.ts +89 -24
- package/src/internal/cli/cli.ts +106 -38
- package/src/internal/core/config/config-env.ts +11 -0
- package/src/internal/core/errors-list.ts +56 -2
- package/src/internal/core/runtime-environment.ts +32 -7
- package/src/internal/core/tasks/dsl.ts +99 -4
- package/src/internal/core/tasks/task-definitions.ts +97 -3
- package/src/internal/core/tasks/util.ts +18 -0
- package/src/internal/hardhat-network/provider/modules/base.ts +156 -0
- package/src/internal/hardhat-network/provider/modules/debug.ts +50 -9
- package/src/internal/hardhat-network/provider/modules/eth.ts +16 -91
- package/src/internal/hardhat-network/provider/node.ts +12 -0
- package/src/internal/lib/hardhat-lib.ts +1 -0
- package/src/internal/sentry/anonymizer.ts +3 -1
- package/src/register.ts +1 -0
- package/src/types/runtime.ts +35 -1
- package/types/runtime.d.ts +24 -1
- package/types/runtime.d.ts.map +1 -1
|
@@ -5,18 +5,10 @@ import {
|
|
|
5
5
|
TransactionFactory,
|
|
6
6
|
TypedTransaction,
|
|
7
7
|
} from "@nomicfoundation/ethereumjs-tx";
|
|
8
|
-
import {
|
|
9
|
-
Address,
|
|
10
|
-
bufferToHex,
|
|
11
|
-
toBuffer,
|
|
12
|
-
toRpcSig,
|
|
13
|
-
zeroAddress,
|
|
14
|
-
} from "@nomicfoundation/ethereumjs-util";
|
|
8
|
+
import { Address, toBuffer, toRpcSig } from "@nomicfoundation/ethereumjs-util";
|
|
15
9
|
import * as t from "io-ts";
|
|
16
10
|
import cloneDeep from "lodash/cloneDeep";
|
|
17
|
-
|
|
18
11
|
import { BoundExperimentalHardhatNetworkMessageTraceHook } from "../../../../types";
|
|
19
|
-
import { RpcAccessList } from "../../../core/jsonrpc/types/access-list";
|
|
20
12
|
import {
|
|
21
13
|
bufferToRpcData,
|
|
22
14
|
numberToRpcQuantity,
|
|
@@ -69,7 +61,6 @@ import { MessageTrace } from "../../stack-traces/message-trace";
|
|
|
69
61
|
import { LATEST_BLOCK } from "../filter";
|
|
70
62
|
import { HardhatNode } from "../node";
|
|
71
63
|
import {
|
|
72
|
-
CallParams,
|
|
73
64
|
FilterParams,
|
|
74
65
|
GatherTracesResult,
|
|
75
66
|
MineBlockResult,
|
|
@@ -90,6 +81,7 @@ import { optional } from "../../../util/io-ts";
|
|
|
90
81
|
import * as BigIntUtils from "../../../util/bigint";
|
|
91
82
|
import { HardforkName } from "../../../util/hardforks";
|
|
92
83
|
import { ModulesLogger } from "./logger";
|
|
84
|
+
import { Base } from "./base";
|
|
93
85
|
|
|
94
86
|
const EIP1559_MIN_HARDFORK = HardforkName.LONDON;
|
|
95
87
|
const ACCESS_LIST_MIN_HARDFORK = HardforkName.BERLIN;
|
|
@@ -97,15 +89,17 @@ const EIP155_MIN_HARDFORK = HardforkName.SPURIOUS_DRAGON;
|
|
|
97
89
|
const EIP3860_MIN_HARDFORK = HardforkName.SHANGHAI;
|
|
98
90
|
|
|
99
91
|
/* eslint-disable @nomicfoundation/hardhat-internal-rules/only-hardhat-error */
|
|
100
|
-
export class EthModule {
|
|
92
|
+
export class EthModule extends Base {
|
|
101
93
|
constructor(
|
|
102
94
|
private readonly _common: Common,
|
|
103
|
-
|
|
95
|
+
_node: HardhatNode,
|
|
104
96
|
private readonly _throwOnTransactionFailures: boolean,
|
|
105
97
|
private readonly _throwOnCallFailures: boolean,
|
|
106
98
|
private readonly _logger: ModulesLogger,
|
|
107
99
|
private readonly _experimentalHardhatNetworkMessageTraceHooks: BoundExperimentalHardhatNetworkMessageTraceHook[] = []
|
|
108
|
-
) {
|
|
100
|
+
) {
|
|
101
|
+
super(_node);
|
|
102
|
+
}
|
|
109
103
|
|
|
110
104
|
public async processRequest(
|
|
111
105
|
method: string,
|
|
@@ -354,9 +348,9 @@ export class EthModule {
|
|
|
354
348
|
): Promise<string> {
|
|
355
349
|
this._validateTransactionAndCallRequest(rpcCall);
|
|
356
350
|
|
|
357
|
-
const blockNumberOrPending = await this.
|
|
351
|
+
const blockNumberOrPending = await this.resolveNewBlockTag(blockTag);
|
|
358
352
|
|
|
359
|
-
const callParams = await this.
|
|
353
|
+
const callParams = await this.rpcCallRequestToNodeCallParams(rpcCall);
|
|
360
354
|
|
|
361
355
|
const {
|
|
362
356
|
result: returnData,
|
|
@@ -434,12 +428,12 @@ export class EthModule {
|
|
|
434
428
|
|
|
435
429
|
// estimateGas behaves differently when there's no blockTag
|
|
436
430
|
// it uses "pending" as default instead of "latest"
|
|
437
|
-
const blockNumberOrPending = await this.
|
|
431
|
+
const blockNumberOrPending = await this.resolveNewBlockTag(
|
|
438
432
|
blockTag,
|
|
439
433
|
"pending"
|
|
440
434
|
);
|
|
441
435
|
|
|
442
|
-
const callParams = await this.
|
|
436
|
+
const callParams = await this.rpcCallRequestToNodeCallParams(callRequest);
|
|
443
437
|
|
|
444
438
|
const { estimation, error, trace, consoleLogMessages } =
|
|
445
439
|
await this._node.estimateGas(callParams, blockNumberOrPending);
|
|
@@ -487,7 +481,7 @@ export class EthModule {
|
|
|
487
481
|
address: Buffer,
|
|
488
482
|
blockTag: OptionalRpcNewBlockTag
|
|
489
483
|
): Promise<string> {
|
|
490
|
-
const blockNumberOrPending = await this.
|
|
484
|
+
const blockNumberOrPending = await this.resolveNewBlockTag(blockTag);
|
|
491
485
|
|
|
492
486
|
return numberToRpcQuantity(
|
|
493
487
|
await this._node.getAccountBalance(
|
|
@@ -612,7 +606,7 @@ export class EthModule {
|
|
|
612
606
|
address: Buffer,
|
|
613
607
|
blockTag: OptionalRpcNewBlockTag
|
|
614
608
|
): Promise<string> {
|
|
615
|
-
const blockNumberOrPending = await this.
|
|
609
|
+
const blockNumberOrPending = await this.resolveNewBlockTag(blockTag);
|
|
616
610
|
|
|
617
611
|
return bufferToRpcData(
|
|
618
612
|
await this._node.getCode(new Address(address), blockNumberOrPending)
|
|
@@ -721,7 +715,7 @@ export class EthModule {
|
|
|
721
715
|
slot: bigint,
|
|
722
716
|
blockTag: OptionalRpcNewBlockTag
|
|
723
717
|
): Promise<string> {
|
|
724
|
-
const blockNumberOrPending = await this.
|
|
718
|
+
const blockNumberOrPending = await this.resolveNewBlockTag(blockTag);
|
|
725
719
|
|
|
726
720
|
const data = await this._node.getStorageAt(
|
|
727
721
|
new Address(address),
|
|
@@ -854,7 +848,7 @@ export class EthModule {
|
|
|
854
848
|
address: Buffer,
|
|
855
849
|
blockTag: OptionalRpcNewBlockTag
|
|
856
850
|
): Promise<string> {
|
|
857
|
-
const blockNumberOrPending = await this.
|
|
851
|
+
const blockNumberOrPending = await this.resolveNewBlockTag(blockTag);
|
|
858
852
|
|
|
859
853
|
return numberToRpcQuantity(
|
|
860
854
|
await this._node.getNextConfirmedNonce(
|
|
@@ -1240,7 +1234,7 @@ export class EthModule {
|
|
|
1240
1234
|
);
|
|
1241
1235
|
}
|
|
1242
1236
|
|
|
1243
|
-
const resolvedNewestBlock = await this.
|
|
1237
|
+
const resolvedNewestBlock = await this.resolveNewBlockTag(newestBlock);
|
|
1244
1238
|
|
|
1245
1239
|
const feeHistory = await this._node.getFeeHistory(
|
|
1246
1240
|
blockCount,
|
|
@@ -1263,29 +1257,6 @@ export class EthModule {
|
|
|
1263
1257
|
|
|
1264
1258
|
// Utility methods
|
|
1265
1259
|
|
|
1266
|
-
private async _rpcCallRequestToNodeCallParams(
|
|
1267
|
-
rpcCall: RpcCallRequest
|
|
1268
|
-
): Promise<CallParams> {
|
|
1269
|
-
return {
|
|
1270
|
-
to: rpcCall.to,
|
|
1271
|
-
from:
|
|
1272
|
-
rpcCall.from !== undefined
|
|
1273
|
-
? rpcCall.from
|
|
1274
|
-
: await this._getDefaultCallFrom(),
|
|
1275
|
-
data: rpcCall.data !== undefined ? rpcCall.data : toBuffer([]),
|
|
1276
|
-
gasLimit:
|
|
1277
|
-
rpcCall.gas !== undefined ? rpcCall.gas : this._node.getBlockGasLimit(),
|
|
1278
|
-
value: rpcCall.value !== undefined ? rpcCall.value : 0n,
|
|
1279
|
-
accessList:
|
|
1280
|
-
rpcCall.accessList !== undefined
|
|
1281
|
-
? this._rpcAccessListToNodeAccessList(rpcCall.accessList)
|
|
1282
|
-
: undefined,
|
|
1283
|
-
gasPrice: rpcCall.gasPrice,
|
|
1284
|
-
maxFeePerGas: rpcCall.maxFeePerGas,
|
|
1285
|
-
maxPriorityFeePerGas: rpcCall.maxPriorityFeePerGas,
|
|
1286
|
-
};
|
|
1287
|
-
}
|
|
1288
|
-
|
|
1289
1260
|
private async _rpcTransactionRequestToNodeTransactionParams(
|
|
1290
1261
|
rpcTx: RpcTransactionRequest
|
|
1291
1262
|
): Promise<TransactionParams> {
|
|
@@ -1365,15 +1336,6 @@ export class EthModule {
|
|
|
1365
1336
|
};
|
|
1366
1337
|
}
|
|
1367
1338
|
|
|
1368
|
-
private _rpcAccessListToNodeAccessList(
|
|
1369
|
-
rpcAccessList: RpcAccessList
|
|
1370
|
-
): Array<[Buffer, Buffer[]]> {
|
|
1371
|
-
return rpcAccessList.map((tuple) => [
|
|
1372
|
-
tuple.address,
|
|
1373
|
-
tuple.storageKeys ?? [],
|
|
1374
|
-
]);
|
|
1375
|
-
}
|
|
1376
|
-
|
|
1377
1339
|
private async _resolveOldBlockTag(
|
|
1378
1340
|
oldBlockTag: RpcOldBlockTag
|
|
1379
1341
|
): Promise<bigint | "pending" | undefined> {
|
|
@@ -1485,22 +1447,6 @@ export class EthModule {
|
|
|
1485
1447
|
return blockTag;
|
|
1486
1448
|
}
|
|
1487
1449
|
|
|
1488
|
-
private _newBlockTagToString(tag: RpcNewBlockTag): string {
|
|
1489
|
-
if (typeof tag === "string") {
|
|
1490
|
-
return tag;
|
|
1491
|
-
}
|
|
1492
|
-
|
|
1493
|
-
if (BigIntUtils.isBigInt(tag)) {
|
|
1494
|
-
return tag.toString();
|
|
1495
|
-
}
|
|
1496
|
-
|
|
1497
|
-
if ("blockNumber" in tag) {
|
|
1498
|
-
return tag.blockNumber.toString();
|
|
1499
|
-
}
|
|
1500
|
-
|
|
1501
|
-
return bufferToHex(tag.blockHash);
|
|
1502
|
-
}
|
|
1503
|
-
|
|
1504
1450
|
private _extractNormalizedLogTopics(
|
|
1505
1451
|
topics: OptionalRpcLogTopics
|
|
1506
1452
|
): Array<Array<Buffer | null> | null> {
|
|
@@ -1532,16 +1478,6 @@ export class EthModule {
|
|
|
1532
1478
|
return address;
|
|
1533
1479
|
}
|
|
1534
1480
|
|
|
1535
|
-
private async _getDefaultCallFrom(): Promise<Buffer> {
|
|
1536
|
-
const localAccounts = await this._node.getLocalAccountAddresses();
|
|
1537
|
-
|
|
1538
|
-
if (localAccounts.length === 0) {
|
|
1539
|
-
return toBuffer(zeroAddress());
|
|
1540
|
-
}
|
|
1541
|
-
|
|
1542
|
-
return toBuffer(localAccounts[0]);
|
|
1543
|
-
}
|
|
1544
|
-
|
|
1545
1481
|
private async _sendTransactionAndReturnHash(tx: TypedTransaction) {
|
|
1546
1482
|
let result = await this._node.sendTransaction(tx);
|
|
1547
1483
|
|
|
@@ -1816,15 +1752,4 @@ You can use them by running Hardhat Network with 'hardfork' ${EIP1559_MIN_HARDFO
|
|
|
1816
1752
|
);
|
|
1817
1753
|
}
|
|
1818
1754
|
}
|
|
1819
|
-
|
|
1820
|
-
private _checkPostMergeBlockTags(blockTag: "safe" | "finalized") {
|
|
1821
|
-
const isPostMerge = this._node.isPostMergeHardfork();
|
|
1822
|
-
const hardfork = this._node.hardfork;
|
|
1823
|
-
|
|
1824
|
-
if (!isPostMerge) {
|
|
1825
|
-
throw new InvalidArgumentsError(
|
|
1826
|
-
`The '${blockTag}' block tag is not allowed in pre-merge hardforks. You are using the '${hardfork}' hardfork.`
|
|
1827
|
-
);
|
|
1828
|
-
}
|
|
1829
|
-
}
|
|
1830
1755
|
}
|
|
@@ -1377,6 +1377,18 @@ Hardhat Network's forking functionality only works with blocks from at least spu
|
|
|
1377
1377
|
await this._persistIrregularWorldState();
|
|
1378
1378
|
}
|
|
1379
1379
|
|
|
1380
|
+
public async traceCall(
|
|
1381
|
+
callParams: CallParams,
|
|
1382
|
+
block: bigint | "pending",
|
|
1383
|
+
traceConfig: RpcDebugTracingConfig
|
|
1384
|
+
) {
|
|
1385
|
+
const vmDebugTracer = new VMDebugTracer(this._vm);
|
|
1386
|
+
|
|
1387
|
+
return vmDebugTracer.trace(async () => {
|
|
1388
|
+
await this.runCall(callParams, block);
|
|
1389
|
+
}, traceConfig);
|
|
1390
|
+
}
|
|
1391
|
+
|
|
1380
1392
|
public async traceTransaction(hash: Buffer, config: RpcDebugTracingConfig) {
|
|
1381
1393
|
const block = await this.getBlockByTransactionHash(hash);
|
|
1382
1394
|
if (block === undefined) {
|
|
@@ -171,9 +171,11 @@ export class Anonymizer {
|
|
|
171
171
|
|
|
172
172
|
private _isHardhatFile(filename: string): boolean {
|
|
173
173
|
const nomiclabsPath = path.join("node_modules", "@nomiclabs");
|
|
174
|
+
const nomicFoundationPath = path.join("node_modules", "@nomicfoundation");
|
|
174
175
|
const truffleContractPath = path.join(nomiclabsPath, "truffle-contract");
|
|
175
176
|
const isHardhatFile =
|
|
176
|
-
filename.startsWith(nomiclabsPath)
|
|
177
|
+
(filename.startsWith(nomiclabsPath) ||
|
|
178
|
+
filename.startsWith(nomicFoundationPath)) &&
|
|
177
179
|
!filename.startsWith(truffleContractPath);
|
|
178
180
|
|
|
179
181
|
return isHardhatFile;
|
package/src/register.ts
CHANGED
package/src/types/runtime.ts
CHANGED
|
@@ -93,6 +93,26 @@ export interface ConfigurableTaskDefinition {
|
|
|
93
93
|
addFlag(name: string, description?: string): this;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
// type alias to get the overloaded function type
|
|
97
|
+
// for 'task` and 'subtask'
|
|
98
|
+
declare function addTask<TaskArgumentsT extends TaskArguments>(
|
|
99
|
+
name: string,
|
|
100
|
+
description?: string,
|
|
101
|
+
action?: ActionType<TaskArgumentsT>
|
|
102
|
+
): ConfigurableTaskDefinition;
|
|
103
|
+
declare function addTask<TaskArgumentsT extends TaskArguments>(
|
|
104
|
+
name: string,
|
|
105
|
+
action: ActionType<TaskArgumentsT>
|
|
106
|
+
): ConfigurableTaskDefinition;
|
|
107
|
+
type AddConfigurableTaskFunction = typeof addTask;
|
|
108
|
+
|
|
109
|
+
export interface ConfigurableScopeDefinition {
|
|
110
|
+
setDescription(description: string): this;
|
|
111
|
+
|
|
112
|
+
task: AddConfigurableTaskFunction;
|
|
113
|
+
subtask: AddConfigurableTaskFunction;
|
|
114
|
+
}
|
|
115
|
+
|
|
96
116
|
export interface ParamDefinition<T> {
|
|
97
117
|
name: string;
|
|
98
118
|
defaultValue?: T;
|
|
@@ -118,6 +138,7 @@ export interface ParamDefinitionsMap {
|
|
|
118
138
|
}
|
|
119
139
|
|
|
120
140
|
export interface TaskDefinition extends ConfigurableTaskDefinition {
|
|
141
|
+
readonly scope?: string;
|
|
121
142
|
readonly name: string;
|
|
122
143
|
readonly description?: string;
|
|
123
144
|
readonly action: ActionType<TaskArguments>;
|
|
@@ -130,6 +151,14 @@ export interface TaskDefinition extends ConfigurableTaskDefinition {
|
|
|
130
151
|
readonly positionalParamDefinitions: Array<ParamDefinition<any>>;
|
|
131
152
|
}
|
|
132
153
|
|
|
154
|
+
export interface ScopeDefinition extends ConfigurableScopeDefinition {
|
|
155
|
+
readonly name: string;
|
|
156
|
+
readonly description?: string;
|
|
157
|
+
readonly tasks: TasksMap;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export type TaskIdentifier = string | { scope?: string; task: string };
|
|
161
|
+
|
|
133
162
|
/**
|
|
134
163
|
* @type TaskArguments {object-like} - the input arguments for a task.
|
|
135
164
|
*
|
|
@@ -188,8 +217,12 @@ export interface TasksMap {
|
|
|
188
217
|
[name: string]: TaskDefinition;
|
|
189
218
|
}
|
|
190
219
|
|
|
220
|
+
export interface ScopesMap {
|
|
221
|
+
[scopeName: string]: ScopeDefinition;
|
|
222
|
+
}
|
|
223
|
+
|
|
191
224
|
export type RunTaskFunction = (
|
|
192
|
-
|
|
225
|
+
taskIdentifier: TaskIdentifier,
|
|
193
226
|
taskArguments?: TaskArguments,
|
|
194
227
|
subtaskArguments?: SubtaskArguments
|
|
195
228
|
) => Promise<any>;
|
|
@@ -199,6 +232,7 @@ export interface HardhatRuntimeEnvironment {
|
|
|
199
232
|
readonly userConfig: HardhatUserConfig;
|
|
200
233
|
readonly hardhatArguments: HardhatArguments;
|
|
201
234
|
readonly tasks: TasksMap;
|
|
235
|
+
readonly scopes: ScopesMap;
|
|
202
236
|
readonly run: RunTaskFunction;
|
|
203
237
|
readonly network: Network;
|
|
204
238
|
readonly artifacts: Artifacts;
|
package/types/runtime.d.ts
CHANGED
|
@@ -46,6 +46,14 @@ export interface ConfigurableTaskDefinition {
|
|
|
46
46
|
addOptionalVariadicPositionalParam<T>(name: string, description?: string, defaultValue?: T[], type?: ArgumentType<T>): this;
|
|
47
47
|
addFlag(name: string, description?: string): this;
|
|
48
48
|
}
|
|
49
|
+
declare function addTask<TaskArgumentsT extends TaskArguments>(name: string, description?: string, action?: ActionType<TaskArgumentsT>): ConfigurableTaskDefinition;
|
|
50
|
+
declare function addTask<TaskArgumentsT extends TaskArguments>(name: string, action: ActionType<TaskArgumentsT>): ConfigurableTaskDefinition;
|
|
51
|
+
type AddConfigurableTaskFunction = typeof addTask;
|
|
52
|
+
export interface ConfigurableScopeDefinition {
|
|
53
|
+
setDescription(description: string): this;
|
|
54
|
+
task: AddConfigurableTaskFunction;
|
|
55
|
+
subtask: AddConfigurableTaskFunction;
|
|
56
|
+
}
|
|
49
57
|
export interface ParamDefinition<T> {
|
|
50
58
|
name: string;
|
|
51
59
|
defaultValue?: T;
|
|
@@ -66,6 +74,7 @@ export interface ParamDefinitionsMap {
|
|
|
66
74
|
[paramName: string]: ParamDefinition<any>;
|
|
67
75
|
}
|
|
68
76
|
export interface TaskDefinition extends ConfigurableTaskDefinition {
|
|
77
|
+
readonly scope?: string;
|
|
69
78
|
readonly name: string;
|
|
70
79
|
readonly description?: string;
|
|
71
80
|
readonly action: ActionType<TaskArguments>;
|
|
@@ -73,6 +82,15 @@ export interface TaskDefinition extends ConfigurableTaskDefinition {
|
|
|
73
82
|
readonly paramDefinitions: ParamDefinitionsMap;
|
|
74
83
|
readonly positionalParamDefinitions: Array<ParamDefinition<any>>;
|
|
75
84
|
}
|
|
85
|
+
export interface ScopeDefinition extends ConfigurableScopeDefinition {
|
|
86
|
+
readonly name: string;
|
|
87
|
+
readonly description?: string;
|
|
88
|
+
readonly tasks: TasksMap;
|
|
89
|
+
}
|
|
90
|
+
export type TaskIdentifier = string | {
|
|
91
|
+
scope?: string;
|
|
92
|
+
task: string;
|
|
93
|
+
};
|
|
76
94
|
/**
|
|
77
95
|
* @type TaskArguments {object-like} - the input arguments for a task.
|
|
78
96
|
*
|
|
@@ -115,12 +133,16 @@ export type HardhatParamDefinitions = {
|
|
|
115
133
|
export interface TasksMap {
|
|
116
134
|
[name: string]: TaskDefinition;
|
|
117
135
|
}
|
|
118
|
-
export
|
|
136
|
+
export interface ScopesMap {
|
|
137
|
+
[scopeName: string]: ScopeDefinition;
|
|
138
|
+
}
|
|
139
|
+
export type RunTaskFunction = (taskIdentifier: TaskIdentifier, taskArguments?: TaskArguments, subtaskArguments?: SubtaskArguments) => Promise<any>;
|
|
119
140
|
export interface HardhatRuntimeEnvironment {
|
|
120
141
|
readonly config: HardhatConfig;
|
|
121
142
|
readonly userConfig: HardhatUserConfig;
|
|
122
143
|
readonly hardhatArguments: HardhatArguments;
|
|
123
144
|
readonly tasks: TasksMap;
|
|
145
|
+
readonly scopes: ScopesMap;
|
|
124
146
|
readonly run: RunTaskFunction;
|
|
125
147
|
readonly network: Network;
|
|
126
148
|
readonly artifacts: Artifacts;
|
|
@@ -141,4 +163,5 @@ export type EnvironmentExtender = (env: HardhatRuntimeEnvironment) => void;
|
|
|
141
163
|
* Adding and modifying the current provider is preferred over ignoring it and returning a new instance.
|
|
142
164
|
*/
|
|
143
165
|
export type ProviderExtender = (provider: EIP1193Provider, config: HardhatConfig, network: string) => EIP1193Provider | Promise<EIP1193Provider>;
|
|
166
|
+
export {};
|
|
144
167
|
//# sourceMappingURL=runtime.d.ts.map
|
package/types/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/types/runtime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/types/runtime.ts"],"names":[],"mappings":"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"}
|