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<