Skip to content

Commit 2b16d43

Browse files
authored
Merge pull request #4643 from dkeysil/add-public-client-to-get-contract-at
Add configurable public client to getContractAt, deployContract and sendDeploymentTransaction
2 parents 61e63df + c8e5954 commit 2b16d43

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

.changeset/odd-cooks-wait.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@nomicfoundation/hardhat-viem": patch
3+
---
4+
5+
Add configurable public client to getContractAt, deployContract and sendDeploymentTransaction

packages/hardhat-viem/src/internal/contracts.ts

+9-5
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ export async function deployContract(
2929
): Promise<GetContractReturnType> {
3030
const {
3131
walletClient: configWalletClient,
32+
publicClient: configPublicClient,
3233
confirmations,
3334
...deployContractParameters
3435
} = config;
3536
const [publicClient, walletClient, contractArtifact] = await Promise.all([
36-
getPublicClient(network.provider),
37+
configPublicClient ?? getPublicClient(network.provider),
3738
configWalletClient ??
3839
getDefaultWalletClient(network.provider, network.name),
3940
artifacts.readArtifact(contractName),
@@ -119,10 +120,13 @@ export async function sendDeploymentTransaction(
119120
contract: GetContractReturnType;
120121
deploymentTransaction: GetTransactionReturnType;
121122
}> {
122-
const { walletClient: configWalletClient, ...deployContractParameters } =
123-
config;
123+
const {
124+
walletClient: configWalletClient,
125+
publicClient: configPublicClient,
126+
...deployContractParameters
127+
} = config;
124128
const [publicClient, walletClient, contractArtifact] = await Promise.all([
125-
getPublicClient(network.provider),
129+
configPublicClient ?? getPublicClient(network.provider),
126130
configWalletClient ??
127131
getDefaultWalletClient(network.provider, network.name),
128132
artifacts.readArtifact(contractName),
@@ -198,7 +202,7 @@ export async function getContractAt(
198202
config: GetContractAtConfig = {}
199203
): Promise<GetContractReturnType> {
200204
const [publicClient, walletClient, contractArtifact] = await Promise.all([
201-
getPublicClient(network.provider),
205+
config.publicClient ?? getPublicClient(network.provider),
202206
config.walletClient ??
203207
getDefaultWalletClient(network.provider, network.name),
204208
artifacts.readArtifact(contractName),

packages/hardhat-viem/src/types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export type TestClientMode = Parameters<
1919

2020
export interface SendTransactionConfig {
2121
walletClient?: WalletClient;
22+
publicClient?: PublicClient;
2223
gas?: bigint;
2324
gasPrice?: bigint;
2425
maxFeePerGas?: bigint;
@@ -34,6 +35,7 @@ export type SendDeploymentTransactionConfig = SendTransactionConfig;
3435

3536
export interface GetContractAtConfig {
3637
walletClient?: WalletClient;
38+
publicClient?: PublicClient;
3739
}
3840

3941
export type GetContractReturnType<

0 commit comments

Comments
 (0)