@nomicfoundation/hardhat-viem 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/internal/bytecode.d.ts +13 -0
- package/internal/bytecode.d.ts.map +1 -0
- package/internal/bytecode.js +94 -0
- package/internal/bytecode.js.map +1 -0
- package/internal/contracts.d.ts.map +1 -1
- package/internal/contracts.js +17 -8
- package/internal/contracts.js.map +1 -1
- package/internal/errors.d.ts +13 -0
- package/internal/errors.d.ts.map +1 -1
- package/internal/errors.js +33 -1
- package/internal/errors.js.map +1 -1
- package/internal/tasks.js +16 -0
- package/internal/tasks.js.map +1 -1
- package/package.json +5 -5
- package/src/internal/bytecode.ts +138 -0
- package/src/internal/contracts.ts +33 -10
- package/src/internal/errors.ts +49 -0
- package/src/internal/tasks.ts +22 -0
- package/src/types.ts +5 -1
- package/types.d.ts +5 -1
- package/types.d.ts.map +1 -1
package/README.md
CHANGED
@@ -228,6 +228,38 @@ const { contractAddress } = await publicClient.waitForTransactionReceipt({
|
|
228
228
|
});
|
229
229
|
```
|
230
230
|
|
231
|
+
##### Library linking
|
232
|
+
|
233
|
+
Some contracts need to be linked with libraries before they are deployed. You can pass the addresses of their libraries to the `deployContract` and `sendDeploymentTransaction` functions with an object like this:
|
234
|
+
|
235
|
+
```typescript
|
236
|
+
const contractA = await hre.viem.deployContract(
|
237
|
+
"contractName",
|
238
|
+
["arg1", 50, "arg3"],
|
239
|
+
{
|
240
|
+
libraries: {
|
241
|
+
ExampleLib: "0x...",
|
242
|
+
},
|
243
|
+
}
|
244
|
+
);
|
245
|
+
```
|
246
|
+
|
247
|
+
This allows you to deploy a contract linked to the `ExampleLib` library at the address `"0x..."`.
|
248
|
+
|
249
|
+
To deploy a contract, all libraries must be linked. An error will be thrown if any libraries are missing.
|
250
|
+
|
251
|
+
#### Using `ContractTypesMap` for easier contract type imports
|
252
|
+
|
253
|
+
To simplify importing contract types in `hardhat-viem`, you can use the `ContractTypesMap`. This map contains the contract types of all contracts in your project, indexed by their names.
|
254
|
+
|
255
|
+
```typescript
|
256
|
+
import { ContractTypesMap } from "hardhat/types/artifacts";
|
257
|
+
|
258
|
+
const contract: ContractTypesMap["ContractName"];
|
259
|
+
```
|
260
|
+
|
261
|
+
This reduces the need for multiple imports and makes your code cleaner and easier to manage.
|
262
|
+
|
231
263
|
## Usage
|
232
264
|
|
233
265
|
There are no additional steps you need to take for this plugin to work.
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import type * as viemT from "viem";
|
2
|
+
import type { Artifact } from "hardhat/types/artifacts";
|
3
|
+
export interface Libraries<Address = string> {
|
4
|
+
[libraryName: string]: Address;
|
5
|
+
}
|
6
|
+
export interface Link {
|
7
|
+
sourceName: string;
|
8
|
+
libraryName: string;
|
9
|
+
address: string;
|
10
|
+
}
|
11
|
+
export declare function linkBytecode(artifact: Artifact, libraries: Link[]): Promise<viemT.Hex>;
|
12
|
+
export declare function resolveBytecodeWithLinkedLibraries(artifact: Artifact, libraries: Libraries<viemT.Address>): Promise<viemT.Hex>;
|
13
|
+
//# sourceMappingURL=bytecode.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"bytecode.d.ts","sourceRoot":"","sources":["../src/internal/bytecode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AASxD,MAAM,WAAW,SAAS,CAAC,OAAO,GAAG,MAAM;IACzC,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAI,EAAE,GAChB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAgBpB;AA+DD,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAClC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAgCpB"}
|
@@ -0,0 +1,94 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.resolveBytecodeWithLinkedLibraries = exports.linkBytecode = void 0;
|
27
|
+
const errors_1 = require("./errors");
|
28
|
+
async function linkBytecode(artifact, libraries) {
|
29
|
+
const { isHex } = await Promise.resolve().then(() => __importStar(require("viem")));
|
30
|
+
let bytecode = artifact.bytecode;
|
31
|
+
// TODO: measure performance impact
|
32
|
+
for (const { sourceName, libraryName, address } of libraries) {
|
33
|
+
const linkReferences = artifact.linkReferences[sourceName][libraryName];
|
34
|
+
for (const { start, length } of linkReferences) {
|
35
|
+
bytecode =
|
36
|
+
bytecode.substring(0, 2 + start * 2) +
|
37
|
+
address.substring(2) +
|
38
|
+
bytecode.substring(2 + (start + length) * 2);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
return isHex(bytecode) ? bytecode : `0x${bytecode}`;
|
42
|
+
}
|
43
|
+
exports.linkBytecode = linkBytecode;
|
44
|
+
async function throwOnAmbigousLibraryNameOrUnnecessaryLink(contractName, libraries, neededLibraries) {
|
45
|
+
for (const linkedLibraryName of Object.keys(libraries)) {
|
46
|
+
const matchingLibraries = neededLibraries.filter(({ sourceName, libraryName }) => libraryName === linkedLibraryName ||
|
47
|
+
`${sourceName}:${libraryName}` === linkedLibraryName);
|
48
|
+
if (matchingLibraries.length > 1) {
|
49
|
+
throw new errors_1.AmbigousLibraryNameError(contractName, linkedLibraryName, matchingLibraries.map(({ sourceName, libraryName }) => `${sourceName}:${libraryName}`));
|
50
|
+
}
|
51
|
+
else if (matchingLibraries.length === 0) {
|
52
|
+
throw new errors_1.UnnecessaryLibraryLinkError(contractName, linkedLibraryName);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
56
|
+
async function throwOnMissingLibrariesAddress(contractName, libraries, neededLibraries) {
|
57
|
+
const missingLibraries = [];
|
58
|
+
for (const { sourceName, libraryName } of neededLibraries) {
|
59
|
+
const address = libraries[`${sourceName}:${libraryName}`] ?? libraries[libraryName];
|
60
|
+
if (address === undefined) {
|
61
|
+
missingLibraries.push({ sourceName, libraryName });
|
62
|
+
}
|
63
|
+
}
|
64
|
+
if (missingLibraries.length > 0) {
|
65
|
+
throw new errors_1.MissingLibraryAddressError(contractName, missingLibraries);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
async function throwOnOverlappingLibraryNames(contractName, libraries, neededLibraries) {
|
69
|
+
for (const { sourceName, libraryName } of neededLibraries) {
|
70
|
+
if (libraries[`${sourceName}:${libraryName}`] !== undefined &&
|
71
|
+
libraries[libraryName] !== undefined) {
|
72
|
+
throw new errors_1.OverlappingLibraryNamesError(sourceName, libraryName);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
async function resolveBytecodeWithLinkedLibraries(artifact, libraries) {
|
77
|
+
const { linkReferences } = artifact;
|
78
|
+
const neededLibraries = [];
|
79
|
+
for (const [sourceName, sourceLibraries] of Object.entries(linkReferences)) {
|
80
|
+
for (const libraryName of Object.keys(sourceLibraries)) {
|
81
|
+
neededLibraries.push({
|
82
|
+
sourceName,
|
83
|
+
libraryName,
|
84
|
+
address: libraries[`${sourceName}:${libraryName}`] ?? libraries[libraryName],
|
85
|
+
});
|
86
|
+
}
|
87
|
+
}
|
88
|
+
await throwOnAmbigousLibraryNameOrUnnecessaryLink(artifact.contractName, libraries, neededLibraries);
|
89
|
+
await throwOnOverlappingLibraryNames(artifact.contractName, libraries, neededLibraries);
|
90
|
+
await throwOnMissingLibrariesAddress(artifact.contractName, libraries, neededLibraries);
|
91
|
+
return linkBytecode(artifact, neededLibraries);
|
92
|
+
}
|
93
|
+
exports.resolveBytecodeWithLinkedLibraries = resolveBytecodeWithLinkedLibraries;
|
94
|
+
//# sourceMappingURL=bytecode.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"bytecode.js","sourceRoot":"","sources":["../src/internal/bytecode.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/internal/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,+BAA+B,EAC/B,YAAY,EACb,MAAM,UAAU,CAAC;
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/internal/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,+BAA+B,EAC/B,YAAY,EACb,MAAM,UAAU,CAAC;AA4BlB,wBAAsB,cAAc,CAClC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,yBAAyB,EACjD,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,GAAG,EAAO,EAC3B,MAAM,GAAE,oBAAyB,GAChC,OAAO,CAAC,qBAAqB,CAAC,CAsBhC;AAED,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,GAAG,EAChB,gBAAgB,EAAE,GAAG,EACrB,eAAe,EAAE,GAAG,EAAE,EACtB,wBAAwB,GAAE,oBAAyB,EACnD,aAAa,GAAE,MAAU,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAkDhC;AAED,wBAAsB,yBAAyB,CAC7C,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,yBAAyB,EACjD,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,GAAG,EAAO,EAC3B,MAAM,GAAE,+BAAoC,GAC3C,OAAO,CAAC;IACT,QAAQ,EAAE,qBAAqB,CAAC;IAChC,qBAAqB,EAAE,wBAAwB,CAAC;CACjD,CAAC,CAgBD;AAuDD,wBAAsB,aAAa,CACjC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,yBAAyB,EACjD,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,mBAAwB,GAC/B,OAAO,CAAC,qBAAqB,CAAC,CAchC"}
|
package/internal/contracts.js
CHANGED
@@ -24,16 +24,25 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
24
24
|
};
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
26
|
exports.getContractAt = exports.sendDeploymentTransaction = exports.innerDeployContract = exports.deployContract = void 0;
|
27
|
+
const bytecode_1 = require("./bytecode");
|
27
28
|
const clients_1 = require("./clients");
|
28
29
|
const errors_1 = require("./errors");
|
30
|
+
async function getContractAbiAndBytecode(artifacts, contractName, libraries) {
|
31
|
+
const artifact = await artifacts.readArtifact(contractName);
|
32
|
+
const bytecode = await (0, bytecode_1.resolveBytecodeWithLinkedLibraries)(artifact, libraries);
|
33
|
+
return {
|
34
|
+
abi: artifact.abi,
|
35
|
+
bytecode,
|
36
|
+
};
|
37
|
+
}
|
29
38
|
async function deployContract({ artifacts, network }, contractName, constructorArgs = [], config = {}) {
|
30
|
-
const { client, confirmations, ...deployContractParameters } = config;
|
31
|
-
const [publicClient, walletClient,
|
39
|
+
const { client, confirmations, libraries = {}, ...deployContractParameters } = config;
|
40
|
+
const [publicClient, walletClient, { abi, bytecode }] = await Promise.all([
|
32
41
|
client?.public ?? (0, clients_1.getPublicClient)(network.provider),
|
33
42
|
client?.wallet ?? getDefaultWalletClient(network.provider, network.name),
|
34
|
-
artifacts
|
43
|
+
getContractAbiAndBytecode(artifacts, contractName, libraries),
|
35
44
|
]);
|
36
|
-
return innerDeployContract(publicClient, walletClient,
|
45
|
+
return innerDeployContract(publicClient, walletClient, abi, bytecode, constructorArgs, deployContractParameters, confirmations);
|
37
46
|
}
|
38
47
|
exports.deployContract = deployContract;
|
39
48
|
async function innerDeployContract(publicClient, walletClient, contractAbi, contractBytecode, constructorArgs, deployContractParameters = {}, confirmations = 1) {
|
@@ -80,13 +89,13 @@ async function innerDeployContract(publicClient, walletClient, contractAbi, cont
|
|
80
89
|
}
|
81
90
|
exports.innerDeployContract = innerDeployContract;
|
82
91
|
async function sendDeploymentTransaction({ artifacts, network }, contractName, constructorArgs = [], config = {}) {
|
83
|
-
const { client, ...deployContractParameters } = config;
|
84
|
-
const [publicClient, walletClient,
|
92
|
+
const { client, libraries = {}, ...deployContractParameters } = config;
|
93
|
+
const [publicClient, walletClient, { abi, bytecode }] = await Promise.all([
|
85
94
|
client?.public ?? (0, clients_1.getPublicClient)(network.provider),
|
86
95
|
client?.wallet ?? getDefaultWalletClient(network.provider, network.name),
|
87
|
-
artifacts
|
96
|
+
getContractAbiAndBytecode(artifacts, contractName, libraries),
|
88
97
|
]);
|
89
|
-
return innerSendDeploymentTransaction(publicClient, walletClient,
|
98
|
+
return innerSendDeploymentTransaction(publicClient, walletClient, abi, bytecode, constructorArgs, deployContractParameters);
|
90
99
|
}
|
91
100
|
exports.sendDeploymentTransaction = sendDeploymentTransaction;
|
92
101
|
async function innerSendDeploymentTransaction(publicClient, walletClient, contractAbi, contractBytecode, constructorArgs, deployContractParameters = {}) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/internal/contracts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,uCAA8D;AAC9D,qCAKkB;
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/internal/contracts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,yCAA2E;AAC3E,uCAA8D;AAC9D,qCAKkB;AAElB,KAAK,UAAU,yBAAyB,CACtC,SAAiD,EACjD,YAAoB,EACpB,SAA6B;IAE7B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,IAAA,6CAAkC,EACvD,QAAQ,EACR,SAAS,CACV,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,QAAQ;KACT,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,EAAE,SAAS,EAAE,OAAO,EAA6B,EACjD,YAAoB,EACpB,kBAAyB,EAAE,EAC3B,SAA+B,EAAE;IAEjC,MAAM,EACJ,MAAM,EACN,aAAa,EACb,SAAS,GAAG,EAAE,EACd,GAAG,wBAAwB,EAC5B,GAAG,MAAM,CAAC;IACX,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxE,MAAM,EAAE,MAAM,IAAI,IAAA,yBAAe,EAAC,OAAO,CAAC,QAAQ,CAAC;QACnD,MAAM,EAAE,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;QACxE,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;KAC9D,CAAC,CAAC;IAEH,OAAO,mBAAmB,CACxB,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,QAAQ,EACR,eAAe,EACf,wBAAwB,EACxB,aAAa,CACd,CAAC;AACJ,CAAC;AA3BD,wCA2BC;AAEM,KAAK,UAAU,mBAAmB,CACvC,YAA0B,EAC1B,YAA0B,EAC1B,WAAgB,EAChB,gBAAqB,EACrB,eAAsB,EACtB,2BAAiD,EAAE,EACnD,gBAAwB,CAAC;IAEzB,IAAI,gBAAqB,CAAC;IAC1B,qEAAqE;IACrE,8CAA8C;IAC9C,IAAI,wBAAwB,CAAC,QAAQ,KAAK,SAAS,EAAE;QACnD,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,eAAe;YACrB,GAAG,wBAAwB;YAC3B,YAAY,EAAE,SAAS;YACvB,oBAAoB,EAAE,SAAS;SAChC,CAAC,CAAC;KACJ;SAAM;QACL,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,eAAe;YACrB,GAAG,wBAAwB;YAC3B,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;KACJ;IAED,IAAI,aAAa,GAAG,CAAC,EAAE;QACrB,MAAM,IAAI,yBAAgB,CAAC,uCAAuC,CAAC,CAAC;KACrE;IACD,IAAI,aAAa,KAAK,CAAC,EAAE;QACvB,MAAM,IAAI,kCAAyB,EAAE,CAAC;KACvC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC;QACvE,IAAI,EAAE,gBAAgB;QACtB,aAAa;KACd,CAAC,CAAC;IAEH,IAAI,eAAe,KAAK,IAAI,IAAI,eAAe,KAAK,SAAS,EAAE;QAC7D,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACpD,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;QACH,MAAM,IAAI,4BAAmB,CAAC,gBAAgB,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;KAC1E;IAED,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CACvC,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,CAChB,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AA1DD,kDA0DC;AAEM,KAAK,UAAU,yBAAyB,CAC7C,EAAE,SAAS,EAAE,OAAO,EAA6B,EACjD,YAAoB,EACpB,kBAAyB,EAAE,EAC3B,SAA0C,EAAE;IAK5C,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,wBAAwB,EAAE,GAAG,MAAM,CAAC;IACvE,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxE,MAAM,EAAE,MAAM,IAAI,IAAA,yBAAe,EAAC,OAAO,CAAC,QAAQ,CAAC;QACnD,MAAM,EAAE,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;QACxE,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;KAC9D,CAAC,CAAC;IAEH,OAAO,8BAA8B,CACnC,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,QAAQ,EACR,eAAe,EACf,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAxBD,8DAwBC;AAED,KAAK,UAAU,8BAA8B,CAC3C,YAA0B,EAC1B,YAA0B,EAC1B,WAAgB,EAChB,gBAAqB,EACrB,eAAsB,EACtB,2BAA4D,EAAE;IAK9D,IAAI,gBAAqB,CAAC;IAC1B,qEAAqE;IACrE,8CAA8C;IAC9C,IAAI,wBAAwB,CAAC,QAAQ,KAAK,SAAS,EAAE;QACnD,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,eAAe;YACrB,GAAG,wBAAwB;YAC3B,YAAY,EAAE,SAAS;YACvB,oBAAoB,EAAE,SAAS;SAChC,CAAC,CAAC;KACJ;SAAM;QACL,gBAAgB,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;YACnD,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,eAAe;YACrB,GAAG,wBAAwB;YAC3B,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;KACJ;IAED,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC;QACrD,IAAI,EAAE,gBAAgB;KACvB,CAAC,CAAC;IAEH,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,MAAM,GAAC,CAAC;IACpD,MAAM,eAAe,GAAG,kBAAkB,CAAC;QACzC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;QAClC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CACvC,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,CAChB,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,YAAY,EAAE,CAAC;AAC3D,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,EAAE,SAAS,EAAE,OAAO,EAA6B,EACjD,YAAoB,EACpB,OAAgB,EAChB,SAA8B,EAAE;IAEhC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvE,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,IAAA,yBAAe,EAAC,OAAO,CAAC,QAAQ,CAAC;QAC1D,MAAM,CAAC,MAAM,EAAE,MAAM;YACnB,sBAAsB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;QACxD,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;KACrC,CAAC,CAAC;IAEH,OAAO,kBAAkB,CACvB,YAAY,EACZ,YAAY,EACZ,gBAAgB,CAAC,GAAG,EACpB,OAAO,CACR,CAAC;AACJ,CAAC;AAnBD,sCAmBC;AAED,KAAK,UAAU,kBAAkB,CAC/B,YAA0B,EAC1B,YAA0B,EAC1B,WAAgB,EAChB,OAAgB;IAEhB,MAAM,IAAI,GAAG,wDAAa,MAAM,GAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,OAAO;QACP,MAAM,EAAE;YACN,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,YAAY;SACrB;QACD,GAAG,EAAE,WAAW;KACjB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,QAA0B,EAC1B,WAAmB;IAEnB,MAAM,CAAC,mBAAmB,CAAC,GAAG,MAAM,IAAA,0BAAgB,EAAC,QAAQ,CAAC,CAAC;IAE/D,IAAI,mBAAmB,KAAK,SAAS,EAAE;QACrC,MAAM,IAAI,yCAAgC,CAAC,WAAW,CAAC,CAAC;KACzD;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
|
package/internal/errors.d.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import type { Link } from "./bytecode";
|
1
2
|
import { NomicLabsHardhatPluginError } from "hardhat/plugins";
|
2
3
|
export declare class HardhatViemError extends NomicLabsHardhatPluginError {
|
3
4
|
constructor(message: string, parent?: Error);
|
@@ -20,4 +21,16 @@ export declare class InvalidConfirmationsError extends HardhatViemError {
|
|
20
21
|
export declare class DeployContractError extends HardhatViemError {
|
21
22
|
constructor(txHash: string, blockNumber: bigint);
|
22
23
|
}
|
24
|
+
export declare class AmbigousLibraryNameError extends HardhatViemError {
|
25
|
+
constructor(contractName: string, libraryName: string, matchingLibraries: string[]);
|
26
|
+
}
|
27
|
+
export declare class OverlappingLibraryNamesError extends HardhatViemError {
|
28
|
+
constructor(sourceName: string, libraryName: string);
|
29
|
+
}
|
30
|
+
export declare class UnnecessaryLibraryLinkError extends HardhatViemError {
|
31
|
+
constructor(contractName: string, libraryName: string);
|
32
|
+
}
|
33
|
+
export declare class MissingLibraryAddressError extends HardhatViemError {
|
34
|
+
constructor(contractName: string, missingLibraries: Array<Pick<Link, "sourceName" | "libraryName">>);
|
35
|
+
}
|
23
36
|
//# sourceMappingURL=errors.d.ts.map
|
package/internal/errors.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/internal/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAE9D,qBAAa,gBAAiB,SAAQ,2BAA2B;gBACnD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK;CAG5C;AAED,qBAAa,8BAA+B,SAAQ,gBAAgB;;CAKnE;AAED,qBAAa,oBAAqB,SAAQ,gBAAgB;gBAC5C,OAAO,EAAE,MAAM;CAa5B;AAED,qBAAa,6BAA8B,SAAQ,gBAAgB;gBACrD,OAAO,EAAE,MAAM;CAa5B;AAED,qBAAa,gCAAiC,SAAQ,gBAAgB;gBACxD,WAAW,EAAE,MAAM;CAWhC;AAED,qBAAa,yBAA0B,SAAQ,gBAAgB;;CAM9D;AAED,qBAAa,mBAAoB,SAAQ,gBAAgB;gBAC3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAKhD"}
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/internal/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAE9D,qBAAa,gBAAiB,SAAQ,2BAA2B;gBACnD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK;CAG5C;AAED,qBAAa,8BAA+B,SAAQ,gBAAgB;;CAKnE;AAED,qBAAa,oBAAqB,SAAQ,gBAAgB;gBAC5C,OAAO,EAAE,MAAM;CAa5B;AAED,qBAAa,6BAA8B,SAAQ,gBAAgB;gBACrD,OAAO,EAAE,MAAM;CAa5B;AAED,qBAAa,gCAAiC,SAAQ,gBAAgB;gBACxD,WAAW,EAAE,MAAM;CAWhC;AAED,qBAAa,yBAA0B,SAAQ,gBAAgB;;CAM9D;AAED,qBAAa,mBAAoB,SAAQ,gBAAgB;gBAC3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAKhD;AAED,qBAAa,wBAAyB,SAAQ,gBAAgB;gBAE1D,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EAAE;CAU9B;AAED,qBAAa,4BAA6B,SAAQ,gBAAgB;gBACpD,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAKpD;AAED,qBAAa,2BAA4B,SAAQ,gBAAgB;gBACnD,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAKtD;AAED,qBAAa,0BAA2B,SAAQ,gBAAgB;gBAE5D,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;CAUpE"}
|
package/internal/errors.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DeployContractError = exports.InvalidConfirmationsError = exports.DefaultWalletClientNotFoundError = exports.MultipleMatchingNetworksError = exports.NetworkNotFoundError = exports.UnknownDevelopmentNetworkError = exports.HardhatViemError = void 0;
|
3
|
+
exports.MissingLibraryAddressError = exports.UnnecessaryLibraryLinkError = exports.OverlappingLibraryNamesError = exports.AmbigousLibraryNameError = exports.DeployContractError = exports.InvalidConfirmationsError = exports.DefaultWalletClientNotFoundError = exports.MultipleMatchingNetworksError = exports.NetworkNotFoundError = exports.UnknownDevelopmentNetworkError = exports.HardhatViemError = void 0;
|
4
4
|
const plugins_1 = require("hardhat/plugins");
|
5
5
|
class HardhatViemError extends plugins_1.NomicLabsHardhatPluginError {
|
6
6
|
constructor(message, parent) {
|
@@ -67,4 +67,36 @@ class DeployContractError extends HardhatViemError {
|
|
67
67
|
}
|
68
68
|
}
|
69
69
|
exports.DeployContractError = DeployContractError;
|
70
|
+
class AmbigousLibraryNameError extends HardhatViemError {
|
71
|
+
constructor(contractName, libraryName, matchingLibraries) {
|
72
|
+
super(`The library name "${libraryName}" is ambiguous for the contract "${contractName}".
|
73
|
+
It may resolve to one of the following libraries:
|
74
|
+
${matchingLibraries.map((fqn) => `\n\t* ${fqn}`).join(",")}
|
75
|
+
|
76
|
+
To fix this, choose one of these fully qualified library names and replace where appropriate.`);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
exports.AmbigousLibraryNameError = AmbigousLibraryNameError;
|
80
|
+
class OverlappingLibraryNamesError extends HardhatViemError {
|
81
|
+
constructor(sourceName, libraryName) {
|
82
|
+
super(`The library name "${libraryName}" and "${sourceName}:${libraryName}" are both linking to the same library. Please use one of them, or If they are not the same library, use fully qualified names instead.`);
|
83
|
+
}
|
84
|
+
}
|
85
|
+
exports.OverlappingLibraryNamesError = OverlappingLibraryNamesError;
|
86
|
+
class UnnecessaryLibraryLinkError extends HardhatViemError {
|
87
|
+
constructor(contractName, libraryName) {
|
88
|
+
super(`The library name "${libraryName}" was linked but it's not referenced by the "${contractName}" contract.`);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
exports.UnnecessaryLibraryLinkError = UnnecessaryLibraryLinkError;
|
92
|
+
class MissingLibraryAddressError extends HardhatViemError {
|
93
|
+
constructor(contractName, missingLibraries) {
|
94
|
+
super(`The libraries needed are:
|
95
|
+
${missingLibraries
|
96
|
+
.map(({ sourceName, libraryName }) => `\t* "${sourceName}:${libraryName}"`)
|
97
|
+
.join(",\n")}
|
98
|
+
Please deploy them first and link them while deploying "${contractName}"`);
|
99
|
+
}
|
100
|
+
}
|
101
|
+
exports.MissingLibraryAddressError = MissingLibraryAddressError;
|
70
102
|
//# sourceMappingURL=errors.js.map
|
package/internal/errors.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/internal/errors.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/internal/errors.ts"],"names":[],"mappings":";;;AAEA,6CAA8D;AAE9D,MAAa,gBAAiB,SAAQ,qCAA2B;IAC/D,YAAY,OAAe,EAAE,MAAc;QACzC,KAAK,CAAC,+BAA+B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF;AAJD,4CAIC;AAED,MAAa,8BAA+B,SAAQ,gBAAgB;IAClE;QACE,KAAK,CAAC;6DACmD,CAAC,CAAC;IAC7D,CAAC;CACF;AALD,wEAKC;AAED,MAAa,oBAAqB,SAAQ,gBAAgB;IACxD,YAAY,OAAe;QACzB,KAAK,CACH,4BAA4B,OAAO;;;;;;;;2GAQkE,CACtG,CAAC;IACJ,CAAC;CACF;AAdD,oDAcC;AAED,MAAa,6BAA8B,SAAQ,gBAAgB;IACjE,YAAY,OAAe;QACzB,KAAK,CACH,mCAAmC,OAAO;;;;;;;;2GAQ2D,CACtG,CAAC;IACJ,CAAC;CACF;AAdD,sEAcC;AAED,MAAa,gCAAiC,SAAQ,gBAAgB;IACpE,YAAY,WAAmB;QAC7B,KAAK,CACH,+GAA+G,WAAW;;;;;;gFAMhD,CAC3E,CAAC;IACJ,CAAC;CACF;AAZD,4EAYC;AAED,MAAa,yBAA0B,SAAQ,gBAAgB;IAC7D;QACE,KAAK,CACH,2IAA2I,CAC5I,CAAC;IACJ,CAAC;CACF;AAND,8DAMC;AAED,MAAa,mBAAoB,SAAQ,gBAAgB;IACvD,YAAY,MAAc,EAAE,WAAmB;QAC7C,KAAK,CACH,+BAA+B,MAAM,yBAAyB,WAAW,sDAAsD,CAChI,CAAC;IACJ,CAAC;CACF;AAND,kDAMC;AAED,MAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,YACE,YAAoB,EACpB,WAAmB,EACnB,iBAA2B;QAE3B,KAAK,CACH,qBAAqB,WAAW,oCAAoC,YAAY;;EAEpF,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;8FAEoC,CACzF,CAAC;IACJ,CAAC;CACF;AAdD,4DAcC;AAED,MAAa,4BAA6B,SAAQ,gBAAgB;IAChE,YAAY,UAAkB,EAAE,WAAmB;QACjD,KAAK,CACH,qBAAqB,WAAW,UAAU,UAAU,IAAI,WAAW,yIAAyI,CAC7M,CAAC;IACJ,CAAC;CACF;AAND,oEAMC;AAED,MAAa,2BAA4B,SAAQ,gBAAgB;IAC/D,YAAY,YAAoB,EAAE,WAAmB;QACnD,KAAK,CACH,qBAAqB,WAAW,gDAAgD,YAAY,aAAa,CAC1G,CAAC;IACJ,CAAC;CACF;AAND,kEAMC;AAED,MAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,YACE,YAAoB,EACpB,gBAAiE;QAEjE,KAAK,CACH;EACJ,gBAAgB;aACf,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,QAAQ,UAAU,IAAI,WAAW,GAAG,CAAC;aAC1E,IAAI,CAAC,KAAK,CAAC;0DAC4C,YAAY,GAAG,CACpE,CAAC;IACJ,CAAC;CACF;AAbD,gEAaC"}
|
package/internal/tasks.js
CHANGED
@@ -105,6 +105,12 @@ declare module "hardhat/types/artifacts" {
|
|
105
105
|
.map((name) => `${name}: never;`)
|
106
106
|
.join("\n ")}
|
107
107
|
}
|
108
|
+
|
109
|
+
interface ContractTypesMap {
|
110
|
+
${Array.from(duplicateContractNames)
|
111
|
+
.map((name) => `${name}: never;`)
|
112
|
+
.join("\n ")}
|
113
|
+
}
|
108
114
|
}
|
109
115
|
`;
|
110
116
|
}
|
@@ -173,6 +179,7 @@ function generateArtifactsDefinition(contractTypeData) {
|
|
173
179
|
return `${AUTOGENERATED_FILE_PREFACE}
|
174
180
|
|
175
181
|
import "hardhat/types/artifacts";
|
182
|
+
import type { GetContractReturnType } from "@nomicfoundation/hardhat-viem/types";
|
176
183
|
|
177
184
|
${contractTypeData
|
178
185
|
.map((ctd) => `import { ${ctd.typeName} } from "./${ctd.contractName}";`)
|
@@ -187,6 +194,15 @@ declare module "hardhat/types/artifacts" {
|
|
187
194
|
.map((ctd) => `["${ctd.fqn}"]: ${ctd.typeName};`)
|
188
195
|
.join("\n ")}
|
189
196
|
}
|
197
|
+
|
198
|
+
interface ContractTypesMap {
|
199
|
+
${contractTypeData
|
200
|
+
.map((ctd) => `["${ctd.contractName}"]: GetContractReturnType<${ctd.typeName}["abi"]>;`)
|
201
|
+
.join("\n ")}
|
202
|
+
${contractTypeData
|
203
|
+
.map((ctd) => `["${ctd.fqn}"]: GetContractReturnType<${ctd.typeName}["abi"]>;`)
|
204
|
+
.join("\n ")}
|
205
|
+
}
|
190
206
|
}
|
191
207
|
`;
|
192
208
|
}
|
package/internal/tasks.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/internal/tasks.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../src/internal/tasks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nomicfoundation/hardhat-viem",
|
3
|
-
"version": "2.0.
|
3
|
+
"version": "2.0.3",
|
4
4
|
"description": "Hardhat plugin for viem",
|
5
5
|
"homepage": "https://github.com/nomicfoundation/hardhat/tree/main/packages/hardhat-viem",
|
6
6
|
"repository": "github:nomicfoundation/hardhat",
|
@@ -52,13 +52,13 @@
|
|
52
52
|
"ts-node": "^10.8.0",
|
53
53
|
"typescript": "~5.0.0",
|
54
54
|
"viem": "^2.7.6",
|
55
|
-
"@nomicfoundation/eslint-plugin-
|
56
|
-
"@nomicfoundation/eslint-plugin-
|
55
|
+
"@nomicfoundation/eslint-plugin-hardhat-internal-rules": "^1.0.2",
|
56
|
+
"@nomicfoundation/eslint-plugin-slow-imports": "^1.0.0"
|
57
57
|
},
|
58
58
|
"peerDependencies": {
|
59
|
-
"hardhat": "^2.17.0",
|
60
59
|
"typescript": "~5.0.0",
|
61
|
-
"viem": "^2.7.6"
|
60
|
+
"viem": "^2.7.6",
|
61
|
+
"hardhat": "^2.22.62.17.0"
|
62
62
|
},
|
63
63
|
"dependencies": {
|
64
64
|
"abitype": "^0.9.8",
|
@@ -0,0 +1,138 @@
|
|
1
|
+
import type * as viemT from "viem";
|
2
|
+
import type { Artifact } from "hardhat/types/artifacts";
|
3
|
+
|
4
|
+
import {
|
5
|
+
AmbigousLibraryNameError,
|
6
|
+
MissingLibraryAddressError,
|
7
|
+
OverlappingLibraryNamesError,
|
8
|
+
UnnecessaryLibraryLinkError,
|
9
|
+
} from "./errors";
|
10
|
+
|
11
|
+
export interface Libraries<Address = string> {
|
12
|
+
[libraryName: string]: Address;
|
13
|
+
}
|
14
|
+
|
15
|
+
export interface Link {
|
16
|
+
sourceName: string;
|
17
|
+
libraryName: string;
|
18
|
+
address: string;
|
19
|
+
}
|
20
|
+
|
21
|
+
export async function linkBytecode(
|
22
|
+
artifact: Artifact,
|
23
|
+
libraries: Link[]
|
24
|
+
): Promise<viemT.Hex> {
|
25
|
+
const { isHex } = await import("viem");
|
26
|
+
let bytecode = artifact.bytecode;
|
27
|
+
|
28
|
+
// TODO: measure performance impact
|
29
|
+
for (const { sourceName, libraryName, address } of libraries) {
|
30
|
+
const linkReferences = artifact.linkReferences[sourceName][libraryName];
|
31
|
+
for (const { start, length } of linkReferences) {
|
32
|
+
bytecode =
|
33
|
+
bytecode.substring(0, 2 + start * 2) +
|
34
|
+
address.substring(2) +
|
35
|
+
bytecode.substring(2 + (start + length) * 2);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
return isHex(bytecode) ? bytecode : `0x${bytecode}`;
|
40
|
+
}
|
41
|
+
|
42
|
+
async function throwOnAmbigousLibraryNameOrUnnecessaryLink(
|
43
|
+
contractName: string,
|
44
|
+
libraries: Libraries<viemT.Address>,
|
45
|
+
neededLibraries: Link[]
|
46
|
+
) {
|
47
|
+
for (const linkedLibraryName of Object.keys(libraries)) {
|
48
|
+
const matchingLibraries = neededLibraries.filter(
|
49
|
+
({ sourceName, libraryName }) =>
|
50
|
+
libraryName === linkedLibraryName ||
|
51
|
+
`${sourceName}:${libraryName}` === linkedLibraryName
|
52
|
+
);
|
53
|
+
|
54
|
+
if (matchingLibraries.length > 1) {
|
55
|
+
throw new AmbigousLibraryNameError(
|
56
|
+
contractName,
|
57
|
+
linkedLibraryName,
|
58
|
+
matchingLibraries.map(
|
59
|
+
({ sourceName, libraryName }) => `${sourceName}:${libraryName}`
|
60
|
+
)
|
61
|
+
);
|
62
|
+
} else if (matchingLibraries.length === 0) {
|
63
|
+
throw new UnnecessaryLibraryLinkError(contractName, linkedLibraryName);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
async function throwOnMissingLibrariesAddress(
|
69
|
+
contractName: string,
|
70
|
+
libraries: Libraries<viemT.Address>,
|
71
|
+
neededLibraries: Link[]
|
72
|
+
) {
|
73
|
+
const missingLibraries = [];
|
74
|
+
for (const { sourceName, libraryName } of neededLibraries) {
|
75
|
+
const address =
|
76
|
+
libraries[`${sourceName}:${libraryName}`] ?? libraries[libraryName];
|
77
|
+
|
78
|
+
if (address === undefined) {
|
79
|
+
missingLibraries.push({ sourceName, libraryName });
|
80
|
+
}
|
81
|
+
}
|
82
|
+
|
83
|
+
if (missingLibraries.length > 0) {
|
84
|
+
throw new MissingLibraryAddressError(contractName, missingLibraries);
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
async function throwOnOverlappingLibraryNames(
|
89
|
+
contractName: string,
|
90
|
+
libraries: Libraries<viemT.Address>,
|
91
|
+
neededLibraries: Link[]
|
92
|
+
) {
|
93
|
+
for (const { sourceName, libraryName } of neededLibraries) {
|
94
|
+
if (
|
95
|
+
libraries[`${sourceName}:${libraryName}`] !== undefined &&
|
96
|
+
libraries[libraryName] !== undefined
|
97
|
+
) {
|
98
|
+
throw new OverlappingLibraryNamesError(sourceName, libraryName);
|
99
|
+
}
|
100
|
+
}
|
101
|
+
}
|
102
|
+
|
103
|
+
export async function resolveBytecodeWithLinkedLibraries(
|
104
|
+
artifact: Artifact,
|
105
|
+
libraries: Libraries<viemT.Address>
|
106
|
+
): Promise<viemT.Hex> {
|
107
|
+
const { linkReferences } = artifact;
|
108
|
+
|
109
|
+
const neededLibraries: Link[] = [];
|
110
|
+
for (const [sourceName, sourceLibraries] of Object.entries(linkReferences)) {
|
111
|
+
for (const libraryName of Object.keys(sourceLibraries)) {
|
112
|
+
neededLibraries.push({
|
113
|
+
sourceName,
|
114
|
+
libraryName,
|
115
|
+
address:
|
116
|
+
libraries[`${sourceName}:${libraryName}`] ?? libraries[libraryName],
|
117
|
+
});
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
await throwOnAmbigousLibraryNameOrUnnecessaryLink(
|
122
|
+
artifact.contractName,
|
123
|
+
libraries,
|
124
|
+
neededLibraries
|
125
|
+
);
|
126
|
+
await throwOnOverlappingLibraryNames(
|
127
|
+
artifact.contractName,
|
128
|
+
libraries,
|
129
|
+
neededLibraries
|
130
|
+
);
|
131
|
+
await throwOnMissingLibrariesAddress(
|
132
|
+
artifact.contractName,
|
133
|
+
libraries,
|
134
|
+
neededLibraries
|
135
|
+
);
|
136
|
+
|
137
|
+
return linkBytecode(artifact, neededLibraries);
|
138
|
+
}
|
@@ -13,6 +13,7 @@ import type {
|
|
13
13
|
WalletClient,
|
14
14
|
} from "../types";
|
15
15
|
|
16
|
+
import { Libraries, resolveBytecodeWithLinkedLibraries } from "./bytecode";
|
16
17
|
import { getPublicClient, getWalletClients } from "./clients";
|
17
18
|
import {
|
18
19
|
DefaultWalletClientNotFoundError,
|
@@ -21,24 +22,46 @@ import {
|
|
21
22
|
InvalidConfirmationsError,
|
22
23
|
} from "./errors";
|
23
24
|
|
25
|
+
async function getContractAbiAndBytecode(
|
26
|
+
artifacts: HardhatRuntimeEnvironment["artifacts"],
|
27
|
+
contractName: string,
|
28
|
+
libraries: Libraries<Address>
|
29
|
+
) {
|
30
|
+
const artifact = await artifacts.readArtifact(contractName);
|
31
|
+
const bytecode = await resolveBytecodeWithLinkedLibraries(
|
32
|
+
artifact,
|
33
|
+
libraries
|
34
|
+
);
|
35
|
+
|
36
|
+
return {
|
37
|
+
abi: artifact.abi,
|
38
|
+
bytecode,
|
39
|
+
};
|
40
|
+
}
|
41
|
+
|
24
42
|
export async function deployContract(
|
25
43
|
{ artifacts, network }: HardhatRuntimeEnvironment,
|
26
44
|
contractName: string,
|
27
45
|
constructorArgs: any[] = [],
|
28
46
|
config: DeployContractConfig = {}
|
29
47
|
): Promise<GetContractReturnType> {
|
30
|
-
const {
|
31
|
-
|
48
|
+
const {
|
49
|
+
client,
|
50
|
+
confirmations,
|
51
|
+
libraries = {},
|
52
|
+
...deployContractParameters
|
53
|
+
} = config;
|
54
|
+
const [publicClient, walletClient, { abi, bytecode }] = await Promise.all([
|
32
55
|
client?.public ?? getPublicClient(network.provider),
|
33
56
|
client?.wallet ?? getDefaultWalletClient(network.provider, network.name),
|
34
|
-
artifacts
|
57
|
+
getContractAbiAndBytecode(artifacts, contractName, libraries),
|
35
58
|
]);
|
36
59
|
|
37
60
|
return innerDeployContract(
|
38
61
|
publicClient,
|
39
62
|
walletClient,
|
40
|
-
|
41
|
-
|
63
|
+
abi,
|
64
|
+
bytecode,
|
42
65
|
constructorArgs,
|
43
66
|
deployContractParameters,
|
44
67
|
confirmations
|
@@ -114,18 +137,18 @@ export async function sendDeploymentTransaction(
|
|
114
137
|
contract: GetContractReturnType;
|
115
138
|
deploymentTransaction: GetTransactionReturnType;
|
116
139
|
}> {
|
117
|
-
const { client, ...deployContractParameters } = config;
|
118
|
-
const [publicClient, walletClient,
|
140
|
+
const { client, libraries = {}, ...deployContractParameters } = config;
|
141
|
+
const [publicClient, walletClient, { abi, bytecode }] = await Promise.all([
|
119
142
|
client?.public ?? getPublicClient(network.provider),
|
120
143
|
client?.wallet ?? getDefaultWalletClient(network.provider, network.name),
|
121
|
-
artifacts
|
144
|
+
getContractAbiAndBytecode(artifacts, contractName, libraries),
|
122
145
|
]);
|
123
146
|
|
124
147
|
return innerSendDeploymentTransaction(
|
125
148
|
publicClient,
|
126
149
|
walletClient,
|
127
|
-
|
128
|
-
|
150
|
+
abi,
|
151
|
+
bytecode,
|
129
152
|
constructorArgs,
|
130
153
|
deployContractParameters
|
131
154
|
);
|
package/src/internal/errors.ts
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
import type { Link } from "./bytecode";
|
2
|
+
|
1
3
|
import { NomicLabsHardhatPluginError } from "hardhat/plugins";
|
2
4
|
|
3
5
|
export class HardhatViemError extends NomicLabsHardhatPluginError {
|
@@ -74,3 +76,50 @@ export class DeployContractError extends HardhatViemError {
|
|
74
76
|
);
|
75
77
|
}
|
76
78
|
}
|
79
|
+
|
80
|
+
export class AmbigousLibraryNameError extends HardhatViemError {
|
81
|
+
constructor(
|
82
|
+
contractName: string,
|
83
|
+
libraryName: string,
|
84
|
+
matchingLibraries: string[]
|
85
|
+
) {
|
86
|
+
super(
|
87
|
+
`The library name "${libraryName}" is ambiguous for the contract "${contractName}".
|
88
|
+
It may resolve to one of the following libraries:
|
89
|
+
${matchingLibraries.map((fqn) => `\n\t* ${fqn}`).join(",")}
|
90
|
+
|
91
|
+
To fix this, choose one of these fully qualified library names and replace where appropriate.`
|
92
|
+
);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
export class OverlappingLibraryNamesError extends HardhatViemError {
|
97
|
+
constructor(sourceName: string, libraryName: string) {
|
98
|
+
super(
|
99
|
+
`The library name "${libraryName}" and "${sourceName}:${libraryName}" are both linking to the same library. Please use one of them, or If they are not the same library, use fully qualified names instead.`
|
100
|
+
);
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
export class UnnecessaryLibraryLinkError extends HardhatViemError {
|
105
|
+
constructor(contractName: string, libraryName: string) {
|
106
|
+
super(
|
107
|
+
`The library name "${libraryName}" was linked but it's not referenced by the "${contractName}" contract.`
|
108
|
+
);
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
export class MissingLibraryAddressError extends HardhatViemError {
|
113
|
+
constructor(
|
114
|
+
contractName: string,
|
115
|
+
missingLibraries: Array<Pick<Link, "sourceName" | "libraryName">>
|
116
|
+
) {
|
117
|
+
super(
|
118
|
+
`The libraries needed are:
|
119
|
+
${missingLibraries
|
120
|
+
.map(({ sourceName, libraryName }) => `\t* "${sourceName}:${libraryName}"`)
|
121
|
+
.join(",\n")}
|
122
|
+
Please deploy them first and link them while deploying "${contractName}"`
|
123
|
+
);
|
124
|
+
}
|
125
|
+
}
|
package/src/internal/tasks.ts
CHANGED
@@ -164,6 +164,12 @@ declare module "hardhat/types/artifacts" {
|
|
164
164
|
.map((name) => `${name}: never;`)
|
165
165
|
.join("\n ")}
|
166
166
|
}
|
167
|
+
|
168
|
+
interface ContractTypesMap {
|
169
|
+
${Array.from(duplicateContractNames)
|
170
|
+
.map((name) => `${name}: never;`)
|
171
|
+
.join("\n ")}
|
172
|
+
}
|
167
173
|
}
|
168
174
|
`;
|
169
175
|
}
|
@@ -260,6 +266,7 @@ function generateArtifactsDefinition(
|
|
260
266
|
return `${AUTOGENERATED_FILE_PREFACE}
|
261
267
|
|
262
268
|
import "hardhat/types/artifacts";
|
269
|
+
import type { GetContractReturnType } from "@nomicfoundation/hardhat-viem/types";
|
263
270
|
|
264
271
|
${contractTypeData
|
265
272
|
.map((ctd) => `import { ${ctd.typeName} } from "./${ctd.contractName}";`)
|
@@ -274,6 +281,21 @@ declare module "hardhat/types/artifacts" {
|
|
274
281
|
.map((ctd) => `["${ctd.fqn}"]: ${ctd.typeName};`)
|
275
282
|
.join("\n ")}
|
276
283
|
}
|
284
|
+
|
285
|
+
interface ContractTypesMap {
|
286
|
+
${contractTypeData
|
287
|
+
.map(
|
288
|
+
(ctd) =>
|
289
|
+
`["${ctd.contractName}"]: GetContractReturnType<${ctd.typeName}["abi"]>;`
|
290
|
+
)
|
291
|
+
.join("\n ")}
|
292
|
+
${contractTypeData
|
293
|
+
.map(
|
294
|
+
(ctd) =>
|
295
|
+
`["${ctd.fqn}"]: GetContractReturnType<${ctd.typeName}["abi"]>;`
|
296
|
+
)
|
297
|
+
.join("\n ")}
|
298
|
+
}
|
277
299
|
}
|
278
300
|
`;
|
279
301
|
}
|
package/src/types.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import type * as viemT from "viem";
|
2
2
|
import type { ArtifactsMap } from "hardhat/types/artifacts";
|
3
|
+
import type { Libraries } from "./internal/bytecode";
|
3
4
|
|
4
5
|
export type PublicClient = viemT.PublicClient<viemT.Transport, viemT.Chain>;
|
5
6
|
export type WalletClient = viemT.WalletClient<
|
@@ -38,9 +39,12 @@ export interface SendTransactionConfig {
|
|
38
39
|
|
39
40
|
export interface DeployContractConfig extends SendTransactionConfig {
|
40
41
|
confirmations?: number;
|
42
|
+
libraries?: Libraries<viemT.Address>;
|
41
43
|
}
|
42
44
|
|
43
|
-
export
|
45
|
+
export interface SendDeploymentTransactionConfig extends SendTransactionConfig {
|
46
|
+
libraries?: Libraries<viemT.Address>;
|
47
|
+
}
|
44
48
|
|
45
49
|
export interface GetContractAtConfig {
|
46
50
|
client?: KeyedClient;
|
package/types.d.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import type * as viemT from "viem";
|
2
2
|
import type { ArtifactsMap } from "hardhat/types/artifacts";
|
3
|
+
import type { Libraries } from "./internal/bytecode";
|
3
4
|
export type PublicClient = viemT.PublicClient<viemT.Transport, viemT.Chain>;
|
4
5
|
export type WalletClient = viemT.WalletClient<viemT.Transport, viemT.Chain, viemT.Account>;
|
5
6
|
export type TestClient = viemT.TestClient<TestClientMode, viemT.Transport, viemT.Chain>;
|
@@ -21,8 +22,11 @@ export interface SendTransactionConfig {
|
|
21
22
|
}
|
22
23
|
export interface DeployContractConfig extends SendTransactionConfig {
|
23
24
|
confirmations?: number;
|
25
|
+
libraries?: Libraries<viemT.Address>;
|
26
|
+
}
|
27
|
+
export interface SendDeploymentTransactionConfig extends SendTransactionConfig {
|
28
|
+
libraries?: Libraries<viemT.Address>;
|
24
29
|
}
|
25
|
-
export type SendDeploymentTransactionConfig = SendTransactionConfig;
|
26
30
|
export interface GetContractAtConfig {
|
27
31
|
client?: KeyedClient;
|
28
32
|
}
|
package/types.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["src/types.ts"],"names":[],"mappings":"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"}
|