Skip to content

Commit

Permalink
Cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
schaable committed Apr 19, 2024
1 parent ec8f20e commit beffe44
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 10 deletions.
18 changes: 10 additions & 8 deletions packages/hardhat-viem/src/internal/bytecode.ts
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -14,13 +12,17 @@ export interface Libraries<Address = string> {
[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<viemT.Hex> {
const { isHex } = await import("viem");
let bytecode = artifact.bytecode;

// TODO: measure performance impact
Expand All @@ -40,7 +42,7 @@ export function linkBytecode(artifact: Artifact, libraries: Link[]): viemT.Hex {
async function throwOnAmbigousLibraryNameOrUnnecessaryLink(
contractName: string,
libraries: Libraries<viemT.Address>,
neededLibraries: Array<Pick<Link, "libraryName" | "sourceName">>
neededLibraries: Link[]
) {
for (const linkedLibraryName of Object.keys(libraries)) {
const matchingLibraries = neededLibraries.filter(
Expand All @@ -66,7 +68,7 @@ async function throwOnAmbigousLibraryNameOrUnnecessaryLink(
async function throwOnMissingLibrariesAddress(
contractName: string,
libraries: Libraries<viemT.Address>,
neededLibraries: Array<Pick<Link, "libraryName" | "sourceName">>
neededLibraries: Link[]
) {
const missingLibraries = [];
for (const { sourceName, libraryName } of neededLibraries) {
Expand All @@ -86,7 +88,7 @@ async function throwOnMissingLibrariesAddress(
async function throwOnOverlappingLibraryNames(
contractName: string,
libraries: Libraries<viemT.Address>,
neededLibraries: Array<Pick<Link, "libraryName" | "sourceName">>
neededLibraries: Link[]
) {
for (const { sourceName, libraryName } of neededLibraries) {
if (
Expand Down
3 changes: 2 additions & 1 deletion packages/hardhat-viem/src/internal/errors.ts
Original file line number Diff line number Diff line change
@@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion packages/hardhat-viem/src/types.ts
Original file line number Diff line number Diff line change
@@ -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<viemT.Transport, viemT.Chain>;
export type WalletClient = viemT.WalletClient<
Expand Down

0 comments on commit beffe44

Please sign in to comment.