diff --git a/packages/hardhat-viem/src/internal/bytecode.ts b/packages/hardhat-viem/src/internal/bytecode.ts index abd1a17deb..553aacf256 100644 --- a/packages/hardhat-viem/src/internal/bytecode.ts +++ b/packages/hardhat-viem/src/internal/bytecode.ts @@ -1,7 +1,5 @@ import type * as viemT from "viem"; -import { isHex } from "viem"; - -import { Artifact } from "hardhat/types/artifacts"; +import type { Artifact } from "hardhat/types/artifacts"; import { AmbigousLibraryNameError, @@ -14,13 +12,17 @@ export interface Libraries
{ [libraryName: string]: Address; } -interface Link { +export interface Link { sourceName: string; libraryName: string; address: string; } -export function linkBytecode(artifact: Artifact, libraries: Link[]): viemT.Hex { +export async function linkBytecode( + artifact: Artifact, + libraries: Link[] +): Promise { + const { isHex } = await import("viem"); let bytecode = artifact.bytecode; // TODO: measure performance impact @@ -40,7 +42,7 @@ export function linkBytecode(artifact: Artifact, libraries: Link[]): viemT.Hex { async function throwOnAmbigousLibraryNameOrUnnecessaryLink( contractName: string, libraries: Libraries, - neededLibraries: Array> + neededLibraries: Link[] ) { for (const linkedLibraryName of Object.keys(libraries)) { const matchingLibraries = neededLibraries.filter( @@ -66,7 +68,7 @@ async function throwOnAmbigousLibraryNameOrUnnecessaryLink( async function throwOnMissingLibrariesAddress( contractName: string, libraries: Libraries, - neededLibraries: Array> + neededLibraries: Link[] ) { const missingLibraries = []; for (const { sourceName, libraryName } of neededLibraries) { @@ -86,7 +88,7 @@ async function throwOnMissingLibrariesAddress( async function throwOnOverlappingLibraryNames( contractName: string, libraries: Libraries, - neededLibraries: Array> + neededLibraries: Link[] ) { for (const { sourceName, libraryName } of neededLibraries) { if ( diff --git a/packages/hardhat-viem/src/internal/errors.ts b/packages/hardhat-viem/src/internal/errors.ts index f4603446d5..2d0f8ffd7b 100644 --- a/packages/hardhat-viem/src/internal/errors.ts +++ b/packages/hardhat-viem/src/internal/errors.ts @@ -1,5 +1,6 @@ +import type { Link } from "./bytecode"; + import { NomicLabsHardhatPluginError } from "hardhat/plugins"; -import { Link } from "hardhat/types/libraries"; export class HardhatViemError extends NomicLabsHardhatPluginError { constructor(message: string, parent?: Error) { diff --git a/packages/hardhat-viem/src/types.ts b/packages/hardhat-viem/src/types.ts index 6af35ce281..d98e06ce5e 100644 --- a/packages/hardhat-viem/src/types.ts +++ b/packages/hardhat-viem/src/types.ts @@ -1,6 +1,6 @@ import type * as viemT from "viem"; import type { ArtifactsMap } from "hardhat/types/artifacts"; -import type { Libraries } from "hardhat/types/libraries"; +import type { Libraries } from "./internal/bytecode"; export type PublicClient = viemT.PublicClient; export type WalletClient = viemT.WalletClient<