@nomicfoundation/hardhat-viem 1.0.4 → 2.0.1
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 +3 -3
- package/internal/clients.d.ts +1 -1
- package/internal/clients.js +1 -1
- package/internal/contracts.d.ts.map +1 -1
- package/internal/contracts.js +13 -13
- package/internal/contracts.js.map +1 -1
- package/package.json +7 -7
- package/src/internal/clients.ts +1 -1
- package/src/internal/contracts.ts +13 -22
- package/src/types.ts +13 -10
- package/types.d.ts +10 -5
- package/types.d.ts.map +1 -1
package/README.md
CHANGED
@@ -154,7 +154,7 @@ const contractA = await hre.viem.deployContract(
|
|
154
154
|
"contractName",
|
155
155
|
["arg1", 50, "arg3"],
|
156
156
|
{
|
157
|
-
|
157
|
+
client: { wallet: secondWalletClient }
|
158
158
|
gas: 1000000,
|
159
159
|
value: parseEther("0.0001"),
|
160
160
|
confirmations: 5, // 1 by default
|
@@ -185,7 +185,7 @@ const [_, secondWalletClient] = await hre.viem.getWalletClients();
|
|
185
185
|
const contract = await hre.viem.getContractAt(
|
186
186
|
"contractName",
|
187
187
|
"0x1234567890123456789012345678901234567890",
|
188
|
-
{
|
188
|
+
{ client: { wallet: secondWalletClient } }
|
189
189
|
);
|
190
190
|
```
|
191
191
|
|
@@ -210,7 +210,7 @@ const { contract: contractName, deploymentTransaction } =
|
|
210
210
|
"contractName",
|
211
211
|
["arg1", 50, "arg3"],
|
212
212
|
{
|
213
|
-
|
213
|
+
client: { wallet: secondWalletClient },
|
214
214
|
gas: 1000000,
|
215
215
|
value: parseEther("0.0001"),
|
216
216
|
}
|
package/internal/clients.d.ts
CHANGED
@@ -14,7 +14,7 @@ export declare function innerGetPublicClient(provider: EthereumProvider, chain:
|
|
14
14
|
/**
|
15
15
|
* Get a list of WalletClient instances. These are read-write clients that can
|
16
16
|
* be used to send transactions to the blockchain. Each client is associated
|
17
|
-
* with
|
17
|
+
* with an account obtained from the provider using `eth_accounts`.
|
18
18
|
*
|
19
19
|
* @param provider The Ethereum provider used to connect to the blockchain.
|
20
20
|
* @param walletClientConfig Optional configuration for the WalletClient instances. See the viem documentation for more information.
|
package/internal/clients.js
CHANGED
@@ -56,7 +56,7 @@ exports.innerGetPublicClient = innerGetPublicClient;
|
|
56
56
|
/**
|
57
57
|
* Get a list of WalletClient instances. These are read-write clients that can
|
58
58
|
* be used to send transactions to the blockchain. Each client is associated
|
59
|
-
* with
|
59
|
+
* with an account obtained from the provider using `eth_accounts`.
|
60
60
|
*
|
61
61
|
* @param provider The Ethereum provider used to connect to the blockchain.
|
62
62
|
* @param walletClientConfig Optional configuration for the WalletClient instances. See the viem documentation for more information.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/internal/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,+BAA+B,EAC/B,YAAY,EACb,MAAM,UAAU,CAAC;AAUlB,wBAAsB,cAAc,CAClC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,yBAAyB,EACjD,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,GAAG,EAAO,EAC3B,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,qBAAqB,CAAC,
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/internal/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,+BAA+B,EAC/B,YAAY,EACb,MAAM,UAAU,CAAC;AAUlB,wBAAsB,cAAc,CAClC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,yBAAyB,EACjD,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,GAAG,EAAO,EAC3B,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,GAAG,EAChB,gBAAgB,EAAE,GAAG,EACrB,eAAe,EAAE,GAAG,EAAE,EACtB,wBAAwB,GAAE,oBAAyB,EACnD,aAAa,GAAE,MAAU,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAkDhC;AAED,wBAAsB,yBAAyB,CAC7C,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,yBAAyB,EACjD,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,GAAG,EAAO,EAC3B,MAAM,GAAE,+BAAoC,GAC3C,OAAO,CAAC;IACT,QAAQ,EAAE,qBAAqB,CAAC;IAChC,qBAAqB,EAAE,wBAAwB,CAAC;CACjD,CAAC,CAgBD;AAuDD,wBAAsB,aAAa,CACjC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,yBAAyB,EACjD,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,mBAAwB,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAchC"}
|
package/internal/contracts.js
CHANGED
@@ -27,11 +27,10 @@ exports.getContractAt = exports.sendDeploymentTransaction = exports.innerDeployC
|
|
27
27
|
const clients_1 = require("./clients");
|
28
28
|
const errors_1 = require("./errors");
|
29
29
|
async function deployContract({ artifacts, network }, contractName, constructorArgs = [], config = {}) {
|
30
|
-
const {
|
30
|
+
const { client, confirmations, ...deployContractParameters } = config;
|
31
31
|
const [publicClient, walletClient, contractArtifact] = await Promise.all([
|
32
|
-
|
33
|
-
|
34
|
-
getDefaultWalletClient(network.provider, network.name),
|
32
|
+
client?.public ?? (0, clients_1.getPublicClient)(network.provider),
|
33
|
+
client?.wallet ?? getDefaultWalletClient(network.provider, network.name),
|
35
34
|
artifacts.readArtifact(contractName),
|
36
35
|
]);
|
37
36
|
return innerDeployContract(publicClient, walletClient, contractArtifact.abi, contractArtifact.bytecode, constructorArgs, deployContractParameters, confirmations);
|
@@ -70,7 +69,7 @@ async function innerDeployContract(publicClient, walletClient, contractAbi, cont
|
|
70
69
|
hash: deploymentTxHash,
|
71
70
|
confirmations,
|
72
71
|
});
|
73
|
-
if (contractAddress === null) {
|
72
|
+
if (contractAddress === null || contractAddress === undefined) {
|
74
73
|
const transaction = await publicClient.getTransaction({
|
75
74
|
hash: deploymentTxHash,
|
76
75
|
});
|
@@ -81,11 +80,10 @@ async function innerDeployContract(publicClient, walletClient, contractAbi, cont
|
|
81
80
|
}
|
82
81
|
exports.innerDeployContract = innerDeployContract;
|
83
82
|
async function sendDeploymentTransaction({ artifacts, network }, contractName, constructorArgs = [], config = {}) {
|
84
|
-
const {
|
83
|
+
const { client, ...deployContractParameters } = config;
|
85
84
|
const [publicClient, walletClient, contractArtifact] = await Promise.all([
|
86
|
-
|
87
|
-
|
88
|
-
getDefaultWalletClient(network.provider, network.name),
|
85
|
+
client?.public ?? (0, clients_1.getPublicClient)(network.provider),
|
86
|
+
client?.wallet ?? getDefaultWalletClient(network.provider, network.name),
|
89
87
|
artifacts.readArtifact(contractName),
|
90
88
|
]);
|
91
89
|
return innerSendDeploymentTransaction(publicClient, walletClient, contractArtifact.abi, contractArtifact.bytecode, constructorArgs, deployContractParameters);
|
@@ -127,8 +125,8 @@ async function innerSendDeploymentTransaction(publicClient, walletClient, contra
|
|
127
125
|
}
|
128
126
|
async function getContractAt({ artifacts, network }, contractName, address, config = {}) {
|
129
127
|
const [publicClient, walletClient, contractArtifact] = await Promise.all([
|
130
|
-
config.
|
131
|
-
config.
|
128
|
+
config.client?.public ?? (0, clients_1.getPublicClient)(network.provider),
|
129
|
+
config.client?.wallet ??
|
132
130
|
getDefaultWalletClient(network.provider, network.name),
|
133
131
|
artifacts.readArtifact(contractName),
|
134
132
|
]);
|
@@ -139,8 +137,10 @@ async function innerGetContractAt(publicClient, walletClient, contractAbi, addre
|
|
139
137
|
const viem = await Promise.resolve().then(() => __importStar(require("viem")));
|
140
138
|
const contract = viem.getContract({
|
141
139
|
address,
|
142
|
-
|
143
|
-
|
140
|
+
client: {
|
141
|
+
public: publicClient,
|
142
|
+
wallet: walletClient,
|
143
|
+
},
|
144
144
|
abi: contractAbi,
|
145
145
|
});
|
146
146
|
return contract;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/internal/contracts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,uCAA8D;AAC9D,qCAKkB;AAEX,KAAK,UAAU,cAAc,CAClC,EAAE,SAAS,EAAE,OAAO,EAA6B,EACjD,YAAoB,EACpB,kBAAyB,EAAE,EAC3B,SAA+B,EAAE;IAEjC,MAAM,
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/internal/contracts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,uCAA8D;AAC9D,qCAKkB;AAEX,KAAK,UAAU,cAAc,CAClC,EAAE,SAAS,EAAE,OAAO,EAA6B,EACjD,YAAoB,EACpB,kBAAyB,EAAE,EAC3B,SAA+B,EAAE;IAEjC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,wBAAwB,EAAE,GAAG,MAAM,CAAC;IACtE,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvE,MAAM,EAAE,MAAM,IAAI,IAAA,yBAAe,EAAC,OAAO,CAAC,QAAQ,CAAC;QACnD,MAAM,EAAE,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;QACxE,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;KACrC,CAAC,CAAC;IAEH,OAAO,mBAAmB,CACxB,YAAY,EACZ,YAAY,EACZ,gBAAgB,CAAC,GAAG,EACpB,gBAAgB,CAAC,QAAe,EAChC,eAAe,EACf,wBAAwB,EACxB,aAAa,CACd,CAAC;AACJ,CAAC;AAtBD,wCAsBC;AAEM,KAAK,UAAU,mBAAmB,CACvC,YAA0B,EAC1B,YAA0B,EAC1B,WAAgB,EAChB,gBAAqB,EACrB,eAAsB,EACtB,2BAAiD,EAAE,EACnD,gBAAwB,CAAC;IAEzB,IAAI,gBAAqB,CAAC;IAC1B,qEAAqE;IACrE,8CAA8C;IAC9C,IAAI,wBAAwB,CAAC,QAAQ,KAAK,SAAS,EAAE;QACnD,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,eAAe;YACrB,GAAG,wBAAwB;YAC3B,YAAY,EAAE,SAAS;YACvB,oBAAoB,EAAE,SAAS;SAChC,CAAC,CAAC;KACJ;SAAM;QACL,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,eAAe;YACrB,GAAG,wBAAwB;YAC3B,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;KACJ;IAED,IAAI,aAAa,GAAG,CAAC,EAAE;QACrB,MAAM,IAAI,yBAAgB,CAAC,uCAAuC,CAAC,CAAC;KACrE;IACD,IAAI,aAAa,KAAK,CAAC,EAAE;QACvB,MAAM,IAAI,kCAAyB,EAAE,CAAC;KACvC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC;QACvE,IAAI,EAAE,gBAAgB;QACtB,aAAa;KACd,CAAC,CAAC;IAEH,IAAI,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,SAAS,EAAE;QAC7D,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACpD,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;QACH,MAAM,IAAI,4BAAmB,CAAC,gBAAgB,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;KAC1E;IAED,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CACvC,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,CAChB,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AA1DD,kDA0DC;AAEM,KAAK,UAAU,yBAAyB,CAC7C,EAAE,SAAS,EAAE,OAAO,EAA6B,EACjD,YAAoB,EACpB,kBAAyB,EAAE,EAC3B,SAA0C,EAAE;IAK5C,MAAM,EAAE,MAAM,EAAE,GAAG,wBAAwB,EAAE,GAAG,MAAM,CAAC;IACvD,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvE,MAAM,EAAE,MAAM,IAAI,IAAA,yBAAe,EAAC,OAAO,CAAC,QAAQ,CAAC;QACnD,MAAM,EAAE,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;QACxE,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;KACrC,CAAC,CAAC;IAEH,OAAO,8BAA8B,CACnC,YAAY,EACZ,YAAY,EACZ,gBAAgB,CAAC,GAAG,EACpB,gBAAgB,CAAC,QAAe,EAChC,eAAe,EACf,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAxBD,8DAwBC;AAED,KAAK,UAAU,8BAA8B,CAC3C,YAA0B,EAC1B,YAA0B,EAC1B,WAAgB,EAChB,gBAAqB,EACrB,eAAsB,EACtB,2BAA4D,EAAE;IAK9D,IAAI,gBAAqB,CAAC;IAC1B,qEAAqE;IACrE,8CAA8C;IAC9C,IAAI,wBAAwB,CAAC,QAAQ,KAAK,SAAS,EAAE;QACnD,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,eAAe;YACrB,GAAG,wBAAwB;YAC3B,YAAY,EAAE,SAAS;YACvB,oBAAoB,EAAE,SAAS;SAChC,CAAC,CAAC;KACJ;SAAM;QACL,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,eAAe;YACrB,GAAG,wBAAwB;YAC3B,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;KACJ;IAED,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;QACrD,IAAI,EAAE,gBAAgB;KACvB,CAAC,CAAC;IAEH,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,MAAM,GAAC,CAAC;IACpD,MAAM,eAAe,GAAG,kBAAkB,CAAC;QACzC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;QAClC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CACvC,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,CAChB,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC;AAC3D,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,EAAE,SAAS,EAAE,OAAO,EAA6B,EACjD,YAAoB,EACpB,OAAgB,EAChB,SAA8B,EAAE;IAEhC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvE,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,IAAA,yBAAe,EAAC,OAAO,CAAC,QAAQ,CAAC;QAC1D,MAAM,CAAC,MAAM,EAAE,MAAM;YACnB,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;QACxD,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;KACrC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CACvB,YAAY,EACZ,YAAY,EACZ,gBAAgB,CAAC,GAAG,EACpB,OAAO,CACR,CAAC;AACJ,CAAC;AAnBD,sCAmBC;AAED,KAAK,UAAU,kBAAkB,CAC/B,YAA0B,EAC1B,YAA0B,EAC1B,WAAgB,EAChB,OAAgB;IAEhB,MAAM,IAAI,GAAG,wDAAa,MAAM,GAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,OAAO;QACP,MAAM,EAAE;YACN,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,YAAY;SACrB;QACD,GAAG,EAAE,WAAW;KACjB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,QAA0B,EAC1B,WAAmB;IAEnB,MAAM,CAAC,mBAAmB,CAAC,GAAG,MAAM,IAAA,0BAAgB,EAAC,QAAQ,CAAC,CAAC;IAE/D,IAAI,mBAAmB,KAAK,SAAS,EAAE;QACrC,MAAM,IAAI,yCAAgC,CAAC,WAAW,CAAC,CAAC;KACzD;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nomicfoundation/hardhat-viem",
|
3
|
-
"version": "
|
3
|
+
"version": "2.0.1",
|
4
4
|
"description": "Hardhat plugin for viem",
|
5
5
|
"homepage": "https://github.com/nomicfoundation/hardhat/tree/main/packages/hardhat-viem",
|
6
6
|
"repository": "github:nomicfoundation/hardhat",
|
@@ -31,7 +31,7 @@
|
|
31
31
|
"@types/lodash": "^4.14.123",
|
32
32
|
"@types/lodash.memoize": "^4.1.7",
|
33
33
|
"@types/mocha": ">=9.1.0",
|
34
|
-
"@types/node": "^
|
34
|
+
"@types/node": "^18.0.0",
|
35
35
|
"@types/sinon": "^9.0.8",
|
36
36
|
"@typescript-eslint/eslint-plugin": "5.61.0",
|
37
37
|
"@typescript-eslint/parser": "5.61.0",
|
@@ -40,7 +40,7 @@
|
|
40
40
|
"eslint": "^8.44.0",
|
41
41
|
"eslint-config-prettier": "8.3.0",
|
42
42
|
"eslint-plugin-import": "2.27.5",
|
43
|
-
"eslint-plugin-
|
43
|
+
"eslint-plugin-mocha": "10.4.1",
|
44
44
|
"eslint-plugin-prettier": "3.4.0",
|
45
45
|
"hardhat": "^2.17.0",
|
46
46
|
"jest-diff": "^29.7.0",
|
@@ -51,14 +51,14 @@
|
|
51
51
|
"sinon": "^9.0.0",
|
52
52
|
"ts-node": "^10.8.0",
|
53
53
|
"typescript": "~5.0.0",
|
54
|
-
"viem": "^
|
55
|
-
"@nomicfoundation/eslint-plugin-
|
56
|
-
"@nomicfoundation/eslint-plugin-
|
54
|
+
"viem": "^2.7.6",
|
55
|
+
"@nomicfoundation/eslint-plugin-slow-imports": "^1.0.0",
|
56
|
+
"@nomicfoundation/eslint-plugin-hardhat-internal-rules": "^1.0.2"
|
57
57
|
},
|
58
58
|
"peerDependencies": {
|
59
59
|
"hardhat": "^2.17.0",
|
60
60
|
"typescript": "~5.0.0",
|
61
|
-
"viem": "^
|
61
|
+
"viem": "^2.7.6"
|
62
62
|
},
|
63
63
|
"dependencies": {
|
64
64
|
"abitype": "^0.9.8",
|
package/src/internal/clients.ts
CHANGED
@@ -54,7 +54,7 @@ export async function innerGetPublicClient(
|
|
54
54
|
/**
|
55
55
|
* Get a list of WalletClient instances. These are read-write clients that can
|
56
56
|
* be used to send transactions to the blockchain. Each client is associated
|
57
|
-
* with
|
57
|
+
* with an account obtained from the provider using `eth_accounts`.
|
58
58
|
*
|
59
59
|
* @param provider The Ethereum provider used to connect to the blockchain.
|
60
60
|
* @param walletClientConfig Optional configuration for the WalletClient instances. See the viem documentation for more information.
|
@@ -27,16 +27,10 @@ export async function deployContract(
|
|
27
27
|
constructorArgs: any[] = [],
|
28
28
|
config: DeployContractConfig = {}
|
29
29
|
): Promise<GetContractReturnType> {
|
30
|
-
const {
|
31
|
-
walletClient: configWalletClient,
|
32
|
-
publicClient: configPublicClient,
|
33
|
-
confirmations,
|
34
|
-
...deployContractParameters
|
35
|
-
} = config;
|
30
|
+
const { client, confirmations, ...deployContractParameters } = config;
|
36
31
|
const [publicClient, walletClient, contractArtifact] = await Promise.all([
|
37
|
-
|
38
|
-
|
39
|
-
getDefaultWalletClient(network.provider, network.name),
|
32
|
+
client?.public ?? getPublicClient(network.provider),
|
33
|
+
client?.wallet ?? getDefaultWalletClient(network.provider, network.name),
|
40
34
|
artifacts.readArtifact(contractName),
|
41
35
|
]);
|
42
36
|
|
@@ -94,7 +88,7 @@ export async function innerDeployContract(
|
|
94
88
|
confirmations,
|
95
89
|
});
|
96
90
|
|
97
|
-
if (contractAddress === null) {
|
91
|
+
if (contractAddress === null || contractAddress === undefined) {
|
98
92
|
const transaction = await publicClient.getTransaction({
|
99
93
|
hash: deploymentTxHash,
|
100
94
|
});
|
@@ -120,15 +114,10 @@ export async function sendDeploymentTransaction(
|
|
120
114
|
contract: GetContractReturnType;
|
121
115
|
deploymentTransaction: GetTransactionReturnType;
|
122
116
|
}> {
|
123
|
-
const {
|
124
|
-
walletClient: configWalletClient,
|
125
|
-
publicClient: configPublicClient,
|
126
|
-
...deployContractParameters
|
127
|
-
} = config;
|
117
|
+
const { client, ...deployContractParameters } = config;
|
128
118
|
const [publicClient, walletClient, contractArtifact] = await Promise.all([
|
129
|
-
|
130
|
-
|
131
|
-
getDefaultWalletClient(network.provider, network.name),
|
119
|
+
client?.public ?? getPublicClient(network.provider),
|
120
|
+
client?.wallet ?? getDefaultWalletClient(network.provider, network.name),
|
132
121
|
artifacts.readArtifact(contractName),
|
133
122
|
]);
|
134
123
|
|
@@ -202,8 +191,8 @@ export async function getContractAt(
|
|
202
191
|
config: GetContractAtConfig = {}
|
203
192
|
): Promise<GetContractReturnType> {
|
204
193
|
const [publicClient, walletClient, contractArtifact] = await Promise.all([
|
205
|
-
config.
|
206
|
-
config.
|
194
|
+
config.client?.public ?? getPublicClient(network.provider),
|
195
|
+
config.client?.wallet ??
|
207
196
|
getDefaultWalletClient(network.provider, network.name),
|
208
197
|
artifacts.readArtifact(contractName),
|
209
198
|
]);
|
@@ -225,8 +214,10 @@ async function innerGetContractAt(
|
|
225
214
|
const viem = await import("viem");
|
226
215
|
const contract = viem.getContract({
|
227
216
|
address,
|
228
|
-
|
229
|
-
|
217
|
+
client: {
|
218
|
+
public: publicClient,
|
219
|
+
wallet: walletClient,
|
220
|
+
},
|
230
221
|
abi: contractAbi,
|
231
222
|
});
|
232
223
|
|
package/src/types.ts
CHANGED
@@ -13,13 +13,22 @@ export type TestClient = viemT.TestClient<
|
|
13
13
|
viemT.Chain
|
14
14
|
>;
|
15
15
|
|
16
|
+
export type KeyedClient =
|
17
|
+
| {
|
18
|
+
public?: PublicClient;
|
19
|
+
wallet: WalletClient;
|
20
|
+
}
|
21
|
+
| {
|
22
|
+
public: PublicClient;
|
23
|
+
wallet?: WalletClient;
|
24
|
+
};
|
25
|
+
|
16
26
|
export type TestClientMode = Parameters<
|
17
27
|
typeof viemT.createTestClient
|
18
28
|
>[0]["mode"];
|
19
29
|
|
20
30
|
export interface SendTransactionConfig {
|
21
|
-
|
22
|
-
publicClient?: PublicClient;
|
31
|
+
client?: KeyedClient;
|
23
32
|
gas?: bigint;
|
24
33
|
gasPrice?: bigint;
|
25
34
|
maxFeePerGas?: bigint;
|
@@ -34,18 +43,12 @@ export interface DeployContractConfig extends SendTransactionConfig {
|
|
34
43
|
export type SendDeploymentTransactionConfig = SendTransactionConfig;
|
35
44
|
|
36
45
|
export interface GetContractAtConfig {
|
37
|
-
|
38
|
-
publicClient?: PublicClient;
|
46
|
+
client?: KeyedClient;
|
39
47
|
}
|
40
48
|
|
41
49
|
export type GetContractReturnType<
|
42
50
|
TAbi extends viemT.Abi | readonly unknown[] = viemT.Abi
|
43
|
-
> = viemT.GetContractReturnType<
|
44
|
-
TAbi,
|
45
|
-
PublicClient,
|
46
|
-
WalletClient,
|
47
|
-
viemT.Address
|
48
|
-
>;
|
51
|
+
> = viemT.GetContractReturnType<TAbi, Required<KeyedClient>, viemT.Address>;
|
49
52
|
|
50
53
|
export type GetTransactionReturnType = viemT.GetTransactionReturnType<
|
51
54
|
viemT.Chain,
|
package/types.d.ts
CHANGED
@@ -3,10 +3,16 @@ import type { ArtifactsMap } from "hardhat/types/artifacts";
|
|
3
3
|
export type PublicClient = viemT.PublicClient<viemT.Transport, viemT.Chain>;
|
4
4
|
export type WalletClient = viemT.WalletClient<viemT.Transport, viemT.Chain, viemT.Account>;
|
5
5
|
export type TestClient = viemT.TestClient<TestClientMode, viemT.Transport, viemT.Chain>;
|
6
|
+
export type KeyedClient = {
|
7
|
+
public?: PublicClient;
|
8
|
+
wallet: WalletClient;
|
9
|
+
} | {
|
10
|
+
public: PublicClient;
|
11
|
+
wallet?: WalletClient;
|
12
|
+
};
|
6
13
|
export type TestClientMode = Parameters<typeof viemT.createTestClient>[0]["mode"];
|
7
14
|
export interface SendTransactionConfig {
|
8
|
-
|
9
|
-
publicClient?: PublicClient;
|
15
|
+
client?: KeyedClient;
|
10
16
|
gas?: bigint;
|
11
17
|
gasPrice?: bigint;
|
12
18
|
maxFeePerGas?: bigint;
|
@@ -18,10 +24,9 @@ export interface DeployContractConfig extends SendTransactionConfig {
|
|
18
24
|
}
|
19
25
|
export type SendDeploymentTransactionConfig = SendTransactionConfig;
|
20
26
|
export interface GetContractAtConfig {
|
21
|
-
|
22
|
-
publicClient?: PublicClient;
|
27
|
+
client?: KeyedClient;
|
23
28
|
}
|
24
|
-
export type GetContractReturnType<TAbi extends viemT.Abi | readonly unknown[] = viemT.Abi> = viemT.GetContractReturnType<TAbi,
|
29
|
+
export type GetContractReturnType<TAbi extends viemT.Abi | readonly unknown[] = viemT.Abi> = viemT.GetContractReturnType<TAbi, Required<KeyedClient>, viemT.Address>;
|
25
30
|
export type GetTransactionReturnType = viemT.GetTransactionReturnType<viemT.Chain, "latest">;
|
26
31
|
export type ContractName<StringT extends string> = StringT extends keyof ArtifactsMap ? never : StringT;
|
27
32
|
export declare function deployContract<CN extends string>(contractName: ContractName<CN>, constructorArgs?: any[], config?: DeployContractConfig): Promise<GetContractReturnType>;
|
package/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5E,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAC3C,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,OAAO,CACd,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACvC,cAAc,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,KAAK,CACZ,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CACrC,OAAO,KAAK,CAAC,gBAAgB,CAC9B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEb,MAAM,WAAW,qBAAqB;IACpC,
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"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"}
|