import type { KeyedClient, DeployContractConfig as OriginalDeployContractConfig } from "@nomicfoundation/hardhat-viem/types.js"; import type { Artifact, ContractTypesMap } from "hardhat/types"; import "@nomicfoundation/hardhat-viem"; import "hardhat-deploy"; import "hardhat-deploy/dist/types.js"; import type { DeployResult } from "hardhat-deploy/dist/types.js"; import type { HardhatUserConfig } from "hardhat/types/config.js"; import "hardhat/types/runtime.js"; import { type Account, type ContractConstructorArgs, type Hash, type TransactionReceipt, type Address as viemAddress } from "viem"; type ArtifactName = keyof ContractTypesMap; type Client = Required & { address: viemAddress; account: Account; }; type WithoutArtifactConfig = OriginalDeployContractConfig & { alias?: string; }; type RequiredArtifactConfig = Omit & { artifact: Artifact; }; type DeployResultWithViemAddress = Omit & { address: viemAddress; }; declare module "hardhat/types/artifacts.js" { interface ContractTypesMap { } } declare module "hardhat-deploy/dist/types.js" { interface DeploymentsExtension { deploy(name: contractName, options: Omit & { args: ContractConstructorArgs; }): Promise; } } interface DeployContract { (contractName: contractName, args: ContractConstructorArgs, options?: WithoutArtifactConfig): Promise; (contractName: string, args: any[], options: RequiredArtifactConfig): Promise; } declare module "@nomicfoundation/hardhat-viem/types.js" { function deployContract(contractName: contractName, args: ContractConstructorArgs, options?: OriginalDeployContractConfig): Promise; interface Register { } type ResolvedRegister = { config: Register extends { config: infer config extends HardhatUserConfig; } ? config : HardhatUserConfig; }; type ResolveConfig = ResolvedRegister["config"][key]; interface HardhatViemHelpers { getContractOrNull: (contractName: contractName, client?: KeyedClient) => Promise; getContract: (contractName: contractName, client?: KeyedClient) => Promise; getNamedClients: () => Promise extends never ? string : keyof ResolveConfig<"namedAccounts">, Client>>; getUnnamedClients: () => Promise; waitForTransactionSuccess: (hash: Hash) => Promise; deploy: DeployContract; } } export {}; //# sourceMappingURL=index.d.ts.map