@nomicfoundation/hardhat-viem 3.0.0-next.8 → 3.0.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/CHANGELOG.md +76 -4
- package/README.md +16 -31
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/chains.d.ts +1 -1
- package/dist/src/internal/chains.d.ts.map +1 -1
- package/dist/src/internal/chains.js +52 -22
- package/dist/src/internal/chains.js.map +1 -1
- package/dist/src/internal/clients.d.ts.map +1 -1
- package/dist/src/internal/clients.js +27 -28
- package/dist/src/internal/clients.js.map +1 -1
- package/dist/src/internal/contracts.js +1 -1
- package/dist/src/internal/contracts.js.map +1 -1
- package/dist/src/types.d.ts +5 -5
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/index.ts +1 -1
- package/src/internal/chains.ts +79 -23
- package/src/internal/clients.ts +30 -28
- package/src/internal/contracts.ts +1 -1
- package/src/types.ts +5 -5
package/CHANGELOG.md
CHANGED
@@ -1,13 +1,85 @@
|
|
1
1
|
# @nomicfoundation/hardhat-viem
|
2
2
|
|
3
|
-
## 3.0.0
|
3
|
+
## 3.0.0
|
4
|
+
|
5
|
+
### Major Changes
|
6
|
+
|
7
|
+
- 29cc141: First release of Hardhat 3!
|
8
|
+
|
9
|
+
## 2.1.1
|
10
|
+
|
11
|
+
### Patch Changes
|
12
|
+
|
13
|
+
- bdba581: Fixed "Multiple networks with chain id found" error when multiple chains share the same chain id ([#7065](https://github.com/NomicFoundation/hardhat/issues/7065))
|
14
|
+
|
15
|
+
## 2.1.0
|
16
|
+
|
17
|
+
### Minor Changes
|
18
|
+
|
19
|
+
- 14b3042: Updated the minimal supported version of Node to v20 ([#6982](https://github.com/NomicFoundation/hardhat/pull/6982))
|
20
|
+
|
21
|
+
## 2.0.6
|
22
|
+
|
23
|
+
### Patch Changes
|
24
|
+
|
25
|
+
- 90bcfda: Remove unnecessary peerDependency
|
26
|
+
|
27
|
+
## 2.0.5
|
28
|
+
|
29
|
+
### Patch Changes
|
30
|
+
|
31
|
+
- 6010386: Moved types to `HardhatViemHelpers` and initialized `ContractTypesMap` as empty for better extensibility. Improved performance by disabling retries in dev nets (thanks @TateB!)
|
32
|
+
|
33
|
+
## 2.0.4
|
34
|
+
|
35
|
+
### Patch Changes
|
36
|
+
|
37
|
+
- efa905d: Fix for corrupted Hardhat peer dependency version from pnpm.
|
38
|
+
|
39
|
+
## 2.0.3
|
40
|
+
|
41
|
+
### Patch Changes
|
42
|
+
|
43
|
+
- a8a6038: Added `ContractTypesMap` to simplify contract type imports (thanks @beepidibop!)
|
44
|
+
|
45
|
+
## 2.0.2
|
46
|
+
|
47
|
+
### Patch Changes
|
48
|
+
|
49
|
+
- ccb0ace: Added support for library linking (thanks @Chlebamaticon!)
|
50
|
+
|
51
|
+
## 2.0.1
|
52
|
+
|
53
|
+
### Patch Changes
|
54
|
+
|
55
|
+
- a181462: Fix to add guard for updated `TransactionReceipt` type in `viem`
|
56
|
+
|
57
|
+
## 2.0.0
|
58
|
+
|
59
|
+
### Major Changes
|
60
|
+
|
61
|
+
- e4b1c07b7: Upgraded hardhat-viem to support viem@2
|
62
|
+
|
63
|
+
## 1.0.4
|
64
|
+
|
65
|
+
### Patch Changes
|
66
|
+
|
67
|
+
- 29516eb: Fixed broken link in network error message (thanks @sunsetlover36!).
|
68
|
+
|
69
|
+
## 1.0.3
|
70
|
+
|
71
|
+
### Patch Changes
|
72
|
+
|
73
|
+
- ffb301f14: Improved loading performance
|
74
|
+
|
75
|
+
## 1.0.2
|
4
76
|
|
5
77
|
### Patch Changes
|
6
78
|
|
7
|
-
-
|
79
|
+
- b521c2a05: Add configurable public client to getContractAt, deployContract and sendDeploymentTransaction
|
8
80
|
|
9
|
-
##
|
81
|
+
## 1.0.1
|
10
82
|
|
11
83
|
### Patch Changes
|
12
84
|
|
13
|
-
-
|
85
|
+
- 4943519d0: Fixed an issue with development networks using custom chain ids
|
package/README.md
CHANGED
@@ -1,57 +1,42 @@
|
|
1
|
-
#
|
1
|
+
# hardhat-viem
|
2
2
|
|
3
|
-
This plugin integrates [
|
3
|
+
This plugin integrates [viem](https://viem.sh) into Hardhat, adding a `viem` object to each network connection.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
+
> This plugin is part of the [Viem Hardhat Toolbox](https://hardhat.org/plugins/nomicfoundation-hardhat-toolbox-viem). If you are using that toolbox, there's nothing else you need to do.
|
8
|
+
|
7
9
|
To install this plugin, run the following command:
|
8
10
|
|
9
11
|
```bash
|
10
|
-
npm install --save-dev @nomicfoundation/hardhat-viem
|
12
|
+
npm install --save-dev @nomicfoundation/hardhat-viem
|
11
13
|
```
|
12
14
|
|
13
|
-
|
15
|
+
In your `hardhat.config.ts` file, import the plugin and add it to the `plugins` array:
|
14
16
|
|
15
17
|
```typescript
|
16
|
-
|
17
|
-
import viemPlugin from "@nomicfoundation/hardhat-viem";
|
18
|
-
|
19
|
-
// ...
|
18
|
+
import hardhatViem from "@nomicfoundation/hardhat-viem";
|
20
19
|
|
21
20
|
export default {
|
22
|
-
|
23
|
-
plugins: [
|
24
|
-
// ...
|
25
|
-
viemPlugin,
|
26
|
-
],
|
27
|
-
|
28
|
-
// ...
|
21
|
+
plugins: [hardhatViem],
|
29
22
|
};
|
30
23
|
```
|
31
24
|
|
32
25
|
## Usage
|
33
26
|
|
34
|
-
This plugin
|
27
|
+
This plugin adds a `viem` property to each network connection:
|
35
28
|
|
36
29
|
```ts
|
37
|
-
|
30
|
+
import { network } from "hardhat";
|
38
31
|
|
39
|
-
|
40
|
-
const publicClient = await networkConnection.viem.getPublicClient();
|
41
|
-
const balance = await publicClient.getBalance({
|
42
|
-
address: "0x...",
|
43
|
-
});
|
32
|
+
const { viem } = await hre.network.connect();
|
44
33
|
|
45
|
-
|
46
|
-
|
47
|
-
const hash = await walletClient1.sendTransaction({
|
48
|
-
to: "0x...",
|
49
|
-
value: "1000000000000000000",
|
50
|
-
});
|
34
|
+
const publicClient = await viem.getPublicClient();
|
35
|
+
console.log(await publicClient.getBlockNumber());
|
51
36
|
|
52
|
-
// contracts
|
53
37
|
const counter = await viem.deployContract("Counter");
|
54
|
-
const x = await counter.read.x();
|
55
38
|
await counter.write.inc();
|
56
|
-
|
39
|
+
console.log(await counter.read.x());
|
57
40
|
```
|
41
|
+
|
42
|
+
To learn more about using viem with Hardhat, read [our guide](https://hardhat.org/hardhat3-alpha/learn-more/using-viem).
|
package/dist/src/index.js
CHANGED
@@ -2,7 +2,7 @@ import "./type-extensions.js";
|
|
2
2
|
const hardhatPlugin = {
|
3
3
|
id: "hardhat-viem",
|
4
4
|
hookHandlers: {
|
5
|
-
network: import
|
5
|
+
network: () => import("./internal/hook-handlers/network.js"),
|
6
6
|
},
|
7
7
|
npmPackage: "@nomicfoundation/hardhat-viem",
|
8
8
|
};
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,CAAC;AAE9B,MAAM,aAAa,GAAkB;IACnC,EAAE,EAAE,cAAc;IAClB,YAAY,EAAE;QACZ,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,sBAAsB,CAAC;AAE9B,MAAM,aAAa,GAAkB;IACnC,EAAE,EAAE,cAAc;IAClB,YAAY,EAAE;QACZ,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qCAAqC,CAAC;KAC7D;IACD,UAAU,EAAE,+BAA+B;CAC5C,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
@@ -2,7 +2,7 @@ import type { TestClientMode } from "../types.js";
|
|
2
2
|
import type { ChainType } from "hardhat/types/network";
|
3
3
|
import type { EthereumProvider } from "hardhat/types/providers";
|
4
4
|
import type { Chain as ViemChain } from "viem";
|
5
|
-
export declare function getChain(provider: EthereumProvider, chainType:
|
5
|
+
export declare function getChain<ChainTypeT extends ChainType | string>(provider: EthereumProvider, chainType: ChainTypeT): Promise<ViemChain>;
|
6
6
|
export declare function getChainId(provider: EthereumProvider): Promise<number>;
|
7
7
|
export declare function isDevelopmentNetwork(provider: EthereumProvider): Promise<boolean>;
|
8
8
|
export declare function isHardhatNetwork(provider: EthereumProvider): Promise<boolean>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/internal/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/internal/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAuB/C,wBAAsB,QAAQ,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,EAClE,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,SAAS,CAAC,CAyCpB;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,cAAc,CAAC,CAUzB"}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import { assertHardhatInvariant, HardhatError, } from "@nomicfoundation/hardhat-errors";
|
2
|
+
import { isObject } from "@nomicfoundation/hardhat-utils/lang";
|
2
3
|
import { extractChain } from "viem";
|
3
4
|
import * as chainsModule from "viem/chains";
|
4
5
|
import { hardhat, anvil, optimism } from "viem/chains";
|
@@ -7,7 +8,7 @@ import { hardhat, anvil, optimism } from "viem/chains";
|
|
7
8
|
const chains = Object.values(chainsModule);
|
8
9
|
const chainCache = new WeakMap();
|
9
10
|
const chainIdCache = new WeakMap();
|
10
|
-
const
|
11
|
+
const hardhatMetadataCache = new WeakMap();
|
11
12
|
const isAnvilNetworkCache = new WeakMap();
|
12
13
|
const HARDHAT_METADATA_METHOD = "hardhat_metadata";
|
13
14
|
const ANVIL_NODE_INFO_METHOD = "anvil_nodeInfo";
|
@@ -23,21 +24,7 @@ export async function getChain(provider, chainType) {
|
|
23
24
|
});
|
24
25
|
if ((await isDevelopmentNetwork(provider)) || chain === undefined) {
|
25
26
|
if (await isHardhatNetwork(provider)) {
|
26
|
-
|
27
|
-
// types, as this is both a hardhat and an optimism chain.
|
28
|
-
//
|
29
|
-
// We are currently creating our chain based off optimism's, but that's
|
30
|
-
// not always the correct behavior, as the user may be connecting to
|
31
|
-
// a different chain.
|
32
|
-
if (chainType === "optimism") {
|
33
|
-
chain = { ...optimism, id: chainId };
|
34
|
-
}
|
35
|
-
else {
|
36
|
-
chain = {
|
37
|
-
...hardhat,
|
38
|
-
id: chainId,
|
39
|
-
};
|
40
|
-
}
|
27
|
+
chain = createHardhatChain(provider, chainId, chainType);
|
41
28
|
}
|
42
29
|
else if (await isAnvilNetwork(provider)) {
|
43
30
|
chain = {
|
@@ -78,13 +65,22 @@ export async function isDevelopmentNetwork(provider) {
|
|
78
65
|
return false;
|
79
66
|
}
|
80
67
|
export async function isHardhatNetwork(provider) {
|
81
|
-
const
|
82
|
-
if (
|
83
|
-
return
|
68
|
+
const cachedHardhatMetadata = hardhatMetadataCache.get(provider);
|
69
|
+
if (cachedHardhatMetadata !== undefined) {
|
70
|
+
return true;
|
71
|
+
}
|
72
|
+
try {
|
73
|
+
const hardhatMetadata = await provider.request({
|
74
|
+
method: HARDHAT_METADATA_METHOD,
|
75
|
+
});
|
76
|
+
assertHardhatInvariant(isHardhatMetadata(hardhatMetadata), "Expected valid hardhat metadata response");
|
77
|
+
hardhatMetadataCache.set(provider, hardhatMetadata);
|
78
|
+
return true;
|
79
|
+
}
|
80
|
+
catch {
|
81
|
+
hardhatMetadataCache.delete(provider);
|
82
|
+
return false;
|
84
83
|
}
|
85
|
-
const isHardhat = await isMethodSupported(provider, HARDHAT_METADATA_METHOD);
|
86
|
-
isHardhatNetworkCache.set(provider, isHardhat);
|
87
|
-
return isHardhat;
|
88
84
|
}
|
89
85
|
export async function isAnvilNetwork(provider) {
|
90
86
|
const cachedIsAnvil = isAnvilNetworkCache.get(provider);
|
@@ -113,4 +109,38 @@ async function isMethodSupported(provider, method) {
|
|
113
109
|
return false;
|
114
110
|
}
|
115
111
|
}
|
112
|
+
function createHardhatChain(provider, chainId, chainType) {
|
113
|
+
const hardhatMetadata = hardhatMetadataCache.get(provider);
|
114
|
+
assertHardhatInvariant(hardhatMetadata !== undefined, "Expected hardhat metadata to be available");
|
115
|
+
if (hardhatMetadata.forkedNetwork?.chainId !== undefined) {
|
116
|
+
const forkedChain = extractChain({
|
117
|
+
chains,
|
118
|
+
id: hardhatMetadata.forkedNetwork.chainId,
|
119
|
+
});
|
120
|
+
if (forkedChain !== undefined) {
|
121
|
+
return {
|
122
|
+
...forkedChain,
|
123
|
+
...hardhat,
|
124
|
+
id: chainId,
|
125
|
+
};
|
126
|
+
}
|
127
|
+
}
|
128
|
+
const chain = {
|
129
|
+
...hardhat,
|
130
|
+
id: chainId,
|
131
|
+
};
|
132
|
+
if (chainType === "op") {
|
133
|
+
// we add the optimism contracts to enable viem's L2 actions
|
134
|
+
chain.contracts = {
|
135
|
+
...optimism.contracts,
|
136
|
+
};
|
137
|
+
}
|
138
|
+
return chain;
|
139
|
+
}
|
140
|
+
function isHardhatMetadata(value) {
|
141
|
+
return (isObject(value) &&
|
142
|
+
(value.forkedNetwork === undefined ||
|
143
|
+
(isObject(value.forkedNetwork) &&
|
144
|
+
typeof value.forkedNetwork.chainId === "number")));
|
145
|
+
}
|
116
146
|
//# sourceMappingURL=chains.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/internal/chains.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,sBAAsB,EACtB,YAAY,GACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,YAAY,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvD;kDACkD;AAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAgB,CAAC;AAE1D,MAAM,UAAU,GAAG,IAAI,OAAO,EAA+B,CAAC;AAC9D,MAAM,YAAY,GAAG,IAAI,OAAO,EAA4B,CAAC;AAC7D,MAAM,
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/internal/chains.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../src/internal/clients.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EACV,OAAO,IAAI,WAAW,EACtB,kBAAkB,IAAI,sBAAsB,EAC5C,gBAAgB,IAAI,oBAAoB,EACxC,kBAAkB,IAAI,sBAAsB,EAC7C,MAAM,MAAM,CAAC;AAcd,wBAAsB,eAAe,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,EACzE,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,UAAU,EACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACnD,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,
|
1
|
+
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../src/internal/clients.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,yBAAyB,EACzB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EACV,OAAO,IAAI,WAAW,EACtB,kBAAkB,IAAI,sBAAsB,EAC5C,gBAAgB,IAAI,oBAAoB,EACxC,kBAAkB,IAAI,sBAAsB,EAC7C,MAAM,MAAM,CAAC;AAcd,wBAAsB,eAAe,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,EACzE,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,UAAU,EACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACnD,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAoBhD;AAED,wBAAsB,gBAAgB,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,EAC1E,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,UAAU,EACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACnD,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC,CA0BvD;AAED,wBAAsB,eAAe,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,EACzE,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,WAAW,EACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACnD,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAqBhD;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,SAAS,SAAS,GAAG,MAAM,EAErC,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,UAAU,EACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACnD,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAoBhD;AAED,wBAAsB,aAAa,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,EACvE,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,UAAU,EACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC/C,OAAO,CAAC,UAAU,CAAC,CAcrB"}
|
@@ -5,16 +5,14 @@ import { getAccounts } from "./accounts.js";
|
|
5
5
|
import { getChain, getMode, isDevelopmentNetwork } from "./chains.js";
|
6
6
|
export async function getPublicClient(provider, chainType, publicClientConfig) {
|
7
7
|
const chain = publicClientConfig?.chain ?? (await getChain(provider, chainType));
|
8
|
-
const
|
9
|
-
...(await getDefaultClientParameters(provider)),
|
10
|
-
...publicClientConfig,
|
11
|
-
};
|
8
|
+
const { defaultClientParams, defaultTransportParams } = await getDefaultParams(provider);
|
12
9
|
let publicClient = createPublicClient({
|
13
10
|
chain,
|
14
|
-
transport: customTransport(provider),
|
15
|
-
...
|
11
|
+
transport: customTransport(provider, defaultTransportParams),
|
12
|
+
...defaultClientParams,
|
13
|
+
...publicClientConfig,
|
16
14
|
});
|
17
|
-
if (chainType === "
|
15
|
+
if (chainType === "op") {
|
18
16
|
publicClient = publicClient.extend(publicActionsL2());
|
19
17
|
}
|
20
18
|
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
|
@@ -24,17 +22,15 @@ export async function getPublicClient(provider, chainType, publicClientConfig) {
|
|
24
22
|
export async function getWalletClients(provider, chainType, walletClientConfig) {
|
25
23
|
const chain = walletClientConfig?.chain ?? (await getChain(provider, chainType));
|
26
24
|
const accounts = await getAccounts(provider);
|
27
|
-
const
|
28
|
-
...(await getDefaultClientParameters(provider)),
|
29
|
-
...walletClientConfig,
|
30
|
-
};
|
25
|
+
const { defaultClientParams, defaultTransportParams } = await getDefaultParams(provider);
|
31
26
|
let walletClients = accounts.map((account) => createWalletClient({
|
32
27
|
chain,
|
33
28
|
account,
|
34
|
-
transport: customTransport(provider),
|
35
|
-
...
|
29
|
+
transport: customTransport(provider, defaultTransportParams),
|
30
|
+
...defaultClientParams,
|
31
|
+
...walletClientConfig,
|
36
32
|
}));
|
37
|
-
if (chainType === "
|
33
|
+
if (chainType === "op") {
|
38
34
|
walletClients = walletClients.map((walletClient) => walletClient.extend(walletActionsL2()));
|
39
35
|
}
|
40
36
|
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
|
@@ -43,17 +39,15 @@ export async function getWalletClients(provider, chainType, walletClientConfig)
|
|
43
39
|
}
|
44
40
|
export async function getWalletClient(provider, chainType, address, walletClientConfig) {
|
45
41
|
const chain = walletClientConfig?.chain ?? (await getChain(provider, chainType));
|
46
|
-
const
|
47
|
-
...(await getDefaultClientParameters(provider)),
|
48
|
-
...walletClientConfig,
|
49
|
-
};
|
42
|
+
const { defaultClientParams, defaultTransportParams } = await getDefaultParams(provider);
|
50
43
|
let walletClient = createWalletClient({
|
51
44
|
chain,
|
52
45
|
account: address,
|
53
|
-
transport: customTransport(provider),
|
54
|
-
...
|
46
|
+
transport: customTransport(provider, defaultTransportParams),
|
47
|
+
...defaultClientParams,
|
48
|
+
...walletClientConfig,
|
55
49
|
});
|
56
|
-
if (chainType === "
|
50
|
+
if (chainType === "op") {
|
57
51
|
walletClient = walletClient.extend(walletActionsL2());
|
58
52
|
}
|
59
53
|
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions --
|
@@ -73,19 +67,24 @@ export async function getDefaultWalletClient(provider, chainType, walletClientCo
|
|
73
67
|
export async function getTestClient(provider, chainType, testClientConfig) {
|
74
68
|
const chain = testClientConfig?.chain ?? (await getChain(provider, chainType));
|
75
69
|
const mode = await getMode(provider);
|
76
|
-
const parameters = { ...DEFAULT_CLIENT_PARAMETERS, ...testClientConfig };
|
77
70
|
const testClient = createTestClient({
|
78
71
|
chain,
|
79
72
|
mode,
|
80
|
-
transport: customTransport(provider),
|
81
|
-
...
|
73
|
+
transport: customTransport(provider, DEFAULT_DEVELOPMENT_TRANSPORT_PARAMS),
|
74
|
+
...DEFAULT_DEVELOPMENT_CLIENT_PARAMS,
|
75
|
+
...testClientConfig,
|
82
76
|
});
|
83
77
|
return testClient;
|
84
78
|
}
|
85
|
-
const
|
86
|
-
|
87
|
-
|
88
|
-
|
79
|
+
const DEFAULT_DEVELOPMENT_CLIENT_PARAMS = { pollingInterval: 50, cacheTime: 0 };
|
80
|
+
const DEFAULT_DEVELOPMENT_TRANSPORT_PARAMS = { retryCount: 0 };
|
81
|
+
async function getDefaultParams(provider) {
|
82
|
+
const isDevelopment = await isDevelopmentNetwork(provider);
|
83
|
+
return isDevelopment
|
84
|
+
? {
|
85
|
+
defaultClientParams: DEFAULT_DEVELOPMENT_CLIENT_PARAMS,
|
86
|
+
defaultTransportParams: DEFAULT_DEVELOPMENT_TRANSPORT_PARAMS,
|
87
|
+
}
|
89
88
|
: {};
|
90
89
|
}
|
91
90
|
//# sourceMappingURL=clients.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/internal/clients.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,IAAI,eAAe,GAC1B,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAA0B,EAC1B,SAAqB,EACrB,kBAAoD;IAEpD,MAAM,KAAK,GACT,kBAAkB,EAAE,KAAK,IAAI,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACrE,MAAM,
|
1
|
+
{"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../src/internal/clients.ts"],"names":[],"mappings":"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"}
|
@@ -8,7 +8,7 @@ export async function deployContract(provider, artifactManager, contractName, co
|
|
8
8
|
const { client, confirmations = 1, libraries = {}, ...deployContractParameters } = deployContractConfig;
|
9
9
|
if (confirmations < 0) {
|
10
10
|
throw new HardhatError(HardhatError.ERRORS.HARDHAT_VIEM.GENERAL.INVALID_CONFIRMATIONS, {
|
11
|
-
error: "Confirmations must be
|
11
|
+
error: "Confirmations must be greater than 0.",
|
12
12
|
});
|
13
13
|
}
|
14
14
|
if (confirmations === 0) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/internal/contracts.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAA0B,EAC1B,eAAgC,EAChC,YAA0B,EAC1B,kBAA6B,EAAE,EAC/B,uBAA6C,EAAE;IAE/C,MAAM,EACJ,MAAM,EACN,aAAa,GAAG,CAAC,EACjB,SAAS,GAAG,EAAE,EACd,GAAG,wBAAwB,EAC5B,GAAG,oBAAoB,CAAC;IAEzB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,YAAY,CACpB,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAC9D;YACE,KAAK,EAAE,
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../src/internal/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
@@ -9,7 +9,7 @@ export interface HardhatViemHelpers<ChainTypeT extends ChainType | string = Defa
|
|
9
9
|
* @param publicClientConfig A viem's PublicClientConfig object with the
|
10
10
|
* desired configuration.
|
11
11
|
* @returns The configured public client. If the connection's chainType is
|
12
|
-
* "
|
12
|
+
* "op", the client will be extended with L2 actions.
|
13
13
|
*/
|
14
14
|
getPublicClient: (publicClientConfig?: Partial<ViemPublicClientConfig>) => Promise<GetPublicClientReturnType<ChainTypeT>>;
|
15
15
|
/**
|
@@ -19,7 +19,7 @@ export interface HardhatViemHelpers<ChainTypeT extends ChainType | string = Defa
|
|
19
19
|
* @param walletClientConfig A viem's WalletClientConfig object with the
|
20
20
|
* desired configuration.
|
21
21
|
* @returns An array with the configured wallet clients. If the connection's
|
22
|
-
* chainType is "
|
22
|
+
* chainType is "op", the clients will be extended with L2 actions.
|
23
23
|
*/
|
24
24
|
getWalletClients: (walletClientConfig?: Partial<ViemWalletClientConfig>) => Promise<Array<GetWalletClientReturnType<ChainTypeT>>>;
|
25
25
|
/**
|
@@ -30,7 +30,7 @@ export interface HardhatViemHelpers<ChainTypeT extends ChainType | string = Defa
|
|
30
30
|
* @param walletClientConfig A viem's WalletClientConfig object with the
|
31
31
|
* desired configuration.
|
32
32
|
* @returns The configured wallet client for the specified address. If the
|
33
|
-
* connection's chainType is "
|
33
|
+
* connection's chainType is "op", the client will be extended with L2
|
34
34
|
* actions.
|
35
35
|
*/
|
36
36
|
getWalletClient: (address: ViemAddress, walletClientConfig?: Partial<ViemWalletClientConfig>) => Promise<GetWalletClientReturnType<ChainTypeT>>;
|
@@ -84,8 +84,8 @@ export interface HardhatViemHelpers<ChainTypeT extends ChainType | string = Defa
|
|
84
84
|
*/
|
85
85
|
getContractAt: <ContractName extends string>(contractName: ContractName, address: ViemAddress, getContractAtConfig?: GetContractAtConfig) => Promise<ContractReturnType<ContractName>>;
|
86
86
|
}
|
87
|
-
export type GetPublicClientReturnType<ChainTypeT extends ChainType | string> = ChainTypeT extends "
|
88
|
-
export type GetWalletClientReturnType<ChainTypeT extends ChainType | string> = ChainTypeT extends "
|
87
|
+
export type GetPublicClientReturnType<ChainTypeT extends ChainType | string> = ChainTypeT extends "op" ? OpPublicClient : PublicClient;
|
88
|
+
export type GetWalletClientReturnType<ChainTypeT extends ChainType | string> = ChainTypeT extends "op" ? OpWalletClient : WalletClient;
|
89
89
|
export type PublicClient = ViemPublicClient<ViemTransport, ViemChain>;
|
90
90
|
export type OpPublicClient = ViemClient<ViemTransport, ViemChain, undefined, ViemRpcSchema, ViemPublicActions<ViemTransport, ViemChain, ViemAccount> & ViemOpStackPublicActionsL2<ViemChain, ViemAccount>>;
|
91
91
|
export type WalletClient = ViemWalletClient<ViemTransport, ViemChain, ViemAccount>;
|
package/dist/src/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EACV,GAAG,IAAI,OAAO,EACd,OAAO,IAAI,WAAW,EACtB,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,SAAS,EAClB,MAAM,IAAI,UAAU,EACpB,uBAAuB,IAAI,2BAA2B,EACtD,gBAAgB,IAAI,oBAAoB,EACxC,qBAAqB,IAAI,yBAAyB,EAClD,wBAAwB,IAAI,4BAA4B,EACxD,YAAY,IAAI,gBAAgB,EAChC,kBAAkB,IAAI,sBAAsB,EAC5C,SAAS,IAAI,aAAa,EAC1B,UAAU,IAAI,cAAc,EAC5B,gBAAgB,IAAI,oBAAoB,EACxC,SAAS,IAAI,aAAa,EAC1B,YAAY,IAAI,gBAAgB,EAChC,kBAAkB,IAAI,sBAAsB,EAC5C,aAAa,IAAI,iBAAiB,EAClC,aAAa,IAAI,iBAAiB,EACnC,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EACV,eAAe,IAAI,0BAA0B,EAC7C,eAAe,IAAI,0BAA0B,EAC9C,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,kBAAkB,CACjC,UAAU,SAAS,SAAS,GAAG,MAAM,GAAG,gBAAgB;IAExD;;;;;;;OAOG;IACH,eAAe,EAAE,CACf,kBAAkB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,KACjD,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD;;;;;;;;OAQG;IACH,gBAAgB,EAAE,CAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,KACjD,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3D;;;;;;;;;;OAUG;IACH,eAAe,EAAE,CACf,OAAO,EAAE,WAAW,EACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,KACjD,OAAO,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD;;;;;;OAMG;IACH,aAAa,EAAE,CACb,gBAAgB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAC7C,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB;;;;;;;;;;OAUG;IACH,cAAc,EAAE,CAAC,YAAY,SAAS,MAAM,EAC1C,YAAY,EAAE,YAAY,EAC1B,eAAe,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,EAC/C,oBAAoB,CAAC,EAAE,oBAAoB,KACxC,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/C;;;;;;;;;;;;OAYG;IACH,yBAAyB,EAAE,CAAC,YAAY,SAAS,MAAM,EACrD,YAAY,EAAE,YAAY,EAC1B,eAAe,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,EAC/C,+BAA+B,CAAC,EAAE,+BAA+B,KAC9D,OAAO,CAAC;QACX,QAAQ,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC3C,qBAAqB,EAAE,wBAAwB,CAAC;KACjD,CAAC,CAAC;IACH;;;;;;;;;;OAUG;IACH,aAAa,EAAE,CAAC,YAAY,SAAS,MAAM,EACzC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,WAAW,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,KACtC,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,yBAAyB,CAAC,UAAU,SAAS,SAAS,GAAG,MAAM,IACzE,UAAU,SAAS,
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nomicfoundation/hardhat-viem",
|
3
|
-
"version": "3.0.0
|
3
|
+
"version": "3.0.0",
|
4
4
|
"description": "Hardhat plugin for viem",
|
5
5
|
"homepage": "https://github.com/nomicfoundation/hardhat/tree/v-next/v-next/hardhat-viem",
|
6
6
|
"repository": {
|
@@ -31,25 +31,25 @@
|
|
31
31
|
"README.md"
|
32
32
|
],
|
33
33
|
"devDependencies": {
|
34
|
-
"@nomicfoundation/hardhat-node-test-reporter": "^3.0.0
|
34
|
+
"@nomicfoundation/hardhat-node-test-reporter": "^3.0.0",
|
35
35
|
"@types/node": "^20.14.9",
|
36
36
|
"c8": "^9.1.0",
|
37
37
|
"eslint": "9.25.1",
|
38
|
-
"expect-type": "^
|
38
|
+
"expect-type": "^1.2.1",
|
39
39
|
"prettier": "3.2.5",
|
40
40
|
"rimraf": "^5.0.5",
|
41
41
|
"tsx": "^4.19.3",
|
42
|
-
"typescript": "~5.
|
43
|
-
"viem": "^2.
|
44
|
-
"@nomicfoundation/hardhat-test-utils": "^
|
42
|
+
"typescript": "~5.8.0",
|
43
|
+
"viem": "^2.30.0",
|
44
|
+
"@nomicfoundation/hardhat-test-utils": "^2.0.1"
|
45
45
|
},
|
46
46
|
"dependencies": {
|
47
|
-
"@nomicfoundation/hardhat-errors": "^3.0.0
|
48
|
-
"@nomicfoundation/hardhat-utils": "^3.0.0
|
47
|
+
"@nomicfoundation/hardhat-errors": "^3.0.0",
|
48
|
+
"@nomicfoundation/hardhat-utils": "^3.0.0"
|
49
49
|
},
|
50
50
|
"peerDependencies": {
|
51
|
-
"hardhat": "^3.0.0
|
52
|
-
"viem": "^2.
|
51
|
+
"hardhat": "^3.0.0",
|
52
|
+
"viem": "^2.30.0"
|
53
53
|
},
|
54
54
|
"scripts": {
|
55
55
|
"lint": "pnpm prettier --check && pnpm eslint",
|
package/src/index.ts
CHANGED
@@ -5,7 +5,7 @@ import "./type-extensions.js";
|
|
5
5
|
const hardhatPlugin: HardhatPlugin = {
|
6
6
|
id: "hardhat-viem",
|
7
7
|
hookHandlers: {
|
8
|
-
network: import
|
8
|
+
network: () => import("./internal/hook-handlers/network.js"),
|
9
9
|
},
|
10
10
|
npmPackage: "@nomicfoundation/hardhat-viem",
|
11
11
|
};
|
package/src/internal/chains.ts
CHANGED
@@ -7,6 +7,7 @@ import {
|
|
7
7
|
assertHardhatInvariant,
|
8
8
|
HardhatError,
|
9
9
|
} from "@nomicfoundation/hardhat-errors";
|
10
|
+
import { isObject } from "@nomicfoundation/hardhat-utils/lang";
|
10
11
|
import { extractChain } from "viem";
|
11
12
|
import * as chainsModule from "viem/chains";
|
12
13
|
import { hardhat, anvil, optimism } from "viem/chains";
|
@@ -17,15 +18,15 @@ const chains = Object.values(chainsModule) as ViemChain[];
|
|
17
18
|
|
18
19
|
const chainCache = new WeakMap<EthereumProvider, ViemChain>();
|
19
20
|
const chainIdCache = new WeakMap<EthereumProvider, number>();
|
20
|
-
const
|
21
|
+
const hardhatMetadataCache = new WeakMap<EthereumProvider, HardhatMetadata>();
|
21
22
|
const isAnvilNetworkCache = new WeakMap<EthereumProvider, boolean>();
|
22
23
|
|
23
24
|
const HARDHAT_METADATA_METHOD = "hardhat_metadata";
|
24
25
|
const ANVIL_NODE_INFO_METHOD = "anvil_nodeInfo";
|
25
26
|
|
26
|
-
export async function getChain(
|
27
|
+
export async function getChain<ChainTypeT extends ChainType | string>(
|
27
28
|
provider: EthereumProvider,
|
28
|
-
chainType:
|
29
|
+
chainType: ChainTypeT,
|
29
30
|
): Promise<ViemChain> {
|
30
31
|
const cachedChain = chainCache.get(provider);
|
31
32
|
if (cachedChain !== undefined) {
|
@@ -41,20 +42,7 @@ export async function getChain(
|
|
41
42
|
|
42
43
|
if ((await isDevelopmentNetwork(provider)) || chain === undefined) {
|
43
44
|
if (await isHardhatNetwork(provider)) {
|
44
|
-
|
45
|
-
// types, as this is both a hardhat and an optimism chain.
|
46
|
-
//
|
47
|
-
// We are currently creating our chain based off optimism's, but that's
|
48
|
-
// not always the correct behavior, as the user may be connecting to
|
49
|
-
// a different chain.
|
50
|
-
if (chainType === "optimism") {
|
51
|
-
chain = { ...optimism, id: chainId };
|
52
|
-
} else {
|
53
|
-
chain = {
|
54
|
-
...hardhat,
|
55
|
-
id: chainId,
|
56
|
-
};
|
57
|
-
}
|
45
|
+
chain = createHardhatChain(provider, chainId, chainType);
|
58
46
|
} else if (await isAnvilNetwork(provider)) {
|
59
47
|
chain = {
|
60
48
|
...anvil,
|
@@ -111,15 +99,27 @@ export async function isDevelopmentNetwork(
|
|
111
99
|
export async function isHardhatNetwork(
|
112
100
|
provider: EthereumProvider,
|
113
101
|
): Promise<boolean> {
|
114
|
-
const
|
115
|
-
if (
|
116
|
-
return
|
102
|
+
const cachedHardhatMetadata = hardhatMetadataCache.get(provider);
|
103
|
+
if (cachedHardhatMetadata !== undefined) {
|
104
|
+
return true;
|
117
105
|
}
|
118
106
|
|
119
|
-
|
120
|
-
|
107
|
+
try {
|
108
|
+
const hardhatMetadata = await provider.request({
|
109
|
+
method: HARDHAT_METADATA_METHOD,
|
110
|
+
});
|
111
|
+
|
112
|
+
assertHardhatInvariant(
|
113
|
+
isHardhatMetadata(hardhatMetadata),
|
114
|
+
"Expected valid hardhat metadata response",
|
115
|
+
);
|
121
116
|
|
122
|
-
|
117
|
+
hardhatMetadataCache.set(provider, hardhatMetadata);
|
118
|
+
return true;
|
119
|
+
} catch {
|
120
|
+
hardhatMetadataCache.delete(provider);
|
121
|
+
return false;
|
122
|
+
}
|
123
123
|
}
|
124
124
|
|
125
125
|
export async function isAnvilNetwork(
|
@@ -158,3 +158,59 @@ async function isMethodSupported(provider: EthereumProvider, method: string) {
|
|
158
158
|
return false;
|
159
159
|
}
|
160
160
|
}
|
161
|
+
|
162
|
+
function createHardhatChain<ChainTypeT extends ChainType | string>(
|
163
|
+
provider: EthereumProvider,
|
164
|
+
chainId: number,
|
165
|
+
chainType: ChainTypeT,
|
166
|
+
): ViemChain {
|
167
|
+
const hardhatMetadata = hardhatMetadataCache.get(provider);
|
168
|
+
assertHardhatInvariant(
|
169
|
+
hardhatMetadata !== undefined,
|
170
|
+
"Expected hardhat metadata to be available",
|
171
|
+
);
|
172
|
+
|
173
|
+
if (hardhatMetadata.forkedNetwork?.chainId !== undefined) {
|
174
|
+
const forkedChain = extractChain({
|
175
|
+
chains,
|
176
|
+
id: hardhatMetadata.forkedNetwork.chainId,
|
177
|
+
});
|
178
|
+
|
179
|
+
if (forkedChain !== undefined) {
|
180
|
+
return {
|
181
|
+
...forkedChain,
|
182
|
+
...hardhat,
|
183
|
+
id: chainId,
|
184
|
+
};
|
185
|
+
}
|
186
|
+
}
|
187
|
+
|
188
|
+
const chain: ViemChain = {
|
189
|
+
...hardhat,
|
190
|
+
id: chainId,
|
191
|
+
};
|
192
|
+
|
193
|
+
if (chainType === "op") {
|
194
|
+
// we add the optimism contracts to enable viem's L2 actions
|
195
|
+
chain.contracts = {
|
196
|
+
...optimism.contracts,
|
197
|
+
};
|
198
|
+
}
|
199
|
+
|
200
|
+
return chain;
|
201
|
+
}
|
202
|
+
|
203
|
+
interface HardhatMetadata {
|
204
|
+
forkedNetwork?: {
|
205
|
+
chainId: number;
|
206
|
+
};
|
207
|
+
}
|
208
|
+
|
209
|
+
function isHardhatMetadata(value: unknown): value is HardhatMetadata {
|
210
|
+
return (
|
211
|
+
isObject(value) &&
|
212
|
+
(value.forkedNetwork === undefined ||
|
213
|
+
(isObject(value.forkedNetwork) &&
|
214
|
+
typeof value.forkedNetwork.chainId === "number"))
|
215
|
+
);
|
216
|
+
}
|
package/src/internal/clients.ts
CHANGED
@@ -31,18 +31,17 @@ export async function getPublicClient<ChainTypeT extends ChainType | string>(
|
|
31
31
|
): Promise<GetPublicClientReturnType<ChainTypeT>> {
|
32
32
|
const chain =
|
33
33
|
publicClientConfig?.chain ?? (await getChain(provider, chainType));
|
34
|
-
const
|
35
|
-
|
36
|
-
...publicClientConfig,
|
37
|
-
};
|
34
|
+
const { defaultClientParams, defaultTransportParams } =
|
35
|
+
await getDefaultParams(provider);
|
38
36
|
|
39
37
|
let publicClient = createPublicClient({
|
40
38
|
chain,
|
41
|
-
transport: customTransport(provider),
|
42
|
-
...
|
39
|
+
transport: customTransport(provider, defaultTransportParams),
|
40
|
+
...defaultClientParams,
|
41
|
+
...publicClientConfig,
|
43
42
|
});
|
44
43
|
|
45
|
-
if (chainType === "
|
44
|
+
if (chainType === "op") {
|
46
45
|
publicClient = publicClient.extend(publicActionsL2());
|
47
46
|
}
|
48
47
|
|
@@ -59,21 +58,20 @@ export async function getWalletClients<ChainTypeT extends ChainType | string>(
|
|
59
58
|
const chain =
|
60
59
|
walletClientConfig?.chain ?? (await getChain(provider, chainType));
|
61
60
|
const accounts = await getAccounts(provider);
|
62
|
-
const
|
63
|
-
|
64
|
-
...walletClientConfig,
|
65
|
-
};
|
61
|
+
const { defaultClientParams, defaultTransportParams } =
|
62
|
+
await getDefaultParams(provider);
|
66
63
|
|
67
64
|
let walletClients = accounts.map((account) =>
|
68
65
|
createWalletClient({
|
69
66
|
chain,
|
70
67
|
account,
|
71
|
-
transport: customTransport(provider),
|
72
|
-
...
|
68
|
+
transport: customTransport(provider, defaultTransportParams),
|
69
|
+
...defaultClientParams,
|
70
|
+
...walletClientConfig,
|
73
71
|
}),
|
74
72
|
);
|
75
73
|
|
76
|
-
if (chainType === "
|
74
|
+
if (chainType === "op") {
|
77
75
|
walletClients = walletClients.map((walletClient) =>
|
78
76
|
walletClient.extend(walletActionsL2()),
|
79
77
|
);
|
@@ -92,19 +90,18 @@ export async function getWalletClient<ChainTypeT extends ChainType | string>(
|
|
92
90
|
): Promise<GetWalletClientReturnType<ChainTypeT>> {
|
93
91
|
const chain =
|
94
92
|
walletClientConfig?.chain ?? (await getChain(provider, chainType));
|
95
|
-
const
|
96
|
-
|
97
|
-
...walletClientConfig,
|
98
|
-
};
|
93
|
+
const { defaultClientParams, defaultTransportParams } =
|
94
|
+
await getDefaultParams(provider);
|
99
95
|
|
100
96
|
let walletClient = createWalletClient({
|
101
97
|
chain,
|
102
98
|
account: address,
|
103
|
-
transport: customTransport(provider),
|
104
|
-
...
|
99
|
+
transport: customTransport(provider, defaultTransportParams),
|
100
|
+
...defaultClientParams,
|
101
|
+
...walletClientConfig,
|
105
102
|
});
|
106
103
|
|
107
|
-
if (chainType === "
|
104
|
+
if (chainType === "op") {
|
108
105
|
walletClient = walletClient.extend(walletActionsL2());
|
109
106
|
}
|
110
107
|
|
@@ -149,22 +146,27 @@ export async function getTestClient<ChainTypeT extends ChainType | string>(
|
|
149
146
|
const chain =
|
150
147
|
testClientConfig?.chain ?? (await getChain(provider, chainType));
|
151
148
|
const mode = await getMode(provider);
|
152
|
-
const parameters = { ...DEFAULT_CLIENT_PARAMETERS, ...testClientConfig };
|
153
149
|
|
154
150
|
const testClient = createTestClient({
|
155
151
|
chain,
|
156
152
|
mode,
|
157
|
-
transport: customTransport(provider),
|
158
|
-
...
|
153
|
+
transport: customTransport(provider, DEFAULT_DEVELOPMENT_TRANSPORT_PARAMS),
|
154
|
+
...DEFAULT_DEVELOPMENT_CLIENT_PARAMS,
|
155
|
+
...testClientConfig,
|
159
156
|
});
|
160
157
|
|
161
158
|
return testClient;
|
162
159
|
}
|
163
160
|
|
164
|
-
const
|
161
|
+
const DEFAULT_DEVELOPMENT_CLIENT_PARAMS = { pollingInterval: 50, cacheTime: 0 };
|
162
|
+
const DEFAULT_DEVELOPMENT_TRANSPORT_PARAMS = { retryCount: 0 };
|
165
163
|
|
166
|
-
async function
|
167
|
-
|
168
|
-
|
164
|
+
async function getDefaultParams(provider: EthereumProvider) {
|
165
|
+
const isDevelopment = await isDevelopmentNetwork(provider);
|
166
|
+
return isDevelopment
|
167
|
+
? {
|
168
|
+
defaultClientParams: DEFAULT_DEVELOPMENT_CLIENT_PARAMS,
|
169
|
+
defaultTransportParams: DEFAULT_DEVELOPMENT_TRANSPORT_PARAMS,
|
170
|
+
}
|
169
171
|
: {};
|
170
172
|
}
|
@@ -39,7 +39,7 @@ export async function deployContract<ContractName extends string>(
|
|
39
39
|
throw new HardhatError(
|
40
40
|
HardhatError.ERRORS.HARDHAT_VIEM.GENERAL.INVALID_CONFIRMATIONS,
|
41
41
|
{
|
42
|
-
error: "Confirmations must be
|
42
|
+
error: "Confirmations must be greater than 0.",
|
43
43
|
},
|
44
44
|
);
|
45
45
|
}
|
package/src/types.ts
CHANGED
@@ -35,7 +35,7 @@ export interface HardhatViemHelpers<
|
|
35
35
|
* @param publicClientConfig A viem's PublicClientConfig object with the
|
36
36
|
* desired configuration.
|
37
37
|
* @returns The configured public client. If the connection's chainType is
|
38
|
-
* "
|
38
|
+
* "op", the client will be extended with L2 actions.
|
39
39
|
*/
|
40
40
|
getPublicClient: (
|
41
41
|
publicClientConfig?: Partial<ViemPublicClientConfig>,
|
@@ -47,7 +47,7 @@ export interface HardhatViemHelpers<
|
|
47
47
|
* @param walletClientConfig A viem's WalletClientConfig object with the
|
48
48
|
* desired configuration.
|
49
49
|
* @returns An array with the configured wallet clients. If the connection's
|
50
|
-
* chainType is "
|
50
|
+
* chainType is "op", the clients will be extended with L2 actions.
|
51
51
|
*/
|
52
52
|
getWalletClients: (
|
53
53
|
walletClientConfig?: Partial<ViemWalletClientConfig>,
|
@@ -60,7 +60,7 @@ export interface HardhatViemHelpers<
|
|
60
60
|
* @param walletClientConfig A viem's WalletClientConfig object with the
|
61
61
|
* desired configuration.
|
62
62
|
* @returns The configured wallet client for the specified address. If the
|
63
|
-
* connection's chainType is "
|
63
|
+
* connection's chainType is "op", the client will be extended with L2
|
64
64
|
* actions.
|
65
65
|
*/
|
66
66
|
getWalletClient: (
|
@@ -133,10 +133,10 @@ export interface HardhatViemHelpers<
|
|
133
133
|
}
|
134
134
|
|
135
135
|
export type GetPublicClientReturnType<ChainTypeT extends ChainType | string> =
|
136
|
-
ChainTypeT extends "
|
136
|
+
ChainTypeT extends "op" ? OpPublicClient : PublicClient;
|
137
137
|
|
138
138
|
export type GetWalletClientReturnType<ChainTypeT extends ChainType | string> =
|
139
|
-
ChainTypeT extends "
|
139
|
+
ChainTypeT extends "op" ? OpWalletClient : WalletClient;
|
140
140
|
|
141
141
|
export type PublicClient = ViemPublicClient<ViemTransport, ViemChain>;
|
142
142
|
|